From a57c92eaf28c4786bd39f5ce7d8bb7b1af4851b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20R=C3=BChl?= Date: Sat, 7 Sep 2024 20:43:24 +0200 Subject: [PATCH 001/101] add air waving for biomes o' plenty leaves Add Biomes o' Plenty (mod) leaves to the list of blocks that are affected by air waving. Tested with Biomes o' Plenty v21.0.0.18 on Minecraft 1.21 (Fabric). Block IDs taken from Reddit. https://www.reddit.com/r/feedthebeast/comments/14qgtu7/comment/lcl3k4c/ --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 0d05149..ca66863 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -52,7 +52,8 @@ block.55=minecraft:fern \ ## add a newline to organize for modded blocks block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves \ - conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 + conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ + biomesoplenty:redwood_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:cypress_leaves biomesoplenty:snowblossom_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:fir_leaves biomesoplenty:pine_leaves biomesoplenty:red_maple_leaves biomesoplenty:orange_maple_leaves biomesoplenty:yellow_maple_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:empyreal_leaves ####### ----- blocks with SSS ----- ####### From c1f2ef5a43062797662e94af99800ffd53ca5e1d Mon Sep 17 00:00:00 2001 From: Xonk <122314734+X0nk@users.noreply.github.com> Date: Wed, 9 Oct 2024 17:32:34 -0400 Subject: [PATCH 002/101] Update README.md switched to kofi because buymeacoffee didnt support paypal --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ab0660..563e203 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ i wanted to emphasize a varying scene, where the lighting isn't always the same + Emin, and Gri573, for teaching me how to stop alot of light leaking + RRe36 and Sixthsurge, for the great ideas to steal ### [You can contact me on discord, by joining the shaderLabs discord server and using the "bliss-xonk" channel](https://discord.com/invite/RpzWN9S) -### [Want to support me? Consider donating](https://buymeacoffee.com/xonkdev) +### [Want to support me? Consider donating](https://ko-fi.com/xonkdev) # IN-DEVELOPMENT VERSIONS AND RELEASE VERSIONS `In-development versions` are the very latest versions, and are released regularly to be tested by anyone. **Please report any issues you find.** From 781874becb8c84e00f39c001f96863aea90ba863 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 26 Oct 2024 20:28:09 +0200 Subject: [PATCH 003/101] Adds `BoP` flowers to I hope correct `block.54` waving SSS category --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 0d05149..d2ee765 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -42,7 +42,8 @@ block.53= ## ground waving ## add a newline to organize for modded blocks -block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush +block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ From 91c0edb263fce1103e7354253f804695af28ebd8 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:38:10 +0200 Subject: [PATCH 004/101] Added `SSS` to `NaturesSpirit` flowers and mushrooms --- shaders/block.properties | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index d2ee765..b22a151 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -43,7 +43,8 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender \ + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ @@ -60,10 +61,12 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad \ - westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass + westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ + natures_spirit:helvola ## weak sss -block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block +block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ + natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From c25e73512261975ddbb28f7c183cffcf11ed9865 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:14:38 +0100 Subject: [PATCH 005/101] Added weak SSS to "natures_spirit:alluaudia" *(cactii)* --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index b22a151..3d34b33 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -66,7 +66,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ - natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block + natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 22265ff7b15686603b7c988ab4d65007c410a0d1 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:27:00 +0100 Subject: [PATCH 006/101] Added SSS + Waving to `BoP`'s lilypads Waving looks better then strong SSS because it creates an effect of them moving on the water waves --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 3d34b33..6bb308c 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -43,7 +43,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. From 5bb556b41de85ab0638b411cd91a443d13f2a7f2 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:28:08 +0100 Subject: [PATCH 007/101] Moved vanilla lily pad from string SSS to SSS+waving Waving looks better then strong SSS because it creates an effect of them moving on the water waves --- shaders/block.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 6bb308c..1915cba 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -42,7 +42,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks -block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush \ +block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem @@ -60,7 +60,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ####### ----- blocks with SSS ----- ####### ## strong sss -block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad \ +block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ natures_spirit:helvola From 1e97b0828b9d8e50a74b998d5d8565ca7d807de9 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:40:06 +0100 Subject: [PATCH 008/101] Moved `NaturesSpirit` helvola pad to SSS+Waving Same reason as for last 2 commits --- shaders/block.properties | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 1915cba..9350973 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -44,7 +44,7 @@ block.53= ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ @@ -61,8 +61,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ - westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - natures_spirit:helvola + westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From 6ae9d6854b4ec5ec353a08d1abd2f4c728604878 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:58:42 +0100 Subject: [PATCH 009/101] Added `NaturesSpirit` leaves to air waving SSS blocks --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 9350973..0b03d8f 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -54,7 +54,8 @@ block.55=minecraft:fern \ ## add a newline to organize for modded blocks block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves \ - conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 + conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ + natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves ####### ----- blocks with SSS ----- ####### From 7e14dbd4c05e9ad72feb5040230d8d3ebe98bb69 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 17:30:06 +0100 Subject: [PATCH 010/101] Added SSS+Waving to `BoP`'s high grass and huge clover --- shaders/block.properties | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 0b03d8f..b36310c 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -43,7 +43,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. @@ -62,7 +62,8 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ - westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass + westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ + biomesoplenty:high_grass_plant ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From 8299073dc8d6ff8b256c76fd7ddca10c8a439534 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 17:57:18 +0100 Subject: [PATCH 011/101] Added SSS+Waving for `BoP`'s sprout --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index b36310c..05a91de 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -43,7 +43,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. From a5c3bc17fd4e45cb7b1862ffd683d38d220b4da6 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 18:03:39 +0100 Subject: [PATCH 012/101] Fixed `natures_spirit:large_lush_fern` --- shaders/block.properties | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 05a91de..9833c56 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -8,10 +8,12 @@ block.11=bamboo bamboo_sapling block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ - conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower + conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ + natures_spirit:large_lush_fern:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ - conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper + conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ + natures_spirit:large_lush_fern:half=upper block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling @@ -44,7 +46,7 @@ block.53= ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:large_lush_fern natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ From ca1cf77ef2e26f9bafd638296eeb84b235449f16 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 18:58:06 +0100 Subject: [PATCH 013/101] Added SSS to `BoP`'s leaf piles and toadstool --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 9833c56..8ab9c7d 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -65,10 +65,11 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - biomesoplenty:high_grass_plant + biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ + biomesoplenty:toadstool \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia ## weak sss From 3e96fe4e93bebea3bba7f8722a8a440c189a57aa Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 19:01:53 +0100 Subject: [PATCH 014/101] Fixed `NaturesSpirit`'s `gardenia` --- shaders/block.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 8ab9c7d..6f6d0ba 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -9,11 +9,11 @@ block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ - natures_spirit:large_lush_fern:half=lower + natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ - natures_spirit:large_lush_fern:half=upper + natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling @@ -46,7 +46,7 @@ block.53= ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:gardenia natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ From cdf1769dd545f4f5bf1f211edcf8c6d250122770 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 19:09:02 +0100 Subject: [PATCH 015/101] Added leaves from `[Let's Do] Beachparty` to air waving --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 6f6d0ba..a9564b1 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -57,7 +57,8 @@ block.55=minecraft:fern \ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves \ conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ - natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves + natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ + beachparty:palm_leaves ####### ----- blocks with SSS ----- ####### From 2ddf7982c8ac9aecc6d6745dd21feb79947bd51b Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 19:17:16 +0100 Subject: [PATCH 016/101] Added weak SSS to `[Let's Do] Beachparty` seashells --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index a9564b1..96b2bde 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -71,7 +71,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ biomesoplenty:toadstool \ - natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia + natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ + beachparty:seashell_block ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 55cdc39fbf5b75352f5f35a1150187da8ff97633 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 19:32:12 +0100 Subject: [PATCH 017/101] Added SSS and waiving to `Farmer's Delight` plants --- shaders/block.properties | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 96b2bde..97aab0d 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -9,11 +9,13 @@ block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ - natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower + natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower \ + farmersdelight:wild_rice:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ - natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper + natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper \ + farmersdelight:wild_rice:half=upper block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling @@ -46,7 +48,8 @@ block.53= ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ + farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ @@ -72,7 +75,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ biomesoplenty:toadstool \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ - beachparty:seashell_block + beachparty:seashell_block \ + farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 582529de94d2d317a9c5e0ebd542291482528712 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 27 Oct 2024 19:48:52 +0100 Subject: [PATCH 018/101] Added weak SSS to `Farmer's Delight`'s placeable dishes --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 97aab0d..48cee6e 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -76,7 +76,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame biomesoplenty:toadstool \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ beachparty:seashell_block \ - farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony + farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 54bdcc5fb3629d33d5e2f7a9a2d49a43b0c653bf Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 15:27:09 +0100 Subject: [PATCH 019/101] Fixed `natures_spirit:cattail` --- shaders/block.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 48cee6e..74918e3 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -9,12 +9,12 @@ block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ - natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower \ + natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower \ farmersdelight:wild_rice:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ - natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper \ + natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper \ farmersdelight:wild_rice:half=upper block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling @@ -48,7 +48,7 @@ block.53= ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:cattail natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. From 863b16dda70d3c71faf08054c109c93a4f93cedd Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:27:32 +0100 Subject: [PATCH 020/101] Made `betternether:willow_torch` produce light when held --- shaders/item.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/item.properties b/shaders/item.properties index cd1facf..48819c5 100644 --- a/shaders/item.properties +++ b/shaders/item.properties @@ -41,7 +41,7 @@ item.1018=redstone_torch item.1019=sculk_catalyst -item.1020=sea_lantern +item.1020=sea_lantern betternether:willow_torch item.1021=shroomlight From ba09f100eaa4e42f1b756385a4d1eecfd77bc049 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:51:45 +0100 Subject: [PATCH 021/101] Added SSS to Create's windmill sails --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 74918e3..ba40af5 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -76,7 +76,8 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame biomesoplenty:toadstool \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ beachparty:seashell_block \ - farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block + farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ + create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From e33c1530d1d65a9c29cd2514f04039eb4befd4ec Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:55:20 +0100 Subject: [PATCH 022/101] Fixed `biomesoplenty:tall_lavender` --- shaders/block.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index ba40af5..e71dabb 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -9,11 +9,13 @@ block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ + biomesoplenty:tall_lavender:half=lower \ natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower \ farmersdelight:wild_rice:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ + biomesoplenty:tall_lavender:half=upper \ natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper \ farmersdelight:wild_rice:half=upper @@ -47,7 +49,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:tall_lavender biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots From 92ecbe6e7626dc33bf51d72f711d2c68d8cac6f4 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:33:19 +0100 Subject: [PATCH 023/101] Added SSS and Waving for `BoP`'s bush --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index e71dabb..3643cc9 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -49,7 +49,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:bush \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots From de756b36e0b117ab2c93bc12892a7e2466899736 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:53:26 +0100 Subject: [PATCH 024/101] Added support for `[Let's Do] Vinery` --- shaders/block.properties | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 3643cc9..9b4ce9c 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -51,7 +51,8 @@ block.53= block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:bush \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ - farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots + farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ + vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ @@ -63,7 +64,8 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves \ conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ - beachparty:palm_leaves + beachparty:palm_leaves \ + vinery:dark_cherry_leaves vinery:apple_leaves ####### ----- blocks with SSS ----- ####### @@ -71,7 +73,9 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile + biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile \ + vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ + nethervinery:crimson_grape_bush nethervinery:warped_grape_bush ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From d581c4785a208187dbf164d7ff8c958a5600367e Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:56:42 +0100 Subject: [PATCH 025/101] Moved `biomesoplenty:bush` to `ground waving vertical...` --- shaders/block.properties | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 9b4ce9c..16c758f 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -49,14 +49,15 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:bush \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ - conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom + conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom \ + biomesoplenty:bush ## air waving ## add a newline to organize for modded blocks From 81463d71ed1286bc871fb9fbe2598a46e6fd0f1a Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:09:35 +0100 Subject: [PATCH 026/101] Added `Create: Garnished` support for leaves --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 16c758f..5f6e7e0 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -66,7 +66,8 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ beachparty:palm_leaves \ - vinery:dark_cherry_leaves vinery:apple_leaves + vinery:dark_cherry_leaves vinery:apple_leaves \ + garnished:walnut_leaves garnished:almond_leaves garnished:pecan_leaves garnished:pistachio_leaves garnished:macadamia_leaves garnished:peanut_leaves garnished:hazelnut_leaves garnished:chestnut_leaves garnished:nut_leaves garnished:unassigned_nut_leaves garnished:cashew_leaves ####### ----- blocks with SSS ----- ####### From b1e32ad45250b0902f892f164fc014df09104c57 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Tue, 29 Oct 2024 23:15:20 +0100 Subject: [PATCH 027/101] Added SSS to `garnished:sorrowful_lichen` and `garnished:anniversary_cake` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 5f6e7e0..ef083aa 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -77,7 +77,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ - nethervinery:crimson_grape_bush nethervinery:warped_grape_bush + nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ + garnished:sorrowful_lichen garnished:anniversary_cake ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From 91803f43c35a23d173cd8e5e0dbab01724f80ba7 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 30 Oct 2024 08:07:58 +0100 Subject: [PATCH 028/101] Added SSS to beachparty's summer furniture --- shaders/block.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/shaders/block.properties b/shaders/block.properties index ef083aa..f86c809 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -78,6 +78,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ + beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair \ garnished:sorrowful_lichen garnished:anniversary_cake ## weak sss From a7d5ae60c388cb7885a5a80dffe5a9a60030c902 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 30 Oct 2024 17:06:06 +0100 Subject: [PATCH 029/101] Added support for `[Let's Do] HerbalBrews` --- shaders/block.properties | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index f86c809..bcaad74 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -52,7 +52,8 @@ block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ - vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush + vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush \ + herbalbrews:wild_coffee_plant herbalbrews:wild_yerba_mate_plant herbalbrews:wild_rooibos_plant herbalbrews:hibiscus herbalbrews:lavender herbalbrews:coffee_plant herbalbrews:yerba_mate_plant herbalbrews:rooibos_plant ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ @@ -78,6 +79,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ + herbalbrews:hibiscus_tea_block \ beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair \ garnished:sorrowful_lichen garnished:anniversary_cake @@ -85,6 +87,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ biomesoplenty:toadstool \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ + herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ beachparty:seashell_block \ farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail From 317a5dc33b80626cd7f7888514bf272e297e673c Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:17:14 +0100 Subject: [PATCH 030/101] Added SSS to `biomesoplenty:clover` --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index bcaad74..f1590f4 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -76,7 +76,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile \ + biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ herbalbrews:hibiscus_tea_block \ From b18f4c3cf67ab9d684185e1bc51dbf996e600c20 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:20:47 +0100 Subject: [PATCH 031/101] Fixes `Nature's Spirit`'s lotus flower --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index f1590f4..445eca0 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -50,7 +50,7 @@ block.53= ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:helvola \ + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush \ herbalbrews:wild_coffee_plant herbalbrews:wild_yerba_mate_plant herbalbrews:wild_rooibos_plant herbalbrews:hibiscus herbalbrews:lavender herbalbrews:coffee_plant herbalbrews:yerba_mate_plant herbalbrews:rooibos_plant @@ -77,6 +77,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover \ + natures_spirit:lotus_flower natures_spirit:lotus_stem \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ herbalbrews:hibiscus_tea_block \ From 6ac71c53c5abc7f3a71fb2c28025cdea88f3b73b Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 30 Oct 2024 22:15:24 +0100 Subject: [PATCH 032/101] Added SSS and Waving to `BoP`'s flesh --- shaders/block.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 445eca0..231d17e 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -9,13 +9,13 @@ block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ - biomesoplenty:tall_lavender:half=lower \ + biomesoplenty:tall_lavender:half=lower biomesoplenty:eyebulb:half=lower \ natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower \ farmersdelight:wild_rice:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ - biomesoplenty:tall_lavender:half=upper \ + biomesoplenty:tall_lavender:half=upper biomesoplenty:eyebulb:half=upper \ natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper \ farmersdelight:wild_rice:half=upper @@ -49,7 +49,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:hair \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush \ @@ -76,7 +76,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover \ + biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble \ natures_spirit:lotus_flower natures_spirit:lotus_stem \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ From f4a7f43903f9188fe5eef5159fa4bd3ebaa9a907 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 30 Oct 2024 22:53:11 +0100 Subject: [PATCH 033/101] Added SSS and Waving to 3 more `BoP` plants --- shaders/block.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index ecd935d..fc47b6c 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -9,13 +9,13 @@ block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ - biomesoplenty:tall_lavender:half=lower biomesoplenty:eyebulb:half=lower \ + biomesoplenty:tall_lavender:half=lower biomesoplenty:eyebulb:half=lower biomesoplenty:blue_hydrangea:half=lower \ natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower \ farmersdelight:wild_rice:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ - biomesoplenty:tall_lavender:half=upper biomesoplenty:eyebulb:half=upper \ + biomesoplenty:tall_lavender:half=upper biomesoplenty:eyebulb:half=upper biomesoplenty:blue_hydrangea:half=upper \ natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper \ farmersdelight:wild_rice:half=upper @@ -77,7 +77,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble \ + biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble biomesoplenty:spanish_moss biomesoplenty:willow_vine \ natures_spirit:lotus_flower natures_spirit:lotus_stem \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ From e2f0053ca754245fd4b5c7618f5b45ca53384b8d Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Thu, 31 Oct 2024 19:29:22 +0100 Subject: [PATCH 034/101] Increased SSS for ENTITY_SSS_WEAK by 0.05 to make it clearly visible --- shaders/dimensions/all_solid.vsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 02a4096..5728b1d 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -313,7 +313,7 @@ void main() { // medium // low - if(entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER) SSSAMOUNT = 0.3; + if(entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER) SSSAMOUNT = 0.35; #endif #endif From d8e00679ae672e959a3d3f079088b538ad527494 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Thu, 31 Oct 2024 19:32:48 +0100 Subject: [PATCH 035/101] Increased SSS for ENTITY_SSS_WEAK by another 0.05 to make it clearly visible for non-white entities --- shaders/dimensions/all_solid.vsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 5728b1d..89abca9 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -313,7 +313,7 @@ void main() { // medium // low - if(entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER) SSSAMOUNT = 0.35; + if(entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER) SSSAMOUNT = 0.4; #endif #endif From 9000a1f7865ed13ba50e2a0d0aa8194035b22fe3 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Thu, 31 Oct 2024 22:34:08 +0100 Subject: [PATCH 036/101] Added support for `Naturalist` entities --- shaders/entity.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shaders/entity.properties b/shaders/entity.properties index 77d81e6..cc4f665 100644 --- a/shaders/entity.properties +++ b/shaders/entity.properties @@ -27,10 +27,12 @@ entity.1611=spectral_arrow bigglobe:torch_arrow entity_flame ################################################ ## medium sss (same as strong sss for blocks) -entity.1801=giant ghast elder_guardian +entity.1801=giant ghast elder_guardian \ + naturalist:butterfly naturalist:firefly naturalist:caterpillar naturalist:dragonfly ## weak sss (same as weak sss for blocks) -entity.1802=furnace_minecart sheep frog chicken iron_golem snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin polar_bear pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin creeper drowned endermite evoker guardian hoglin husk phantom piglin_brute pillager ravager silverfish stray vex vindicator witch zoglin zombie zombie_villager trader_llama +entity.1802=furnace_minecart sheep frog chicken iron_golem snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin polar_bear pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin creeper drowned endermite evoker guardian hoglin husk phantom piglin_brute pillager ravager silverfish stray vex vindicator witch zoglin zombie zombie_villager trader_llama \ + naturalist:bear naturalist:snail naturalist:snake naturalist:coral_snake naturalist:rattlesnake naturalist:bluejay naturalist:cardinal naturalist:canary naturalist:robin naturalist:finch naturalist:sparrow naturalist:rhino naturalist:elephant naturalist:lion naturalist:zebra naturalist:giraffe naturalist:hippo naturalist:vulture naturalist:boar naturalist:catfish naturalist:alligator naturalist:bass naturalist:tortoise naturalist:duck #removed: player blaze magma_cube ################################################ From 89710e366f446f6765f20920574feebe23a5a10f Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Fri, 1 Nov 2024 22:20:14 +0100 Subject: [PATCH 037/101] FloodFill corrections --- shaders/block.properties | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index fc47b6c..f4c6d03 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -32,8 +32,11 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false \ - supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false - + supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ + biomesoplenty:high_grass_plant \ + natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ + aquamirae:painting_aurora + # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose From 3cbf65f57af95f091ea4b3f1687507ffffbfb1ba Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Fri, 1 Nov 2024 22:21:34 +0100 Subject: [PATCH 038/101] Added SSS to 2 new blocks: --- shaders/block.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index f4c6d03..3e2729e 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -52,7 +52,7 @@ block.53= ## ground waving ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ - biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:hair \ + biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:hair biomesoplenty:dune_grass \ natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush \ @@ -81,7 +81,7 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble biomesoplenty:spanish_moss biomesoplenty:willow_vine \ - natures_spirit:lotus_flower natures_spirit:lotus_stem \ + natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:red_moss_carpet \ vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ herbalbrews:hibiscus_tea_block \ From a801a02a3f3cd8cd6e8e608987a188de90c42a7d Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:24:50 +0100 Subject: [PATCH 039/101] Added SSS to 2 new `beachparty` blocks --- shaders/block.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 3e2729e..97a0230 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -85,7 +85,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ herbalbrews:hibiscus_tea_block \ - beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair \ + beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ garnished:sorrowful_lichen garnished:anniversary_cake ## weak sss @@ -93,7 +93,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame biomesoplenty:toadstool \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ - beachparty:seashell_block \ + beachparty:seashell_block beachparty:beach_parasol \ farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail From 55d1b19aaf9b098860d6d92cea94b911a9c04c3d Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 14:18:47 +0100 Subject: [PATCH 040/101] Added support for `End's Delight` --- shaders/block.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/shaders/block.properties b/shaders/block.properties index 97a0230..dbfd576 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -95,6 +95,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ beachparty:seashell_block beachparty:beach_parasol \ farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ + ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail ## weak sss From ae05015d0fc21fe70214b9b0eff06954d736110d Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 15:38:52 +0100 Subject: [PATCH 041/101] `Create: Garnished` floodfill corrections --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index dbfd576..2fabce9 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -35,7 +35,8 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ biomesoplenty:high_grass_plant \ natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ - aquamirae:painting_aurora + aquamirae:painting_aurora \ + garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose From 3d23d4f1fe8b3b9439bac357db57ff0ecd0b8135 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 15:40:03 +0100 Subject: [PATCH 042/101] Added support for `Diagonal Fences` (floodfill) --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 2fabce9..c36c1d8 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -39,7 +39,8 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack # Blocks that occlude 25% of light -block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose +block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ + diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone From 3aea98fad33a5de5120dc50f6e6cafba9a553270 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 16:20:23 +0100 Subject: [PATCH 043/101] Added support for `Diagonal Windows` --- shaders/block.properties | 51 ++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index c36c1d8..c03672b 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -538,39 +538,56 @@ block.265=mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mc ####### ----- reflective translucents / glass ----- ####### -block.301=glass glass_pane +block.301=glass glass_pane \ + diagonalwindows:minecraft/glass_pane -block.302=black_stained_glass black_stained_glass_pane +block.302=black_stained_glass black_stained_glass_pane \ + diagonalwindows:minecraft/black_stained_glass_pane -block.303=blue_stained_glass blue_stained_glass_pane +block.303=blue_stained_glass blue_stained_glass_pane \ + diagonalwindows:minecraft/blue_stained_glass_pane -block.304=brown_stained_glass brown_stained_glass_pane +block.304=brown_stained_glass brown_stained_glass_pane \ + diagonalwindows:minecraft/brown_stained_glass_pane -block.305=cyan_stained_glass cyan_stained_glass_pane +block.305=cyan_stained_glass cyan_stained_glass_pane \ + diagonalwindows:minecraft/cyan_stained_glass_pane -block.306=gray_stained_glass gray_stained_glass_pane +block.306=gray_stained_glass gray_stained_glass_pane \ + diagonalwindows:minecraft/gray_stained_glass_pane -block.307=green_stained_glass green_stained_glass_pane +block.307=green_stained_glass green_stained_glass_pane \ + diagonalwindows:minecraft/green_stained_glass_pane -block.308=light_blue_stained_glass light_blue_stained_glass_pane +block.308=light_blue_stained_glass light_blue_stained_glass_pane \ + diagonalwindows:minecraft/light_blue_stained_glass_pane -block.309=light_gray_stained_glass light_gray_stained_glass_pane +block.309=light_gray_stained_glass light_gray_stained_glass_pane \ + diagonalwindows:minecraft/light_gray_stained_glass_pane -block.310=lime_stained_glass lime_stained_glass_pane +block.310=lime_stained_glass lime_stained_glass_pane \ + diagonalwindows:minecraft/lime_stained_glass_pane -block.311=magenta_stained_glass magenta_stained_glass_pane +block.311=magenta_stained_glass magenta_stained_glass_pane \ + diagonalwindows:minecraft/magenta_stained_glass_pane -block.312=orange_stained_glass orange_stained_glass_pane +block.312=orange_stained_glass orange_stained_glass_pane \ + diagonalwindows:minecraft/orange_stained_glass_pane -block.313=pink_stained_glass pink_stained_glass_pane +block.313=pink_stained_glass pink_stained_glass_pane \ + diagonalwindows:minecraft/pink_stained_glass_pane -block.314=purple_stained_glass purple_stained_glass_pane +block.314=purple_stained_glass purple_stained_glass_pane \ + diagonalwindows:minecraft/purple_stained_glass_pane -block.315=red_stained_glass red_stained_glass_pane +block.315=red_stained_glass red_stained_glass_pane \ + diagonalwindows:minecraft/red_stained_glass_pane -block.316=white_stained_glass white_stained_glass_pane +block.316=white_stained_glass white_stained_glass_pane \ + diagonalwindows:minecraft/white_stained_glass_pane -block.317=yellow_stained_glass yellow_stained_glass_pane +block.317=yellow_stained_glass yellow_stained_glass_pane \ + diagonalwindows:minecraft/yellow_stained_glass_pane block.318=honey_block From f9b89e0ea9a74f4eae3509317feb04a47edf050a Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 18:51:29 +0100 Subject: [PATCH 044/101] Added support for `Diagonal Walls` + fixed `iron_bars` from `Diagonal Windows` --- shaders/block.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index c03672b..8cabf24 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -43,7 +43,9 @@ block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_o diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence # Blocks that occlude 50% of light -block.52=iron_bars pointed_dripstone +block.52=iron_bars pointed_dripstone \ + diagonalwalls:minecraft/cobblestone_wall diagonalwalls:minecraft/mossy_cobblestone_wall diagonalwalls:minecraft/stone_brick_wall diagonalwalls:minecraft/mossy_stone_brick_wall diagonalwalls:minecraft/granite_wall diagonalwalls:minecraft/diorite_wall diagonalwalls:minecraft/andesite_wall diagonalwalls:minecraft/cobbled_deepslate_wall diagonalwalls:minecraft/polished_deepslate_wall diagonalwalls:minecraft/deepslate_brick_wall diagonalwalls:minecraft/deepslate_tile_wall diagonalwalls:minecraft/tuff_wall tuff_wall diagonalwalls:minecraft/polished_tuff_wall diagonalwalls:minecraft/tuff_brick_wall diagonalwalls:minecraft/brick_wall diagonalwalls:minecraft/mud_brick_wall diagonalwalls:minecraft/resin_brick_wall diagonalwalls:minecraft/sandstone_wall diagonalwalls:minecraft/red_sandstone_wall diagonalwalls:minecraft/prismarine_wall diagonalwalls:minecraft/nether_brick_wall diagonalwalls:minecraft/red_nether_brick_wall diagonalwalls:minecraft/blackstone_wall diagonalwalls:minecraft/polished_blackstone_wall diagonalwalls:minecraft/polished_blackstone_brick_wall diagonalwalls:minecraft/end_stone_brick_wall \ + diagonalwindows:minecraft/iron_bars # Blocks that occlude 75% of light block.53= From 80a9706e420f91acedb46d178fde5a9c3d8ec566 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 19:08:25 +0100 Subject: [PATCH 045/101] Added support for `FNaF's: Build & Decor (Java Edition)` --- shaders/block.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 8cabf24..84ac03b 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -36,7 +36,8 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can biomesoplenty:high_grass_plant \ natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ aquamirae:painting_aurora \ - garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack + garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ + fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ @@ -90,7 +91,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ herbalbrews:hibiscus_tea_block \ beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ - garnished:sorrowful_lichen garnished:anniversary_cake + garnished:sorrowful_lichen garnished:anniversary_cake \ + fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From 3e1127dfbf231f120040baf9a8fce95bffed67ee Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 19:18:56 +0100 Subject: [PATCH 046/101] Partial redstone components floodfill fix --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 84ac03b..a09ee9b 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -31,7 +31,7 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore -block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false \ +block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ biomesoplenty:high_grass_plant \ natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ From 12ffa0d2ca27fe237c1fe575d9b45ba934426df5 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 19:54:30 +0100 Subject: [PATCH 047/101] Floodfill correction to 2 `fd` blocks --- shaders/block.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index a09ee9b..4f9f748 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -37,7 +37,7 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ aquamirae:painting_aurora \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ - fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie + fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ From 7979ae551275ea7b0759becf9976948dee938003 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 2 Nov 2024 22:16:32 +0100 Subject: [PATCH 048/101] Added support for `Humility AFM` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 4f9f748..85ab4a7 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -41,7 +41,8 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ - diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence + diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence \ + humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_bamboo_black # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone \ From e16218aafd614b5a485e601cd86a63b95a695a1e Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 3 Nov 2024 18:52:42 +0100 Subject: [PATCH 049/101] More `Humility AFM` support --- shaders/block.properties | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 85ab4a7..e14ae13 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -42,7 +42,7 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence \ - humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_bamboo_black + humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_bamboo_black humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_anchor_tree_black humility-afm:cabinet_block_anchor_tree_blue humility-afm:cabinet_block_anchor_tree_brown humility-afm:cabinet_block_anchor_tree_cyan humility-afm:cabinet_block_anchor_tree_gray humility-afm:cabinet_block_anchor_tree_green humility-afm:cabinet_block_anchor_tree_light_blue humility-afm:cabinet_block_anchor_tree_light_gray humility-afm:cabinet_block_anchor_tree_lime humility-afm:cabinet_block_anchor_tree_magenta humility-afm:cabinet_block_anchor_tree_orange humility-afm:cabinet_block_anchor_tree_pink humility-afm:cabinet_block_anchor_tree_purple humility-afm:cabinet_block_anchor_tree_red humility-afm:cabinet_block_anchor_tree_white humility-afm:cabinet_block_anchor_tree_yellow humility-afm:cabinet_block_mushroom_black humility-afm:cabinet_block_mushroom_blue humility-afm:cabinet_block_mushroom_brown humility-afm:cabinet_block_mushroom_cyan humility-afm:cabinet_block_mushroom_gray humility-afm:cabinet_block_mushroom_green humility-afm:cabinet_block_mushroom_light_blue humility-afm:cabinet_block_mushroom_light_gray humility-afm:cabinet_block_mushroom_lime humility-afm:cabinet_block_mushroom_magenta humility-afm:cabinet_block_mushroom_orange humility-afm:cabinet_block_mushroom_pink humility-afm:cabinet_block_mushroom_purple humility-afm:cabinet_block_mushroom_red humility-afm:cabinet_block_mushroom_white humility-afm:cabinet_block_mushroom_yellow humility-afm:cabinet_block_mushroom_fir_black humility-afm:cabinet_block_mushroom_fir_blue humility-afm:cabinet_block_mushroom_fir_brown humility-afm:cabinet_block_mushroom_fir_cyan humility-afm:cabinet_block_mushroom_fir_gray humility-afm:cabinet_block_mushroom_fir_green humility-afm:cabinet_block_mushroom_fir_light_blue humility-afm:cabinet_block_mushroom_fir_light_gray humility-afm:cabinet_block_mushroom_fir_lime humility-afm:cabinet_block_mushroom_fir_magenta humility-afm:cabinet_block_mushroom_fir_orange humility-afm:cabinet_block_mushroom_fir_pink humility-afm:cabinet_block_mushroom_fir_purple humility-afm:cabinet_block_mushroom_fir_red humility-afm:cabinet_block_mushroom_fir_white humility-afm:cabinet_block_mushroom_fir_yellow humility-afm:cabinet_block_nether_sakura_black humility-afm:cabinet_block_nether_sakura_blue humility-afm:cabinet_block_nether_sakura_brown humility-afm:cabinet_block_nether_sakura_cyan humility-afm:cabinet_block_nether_sakura_gray humility-afm:cabinet_block_nether_sakura_green humility-afm:cabinet_block_nether_sakura_light_blue humility-afm:cabinet_block_nether_sakura_light_gray humility-afm:cabinet_block_nether_sakura_lime humility-afm:cabinet_block_nether_sakura_magenta humility-afm:cabinet_block_nether_sakura_orange humility-afm:cabinet_block_nether_sakura_pink humility-afm:cabinet_block_nether_sakura_purple humility-afm:cabinet_block_nether_sakura_red humility-afm:cabinet_block_nether_sakura_white humility-afm:cabinet_block_nether_sakura_yellow humility-afm:cabinet_block_stalagnate_black humility-afm:cabinet_block_stalagnate_blue humility-afm:cabinet_block_stalagnate_brown humility-afm:cabinet_block_stalagnate_cyan humility-afm:cabinet_block_stalagnate_gray humility-afm:cabinet_block_stalagnate_green humility-afm:cabinet_block_stalagnate_light_blue humility-afm:cabinet_block_stalagnate_light_gray humility-afm:cabinet_block_stalagnate_lime humility-afm:cabinet_block_stalagnate_magenta humility-afm:cabinet_block_stalagnate_orange humility-afm:cabinet_block_stalagnate_pink humility-afm:cabinet_block_stalagnate_purple humility-afm:cabinet_block_stalagnate_red humility-afm:cabinet_block_stalagnate_white humility-afm:cabinet_block_stalagnate_yellow humility-afm:cabinet_block_wart_black humility-afm:cabinet_block_wart_blue humility-afm:cabinet_block_wart_brown humility-afm:cabinet_block_wart_cyan humility-afm:cabinet_block_wart_gray humility-afm:cabinet_block_wart_green humility-afm:cabinet_block_wart_light_blue humility-afm:cabinet_block_wart_light_gray humility-afm:cabinet_block_wart_lime humility-afm:cabinet_block_wart_magenta humility-afm:cabinet_block_wart_orange humility-afm:cabinet_block_wart_pink humility-afm:cabinet_block_wart_purple humility-afm:cabinet_block_wart_red humility-afm:cabinet_block_wart_white humility-afm:cabinet_block_wart_yellow humility-afm:cabinet_block_willow_black humility-afm:cabinet_block_willow_blue humility-afm:cabinet_block_willow_brown humility-afm:cabinet_block_willow_cyan humility-afm:cabinet_block_willow_gray humility-afm:cabinet_block_willow_green humility-afm:cabinet_block_willow_light_blue humility-afm:cabinet_block_willow_light_gray humility-afm:cabinet_block_willow_lime humility-afm:cabinet_block_willow_magenta humility-afm:cabinet_block_willow_orange humility-afm:cabinet_block_willow_pink humility-afm:cabinet_block_willow_purple humility-afm:cabinet_block_willow_red humility-afm:cabinet_block_willow_white humility-afm:cabinet_block_willow_yellow humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_anchor_tree_black humility-afm:illuminated_cabinet_block_anchor_tree_blue humility-afm:illuminated_cabinet_block_anchor_tree_brown humility-afm:illuminated_cabinet_block_anchor_tree_cyan humility-afm:illuminated_cabinet_block_anchor_tree_gray humility-afm:illuminated_cabinet_block_anchor_tree_green humility-afm:illuminated_cabinet_block_anchor_tree_light_blue humility-afm:illuminated_cabinet_block_anchor_tree_light_gray humility-afm:illuminated_cabinet_block_anchor_tree_lime humility-afm:illuminated_cabinet_block_anchor_tree_magenta humility-afm:illuminated_cabinet_block_anchor_tree_orange humility-afm:illuminated_cabinet_block_anchor_tree_pink humility-afm:illuminated_cabinet_block_anchor_tree_purple humility-afm:illuminated_cabinet_block_anchor_tree_red humility-afm:illuminated_cabinet_block_anchor_tree_white humility-afm:illuminated_cabinet_block_anchor_tree_yellow humility-afm:illuminated_cabinet_block_mushroom_black humility-afm:illuminated_cabinet_block_mushroom_blue humility-afm:illuminated_cabinet_block_mushroom_brown humility-afm:illuminated_cabinet_block_mushroom_cyan humility-afm:illuminated_cabinet_block_mushroom_gray humility-afm:illuminated_cabinet_block_mushroom_green humility-afm:illuminated_cabinet_block_mushroom_light_blue humility-afm:illuminated_cabinet_block_mushroom_light_gray humility-afm:illuminated_cabinet_block_mushroom_lime humility-afm:illuminated_cabinet_block_mushroom_magenta humility-afm:illuminated_cabinet_block_mushroom_orange humility-afm:illuminated_cabinet_block_mushroom_pink humility-afm:illuminated_cabinet_block_mushroom_purple humility-afm:illuminated_cabinet_block_mushroom_red humility-afm:illuminated_cabinet_block_mushroom_white humility-afm:illuminated_cabinet_block_mushroom_yellow humility-afm:illuminated_cabinet_block_mushroom_fir_black humility-afm:illuminated_cabinet_block_mushroom_fir_blue humility-afm:illuminated_cabinet_block_mushroom_fir_brown humility-afm:illuminated_cabinet_block_mushroom_fir_cyan humility-afm:illuminated_cabinet_block_mushroom_fir_gray humility-afm:illuminated_cabinet_block_mushroom_fir_green humility-afm:illuminated_cabinet_block_mushroom_fir_light_blue humility-afm:illuminated_cabinet_block_mushroom_fir_light_gray humility-afm:illuminated_cabinet_block_mushroom_fir_lime humility-afm:illuminated_cabinet_block_mushroom_fir_magenta humility-afm:illuminated_cabinet_block_mushroom_fir_orange humility-afm:illuminated_cabinet_block_mushroom_fir_pink humility-afm:illuminated_cabinet_block_mushroom_fir_purple humility-afm:illuminated_cabinet_block_mushroom_fir_red humility-afm:illuminated_cabinet_block_mushroom_fir_white humility-afm:illuminated_cabinet_block_mushroom_fir_yellow humility-afm:illuminated_cabinet_block_nether_sakura_black humility-afm:illuminated_cabinet_block_nether_sakura_blue humility-afm:illuminated_cabinet_block_nether_sakura_brown humility-afm:illuminated_cabinet_block_nether_sakura_cyan humility-afm:illuminated_cabinet_block_nether_sakura_gray humility-afm:illuminated_cabinet_block_nether_sakura_green humility-afm:illuminated_cabinet_block_nether_sakura_light_blue humility-afm:illuminated_cabinet_block_nether_sakura_light_gray humility-afm:illuminated_cabinet_block_nether_sakura_lime humility-afm:illuminated_cabinet_block_nether_sakura_magenta humility-afm:illuminated_cabinet_block_nether_sakura_orange humility-afm:illuminated_cabinet_block_nether_sakura_pink humility-afm:illuminated_cabinet_block_nether_sakura_purple humility-afm:illuminated_cabinet_block_nether_sakura_red humility-afm:illuminated_cabinet_block_nether_sakura_white humility-afm:illuminated_cabinet_block_nether_sakura_yellow humility-afm:illuminated_cabinet_block_stalagnate_black humility-afm:illuminated_cabinet_block_stalagnate_blue humility-afm:illuminated_cabinet_block_stalagnate_brown humility-afm:illuminated_cabinet_block_stalagnate_cyan humility-afm:illuminated_cabinet_block_stalagnate_gray humility-afm:illuminated_cabinet_block_stalagnate_green humility-afm:illuminated_cabinet_block_stalagnate_light_blue humility-afm:illuminated_cabinet_block_stalagnate_light_gray humility-afm:illuminated_cabinet_block_stalagnate_lime humility-afm:illuminated_cabinet_block_stalagnate_magenta humility-afm:illuminated_cabinet_block_stalagnate_orange humility-afm:illuminated_cabinet_block_stalagnate_pink humility-afm:illuminated_cabinet_block_stalagnate_purple humility-afm:illuminated_cabinet_block_stalagnate_red humility-afm:illuminated_cabinet_block_stalagnate_white humility-afm:illuminated_cabinet_block_stalagnate_yellow humility-afm:illuminated_cabinet_block_wart_black humility-afm:illuminated_cabinet_block_wart_blue humility-afm:illuminated_cabinet_block_wart_brown humility-afm:illuminated_cabinet_block_wart_cyan humility-afm:illuminated_cabinet_block_wart_gray humility-afm:illuminated_cabinet_block_wart_green humility-afm:illuminated_cabinet_block_wart_light_blue humility-afm:illuminated_cabinet_block_wart_light_gray humility-afm:illuminated_cabinet_block_wart_lime humility-afm:illuminated_cabinet_block_wart_magenta humility-afm:illuminated_cabinet_block_wart_orange humility-afm:illuminated_cabinet_block_wart_pink humility-afm:illuminated_cabinet_block_wart_purple humility-afm:illuminated_cabinet_block_wart_red humility-afm:illuminated_cabinet_block_wart_white humility-afm:illuminated_cabinet_block_wart_yellow humility-afm:illuminated_cabinet_block_willow_black humility-afm:illuminated_cabinet_block_willow_blue humility-afm:illuminated_cabinet_block_willow_brown humility-afm:illuminated_cabinet_block_willow_cyan humility-afm:illuminated_cabinet_block_willow_gray humility-afm:illuminated_cabinet_block_willow_green humility-afm:illuminated_cabinet_block_willow_light_blue humility-afm:illuminated_cabinet_block_willow_light_gray humility-afm:illuminated_cabinet_block_willow_lime humility-afm:illuminated_cabinet_block_willow_magenta humility-afm:illuminated_cabinet_block_willow_orange humility-afm:illuminated_cabinet_block_willow_pink humility-afm:illuminated_cabinet_block_willow_purple humility-afm:illuminated_cabinet_block_willow_red humility-afm:illuminated_cabinet_block_willow_white humility-afm:illuminated_cabinet_block_willow_yellow # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone \ @@ -50,7 +50,7 @@ block.52=iron_bars pointed_dripstone \ diagonalwindows:minecraft/iron_bars # Blocks that occlude 75% of light -block.53= +block.53=humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate \ ####### ----- waving blocks with SSS ----- ####### @@ -390,7 +390,8 @@ block.195=glow_lichen block.196=glowstone \ mcwlights:glowstone_slab -block.197=jack_o_lantern +block.197=jack_o_lantern \ + humility-afm:jack_o_lantern_redstone block.198=lantern \ amendments:wall_lantern:light_level=15:lit=true \ @@ -485,7 +486,8 @@ block.240=sea_pickle:waterlogged=true:pickles=3 block.241=sea_pickle:waterlogged=true:pickles=4 block.242=sea_lantern \ - mcwlights:sea_lantern_slab + mcwlights:sea_lantern_slab \ + humility-afm:jack_o_lantern_soul block.243=shroomlight \ mcwlights:shroomlight_slab From 4130c945f88b3c4f154920b24c3edf0fd1078c2b Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 3 Nov 2024 18:53:18 +0100 Subject: [PATCH 050/101] Added SSS to `fd:birthday_cake` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index e14ae13..d4f05b1 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -103,7 +103,8 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame beachparty:seashell_block beachparty:beach_parasol \ farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ - create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail + create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ + fd:birthday_cake ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 5c8dabb06a943f53fc963d379f862f54550ecee4 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 3 Nov 2024 20:46:30 +0100 Subject: [PATCH 051/101] More `Humility AFM` support (LEDs) --- shaders/block.properties | 49 ++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index d4f05b1..67efe67 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -511,38 +511,53 @@ block.248=westerosblocks:safe_fire block.249=conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light -block.250=mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true +block.250=mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true \ + humility-afm:led_black -block.251=mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true +block.251=mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true \ + humility-afm:led_blue -block.252=mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true +block.252=mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true \ + humility-afm:led_brown -block.253=mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true +block.253=mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true \ + humility-afm:led_cyan -block.254=mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true +block.254=mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true \ + humility-afm:led_gray -block.255=mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true +block.255=mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true \ + humility-afm:led_green -block.256=mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true +block.256=mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true \ + humility-afm:led_light_blue -block.257=mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true +block.257=mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true \ + humility-afm:led_light_gray -block.258=mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true +block.258=mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true \ + humility-afm:led_lime -block.259=mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true +block.259=mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true \ + humility-afm:led_magenta -block.260=mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true +block.260=mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true \ + humility-afm:led_orange -block.261=mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true +block.261=mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true \ + humility-afm:led_pink -block.262=mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true +block.262=mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true \ + humility-afm:led_purple -block.263=mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true +block.263=mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true \ + humility-afm:led_red -block.264=mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true - -block.265=mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true +block.264=mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true \ + humility-afm:led_white +block.265=mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true \ + humility-afm:led_yellow ####### ----- reflective translucents / glass ----- ####### From f2646313a56266806e3059c55075ffe0000e4565 Mon Sep 17 00:00:00 2001 From: MikiP98 Date: Tue, 5 Nov 2024 18:15:10 +0100 Subject: [PATCH 052/101] Added BLOCK_SSS_STRONG to LPV mixWeight = 1.0 category, to fix floodfill with strong SSS block or vice versa fix SSS with blocks that are *ignored* by floodfill --- shaders/dimensions/setup.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/dimensions/setup.csh b/shaders/dimensions/setup.csh index 87c7d9e..cc09547 100644 --- a/shaders/dimensions/setup.csh +++ b/shaders/dimensions/setup.csh @@ -62,7 +62,7 @@ void main() { uint mixMask = 0xFFFF; vec3 tintColor = vec3(1.0); - if (blockId == BLOCK_SSS_WEAK || blockId == BLOCK_SSS_WEAK_3) { + if (blockId == BLOCK_SSS_WEAK || blockId == BLOCK_SSS_WEAK_3 || blockId == BLOCK_SSS_STRONG) { mixWeight = 1.0; } From a404a8d265e4ad06f412273eba39734516468fdd Mon Sep 17 00:00:00 2001 From: MikiP98 Date: Tue, 5 Nov 2024 18:16:51 +0100 Subject: [PATCH 053/101] Fixed SSS with floodfill fix for FNaF's: Build & Decor (Java Edition) blocks thanks to previous commit --- shaders/block.properties | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 67efe67..23477f7 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -36,8 +36,7 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can biomesoplenty:high_grass_plant \ natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ aquamirae:painting_aurora \ - garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ - fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff + garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ @@ -93,7 +92,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila herbalbrews:hibiscus_tea_block \ beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ garnished:sorrowful_lichen garnished:anniversary_cake \ - fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie + fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From c6ebe3dadbf073ad5f3f3fbc3fd1f542e02f8c57 Mon Sep 17 00:00:00 2001 From: MikiP98 Date: Tue, 5 Nov 2024 18:19:56 +0100 Subject: [PATCH 054/101] Fixed SSS for biomesoplenty:high_grass_plant, thx to floodfill with SSS fix --- shaders/block.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 23477f7..57d90da 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -33,7 +33,6 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ - biomesoplenty:high_grass_plant \ natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ aquamirae:painting_aurora \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack From fa06df58461666399d8082992d5720c6d32638ce Mon Sep 17 00:00:00 2001 From: MikiP98 Date: Tue, 5 Nov 2024 18:21:06 +0100 Subject: [PATCH 055/101] Fixed SSS for atures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower, thx to floodfill with SSS fix --- shaders/block.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 57d90da..72e6310 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -33,7 +33,6 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ - natures_spirit:red_moss_carpet natures_spirit:lotus_stem natures_spirit:lotus_flower \ aquamirae:painting_aurora \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack From 4bb962855c0a7eeade26f7c9fd5a46686f560686 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Tue, 5 Nov 2024 18:38:15 +0100 Subject: [PATCH 056/101] Added SSS to `aquamirae:painting_aurora` --- shaders/block.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 72e6310..9ef5a89 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -33,7 +33,6 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ - aquamirae:painting_aurora \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack # Blocks that occlude 25% of light @@ -101,7 +100,8 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ - fd:birthday_cake + fd:birthday_cake \ + aquamirae:painting_aurora ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 0f0f06fafb44894fa5482c4a781da35d4920ab28 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:45:23 +0100 Subject: [PATCH 057/101] Better Humility AFM support (candlesticks) --- shaders/block.properties | 59 ++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 9ef5a89..6790c1e 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -33,8 +33,9 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ - garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack - + garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ + humility-afm:candlestick_copper humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false + # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence \ @@ -135,7 +136,8 @@ block.106=candle:candles=1:lit=true \ supplementaries:candle_holder:candles=1:lit=true block.107=candle:candles=2:lit=true \ - supplementaries:candle_holder:candles=2:lit=true + supplementaries:candle_holder:candles=2:lit=true \ + humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true block.108=candle:candles=3:lit=true \ supplementaries:candle_holder:candles=3:lit=true @@ -147,7 +149,8 @@ block.110=black_candle:candles=1:lit=true \ supplementaries:candle_holder_black:candles=1:lit=true block.111=black_candle:candles=2:lit=true \ - supplementaries:candle_holder_black:candles=2:lit=true + supplementaries:candle_holder_black:candles=2:lit=true \ + humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true block.112=black_candle:candles=3:lit=true \ supplementaries:candle_holder_black:candles=3:lit=true @@ -159,7 +162,8 @@ block.114=blue_candle:candles=1:lit=true \ supplementaries:candle_holder_blue:candles=1:lit=true block.115=blue_candle:candles=2:lit=true \ - supplementaries:candle_holder_blue:candles=2:lit=true + supplementaries:candle_holder_blue:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_blue:lit=true humility-afm:candlestick_exposed_copper_candle_blue:lit=true humility-afm:candlestick_gold_candle_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=true humility-afm:candlestick_weathered_copper_candle_blue:lit=true block.116=blue_candle:candles=3:lit=true \ supplementaries:candle_holder_blue:candles=3:lit=true @@ -171,7 +175,8 @@ block.118=brown_candle:candles=1:lit=true \ supplementaries:candle_holder_brown:candles=1:lit=true block.119=brown_candle:candles=2:lit=true \ - supplementaries:candle_holder_brown:candles=2:lit=true + supplementaries:candle_holder_brown:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_brown:lit=true humility-afm:candlestick_exposed_copper_candle_brown:lit=true humility-afm:candlestick_gold_candle_brown:lit=true humility-afm:candlestick_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=true humility-afm:candlestick_weathered_copper_candle_brown:lit=true block.120=brown_candle:candles=3:lit=true \ supplementaries:candle_holder_brown:candles=3:lit=true @@ -183,7 +188,8 @@ block.122=cyan_candle:candles=1:lit=true \ supplementaries:candle_holder_cyan:candles=1:lit=true block.123=cyan_candle:candles=2:lit=true \ - supplementaries:candle_holder_cyan:candles=2:lit=true + supplementaries:candle_holder_cyan:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_cyan:lit=true humility-afm:candlestick_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_gold_candle_cyan:lit=true humility-afm:candlestick_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_weathered_copper_candle_cyan:lit=true block.124=cyan_candle:candles=3:lit=true \ supplementaries:candle_holder_cyan:candles=3:lit=true @@ -195,7 +201,8 @@ block.126=gray_candle:candles=1:lit=true \ supplementaries:candle_holder_gray:candles=1:lit=true block.127=gray_candle:candles=2:lit=true \ - supplementaries:candle_holder_gray:candles=2:lit=true + supplementaries:candle_holder_gray:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_gray:lit=true humility-afm:candlestick_exposed_copper_candle_gray:lit=true humility-afm:candlestick_gold_candle_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=true humility-afm:candlestick_weathered_copper_candle_gray:lit=true block.128=gray_candle:candles=2:lit=true \ supplementaries:candle_holder_gray:candles=3:lit=true @@ -207,7 +214,8 @@ block.130=green_candle:candles=1:lit=true \ supplementaries:candle_holder_green:candles=1:lit=true block.131=green_candle:candles=2:lit=true \ - supplementaries:candle_holder_green:candles=2:lit=true + supplementaries:candle_holder_green:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_green:lit=true humility-afm:candlestick_exposed_copper_candle_green:lit=true humility-afm:candlestick_gold_candle_green:lit=true humility-afm:candlestick_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_copper_candle_green:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=true humility-afm:candlestick_weathered_copper_candle_green:lit=true block.132=green_candle:candles=3:lit=true \ supplementaries:candle_holder_green:candles=3:lit=true @@ -219,7 +227,8 @@ block.134=light_blue_candle:candles=1:lit=true \ supplementaries:candle_holder_light_blue:candles=1:lit=true block.135=light_blue_candle:candles=2:lit=true \ - supplementaries:candle_holder_light_blue:candles=2:lit=true + supplementaries:candle_holder_light_blue:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_light_blue:lit=true humility-afm:candlestick_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_gold_candle_light_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_weathered_copper_candle_light_blue:lit=true block.136=light_blue_candle:candles=3:lit=true \ supplementaries:candle_holder_light_blue:candles=3:lit=true @@ -231,7 +240,8 @@ block.138=light_gray_candle:candles=1:lit=true \ supplementaries:candle_holder_light_gray:candles=1:lit=true block.139=light_gray_candle:candles=2:lit=true \ - supplementaries:candle_holder_light_gray:candles=2:lit=true + supplementaries:candle_holder_light_gray:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_light_gray:lit=true humility-afm:candlestick_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_gold_candle_light_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_weathered_copper_candle_light_gray:lit=true block.140=light_gray_candle:candles=3:lit=true \ supplementaries:candle_holder_light_gray:candles=3:lit=true @@ -243,7 +253,8 @@ block.142=lime_candle:candles=1:lit=true \ supplementaries:candle_holder_lime:candles=1:lit=true block.143=lime_candle:candles=2:lit=true \ - supplementaries:candle_holder_lime:candles=2:lit=true + supplementaries:candle_holder_lime:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_lime:lit=true humility-afm:candlestick_exposed_copper_candle_lime:lit=true humility-afm:candlestick_gold_candle_lime:lit=true humility-afm:candlestick_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=true humility-afm:candlestick_weathered_copper_candle_lime:lit=true block.144=lime_candle:candles=3:lit=true \ supplementaries:candle_holder_lime:candles=3:lit=true @@ -255,7 +266,8 @@ block.146=magenta_candle:candles=1:lit=true \ supplementaries:candle_holder_magenta:candles=1:lit=true block.147=magenta_candle:candles=2:lit=true \ - supplementaries:candle_holder_magenta:candles=2:lit=true + supplementaries:candle_holder_magenta:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_magenta:lit=true humility-afm:candlestick_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_gold_candle_magenta:lit=true humility-afm:candlestick_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_weathered_copper_candle_magenta:lit=true block.148=magenta_candle:candles=3:lit=true \ supplementaries:candle_holder_magenta:candles=3:lit=true @@ -267,7 +279,8 @@ block.150=orange_candle:candles=1:lit=true \ supplementaries:candle_holder_orange:candles=1:lit=true block.151=orange_candle:candles=2:lit=true \ - supplementaries:candle_holder_orange:candles=2:lit=true + supplementaries:candle_holder_orange:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_orange:lit=true humility-afm:candlestick_exposed_copper_candle_orange:lit=true humility-afm:candlestick_gold_candle_orange:lit=true humility-afm:candlestick_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=true humility-afm:candlestick_weathered_copper_candle_orange:lit=true block.152=orange_candle:candles=3:lit=true \ supplementaries:candle_holder_orange:candles=3:lit=true @@ -279,7 +292,8 @@ block.154=pink_candle:candles=1:lit=true \ supplementaries:candle_holder_pink:candles=1:lit=true block.155=pink_candle:candles=2:lit=true \ - supplementaries:candle_holder_pink:candles=2:lit=true + supplementaries:candle_holder_pink:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_pink:lit=true humility-afm:candlestick_exposed_copper_candle_pink:lit=true humility-afm:candlestick_gold_candle_pink:lit=true humility-afm:candlestick_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=true humility-afm:candlestick_weathered_copper_candle_pink:lit=true block.156=pink_candle:candles=3:lit=true \ supplementaries:candle_holder_pink:candles=3:lit=true @@ -291,7 +305,8 @@ block.158=purple_candle:candles=1:lit=true \ supplementaries:candle_holder_purple:candles=1:lit=true block.159=purple_candle:candles=2:lit=true \ - supplementaries:candle_holder_purple:candles=2:lit=true + supplementaries:candle_holder_purple:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_purple:lit=true humility-afm:candlestick_exposed_copper_candle_purple:lit=true humility-afm:candlestick_gold_candle_purple:lit=true humility-afm:candlestick_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=true humility-afm:candlestick_weathered_copper_candle_purple:lit=true block.160=purple_candle:candles=3:lit=true \ supplementaries:candle_holder_purple:candles=3:lit=true @@ -303,7 +318,8 @@ block.162=red_candle:candles=1:lit=true \ supplementaries:candle_holder_red:candles=1:lit=true block.163=red_candle:candles=2:lit=true \ - supplementaries:candle_holder_red:candles=2:lit=true + supplementaries:candle_holder_red:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_red:lit=true humility-afm:candlestick_exposed_copper_candle_red:lit=true humility-afm:candlestick_gold_candle_red:lit=true humility-afm:candlestick_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_copper_candle_red:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=true humility-afm:candlestick_weathered_copper_candle_red:lit=true block.164=red_candle:candles=3:lit=true \ supplementaries:candle_holder_red:candles=3:lit=true @@ -315,7 +331,8 @@ block.166=white_candle:candles=1:lit=true \ supplementaries:candle_holder_white:candles=1:lit=true block.167=white_candle:candles=2:lit=true \ - supplementaries:candle_holder_white:candles=2:lit=true + supplementaries:candle_holder_white:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true block.168=white_candle:candles=3:lit=true \ supplementaries:candle_holder_white:candles=3:lit=true @@ -327,7 +344,8 @@ block.170=yellow_candle:candles=1:lit=true \ supplementaries:candle_holder_yellow:candles=1:lit=true block.171=yellow_candle:candles=2:lit=true \ - supplementaries:candle_holder_yellow:candles=2:lit=true + supplementaries:candle_holder_yellow:candles=2:lit=true \ + humility-afm:candlestick_copper_candle_yellow:lit=true humility-afm:candlestick_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_gold_candle_yellow:lit=true humility-afm:candlestick_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=true humility-afm:candlestick_weathered_copper_candle_yellow:lit=true block.172=yellow_candle:candles=3:lit=true \ supplementaries:candle_holder_yellow:candles=3:lit=true @@ -339,7 +357,8 @@ block.174=candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle: supplementaries:candle_holder:candles=1:lit=true supplementaries:candle_holder_black:candles=1:lit=true supplementaries:candle_holder_blue:candles=1:lit=true supplementaries:candle_holder_brown:candles=1:lit=true supplementaries:candle_holder_cyan:candles=1:lit=true supplementaries:candle_holder_gray:candles=1:lit=true supplementaries:candle_holder_green:candles=1:lit=true supplementaries:candle_holder_light_blue:candles=1:lit=true supplementaries:candle_holder_light_gray:candles=1:lit=true supplementaries:candle_holder_lime:candles=1:lit=true supplementaries:candle_holder_magenta:candles=1:lit=true supplementaries:candle_holder_orange:candles=1:lit=true supplementaries:candle_holder_pink:candles=1:lit=true supplementaries:candle_holder_purple:candles=1:lit=true supplementaries:candle_holder_red:candles=1:lit=true supplementaries:candle_holder_white:candles=1:lit=true supplementaries:candle_holder_yellow:candles=1:lit=true block.175=candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true \ - supplementaries:candle_holder:candles=2:lit=true supplementaries:candle_holder_black:candles=2:lit=true supplementaries:candle_holder_blue:candles=2:lit=true supplementaries:candle_holder_brown:candles=2:lit=true supplementaries:candle_holder_cyan:candles=2:lit=true supplementaries:candle_holder_gray:candles=2:lit=true supplementaries:candle_holder_green:candles=2:lit=true supplementaries:candle_holder_light_blue:candles=2:lit=true supplementaries:candle_holder_light_gray:candles=2:lit=true supplementaries:candle_holder_lime:candles=2:lit=true supplementaries:candle_holder_magenta:candles=2:lit=true supplementaries:candle_holder_orange:candles=2:lit=true supplementaries:candle_holder_pink:candles=2:lit=true supplementaries:candle_holder_purple:candles=2:lit=true supplementaries:candle_holder_red:candles=2:lit=true supplementaries:candle_holder_white:candles=2:lit=true supplementaries:candle_holder_yellow:candles=2:lit=true + supplementaries:candle_holder:candles=2:lit=true supplementaries:candle_holder_black:candles=2:lit=true supplementaries:candle_holder_blue:candles=2:lit=true supplementaries:candle_holder_brown:candles=2:lit=true supplementaries:candle_holder_cyan:candles=2:lit=true supplementaries:candle_holder_gray:candles=2:lit=true supplementaries:candle_holder_green:candles=2:lit=true supplementaries:candle_holder_light_blue:candles=2:lit=true supplementaries:candle_holder_light_gray:candles=2:lit=true supplementaries:candle_holder_lime:candles=2:lit=true supplementaries:candle_holder_magenta:candles=2:lit=true supplementaries:candle_holder_orange:candles=2:lit=true supplementaries:candle_holder_pink:candles=2:lit=true supplementaries:candle_holder_purple:candles=2:lit=true supplementaries:candle_holder_red:candles=2:lit=true supplementaries:candle_holder_white:candles=2:lit=true supplementaries:candle_holder_yellow:candles=2:lit=true \ + humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_copper_candle_black:lit=true humility-afm:candlestick_copper_candle_blue:lit=true humility-afm:candlestick_copper_candle_brown:lit=true humility-afm:candlestick_copper_candle_cyan:lit=true humility-afm:candlestick_copper_candle_gray:lit=true humility-afm:candlestick_copper_candle_green:lit=true humility-afm:candlestick_copper_candle_light_blue:lit=true humility-afm:candlestick_copper_candle_light_gray:lit=true humility-afm:candlestick_copper_candle_lime:lit=true humility-afm:candlestick_copper_candle_magenta:lit=true humility-afm:candlestick_copper_candle_orange:lit=true humility-afm:candlestick_copper_candle_pink:lit=true humility-afm:candlestick_copper_candle_purple:lit=true humility-afm:candlestick_copper_candle_red:lit=true humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_copper_candle_yellow:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle_black:lit=true humility-afm:candlestick_exposed_copper_candle_blue:lit=true humility-afm:candlestick_exposed_copper_candle_brown:lit=true humility-afm:candlestick_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_exposed_copper_candle_gray:lit=true humility-afm:candlestick_exposed_copper_candle_green:lit=true humility-afm:candlestick_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_exposed_copper_candle_lime:lit=true humility-afm:candlestick_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_exposed_copper_candle_orange:lit=true humility-afm:candlestick_exposed_copper_candle_pink:lit=true humility-afm:candlestick_exposed_copper_candle_purple:lit=true humility-afm:candlestick_exposed_copper_candle_red:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_gold_candle_black:lit=true humility-afm:candlestick_gold_candle_blue:lit=true humility-afm:candlestick_gold_candle_brown:lit=true humility-afm:candlestick_gold_candle_cyan:lit=true humility-afm:candlestick_gold_candle_gray:lit=true humility-afm:candlestick_gold_candle_green:lit=true humility-afm:candlestick_gold_candle_light_blue:lit=true humility-afm:candlestick_gold_candle_light_gray:lit=true humility-afm:candlestick_gold_candle_lime:lit=true humility-afm:candlestick_gold_candle_magenta:lit=true humility-afm:candlestick_gold_candle_orange:lit=true humility-afm:candlestick_gold_candle_pink:lit=true humility-afm:candlestick_gold_candle_purple:lit=true humility-afm:candlestick_gold_candle_red:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_gold_candle_yellow:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_oxidized_copper_candle_black:lit=true humility-afm:candlestick_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_green:lit=true humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_oxidized_copper_candle_red:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle_black:lit=true humility-afm:candlestick_waxed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_copper_candle_green:lit=true humility-afm:candlestick_waxed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_copper_candle_red:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle_black:lit=true humility-afm:candlestick_weathered_copper_candle_blue:lit=true humility-afm:candlestick_weathered_copper_candle_brown:lit=true humility-afm:candlestick_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_weathered_copper_candle_gray:lit=true humility-afm:candlestick_weathered_copper_candle_green:lit=true humility-afm:candlestick_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_weathered_copper_candle_lime:lit=true humility-afm:candlestick_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_weathered_copper_candle_orange:lit=true humility-afm:candlestick_weathered_copper_candle_pink:lit=true humility-afm:candlestick_weathered_copper_candle_purple:lit=true humility-afm:candlestick_weathered_copper_candle_red:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_yellow:lit=true block.176=candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true \ supplementaries:candle_holder:candles=3:lit=true supplementaries:candle_holder_black:candles=3:lit=true supplementaries:candle_holder_blue:candles=3:lit=true supplementaries:candle_holder_brown:candles=3:lit=true supplementaries:candle_holder_cyan:candles=3:lit=true supplementaries:candle_holder_gray:candles=3:lit=true supplementaries:candle_holder_green:candles=3:lit=true supplementaries:candle_holder_light_blue:candles=3:lit=true supplementaries:candle_holder_light_gray:candles=3:lit=true supplementaries:candle_holder_lime:candles=3:lit=true supplementaries:candle_holder_magenta:candles=3:lit=true supplementaries:candle_holder_orange:candles=3:lit=true supplementaries:candle_holder_pink:candles=3:lit=true supplementaries:candle_holder_purple:candles=3:lit=true supplementaries:candle_holder_red:candles=3:lit=true supplementaries:candle_holder_white:candles=3:lit=true supplementaries:candle_holder_yellow:candles=3:lit=true From fd80a62426f113c7609d6b3851070f84cf906eac Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:56:30 +0100 Subject: [PATCH 058/101] Improved `Aquamirae` support (SSS) --- shaders/block.properties | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 6790c1e..e391b97 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -90,7 +90,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila herbalbrews:hibiscus_tea_block \ beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ garnished:sorrowful_lichen garnished:anniversary_cake \ - fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff + fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff \ + aquamirae:elodea ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ @@ -102,7 +103,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ fd:birthday_cake \ - aquamirae:painting_aurora + aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From 2f23ff945b05c9fcd2cc5fa801de081e8f10584b Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Tue, 5 Nov 2024 23:10:24 +0100 Subject: [PATCH 059/101] More `BetterEnd` and `BetterNether` support (coloured lights) --- shaders/block.properties | 50 +++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index e391b97..a46908b 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -529,52 +529,70 @@ block.248=westerosblocks:safe_fire block.249=conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light block.250=mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true \ - humility-afm:led_black + humility-afm:led_black \ + betterend:terminite_bulb_lantern_black betterend:iron_bulb_lantern_black block.251=mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true \ - humility-afm:led_blue + humility-afm:led_blue \ + betternether:blue_weeping_obsidian \ + betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue block.252=mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true \ - humility-afm:led_brown + humility-afm:led_brown \ + betterend:terminite_bulb_lantern_brown betterend:iron_bulb_lantern_brown block.253=mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true \ - humility-afm:led_cyan + humility-afm:led_cyan \ + betterend:terminite_bulb_lantern_cyan betterend:iron_bulb_lantern_cyan block.254=mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true \ - humility-afm:led_gray + humility-afm:led_gray \ + betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray block.255=mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true \ - humility-afm:led_green + humility-afm:led_green \ + betterend:terminite_bulb_lantern_green betterend:iron_bulb_lantern_green block.256=mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true \ - humility-afm:led_light_blue + humility-afm:led_light_blue \ + betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue block.257=mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true \ - humility-afm:led_light_gray + humility-afm:led_light_gray \ + betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray block.258=mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true \ - humility-afm:led_lime + humility-afm:led_lime \ + betterend:terminite_bulb_lantern_lime betterend:iron_bulb_lantern_lime block.259=mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true \ - humility-afm:led_magenta + humility-afm:led_magenta \ + betterend:terminite_bulb_lantern_magenta betterend:iron_bulb_lantern_magenta block.260=mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true \ - humility-afm:led_orange + humility-afm:led_orange \ + betterend:terminite_bulb_lantern_orange betterend:iron_bulb_lantern_orange block.261=mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true \ - humility-afm:led_pink + humility-afm:led_pink \ + betterend:terminite_bulb_lantern_pink betterend:iron_bulb_lantern_pink block.262=mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true \ - humility-afm:led_purple + humility-afm:led_purple \ + betternether:whispering_gourd_lantern \ + betterend:terminite_bulb_lantern_purple betterend:iron_bulb_lantern_purple block.263=mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true \ - humility-afm:led_red + humility-afm:led_red \ + betterend:terminite_bulb_lantern_red betterend:iron_bulb_lantern_red block.264=mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true \ - humility-afm:led_white + humility-afm:led_white \ + betterend:terminite_bulb_lantern_white betterend:iron_bulb_lantern_white block.265=mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true \ - humility-afm:led_yellow + humility-afm:led_yellow \ + betterend:iron_bulb_lantern_yellow betterend:terminite_bulb_lantern_yellow ####### ----- reflective translucents / glass ----- ####### From 1cc5325bd72415f1056c19b3f873fceb9e6433d7 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:33:12 +0100 Subject: [PATCH 060/101] Added support for `SaveTheHotbar!` and `Gravestones` (SSS and floodfill) --- shaders/block.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index a46908b..69e0a45 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -34,7 +34,8 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ - humility-afm:candlestick_copper humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false + humility-afm:candlestick_copper humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false \ + gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ @@ -103,7 +104,8 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ fd:birthday_cake \ - aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora + aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ + savethehotbar:sack savethehotbar:skeleton_head_grave savethehotbar:zombie_head_grave ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ From ceae7b80daa20eec31dc5274244ce002171b4b05 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:57:51 +0100 Subject: [PATCH 061/101] Added comment about `diagonalwalls` --- shaders/block.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/shaders/block.properties b/shaders/block.properties index 69e0a45..15f0953 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -46,6 +46,7 @@ block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_o block.52=iron_bars pointed_dripstone \ diagonalwalls:minecraft/cobblestone_wall diagonalwalls:minecraft/mossy_cobblestone_wall diagonalwalls:minecraft/stone_brick_wall diagonalwalls:minecraft/mossy_stone_brick_wall diagonalwalls:minecraft/granite_wall diagonalwalls:minecraft/diorite_wall diagonalwalls:minecraft/andesite_wall diagonalwalls:minecraft/cobbled_deepslate_wall diagonalwalls:minecraft/polished_deepslate_wall diagonalwalls:minecraft/deepslate_brick_wall diagonalwalls:minecraft/deepslate_tile_wall diagonalwalls:minecraft/tuff_wall tuff_wall diagonalwalls:minecraft/polished_tuff_wall diagonalwalls:minecraft/tuff_brick_wall diagonalwalls:minecraft/brick_wall diagonalwalls:minecraft/mud_brick_wall diagonalwalls:minecraft/resin_brick_wall diagonalwalls:minecraft/sandstone_wall diagonalwalls:minecraft/red_sandstone_wall diagonalwalls:minecraft/prismarine_wall diagonalwalls:minecraft/nether_brick_wall diagonalwalls:minecraft/red_nether_brick_wall diagonalwalls:minecraft/blackstone_wall diagonalwalls:minecraft/polished_blackstone_wall diagonalwalls:minecraft/polished_blackstone_brick_wall diagonalwalls:minecraft/end_stone_brick_wall \ diagonalwindows:minecraft/iron_bars + # diagonalwalls can be converted to custom LPV shapes, but this results in the "rest" line to have 2081759 characters for vanilla walls alone... # Blocks that occlude 75% of light block.53=humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate \ From 08de17ba7e75de2394b296d37319fbb7bbd1f48f Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 6 Nov 2024 20:01:44 +0100 Subject: [PATCH 062/101] Floodfill correction for vanilla `bell` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 15f0953..3656abc 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -49,7 +49,8 @@ block.52=iron_bars pointed_dripstone \ # diagonalwalls can be converted to custom LPV shapes, but this results in the "rest" line to have 2081759 characters for vanilla walls alone... # Blocks that occlude 75% of light -block.53=humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate \ +block.53=bell \ + humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate ####### ----- waving blocks with SSS ----- ####### From 47cccc64659bf121015c834acfb024c80a39b131 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:27:21 +0100 Subject: [PATCH 063/101] Updated `diagonalwalls` support to use custom LPV shapes instead of simple 50% --- shaders/block.properties | 72 ++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 25 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 3656abc..e4f65d2 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -44,9 +44,8 @@ block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_o # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone \ - diagonalwalls:minecraft/cobblestone_wall diagonalwalls:minecraft/mossy_cobblestone_wall diagonalwalls:minecraft/stone_brick_wall diagonalwalls:minecraft/mossy_stone_brick_wall diagonalwalls:minecraft/granite_wall diagonalwalls:minecraft/diorite_wall diagonalwalls:minecraft/andesite_wall diagonalwalls:minecraft/cobbled_deepslate_wall diagonalwalls:minecraft/polished_deepslate_wall diagonalwalls:minecraft/deepslate_brick_wall diagonalwalls:minecraft/deepslate_tile_wall diagonalwalls:minecraft/tuff_wall tuff_wall diagonalwalls:minecraft/polished_tuff_wall diagonalwalls:minecraft/tuff_brick_wall diagonalwalls:minecraft/brick_wall diagonalwalls:minecraft/mud_brick_wall diagonalwalls:minecraft/resin_brick_wall diagonalwalls:minecraft/sandstone_wall diagonalwalls:minecraft/red_sandstone_wall diagonalwalls:minecraft/prismarine_wall diagonalwalls:minecraft/nether_brick_wall diagonalwalls:minecraft/red_nether_brick_wall diagonalwalls:minecraft/blackstone_wall diagonalwalls:minecraft/polished_blackstone_wall diagonalwalls:minecraft/polished_blackstone_brick_wall diagonalwalls:minecraft/end_stone_brick_wall \ + diagonalwalls:minecraft/cobblestone_wall:north_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=true diagonalwalls:minecraft/granite_wall:north_east=true diagonalwalls:minecraft/diorite_wall:north_east=true diagonalwalls:minecraft/andesite_wall:north_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=true diagonalwalls:minecraft/polished_tuff_wall:north_east=true diagonalwalls:minecraft/tuff_brick_wall:north_east=true diagonalwalls:minecraft/brick_wall:north_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=true diagonalwalls:minecraft/resin_brick_wall:north_east=true diagonalwalls:minecraft/sandstone_wall:north_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=true diagonalwalls:minecraft/prismarine_wall:north_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=true diagonalwalls:minecraft/blackstone_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true \ diagonalwindows:minecraft/iron_bars - # diagonalwalls can be converted to custom LPV shapes, but this results in the "rest" line to have 2081759 characters for vanilla walls alone... # Blocks that occlude 75% of light block.53=bell \ @@ -749,37 +748,53 @@ block.439=acacia_stairs:shape=outer_left:half=top:facing=west bamboo_stairs:shap -block.440=cobblestone_wall:north=none:east=none:south=none:west=none:up=true andesite_wall:north=none:east=none:south=none:west=none:up=true blackstone_wall:north=none:east=none:south=none:west=none:up=true brick_wall:north=none:east=none:south=none:west=none:up=true cobbled_deepslate_wall:north=none:east=none:south=none:west=none:up=true deepslate_brick_wall:north=none:east=none:south=none:west=none:up=true deepslate_tile_wall:north=none:east=none:south=none:west=none:up=true diorite_wall:north=none:east=none:south=none:west=none:up=true end_stone_brick_wall:north=none:east=none:south=none:west=none:up=true granite_wall:north=none:east=none:south=none:west=none:up=true mossy_cobblestone_wall:north=none:east=none:south=none:west=none:up=true mossy_stone_brick_wall:north=none:east=none:south=none:west=none:up=true mud_brick_wall:north=none:east=none:south=none:west=none:up=true nether_brick_wall:north=none:east=none:south=none:west=none:up=true polished_blackstone_brick_wall:north=none:east=none:south=none:west=none:up=true polished_blackstone_wall:north=none:east=none:south=none:west=none:up=true polished_deepslate_wall:north=none:east=none:south=none:west=none:up=true prismarine_wall:north=none:east=none:south=none:west=none:up=true red_nether_brick_wall:north=none:east=none:south=none:west=none:up=true red_sandstone_wall:north=none:east=none:south=none:west=none:up=true sandstone_wall:north=none:east=none:south=none:west=none:up=true stone_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_andesite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_andesite_wall:north=none:east=none:south=none:west=none:up=true create:cut_andesite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_andesite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_asurine_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_asurine_wall:north=none:east=none:south=none:west=none:up=true create:cut_asurine_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_asurine_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_calcite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_calcite_wall:north=none:east=none:south=none:west=none:up=true create:cut_calcite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_calcite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_crimsite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_crimsite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_deepslate_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_deepslate_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_diorite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_diorite_wall:north=none:east=none:south=none:west=none:up=true create:cut_diorite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_diorite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_dripstone_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_dripstone_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_granite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_granite_wall:north=none:east=none:south=none:west=none:up=true create:cut_granite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_granite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_limestone_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_limestone_wall:north=none:east=none:south=none:west=none:up=true create:cut_limestone_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_limestone_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_ochrum_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_ochrum_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_scorchia_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_scorchia_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_scoria_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_scoria_wall:north=none:east=none:south=none:west=none:up=true create:cut_scoria_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_scoria_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_tuff_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_tuff_wall:north=none:east=none:south=none:west=none:up=true create:cut_tuff_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_tuff_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_veridium_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_veridium_wall:north=none:east=none:south=none:west=none:up=true create:cut_veridium_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_veridium_brick_wall:north=none:east=none:south=none:west=none:up=true +block.440=cobblestone_wall:north=none:east=none:south=none:west=none:up=true andesite_wall:north=none:east=none:south=none:west=none:up=true blackstone_wall:north=none:east=none:south=none:west=none:up=true brick_wall:north=none:east=none:south=none:west=none:up=true cobbled_deepslate_wall:north=none:east=none:south=none:west=none:up=true deepslate_brick_wall:north=none:east=none:south=none:west=none:up=true deepslate_tile_wall:north=none:east=none:south=none:west=none:up=true diorite_wall:north=none:east=none:south=none:west=none:up=true end_stone_brick_wall:north=none:east=none:south=none:west=none:up=true granite_wall:north=none:east=none:south=none:west=none:up=true mossy_cobblestone_wall:north=none:east=none:south=none:west=none:up=true mossy_stone_brick_wall:north=none:east=none:south=none:west=none:up=true mud_brick_wall:north=none:east=none:south=none:west=none:up=true nether_brick_wall:north=none:east=none:south=none:west=none:up=true polished_blackstone_brick_wall:north=none:east=none:south=none:west=none:up=true polished_blackstone_wall:north=none:east=none:south=none:west=none:up=true polished_deepslate_wall:north=none:east=none:south=none:west=none:up=true prismarine_wall:north=none:east=none:south=none:west=none:up=true red_nether_brick_wall:north=none:east=none:south=none:west=none:up=true red_sandstone_wall:north=none:east=none:south=none:west=none:up=true sandstone_wall:north=none:east=none:south=none:west=none:up=true stone_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_andesite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_andesite_wall:north=none:east=none:south=none:west=none:up=true create:cut_andesite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_andesite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_asurine_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_asurine_wall:north=none:east=none:south=none:west=none:up=true create:cut_asurine_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_asurine_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_calcite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_calcite_wall:north=none:east=none:south=none:west=none:up=true create:cut_calcite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_calcite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_crimsite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_crimsite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_deepslate_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_deepslate_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_diorite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_diorite_wall:north=none:east=none:south=none:west=none:up=true create:cut_diorite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_diorite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_dripstone_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_dripstone_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_granite_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_granite_wall:north=none:east=none:south=none:west=none:up=true create:cut_granite_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_granite_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_limestone_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_limestone_wall:north=none:east=none:south=none:west=none:up=true create:cut_limestone_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_limestone_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_ochrum_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_ochrum_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_scorchia_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_scorchia_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_scoria_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_scoria_wall:north=none:east=none:south=none:west=none:up=true create:cut_scoria_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_scoria_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_tuff_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_tuff_wall:north=none:east=none:south=none:west=none:up=true create:cut_tuff_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_tuff_brick_wall:north=none:east=none:south=none:west=none:up=true create:cut_veridium_wall:north=none:east=none:south=none:west=none:up=true create:polished_cut_veridium_wall:north=none:east=none:south=none:west=none:up=true create:cut_veridium_brick_wall:north=none:east=none:south=none:west=none:up=true create:small_veridium_brick_wall:north=none:east=none:south=none:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.441=cobblestone_wall:north=low:east=none:south=none:west=none:up=true andesite_wall:north=low:east=none:south=none:west=none:up=true blackstone_wall:north=low:east=none:south=none:west=none:up=true brick_wall:north=low:east=none:south=none:west=none:up=true cobbled_deepslate_wall:north=low:east=none:south=none:west=none:up=true deepslate_brick_wall:north=low:east=none:south=none:west=none:up=true deepslate_tile_wall:north=low:east=none:south=none:west=none:up=true diorite_wall:north=low:east=none:south=none:west=none:up=true end_stone_brick_wall:north=low:east=none:south=none:west=none:up=true granite_wall:north=low:east=none:south=none:west=none:up=true mossy_cobblestone_wall:north=low:east=none:south=none:west=none:up=true mossy_stone_brick_wall:north=low:east=none:south=none:west=none:up=true mud_brick_wall:north=low:east=none:south=none:west=none:up=true nether_brick_wall:north=low:east=none:south=none:west=none:up=true polished_blackstone_brick_wall:north=low:east=none:south=none:west=none:up=true polished_blackstone_wall:north=low:east=none:south=none:west=none:up=true polished_deepslate_wall:north=low:east=none:south=none:west=none:up=true prismarine_wall:north=low:east=none:south=none:west=none:up=true red_nether_brick_wall:north=low:east=none:south=none:west=none:up=true red_sandstone_wall:north=low:east=none:south=none:west=none:up=true sandstone_wall:north=low:east=none:south=none:west=none:up=true stone_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_andesite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_andesite_wall:north=low:east=none:south=none:west=none:up=true create:cut_andesite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_andesite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_asurine_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_asurine_wall:north=low:east=none:south=none:west=none:up=true create:cut_asurine_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_asurine_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_calcite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_calcite_wall:north=low:east=none:south=none:west=none:up=true create:cut_calcite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_calcite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_crimsite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_crimsite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_deepslate_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_deepslate_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_diorite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_diorite_wall:north=low:east=none:south=none:west=none:up=true create:cut_diorite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_diorite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_dripstone_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_dripstone_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_granite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_granite_wall:north=low:east=none:south=none:west=none:up=true create:cut_granite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_granite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_limestone_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_limestone_wall:north=low:east=none:south=none:west=none:up=true create:cut_limestone_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_limestone_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_ochrum_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_ochrum_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_scorchia_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_scorchia_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_scoria_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_scoria_wall:north=low:east=none:south=none:west=none:up=true create:cut_scoria_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_scoria_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_tuff_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_tuff_wall:north=low:east=none:south=none:west=none:up=true create:cut_tuff_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_tuff_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_veridium_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_veridium_wall:north=low:east=none:south=none:west=none:up=true create:cut_veridium_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_veridium_brick_wall:north=low:east=none:south=none:west=none:up=true +block.441=cobblestone_wall:north=low:east=none:south=none:west=none:up=true andesite_wall:north=low:east=none:south=none:west=none:up=true blackstone_wall:north=low:east=none:south=none:west=none:up=true brick_wall:north=low:east=none:south=none:west=none:up=true cobbled_deepslate_wall:north=low:east=none:south=none:west=none:up=true deepslate_brick_wall:north=low:east=none:south=none:west=none:up=true deepslate_tile_wall:north=low:east=none:south=none:west=none:up=true diorite_wall:north=low:east=none:south=none:west=none:up=true end_stone_brick_wall:north=low:east=none:south=none:west=none:up=true granite_wall:north=low:east=none:south=none:west=none:up=true mossy_cobblestone_wall:north=low:east=none:south=none:west=none:up=true mossy_stone_brick_wall:north=low:east=none:south=none:west=none:up=true mud_brick_wall:north=low:east=none:south=none:west=none:up=true nether_brick_wall:north=low:east=none:south=none:west=none:up=true polished_blackstone_brick_wall:north=low:east=none:south=none:west=none:up=true polished_blackstone_wall:north=low:east=none:south=none:west=none:up=true polished_deepslate_wall:north=low:east=none:south=none:west=none:up=true prismarine_wall:north=low:east=none:south=none:west=none:up=true red_nether_brick_wall:north=low:east=none:south=none:west=none:up=true red_sandstone_wall:north=low:east=none:south=none:west=none:up=true sandstone_wall:north=low:east=none:south=none:west=none:up=true stone_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_andesite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_andesite_wall:north=low:east=none:south=none:west=none:up=true create:cut_andesite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_andesite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_asurine_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_asurine_wall:north=low:east=none:south=none:west=none:up=true create:cut_asurine_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_asurine_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_calcite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_calcite_wall:north=low:east=none:south=none:west=none:up=true create:cut_calcite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_calcite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_crimsite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_crimsite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_deepslate_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_deepslate_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_diorite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_diorite_wall:north=low:east=none:south=none:west=none:up=true create:cut_diorite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_diorite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_dripstone_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_dripstone_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_granite_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_granite_wall:north=low:east=none:south=none:west=none:up=true create:cut_granite_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_granite_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_limestone_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_limestone_wall:north=low:east=none:south=none:west=none:up=true create:cut_limestone_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_limestone_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_ochrum_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_ochrum_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_scorchia_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_scorchia_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_scoria_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_scoria_wall:north=low:east=none:south=none:west=none:up=true create:cut_scoria_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_scoria_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_tuff_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_tuff_wall:north=low:east=none:south=none:west=none:up=true create:cut_tuff_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_tuff_brick_wall:north=low:east=none:south=none:west=none:up=true create:cut_veridium_wall:north=low:east=none:south=none:west=none:up=true create:polished_cut_veridium_wall:north=low:east=none:south=none:west=none:up=true create:cut_veridium_brick_wall:north=low:east=none:south=none:west=none:up=true create:small_veridium_brick_wall:north=low:east=none:south=none:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=false:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.442=cobblestone_wall:north=none:east=low:south=none:west=none:up=true andesite_wall:north=none:east=low:south=none:west=none:up=true blackstone_wall:north=none:east=low:south=none:west=none:up=true brick_wall:north=none:east=low:south=none:west=none:up=true cobbled_deepslate_wall:north=none:east=low:south=none:west=none:up=true deepslate_brick_wall:north=none:east=low:south=none:west=none:up=true deepslate_tile_wall:north=none:east=low:south=none:west=none:up=true diorite_wall:north=none:east=low:south=none:west=none:up=true end_stone_brick_wall:north=none:east=low:south=none:west=none:up=true granite_wall:north=none:east=low:south=none:west=none:up=true mossy_cobblestone_wall:north=none:east=low:south=none:west=none:up=true mossy_stone_brick_wall:north=none:east=low:south=none:west=none:up=true mud_brick_wall:north=none:east=low:south=none:west=none:up=true nether_brick_wall:north=none:east=low:south=none:west=none:up=true polished_blackstone_brick_wall:north=none:east=low:south=none:west=none:up=true polished_blackstone_wall:north=none:east=low:south=none:west=none:up=true polished_deepslate_wall:north=none:east=low:south=none:west=none:up=true prismarine_wall:north=none:east=low:south=none:west=none:up=true red_nether_brick_wall:north=none:east=low:south=none:west=none:up=true red_sandstone_wall:north=none:east=low:south=none:west=none:up=true sandstone_wall:north=none:east=low:south=none:west=none:up=true stone_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_andesite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_andesite_wall:north=none:east=low:south=none:west=none:up=true create:cut_andesite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_andesite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_asurine_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_asurine_wall:north=none:east=low:south=none:west=none:up=true create:cut_asurine_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_asurine_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_calcite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_calcite_wall:north=none:east=low:south=none:west=none:up=true create:cut_calcite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_calcite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_crimsite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_crimsite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_deepslate_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_deepslate_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_diorite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_diorite_wall:north=none:east=low:south=none:west=none:up=true create:cut_diorite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_diorite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_dripstone_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_dripstone_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_granite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_granite_wall:north=none:east=low:south=none:west=none:up=true create:cut_granite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_granite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_limestone_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_limestone_wall:north=none:east=low:south=none:west=none:up=true create:cut_limestone_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_limestone_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_ochrum_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_ochrum_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_scorchia_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_scorchia_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_scoria_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_scoria_wall:north=none:east=low:south=none:west=none:up=true create:cut_scoria_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_scoria_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_tuff_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_tuff_wall:north=none:east=low:south=none:west=none:up=true create:cut_tuff_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_tuff_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_veridium_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_veridium_wall:north=none:east=low:south=none:west=none:up=true create:cut_veridium_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_veridium_brick_wall:north=none:east=low:south=none:west=none:up=true +block.442=cobblestone_wall:north=none:east=low:south=none:west=none:up=true andesite_wall:north=none:east=low:south=none:west=none:up=true blackstone_wall:north=none:east=low:south=none:west=none:up=true brick_wall:north=none:east=low:south=none:west=none:up=true cobbled_deepslate_wall:north=none:east=low:south=none:west=none:up=true deepslate_brick_wall:north=none:east=low:south=none:west=none:up=true deepslate_tile_wall:north=none:east=low:south=none:west=none:up=true diorite_wall:north=none:east=low:south=none:west=none:up=true end_stone_brick_wall:north=none:east=low:south=none:west=none:up=true granite_wall:north=none:east=low:south=none:west=none:up=true mossy_cobblestone_wall:north=none:east=low:south=none:west=none:up=true mossy_stone_brick_wall:north=none:east=low:south=none:west=none:up=true mud_brick_wall:north=none:east=low:south=none:west=none:up=true nether_brick_wall:north=none:east=low:south=none:west=none:up=true polished_blackstone_brick_wall:north=none:east=low:south=none:west=none:up=true polished_blackstone_wall:north=none:east=low:south=none:west=none:up=true polished_deepslate_wall:north=none:east=low:south=none:west=none:up=true prismarine_wall:north=none:east=low:south=none:west=none:up=true red_nether_brick_wall:north=none:east=low:south=none:west=none:up=true red_sandstone_wall:north=none:east=low:south=none:west=none:up=true sandstone_wall:north=none:east=low:south=none:west=none:up=true stone_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_andesite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_andesite_wall:north=none:east=low:south=none:west=none:up=true create:cut_andesite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_andesite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_asurine_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_asurine_wall:north=none:east=low:south=none:west=none:up=true create:cut_asurine_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_asurine_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_calcite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_calcite_wall:north=none:east=low:south=none:west=none:up=true create:cut_calcite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_calcite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_crimsite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_crimsite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_deepslate_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_deepslate_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_diorite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_diorite_wall:north=none:east=low:south=none:west=none:up=true create:cut_diorite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_diorite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_dripstone_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_dripstone_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_granite_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_granite_wall:north=none:east=low:south=none:west=none:up=true create:cut_granite_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_granite_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_limestone_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_limestone_wall:north=none:east=low:south=none:west=none:up=true create:cut_limestone_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_limestone_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_ochrum_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_ochrum_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_scorchia_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_scorchia_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_scoria_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_scoria_wall:north=none:east=low:south=none:west=none:up=true create:cut_scoria_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_scoria_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_tuff_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_tuff_wall:north=none:east=low:south=none:west=none:up=true create:cut_tuff_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_tuff_brick_wall:north=none:east=low:south=none:west=none:up=true create:cut_veridium_wall:north=none:east=low:south=none:west=none:up=true create:polished_cut_veridium_wall:north=none:east=low:south=none:west=none:up=true create:cut_veridium_brick_wall:north=none:east=low:south=none:west=none:up=true create:small_veridium_brick_wall:north=none:east=low:south=none:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.443=cobblestone_wall:north=none:east=none:south=low:west=none:up=true andesite_wall:north=none:east=none:south=low:west=none:up=true blackstone_wall:north=none:east=none:south=low:west=none:up=true brick_wall:north=none:east=none:south=low:west=none:up=true cobbled_deepslate_wall:north=none:east=none:south=low:west=none:up=true deepslate_brick_wall:north=none:east=none:south=low:west=none:up=true deepslate_tile_wall:north=none:east=none:south=low:west=none:up=true diorite_wall:north=none:east=none:south=low:west=none:up=true end_stone_brick_wall:north=none:east=none:south=low:west=none:up=true granite_wall:north=none:east=none:south=low:west=none:up=true mossy_cobblestone_wall:north=none:east=none:south=low:west=none:up=true mossy_stone_brick_wall:north=none:east=none:south=low:west=none:up=true mud_brick_wall:north=none:east=none:south=low:west=none:up=true nether_brick_wall:north=none:east=none:south=low:west=none:up=true polished_blackstone_brick_wall:north=none:east=none:south=low:west=none:up=true polished_blackstone_wall:north=none:east=none:south=low:west=none:up=true polished_deepslate_wall:north=none:east=none:south=low:west=none:up=true prismarine_wall:north=none:east=none:south=low:west=none:up=true red_nether_brick_wall:north=none:east=none:south=low:west=none:up=true red_sandstone_wall:north=none:east=none:south=low:west=none:up=true sandstone_wall:north=none:east=none:south=low:west=none:up=true stone_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_andesite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_andesite_wall:north=none:east=none:south=low:west=none:up=true create:cut_andesite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_andesite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_asurine_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_asurine_wall:north=none:east=none:south=low:west=none:up=true create:cut_asurine_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_asurine_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_calcite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_calcite_wall:north=none:east=none:south=low:west=none:up=true create:cut_calcite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_calcite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_crimsite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_crimsite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_deepslate_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_deepslate_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_diorite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_diorite_wall:north=none:east=none:south=low:west=none:up=true create:cut_diorite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_diorite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_dripstone_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_dripstone_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_granite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_granite_wall:north=none:east=none:south=low:west=none:up=true create:cut_granite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_granite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_limestone_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_limestone_wall:north=none:east=none:south=low:west=none:up=true create:cut_limestone_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_limestone_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_ochrum_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_ochrum_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_scorchia_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_scorchia_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_scoria_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_scoria_wall:north=none:east=none:south=low:west=none:up=true create:cut_scoria_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_scoria_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_tuff_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_tuff_wall:north=none:east=none:south=low:west=none:up=true create:cut_tuff_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_tuff_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_veridium_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_veridium_wall:north=none:east=none:south=low:west=none:up=true create:cut_veridium_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_veridium_brick_wall:north=none:east=none:south=low:west=none:up=true +block.443=cobblestone_wall:north=none:east=none:south=low:west=none:up=true andesite_wall:north=none:east=none:south=low:west=none:up=true blackstone_wall:north=none:east=none:south=low:west=none:up=true brick_wall:north=none:east=none:south=low:west=none:up=true cobbled_deepslate_wall:north=none:east=none:south=low:west=none:up=true deepslate_brick_wall:north=none:east=none:south=low:west=none:up=true deepslate_tile_wall:north=none:east=none:south=low:west=none:up=true diorite_wall:north=none:east=none:south=low:west=none:up=true end_stone_brick_wall:north=none:east=none:south=low:west=none:up=true granite_wall:north=none:east=none:south=low:west=none:up=true mossy_cobblestone_wall:north=none:east=none:south=low:west=none:up=true mossy_stone_brick_wall:north=none:east=none:south=low:west=none:up=true mud_brick_wall:north=none:east=none:south=low:west=none:up=true nether_brick_wall:north=none:east=none:south=low:west=none:up=true polished_blackstone_brick_wall:north=none:east=none:south=low:west=none:up=true polished_blackstone_wall:north=none:east=none:south=low:west=none:up=true polished_deepslate_wall:north=none:east=none:south=low:west=none:up=true prismarine_wall:north=none:east=none:south=low:west=none:up=true red_nether_brick_wall:north=none:east=none:south=low:west=none:up=true red_sandstone_wall:north=none:east=none:south=low:west=none:up=true sandstone_wall:north=none:east=none:south=low:west=none:up=true stone_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_andesite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_andesite_wall:north=none:east=none:south=low:west=none:up=true create:cut_andesite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_andesite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_asurine_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_asurine_wall:north=none:east=none:south=low:west=none:up=true create:cut_asurine_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_asurine_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_calcite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_calcite_wall:north=none:east=none:south=low:west=none:up=true create:cut_calcite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_calcite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_crimsite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_crimsite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_deepslate_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_deepslate_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_diorite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_diorite_wall:north=none:east=none:south=low:west=none:up=true create:cut_diorite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_diorite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_dripstone_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_dripstone_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_granite_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_granite_wall:north=none:east=none:south=low:west=none:up=true create:cut_granite_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_granite_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_limestone_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_limestone_wall:north=none:east=none:south=low:west=none:up=true create:cut_limestone_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_limestone_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_ochrum_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_ochrum_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_scorchia_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_scorchia_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_scoria_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_scoria_wall:north=none:east=none:south=low:west=none:up=true create:cut_scoria_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_scoria_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_tuff_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_tuff_wall:north=none:east=none:south=low:west=none:up=true create:cut_tuff_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_tuff_brick_wall:north=none:east=none:south=low:west=none:up=true create:cut_veridium_wall:north=none:east=none:south=low:west=none:up=true create:polished_cut_veridium_wall:north=none:east=none:south=low:west=none:up=true create:cut_veridium_brick_wall:north=none:east=none:south=low:west=none:up=true create:small_veridium_brick_wall:north=none:east=none:south=low:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.444=cobblestone_wall:north=none:east=none:south=none:west=low:up=true andesite_wall:north=none:east=none:south=none:west=low:up=true blackstone_wall:north=none:east=none:south=none:west=low:up=true brick_wall:north=none:east=none:south=none:west=low:up=true cobbled_deepslate_wall:north=none:east=none:south=none:west=low:up=true deepslate_brick_wall:north=none:east=none:south=none:west=low:up=true deepslate_tile_wall:north=none:east=none:south=none:west=low:up=true diorite_wall:north=none:east=none:south=none:west=low:up=true end_stone_brick_wall:north=none:east=none:south=none:west=low:up=true granite_wall:north=none:east=none:south=none:west=low:up=true mossy_cobblestone_wall:north=none:east=none:south=none:west=low:up=true mossy_stone_brick_wall:north=none:east=none:south=none:west=low:up=true mud_brick_wall:north=none:east=none:south=none:west=low:up=true nether_brick_wall:north=none:east=none:south=none:west=low:up=true polished_blackstone_brick_wall:north=none:east=none:south=none:west=low:up=true polished_blackstone_wall:north=none:east=none:south=none:west=low:up=true polished_deepslate_wall:north=none:east=none:south=none:west=low:up=true prismarine_wall:north=none:east=none:south=none:west=low:up=true red_nether_brick_wall:north=none:east=none:south=none:west=low:up=true red_sandstone_wall:north=none:east=none:south=none:west=low:up=true sandstone_wall:north=none:east=none:south=none:west=low:up=true stone_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_andesite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_andesite_wall:north=none:east=none:south=none:west=low:up=true create:cut_andesite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_andesite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_asurine_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_asurine_wall:north=none:east=none:south=none:west=low:up=true create:cut_asurine_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_asurine_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_calcite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_calcite_wall:north=none:east=none:south=none:west=low:up=true create:cut_calcite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_calcite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_crimsite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_crimsite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_deepslate_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_deepslate_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_diorite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_diorite_wall:north=none:east=none:south=none:west=low:up=true create:cut_diorite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_diorite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_dripstone_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_dripstone_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_granite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_granite_wall:north=none:east=none:south=none:west=low:up=true create:cut_granite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_granite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_limestone_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_limestone_wall:north=none:east=none:south=none:west=low:up=true create:cut_limestone_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_limestone_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_ochrum_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_ochrum_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_scorchia_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_scorchia_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_scoria_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_scoria_wall:north=none:east=none:south=none:west=low:up=true create:cut_scoria_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_scoria_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_tuff_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_tuff_wall:north=none:east=none:south=none:west=low:up=true create:cut_tuff_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_tuff_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_veridium_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_veridium_wall:north=none:east=none:south=none:west=low:up=true create:cut_veridium_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_veridium_brick_wall:north=none:east=none:south=none:west=low:up=true +block.444=cobblestone_wall:north=none:east=none:south=none:west=low:up=true andesite_wall:north=none:east=none:south=none:west=low:up=true blackstone_wall:north=none:east=none:south=none:west=low:up=true brick_wall:north=none:east=none:south=none:west=low:up=true cobbled_deepslate_wall:north=none:east=none:south=none:west=low:up=true deepslate_brick_wall:north=none:east=none:south=none:west=low:up=true deepslate_tile_wall:north=none:east=none:south=none:west=low:up=true diorite_wall:north=none:east=none:south=none:west=low:up=true end_stone_brick_wall:north=none:east=none:south=none:west=low:up=true granite_wall:north=none:east=none:south=none:west=low:up=true mossy_cobblestone_wall:north=none:east=none:south=none:west=low:up=true mossy_stone_brick_wall:north=none:east=none:south=none:west=low:up=true mud_brick_wall:north=none:east=none:south=none:west=low:up=true nether_brick_wall:north=none:east=none:south=none:west=low:up=true polished_blackstone_brick_wall:north=none:east=none:south=none:west=low:up=true polished_blackstone_wall:north=none:east=none:south=none:west=low:up=true polished_deepslate_wall:north=none:east=none:south=none:west=low:up=true prismarine_wall:north=none:east=none:south=none:west=low:up=true red_nether_brick_wall:north=none:east=none:south=none:west=low:up=true red_sandstone_wall:north=none:east=none:south=none:west=low:up=true sandstone_wall:north=none:east=none:south=none:west=low:up=true stone_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_andesite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_andesite_wall:north=none:east=none:south=none:west=low:up=true create:cut_andesite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_andesite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_asurine_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_asurine_wall:north=none:east=none:south=none:west=low:up=true create:cut_asurine_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_asurine_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_calcite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_calcite_wall:north=none:east=none:south=none:west=low:up=true create:cut_calcite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_calcite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_crimsite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_crimsite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_deepslate_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_deepslate_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_diorite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_diorite_wall:north=none:east=none:south=none:west=low:up=true create:cut_diorite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_diorite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_dripstone_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_dripstone_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_granite_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_granite_wall:north=none:east=none:south=none:west=low:up=true create:cut_granite_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_granite_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_limestone_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_limestone_wall:north=none:east=none:south=none:west=low:up=true create:cut_limestone_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_limestone_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_ochrum_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_ochrum_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_scorchia_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_scorchia_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_scoria_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_scoria_wall:north=none:east=none:south=none:west=low:up=true create:cut_scoria_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_scoria_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_tuff_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_tuff_wall:north=none:east=none:south=none:west=low:up=true create:cut_tuff_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_tuff_brick_wall:north=none:east=none:south=none:west=low:up=true create:cut_veridium_wall:north=none:east=none:south=none:west=low:up=true create:polished_cut_veridium_wall:north=none:east=none:south=none:west=low:up=true create:cut_veridium_brick_wall:north=none:east=none:south=none:west=low:up=true create:small_veridium_brick_wall:north=none:east=none:south=none:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.445=cobblestone_wall:north=low:east=none:south=low:west=none:up=true andesite_wall:north=low:east=none:south=low:west=none:up=true blackstone_wall:north=low:east=none:south=low:west=none:up=true brick_wall:north=low:east=none:south=low:west=none:up=true cobbled_deepslate_wall:north=low:east=none:south=low:west=none:up=true deepslate_brick_wall:north=low:east=none:south=low:west=none:up=true deepslate_tile_wall:north=low:east=none:south=low:west=none:up=true diorite_wall:north=low:east=none:south=low:west=none:up=true end_stone_brick_wall:north=low:east=none:south=low:west=none:up=true granite_wall:north=low:east=none:south=low:west=none:up=true mossy_cobblestone_wall:north=low:east=none:south=low:west=none:up=true mossy_stone_brick_wall:north=low:east=none:south=low:west=none:up=true mud_brick_wall:north=low:east=none:south=low:west=none:up=true nether_brick_wall:north=low:east=none:south=low:west=none:up=true polished_blackstone_brick_wall:north=low:east=none:south=low:west=none:up=true polished_blackstone_wall:north=low:east=none:south=low:west=none:up=true polished_deepslate_wall:north=low:east=none:south=low:west=none:up=true prismarine_wall:north=low:east=none:south=low:west=none:up=true red_nether_brick_wall:north=low:east=none:south=low:west=none:up=true red_sandstone_wall:north=low:east=none:south=low:west=none:up=true sandstone_wall:north=low:east=none:south=low:west=none:up=true stone_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_andesite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_andesite_wall:north=low:east=none:south=low:west=none:up=true create:cut_andesite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_andesite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_asurine_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_asurine_wall:north=low:east=none:south=low:west=none:up=true create:cut_asurine_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_asurine_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_calcite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_calcite_wall:north=low:east=none:south=low:west=none:up=true create:cut_calcite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_calcite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_crimsite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_deepslate_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_diorite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_diorite_wall:north=low:east=none:south=low:west=none:up=true create:cut_diorite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_diorite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_dripstone_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_granite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_granite_wall:north=low:east=none:south=low:west=none:up=true create:cut_granite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_granite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_limestone_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_limestone_wall:north=low:east=none:south=low:west=none:up=true create:cut_limestone_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_limestone_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_ochrum_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_scorchia_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_scoria_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_scoria_wall:north=low:east=none:south=low:west=none:up=true create:cut_scoria_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_scoria_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_tuff_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_tuff_wall:north=low:east=none:south=low:west=none:up=true create:cut_tuff_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_tuff_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_veridium_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_veridium_wall:north=low:east=none:south=low:west=none:up=true create:cut_veridium_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_veridium_brick_wall:north=low:east=none:south=low:west=none:up=true +block.445=cobblestone_wall:north=low:east=none:south=low:west=none:up=true andesite_wall:north=low:east=none:south=low:west=none:up=true blackstone_wall:north=low:east=none:south=low:west=none:up=true brick_wall:north=low:east=none:south=low:west=none:up=true cobbled_deepslate_wall:north=low:east=none:south=low:west=none:up=true deepslate_brick_wall:north=low:east=none:south=low:west=none:up=true deepslate_tile_wall:north=low:east=none:south=low:west=none:up=true diorite_wall:north=low:east=none:south=low:west=none:up=true end_stone_brick_wall:north=low:east=none:south=low:west=none:up=true granite_wall:north=low:east=none:south=low:west=none:up=true mossy_cobblestone_wall:north=low:east=none:south=low:west=none:up=true mossy_stone_brick_wall:north=low:east=none:south=low:west=none:up=true mud_brick_wall:north=low:east=none:south=low:west=none:up=true nether_brick_wall:north=low:east=none:south=low:west=none:up=true polished_blackstone_brick_wall:north=low:east=none:south=low:west=none:up=true polished_blackstone_wall:north=low:east=none:south=low:west=none:up=true polished_deepslate_wall:north=low:east=none:south=low:west=none:up=true prismarine_wall:north=low:east=none:south=low:west=none:up=true red_nether_brick_wall:north=low:east=none:south=low:west=none:up=true red_sandstone_wall:north=low:east=none:south=low:west=none:up=true sandstone_wall:north=low:east=none:south=low:west=none:up=true stone_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_andesite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_andesite_wall:north=low:east=none:south=low:west=none:up=true create:cut_andesite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_andesite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_asurine_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_asurine_wall:north=low:east=none:south=low:west=none:up=true create:cut_asurine_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_asurine_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_calcite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_calcite_wall:north=low:east=none:south=low:west=none:up=true create:cut_calcite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_calcite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_crimsite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_deepslate_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_diorite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_diorite_wall:north=low:east=none:south=low:west=none:up=true create:cut_diorite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_diorite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_dripstone_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_granite_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_granite_wall:north=low:east=none:south=low:west=none:up=true create:cut_granite_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_granite_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_limestone_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_limestone_wall:north=low:east=none:south=low:west=none:up=true create:cut_limestone_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_limestone_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_ochrum_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_scorchia_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_scoria_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_scoria_wall:north=low:east=none:south=low:west=none:up=true create:cut_scoria_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_scoria_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_tuff_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_tuff_wall:north=low:east=none:south=low:west=none:up=true create:cut_tuff_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_tuff_brick_wall:north=low:east=none:south=low:west=none:up=true create:cut_veridium_wall:north=low:east=none:south=low:west=none:up=true create:polished_cut_veridium_wall:north=low:east=none:south=low:west=none:up=true create:cut_veridium_brick_wall:north=low:east=none:south=low:west=none:up=true create:small_veridium_brick_wall:north=low:east=none:south=low:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=false:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.446=cobblestone_wall:north=none:east=low:south=none:west=low:up=true andesite_wall:north=none:east=low:south=none:west=low:up=true blackstone_wall:north=none:east=low:south=none:west=low:up=true brick_wall:north=none:east=low:south=none:west=low:up=true cobbled_deepslate_wall:north=none:east=low:south=none:west=low:up=true deepslate_brick_wall:north=none:east=low:south=none:west=low:up=true deepslate_tile_wall:north=none:east=low:south=none:west=low:up=true diorite_wall:north=none:east=low:south=none:west=low:up=true end_stone_brick_wall:north=none:east=low:south=none:west=low:up=true granite_wall:north=none:east=low:south=none:west=low:up=true mossy_cobblestone_wall:north=none:east=low:south=none:west=low:up=true mossy_stone_brick_wall:north=none:east=low:south=none:west=low:up=true mud_brick_wall:north=none:east=low:south=none:west=low:up=true nether_brick_wall:north=none:east=low:south=none:west=low:up=true polished_blackstone_brick_wall:north=none:east=low:south=none:west=low:up=true polished_blackstone_wall:north=none:east=low:south=none:west=low:up=true polished_deepslate_wall:north=none:east=low:south=none:west=low:up=true prismarine_wall:north=none:east=low:south=none:west=low:up=true red_nether_brick_wall:north=none:east=low:south=none:west=low:up=true red_sandstone_wall:north=none:east=low:south=none:west=low:up=true sandstone_wall:north=none:east=low:south=none:west=low:up=true stone_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_andesite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_andesite_wall:north=none:east=low:south=none:west=low:up=true create:cut_andesite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_andesite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_asurine_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_asurine_wall:north=none:east=low:south=none:west=low:up=true create:cut_asurine_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_asurine_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_calcite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_calcite_wall:north=none:east=low:south=none:west=low:up=true create:cut_calcite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_calcite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_crimsite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_deepslate_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_diorite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_diorite_wall:north=none:east=low:south=none:west=low:up=true create:cut_diorite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_diorite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_dripstone_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_granite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_granite_wall:north=none:east=low:south=none:west=low:up=true create:cut_granite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_granite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_limestone_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_limestone_wall:north=none:east=low:south=none:west=low:up=true create:cut_limestone_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_limestone_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_ochrum_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_scorchia_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_scoria_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_scoria_wall:north=none:east=low:south=none:west=low:up=true create:cut_scoria_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_scoria_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_tuff_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_tuff_wall:north=none:east=low:south=none:west=low:up=true create:cut_tuff_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_tuff_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_veridium_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_veridium_wall:north=none:east=low:south=none:west=low:up=true create:cut_veridium_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_veridium_brick_wall:north=none:east=low:south=none:west=low:up=true +block.446=cobblestone_wall:north=none:east=low:south=none:west=low:up=true andesite_wall:north=none:east=low:south=none:west=low:up=true blackstone_wall:north=none:east=low:south=none:west=low:up=true brick_wall:north=none:east=low:south=none:west=low:up=true cobbled_deepslate_wall:north=none:east=low:south=none:west=low:up=true deepslate_brick_wall:north=none:east=low:south=none:west=low:up=true deepslate_tile_wall:north=none:east=low:south=none:west=low:up=true diorite_wall:north=none:east=low:south=none:west=low:up=true end_stone_brick_wall:north=none:east=low:south=none:west=low:up=true granite_wall:north=none:east=low:south=none:west=low:up=true mossy_cobblestone_wall:north=none:east=low:south=none:west=low:up=true mossy_stone_brick_wall:north=none:east=low:south=none:west=low:up=true mud_brick_wall:north=none:east=low:south=none:west=low:up=true nether_brick_wall:north=none:east=low:south=none:west=low:up=true polished_blackstone_brick_wall:north=none:east=low:south=none:west=low:up=true polished_blackstone_wall:north=none:east=low:south=none:west=low:up=true polished_deepslate_wall:north=none:east=low:south=none:west=low:up=true prismarine_wall:north=none:east=low:south=none:west=low:up=true red_nether_brick_wall:north=none:east=low:south=none:west=low:up=true red_sandstone_wall:north=none:east=low:south=none:west=low:up=true sandstone_wall:north=none:east=low:south=none:west=low:up=true stone_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_andesite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_andesite_wall:north=none:east=low:south=none:west=low:up=true create:cut_andesite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_andesite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_asurine_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_asurine_wall:north=none:east=low:south=none:west=low:up=true create:cut_asurine_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_asurine_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_calcite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_calcite_wall:north=none:east=low:south=none:west=low:up=true create:cut_calcite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_calcite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_crimsite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_deepslate_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_diorite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_diorite_wall:north=none:east=low:south=none:west=low:up=true create:cut_diorite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_diorite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_dripstone_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_granite_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_granite_wall:north=none:east=low:south=none:west=low:up=true create:cut_granite_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_granite_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_limestone_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_limestone_wall:north=none:east=low:south=none:west=low:up=true create:cut_limestone_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_limestone_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_ochrum_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_scorchia_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_scoria_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_scoria_wall:north=none:east=low:south=none:west=low:up=true create:cut_scoria_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_scoria_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_tuff_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_tuff_wall:north=none:east=low:south=none:west=low:up=true create:cut_tuff_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_tuff_brick_wall:north=none:east=low:south=none:west=low:up=true create:cut_veridium_wall:north=none:east=low:south=none:west=low:up=true create:polished_cut_veridium_wall:north=none:east=low:south=none:west=low:up=true create:cut_veridium_brick_wall:north=none:east=low:south=none:west=low:up=true create:small_veridium_brick_wall:north=none:east=low:south=none:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.447=cobblestone_wall:north=low:east=none:south=none:west=low:up=true andesite_wall:north=low:east=none:south=none:west=low:up=true blackstone_wall:north=low:east=none:south=none:west=low:up=true brick_wall:north=low:east=none:south=none:west=low:up=true cobbled_deepslate_wall:north=low:east=none:south=none:west=low:up=true deepslate_brick_wall:north=low:east=none:south=none:west=low:up=true deepslate_tile_wall:north=low:east=none:south=none:west=low:up=true diorite_wall:north=low:east=none:south=none:west=low:up=true end_stone_brick_wall:north=low:east=none:south=none:west=low:up=true granite_wall:north=low:east=none:south=none:west=low:up=true mossy_cobblestone_wall:north=low:east=none:south=none:west=low:up=true mossy_stone_brick_wall:north=low:east=none:south=none:west=low:up=true mud_brick_wall:north=low:east=none:south=none:west=low:up=true nether_brick_wall:north=low:east=none:south=none:west=low:up=true polished_blackstone_brick_wall:north=low:east=none:south=none:west=low:up=true polished_blackstone_wall:north=low:east=none:south=none:west=low:up=true polished_deepslate_wall:north=low:east=none:south=none:west=low:up=true prismarine_wall:north=low:east=none:south=none:west=low:up=true red_nether_brick_wall:north=low:east=none:south=none:west=low:up=true red_sandstone_wall:north=low:east=none:south=none:west=low:up=true sandstone_wall:north=low:east=none:south=none:west=low:up=true stone_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_andesite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_andesite_wall:north=low:east=none:south=none:west=low:up=true create:cut_andesite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_andesite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_asurine_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_asurine_wall:north=low:east=none:south=none:west=low:up=true create:cut_asurine_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_asurine_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_calcite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_calcite_wall:north=low:east=none:south=none:west=low:up=true create:cut_calcite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_calcite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_crimsite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_deepslate_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_diorite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_diorite_wall:north=low:east=none:south=none:west=low:up=true create:cut_diorite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_diorite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_dripstone_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_granite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_granite_wall:north=low:east=none:south=none:west=low:up=true create:cut_granite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_granite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_limestone_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_limestone_wall:north=low:east=none:south=none:west=low:up=true create:cut_limestone_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_limestone_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_ochrum_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_scorchia_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_scoria_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_scoria_wall:north=low:east=none:south=none:west=low:up=true create:cut_scoria_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_scoria_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_tuff_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_tuff_wall:north=low:east=none:south=none:west=low:up=true create:cut_tuff_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_tuff_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_veridium_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_veridium_wall:north=low:east=none:south=none:west=low:up=true create:cut_veridium_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_veridium_brick_wall:north=low:east=none:south=none:west=low:up=true +block.447=cobblestone_wall:north=low:east=none:south=none:west=low:up=true andesite_wall:north=low:east=none:south=none:west=low:up=true blackstone_wall:north=low:east=none:south=none:west=low:up=true brick_wall:north=low:east=none:south=none:west=low:up=true cobbled_deepslate_wall:north=low:east=none:south=none:west=low:up=true deepslate_brick_wall:north=low:east=none:south=none:west=low:up=true deepslate_tile_wall:north=low:east=none:south=none:west=low:up=true diorite_wall:north=low:east=none:south=none:west=low:up=true end_stone_brick_wall:north=low:east=none:south=none:west=low:up=true granite_wall:north=low:east=none:south=none:west=low:up=true mossy_cobblestone_wall:north=low:east=none:south=none:west=low:up=true mossy_stone_brick_wall:north=low:east=none:south=none:west=low:up=true mud_brick_wall:north=low:east=none:south=none:west=low:up=true nether_brick_wall:north=low:east=none:south=none:west=low:up=true polished_blackstone_brick_wall:north=low:east=none:south=none:west=low:up=true polished_blackstone_wall:north=low:east=none:south=none:west=low:up=true polished_deepslate_wall:north=low:east=none:south=none:west=low:up=true prismarine_wall:north=low:east=none:south=none:west=low:up=true red_nether_brick_wall:north=low:east=none:south=none:west=low:up=true red_sandstone_wall:north=low:east=none:south=none:west=low:up=true sandstone_wall:north=low:east=none:south=none:west=low:up=true stone_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_andesite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_andesite_wall:north=low:east=none:south=none:west=low:up=true create:cut_andesite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_andesite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_asurine_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_asurine_wall:north=low:east=none:south=none:west=low:up=true create:cut_asurine_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_asurine_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_calcite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_calcite_wall:north=low:east=none:south=none:west=low:up=true create:cut_calcite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_calcite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_crimsite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_deepslate_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_diorite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_diorite_wall:north=low:east=none:south=none:west=low:up=true create:cut_diorite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_diorite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_dripstone_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_granite_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_granite_wall:north=low:east=none:south=none:west=low:up=true create:cut_granite_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_granite_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_limestone_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_limestone_wall:north=low:east=none:south=none:west=low:up=true create:cut_limestone_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_limestone_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_ochrum_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_scorchia_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_scoria_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_scoria_wall:north=low:east=none:south=none:west=low:up=true create:cut_scoria_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_scoria_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_tuff_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_tuff_wall:north=low:east=none:south=none:west=low:up=true create:cut_tuff_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_tuff_brick_wall:north=low:east=none:south=none:west=low:up=true create:cut_veridium_wall:north=low:east=none:south=none:west=low:up=true create:polished_cut_veridium_wall:north=low:east=none:south=none:west=low:up=true create:cut_veridium_brick_wall:north=low:east=none:south=none:west=low:up=true create:small_veridium_brick_wall:north=low:east=none:south=none:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=false:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.448=cobblestone_wall:north=low:east=low:south=none:west=none:up=true andesite_wall:north=low:east=low:south=none:west=none:up=true blackstone_wall:north=low:east=low:south=none:west=none:up=true brick_wall:north=low:east=low:south=none:west=none:up=true cobbled_deepslate_wall:north=low:east=low:south=none:west=none:up=true deepslate_brick_wall:north=low:east=low:south=none:west=none:up=true deepslate_tile_wall:north=low:east=low:south=none:west=none:up=true diorite_wall:north=low:east=low:south=none:west=none:up=true end_stone_brick_wall:north=low:east=low:south=none:west=none:up=true granite_wall:north=low:east=low:south=none:west=none:up=true mossy_cobblestone_wall:north=low:east=low:south=none:west=none:up=true mossy_stone_brick_wall:north=low:east=low:south=none:west=none:up=true mud_brick_wall:north=low:east=low:south=none:west=none:up=true nether_brick_wall:north=low:east=low:south=none:west=none:up=true polished_blackstone_brick_wall:north=low:east=low:south=none:west=none:up=true polished_blackstone_wall:north=low:east=low:south=none:west=none:up=true polished_deepslate_wall:north=low:east=low:south=none:west=none:up=true prismarine_wall:north=low:east=low:south=none:west=none:up=true red_nether_brick_wall:north=low:east=low:south=none:west=none:up=true red_sandstone_wall:north=low:east=low:south=none:west=none:up=true sandstone_wall:north=low:east=low:south=none:west=none:up=true stone_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_andesite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_andesite_wall:north=low:east=low:south=none:west=none:up=true create:cut_andesite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_andesite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_asurine_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_asurine_wall:north=low:east=low:south=none:west=none:up=true create:cut_asurine_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_asurine_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_calcite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_calcite_wall:north=low:east=low:south=none:west=none:up=true create:cut_calcite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_calcite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_crimsite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_deepslate_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_diorite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_diorite_wall:north=low:east=low:south=none:west=none:up=true create:cut_diorite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_diorite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_dripstone_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_granite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_granite_wall:north=low:east=low:south=none:west=none:up=true create:cut_granite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_granite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_limestone_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_limestone_wall:north=low:east=low:south=none:west=none:up=true create:cut_limestone_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_limestone_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_ochrum_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_scorchia_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_scoria_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_scoria_wall:north=low:east=low:south=none:west=none:up=true create:cut_scoria_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_scoria_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_tuff_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_tuff_wall:north=low:east=low:south=none:west=none:up=true create:cut_tuff_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_tuff_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_veridium_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_veridium_wall:north=low:east=low:south=none:west=none:up=true create:cut_veridium_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_veridium_brick_wall:north=low:east=low:south=none:west=none:up=true +block.448=cobblestone_wall:north=low:east=low:south=none:west=none:up=true andesite_wall:north=low:east=low:south=none:west=none:up=true blackstone_wall:north=low:east=low:south=none:west=none:up=true brick_wall:north=low:east=low:south=none:west=none:up=true cobbled_deepslate_wall:north=low:east=low:south=none:west=none:up=true deepslate_brick_wall:north=low:east=low:south=none:west=none:up=true deepslate_tile_wall:north=low:east=low:south=none:west=none:up=true diorite_wall:north=low:east=low:south=none:west=none:up=true end_stone_brick_wall:north=low:east=low:south=none:west=none:up=true granite_wall:north=low:east=low:south=none:west=none:up=true mossy_cobblestone_wall:north=low:east=low:south=none:west=none:up=true mossy_stone_brick_wall:north=low:east=low:south=none:west=none:up=true mud_brick_wall:north=low:east=low:south=none:west=none:up=true nether_brick_wall:north=low:east=low:south=none:west=none:up=true polished_blackstone_brick_wall:north=low:east=low:south=none:west=none:up=true polished_blackstone_wall:north=low:east=low:south=none:west=none:up=true polished_deepslate_wall:north=low:east=low:south=none:west=none:up=true prismarine_wall:north=low:east=low:south=none:west=none:up=true red_nether_brick_wall:north=low:east=low:south=none:west=none:up=true red_sandstone_wall:north=low:east=low:south=none:west=none:up=true sandstone_wall:north=low:east=low:south=none:west=none:up=true stone_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_andesite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_andesite_wall:north=low:east=low:south=none:west=none:up=true create:cut_andesite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_andesite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_asurine_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_asurine_wall:north=low:east=low:south=none:west=none:up=true create:cut_asurine_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_asurine_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_calcite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_calcite_wall:north=low:east=low:south=none:west=none:up=true create:cut_calcite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_calcite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_crimsite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_deepslate_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_diorite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_diorite_wall:north=low:east=low:south=none:west=none:up=true create:cut_diorite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_diorite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_dripstone_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_granite_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_granite_wall:north=low:east=low:south=none:west=none:up=true create:cut_granite_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_granite_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_limestone_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_limestone_wall:north=low:east=low:south=none:west=none:up=true create:cut_limestone_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_limestone_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_ochrum_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_scorchia_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_scoria_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_scoria_wall:north=low:east=low:south=none:west=none:up=true create:cut_scoria_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_scoria_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_tuff_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_tuff_wall:north=low:east=low:south=none:west=none:up=true create:cut_tuff_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_tuff_brick_wall:north=low:east=low:south=none:west=none:up=true create:cut_veridium_wall:north=low:east=low:south=none:west=none:up=true create:polished_cut_veridium_wall:north=low:east=low:south=none:west=none:up=true create:cut_veridium_brick_wall:north=low:east=low:south=none:west=none:up=true create:small_veridium_brick_wall:north=low:east=low:south=none:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=true:south=false:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.449=cobblestone_wall:north=none:east=none:south=low:west=low:up=true andesite_wall:north=none:east=none:south=low:west=low:up=true blackstone_wall:north=none:east=none:south=low:west=low:up=true brick_wall:north=none:east=none:south=low:west=low:up=true cobbled_deepslate_wall:north=none:east=none:south=low:west=low:up=true deepslate_brick_wall:north=none:east=none:south=low:west=low:up=true deepslate_tile_wall:north=none:east=none:south=low:west=low:up=true diorite_wall:north=none:east=none:south=low:west=low:up=true end_stone_brick_wall:north=none:east=none:south=low:west=low:up=true granite_wall:north=none:east=none:south=low:west=low:up=true mossy_cobblestone_wall:north=none:east=none:south=low:west=low:up=true mossy_stone_brick_wall:north=none:east=none:south=low:west=low:up=true mud_brick_wall:north=none:east=none:south=low:west=low:up=true nether_brick_wall:north=none:east=none:south=low:west=low:up=true polished_blackstone_brick_wall:north=none:east=none:south=low:west=low:up=true polished_blackstone_wall:north=none:east=none:south=low:west=low:up=true polished_deepslate_wall:north=none:east=none:south=low:west=low:up=true prismarine_wall:north=none:east=none:south=low:west=low:up=true red_nether_brick_wall:north=none:east=none:south=low:west=low:up=true red_sandstone_wall:north=none:east=none:south=low:west=low:up=true sandstone_wall:north=none:east=none:south=low:west=low:up=true stone_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_andesite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_andesite_wall:north=none:east=none:south=low:west=low:up=true create:cut_andesite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_andesite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_asurine_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_asurine_wall:north=none:east=none:south=low:west=low:up=true create:cut_asurine_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_asurine_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_calcite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_calcite_wall:north=none:east=none:south=low:west=low:up=true create:cut_calcite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_calcite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_crimsite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_deepslate_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_diorite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_diorite_wall:north=none:east=none:south=low:west=low:up=true create:cut_diorite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_diorite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_dripstone_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_granite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_granite_wall:north=none:east=none:south=low:west=low:up=true create:cut_granite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_granite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_limestone_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_limestone_wall:north=none:east=none:south=low:west=low:up=true create:cut_limestone_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_limestone_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_ochrum_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_scorchia_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_scoria_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_scoria_wall:north=none:east=none:south=low:west=low:up=true create:cut_scoria_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_scoria_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_tuff_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_tuff_wall:north=none:east=none:south=low:west=low:up=true create:cut_tuff_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_tuff_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_veridium_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_veridium_wall:north=none:east=none:south=low:west=low:up=true create:cut_veridium_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_veridium_brick_wall:north=none:east=none:south=low:west=low:up=true +block.449=cobblestone_wall:north=none:east=none:south=low:west=low:up=true andesite_wall:north=none:east=none:south=low:west=low:up=true blackstone_wall:north=none:east=none:south=low:west=low:up=true brick_wall:north=none:east=none:south=low:west=low:up=true cobbled_deepslate_wall:north=none:east=none:south=low:west=low:up=true deepslate_brick_wall:north=none:east=none:south=low:west=low:up=true deepslate_tile_wall:north=none:east=none:south=low:west=low:up=true diorite_wall:north=none:east=none:south=low:west=low:up=true end_stone_brick_wall:north=none:east=none:south=low:west=low:up=true granite_wall:north=none:east=none:south=low:west=low:up=true mossy_cobblestone_wall:north=none:east=none:south=low:west=low:up=true mossy_stone_brick_wall:north=none:east=none:south=low:west=low:up=true mud_brick_wall:north=none:east=none:south=low:west=low:up=true nether_brick_wall:north=none:east=none:south=low:west=low:up=true polished_blackstone_brick_wall:north=none:east=none:south=low:west=low:up=true polished_blackstone_wall:north=none:east=none:south=low:west=low:up=true polished_deepslate_wall:north=none:east=none:south=low:west=low:up=true prismarine_wall:north=none:east=none:south=low:west=low:up=true red_nether_brick_wall:north=none:east=none:south=low:west=low:up=true red_sandstone_wall:north=none:east=none:south=low:west=low:up=true sandstone_wall:north=none:east=none:south=low:west=low:up=true stone_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_andesite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_andesite_wall:north=none:east=none:south=low:west=low:up=true create:cut_andesite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_andesite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_asurine_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_asurine_wall:north=none:east=none:south=low:west=low:up=true create:cut_asurine_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_asurine_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_calcite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_calcite_wall:north=none:east=none:south=low:west=low:up=true create:cut_calcite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_calcite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_crimsite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_deepslate_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_diorite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_diorite_wall:north=none:east=none:south=low:west=low:up=true create:cut_diorite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_diorite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_dripstone_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_granite_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_granite_wall:north=none:east=none:south=low:west=low:up=true create:cut_granite_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_granite_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_limestone_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_limestone_wall:north=none:east=none:south=low:west=low:up=true create:cut_limestone_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_limestone_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_ochrum_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_scorchia_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_scoria_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_scoria_wall:north=none:east=none:south=low:west=low:up=true create:cut_scoria_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_scoria_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_tuff_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_tuff_wall:north=none:east=none:south=low:west=low:up=true create:cut_tuff_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_tuff_brick_wall:north=none:east=none:south=low:west=low:up=true create:cut_veridium_wall:north=none:east=none:south=low:west=low:up=true create:polished_cut_veridium_wall:north=none:east=none:south=low:west=low:up=true create:cut_veridium_brick_wall:north=none:east=none:south=low:west=low:up=true create:small_veridium_brick_wall:north=none:east=none:south=low:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.450=cobblestone_wall:north=none:east=low:south=low:west=none:up=true andesite_wall:north=none:east=low:south=low:west=none:up=true blackstone_wall:north=none:east=low:south=low:west=none:up=true brick_wall:north=none:east=low:south=low:west=none:up=true cobbled_deepslate_wall:north=none:east=low:south=low:west=none:up=true deepslate_brick_wall:north=none:east=low:south=low:west=none:up=true deepslate_tile_wall:north=none:east=low:south=low:west=none:up=true diorite_wall:north=none:east=low:south=low:west=none:up=true end_stone_brick_wall:north=none:east=low:south=low:west=none:up=true granite_wall:north=none:east=low:south=low:west=none:up=true mossy_cobblestone_wall:north=none:east=low:south=low:west=none:up=true mossy_stone_brick_wall:north=none:east=low:south=low:west=none:up=true mud_brick_wall:north=none:east=low:south=low:west=none:up=true nether_brick_wall:north=none:east=low:south=low:west=none:up=true polished_blackstone_brick_wall:north=none:east=low:south=low:west=none:up=true polished_blackstone_wall:north=none:east=low:south=low:west=none:up=true polished_deepslate_wall:north=none:east=low:south=low:west=none:up=true prismarine_wall:north=none:east=low:south=low:west=none:up=true red_nether_brick_wall:north=none:east=low:south=low:west=none:up=true red_sandstone_wall:north=none:east=low:south=low:west=none:up=true sandstone_wall:north=none:east=low:south=low:west=none:up=true stone_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_andesite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_andesite_wall:north=none:east=low:south=low:west=none:up=true create:cut_andesite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_andesite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_asurine_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_asurine_wall:north=none:east=low:south=low:west=none:up=true create:cut_asurine_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_asurine_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_calcite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_calcite_wall:north=none:east=low:south=low:west=none:up=true create:cut_calcite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_calcite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_crimsite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_deepslate_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_diorite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_diorite_wall:north=none:east=low:south=low:west=none:up=true create:cut_diorite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_diorite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_dripstone_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_granite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_granite_wall:north=none:east=low:south=low:west=none:up=true create:cut_granite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_granite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_limestone_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_limestone_wall:north=none:east=low:south=low:west=none:up=true create:cut_limestone_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_limestone_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_ochrum_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_scorchia_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_scoria_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_scoria_wall:north=none:east=low:south=low:west=none:up=true create:cut_scoria_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_scoria_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_tuff_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_tuff_wall:north=none:east=low:south=low:west=none:up=true create:cut_tuff_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_tuff_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_veridium_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_veridium_wall:north=none:east=low:south=low:west=none:up=true create:cut_veridium_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_veridium_brick_wall:north=none:east=low:south=low:west=none:up=true +block.450=cobblestone_wall:north=none:east=low:south=low:west=none:up=true andesite_wall:north=none:east=low:south=low:west=none:up=true blackstone_wall:north=none:east=low:south=low:west=none:up=true brick_wall:north=none:east=low:south=low:west=none:up=true cobbled_deepslate_wall:north=none:east=low:south=low:west=none:up=true deepslate_brick_wall:north=none:east=low:south=low:west=none:up=true deepslate_tile_wall:north=none:east=low:south=low:west=none:up=true diorite_wall:north=none:east=low:south=low:west=none:up=true end_stone_brick_wall:north=none:east=low:south=low:west=none:up=true granite_wall:north=none:east=low:south=low:west=none:up=true mossy_cobblestone_wall:north=none:east=low:south=low:west=none:up=true mossy_stone_brick_wall:north=none:east=low:south=low:west=none:up=true mud_brick_wall:north=none:east=low:south=low:west=none:up=true nether_brick_wall:north=none:east=low:south=low:west=none:up=true polished_blackstone_brick_wall:north=none:east=low:south=low:west=none:up=true polished_blackstone_wall:north=none:east=low:south=low:west=none:up=true polished_deepslate_wall:north=none:east=low:south=low:west=none:up=true prismarine_wall:north=none:east=low:south=low:west=none:up=true red_nether_brick_wall:north=none:east=low:south=low:west=none:up=true red_sandstone_wall:north=none:east=low:south=low:west=none:up=true sandstone_wall:north=none:east=low:south=low:west=none:up=true stone_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_andesite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_andesite_wall:north=none:east=low:south=low:west=none:up=true create:cut_andesite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_andesite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_asurine_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_asurine_wall:north=none:east=low:south=low:west=none:up=true create:cut_asurine_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_asurine_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_calcite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_calcite_wall:north=none:east=low:south=low:west=none:up=true create:cut_calcite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_calcite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_crimsite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_deepslate_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_diorite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_diorite_wall:north=none:east=low:south=low:west=none:up=true create:cut_diorite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_diorite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_dripstone_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_granite_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_granite_wall:north=none:east=low:south=low:west=none:up=true create:cut_granite_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_granite_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_limestone_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_limestone_wall:north=none:east=low:south=low:west=none:up=true create:cut_limestone_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_limestone_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_ochrum_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_scorchia_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_scoria_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_scoria_wall:north=none:east=low:south=low:west=none:up=true create:cut_scoria_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_scoria_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_tuff_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_tuff_wall:north=none:east=low:south=low:west=none:up=true create:cut_tuff_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_tuff_brick_wall:north=none:east=low:south=low:west=none:up=true create:cut_veridium_wall:north=none:east=low:south=low:west=none:up=true create:polished_cut_veridium_wall:north=none:east=low:south=low:west=none:up=true create:cut_veridium_brick_wall:north=none:east=low:south=low:west=none:up=true create:small_veridium_brick_wall:north=none:east=low:south=low:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.451=cobblestone_wall:north=low:east=none:south=low:west=low:up=true andesite_wall:north=low:east=none:south=low:west=low:up=true blackstone_wall:north=low:east=none:south=low:west=low:up=true brick_wall:north=low:east=none:south=low:west=low:up=true cobbled_deepslate_wall:north=low:east=none:south=low:west=low:up=true deepslate_brick_wall:north=low:east=none:south=low:west=low:up=true deepslate_tile_wall:north=low:east=none:south=low:west=low:up=true diorite_wall:north=low:east=none:south=low:west=low:up=true end_stone_brick_wall:north=low:east=none:south=low:west=low:up=true granite_wall:north=low:east=none:south=low:west=low:up=true mossy_cobblestone_wall:north=low:east=none:south=low:west=low:up=true mossy_stone_brick_wall:north=low:east=none:south=low:west=low:up=true mud_brick_wall:north=low:east=none:south=low:west=low:up=true nether_brick_wall:north=low:east=none:south=low:west=low:up=true polished_blackstone_brick_wall:north=low:east=none:south=low:west=low:up=true polished_blackstone_wall:north=low:east=none:south=low:west=low:up=true polished_deepslate_wall:north=low:east=none:south=low:west=low:up=true prismarine_wall:north=low:east=none:south=low:west=low:up=true red_nether_brick_wall:north=low:east=none:south=low:west=low:up=true red_sandstone_wall:north=low:east=none:south=low:west=low:up=true sandstone_wall:north=low:east=none:south=low:west=low:up=true stone_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_andesite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_andesite_wall:north=low:east=none:south=low:west=low:up=true create:cut_andesite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_andesite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_asurine_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_asurine_wall:north=low:east=none:south=low:west=low:up=true create:cut_asurine_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_asurine_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_calcite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_calcite_wall:north=low:east=none:south=low:west=low:up=true create:cut_calcite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_calcite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_crimsite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_crimsite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_deepslate_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_deepslate_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_diorite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_diorite_wall:north=low:east=none:south=low:west=low:up=true create:cut_diorite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_diorite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_dripstone_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_dripstone_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_granite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_granite_wall:north=low:east=none:south=low:west=low:up=true create:cut_granite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_granite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_limestone_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_limestone_wall:north=low:east=none:south=low:west=low:up=true create:cut_limestone_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_limestone_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_ochrum_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_ochrum_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_scorchia_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_scorchia_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_scoria_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_scoria_wall:north=low:east=none:south=low:west=low:up=true create:cut_scoria_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_scoria_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_tuff_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_tuff_wall:north=low:east=none:south=low:west=low:up=true create:cut_tuff_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_tuff_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_veridium_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_veridium_wall:north=low:east=none:south=low:west=low:up=true create:cut_veridium_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_veridium_brick_wall:north=low:east=none:south=low:west=low:up=true +block.451=cobblestone_wall:north=low:east=none:south=low:west=low:up=true andesite_wall:north=low:east=none:south=low:west=low:up=true blackstone_wall:north=low:east=none:south=low:west=low:up=true brick_wall:north=low:east=none:south=low:west=low:up=true cobbled_deepslate_wall:north=low:east=none:south=low:west=low:up=true deepslate_brick_wall:north=low:east=none:south=low:west=low:up=true deepslate_tile_wall:north=low:east=none:south=low:west=low:up=true diorite_wall:north=low:east=none:south=low:west=low:up=true end_stone_brick_wall:north=low:east=none:south=low:west=low:up=true granite_wall:north=low:east=none:south=low:west=low:up=true mossy_cobblestone_wall:north=low:east=none:south=low:west=low:up=true mossy_stone_brick_wall:north=low:east=none:south=low:west=low:up=true mud_brick_wall:north=low:east=none:south=low:west=low:up=true nether_brick_wall:north=low:east=none:south=low:west=low:up=true polished_blackstone_brick_wall:north=low:east=none:south=low:west=low:up=true polished_blackstone_wall:north=low:east=none:south=low:west=low:up=true polished_deepslate_wall:north=low:east=none:south=low:west=low:up=true prismarine_wall:north=low:east=none:south=low:west=low:up=true red_nether_brick_wall:north=low:east=none:south=low:west=low:up=true red_sandstone_wall:north=low:east=none:south=low:west=low:up=true sandstone_wall:north=low:east=none:south=low:west=low:up=true stone_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_andesite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_andesite_wall:north=low:east=none:south=low:west=low:up=true create:cut_andesite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_andesite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_asurine_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_asurine_wall:north=low:east=none:south=low:west=low:up=true create:cut_asurine_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_asurine_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_calcite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_calcite_wall:north=low:east=none:south=low:west=low:up=true create:cut_calcite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_calcite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_crimsite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_crimsite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_deepslate_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_deepslate_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_diorite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_diorite_wall:north=low:east=none:south=low:west=low:up=true create:cut_diorite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_diorite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_dripstone_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_dripstone_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_granite_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_granite_wall:north=low:east=none:south=low:west=low:up=true create:cut_granite_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_granite_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_limestone_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_limestone_wall:north=low:east=none:south=low:west=low:up=true create:cut_limestone_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_limestone_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_ochrum_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_ochrum_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_scorchia_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_scorchia_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_scoria_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_scoria_wall:north=low:east=none:south=low:west=low:up=true create:cut_scoria_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_scoria_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_tuff_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_tuff_wall:north=low:east=none:south=low:west=low:up=true create:cut_tuff_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_tuff_brick_wall:north=low:east=none:south=low:west=low:up=true create:cut_veridium_wall:north=low:east=none:south=low:west=low:up=true create:polished_cut_veridium_wall:north=low:east=none:south=low:west=low:up=true create:cut_veridium_brick_wall:north=low:east=none:south=low:west=low:up=true create:small_veridium_brick_wall:north=low:east=none:south=low:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=false:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.452=cobblestone_wall:north=low:east=low:south=low:west=none:up=true andesite_wall:north=low:east=low:south=low:west=none:up=true blackstone_wall:north=low:east=low:south=low:west=none:up=true brick_wall:north=low:east=low:south=low:west=none:up=true cobbled_deepslate_wall:north=low:east=low:south=low:west=none:up=true deepslate_brick_wall:north=low:east=low:south=low:west=none:up=true deepslate_tile_wall:north=low:east=low:south=low:west=none:up=true diorite_wall:north=low:east=low:south=low:west=none:up=true end_stone_brick_wall:north=low:east=low:south=low:west=none:up=true granite_wall:north=low:east=low:south=low:west=none:up=true mossy_cobblestone_wall:north=low:east=low:south=low:west=none:up=true mossy_stone_brick_wall:north=low:east=low:south=low:west=none:up=true mud_brick_wall:north=low:east=low:south=low:west=none:up=true nether_brick_wall:north=low:east=low:south=low:west=none:up=true polished_blackstone_brick_wall:north=low:east=low:south=low:west=none:up=true polished_blackstone_wall:north=low:east=low:south=low:west=none:up=true polished_deepslate_wall:north=low:east=low:south=low:west=none:up=true prismarine_wall:north=low:east=low:south=low:west=none:up=true red_nether_brick_wall:north=low:east=low:south=low:west=none:up=true red_sandstone_wall:north=low:east=low:south=low:west=none:up=true sandstone_wall:north=low:east=low:south=low:west=none:up=true stone_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_andesite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_andesite_wall:north=low:east=low:south=low:west=none:up=true create:cut_andesite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_andesite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_asurine_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_asurine_wall:north=low:east=low:south=low:west=none:up=true create:cut_asurine_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_asurine_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_calcite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_calcite_wall:north=low:east=low:south=low:west=none:up=true create:cut_calcite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_calcite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_crimsite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_crimsite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_deepslate_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_deepslate_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_diorite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_diorite_wall:north=low:east=low:south=low:west=none:up=true create:cut_diorite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_diorite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_dripstone_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_dripstone_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_granite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_granite_wall:north=low:east=low:south=low:west=none:up=true create:cut_granite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_granite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_limestone_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_limestone_wall:north=low:east=low:south=low:west=none:up=true create:cut_limestone_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_limestone_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_ochrum_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_ochrum_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_scorchia_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_scorchia_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_scoria_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_scoria_wall:north=low:east=low:south=low:west=none:up=true create:cut_scoria_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_scoria_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_tuff_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_tuff_wall:north=low:east=low:south=low:west=none:up=true create:cut_tuff_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_tuff_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_veridium_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_veridium_wall:north=low:east=low:south=low:west=none:up=true create:cut_veridium_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_veridium_brick_wall:north=low:east=low:south=low:west=none:up=true +block.452=cobblestone_wall:north=low:east=low:south=low:west=none:up=true andesite_wall:north=low:east=low:south=low:west=none:up=true blackstone_wall:north=low:east=low:south=low:west=none:up=true brick_wall:north=low:east=low:south=low:west=none:up=true cobbled_deepslate_wall:north=low:east=low:south=low:west=none:up=true deepslate_brick_wall:north=low:east=low:south=low:west=none:up=true deepslate_tile_wall:north=low:east=low:south=low:west=none:up=true diorite_wall:north=low:east=low:south=low:west=none:up=true end_stone_brick_wall:north=low:east=low:south=low:west=none:up=true granite_wall:north=low:east=low:south=low:west=none:up=true mossy_cobblestone_wall:north=low:east=low:south=low:west=none:up=true mossy_stone_brick_wall:north=low:east=low:south=low:west=none:up=true mud_brick_wall:north=low:east=low:south=low:west=none:up=true nether_brick_wall:north=low:east=low:south=low:west=none:up=true polished_blackstone_brick_wall:north=low:east=low:south=low:west=none:up=true polished_blackstone_wall:north=low:east=low:south=low:west=none:up=true polished_deepslate_wall:north=low:east=low:south=low:west=none:up=true prismarine_wall:north=low:east=low:south=low:west=none:up=true red_nether_brick_wall:north=low:east=low:south=low:west=none:up=true red_sandstone_wall:north=low:east=low:south=low:west=none:up=true sandstone_wall:north=low:east=low:south=low:west=none:up=true stone_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_andesite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_andesite_wall:north=low:east=low:south=low:west=none:up=true create:cut_andesite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_andesite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_asurine_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_asurine_wall:north=low:east=low:south=low:west=none:up=true create:cut_asurine_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_asurine_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_calcite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_calcite_wall:north=low:east=low:south=low:west=none:up=true create:cut_calcite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_calcite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_crimsite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_crimsite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_deepslate_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_deepslate_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_diorite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_diorite_wall:north=low:east=low:south=low:west=none:up=true create:cut_diorite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_diorite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_dripstone_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_dripstone_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_granite_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_granite_wall:north=low:east=low:south=low:west=none:up=true create:cut_granite_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_granite_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_limestone_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_limestone_wall:north=low:east=low:south=low:west=none:up=true create:cut_limestone_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_limestone_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_ochrum_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_ochrum_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_scorchia_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_scorchia_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_scoria_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_scoria_wall:north=low:east=low:south=low:west=none:up=true create:cut_scoria_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_scoria_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_tuff_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_tuff_wall:north=low:east=low:south=low:west=none:up=true create:cut_tuff_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_tuff_brick_wall:north=low:east=low:south=low:west=none:up=true create:cut_veridium_wall:north=low:east=low:south=low:west=none:up=true create:polished_cut_veridium_wall:north=low:east=low:south=low:west=none:up=true create:cut_veridium_brick_wall:north=low:east=low:south=low:west=none:up=true create:small_veridium_brick_wall:north=low:east=low:south=low:west=none:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=true:south=true:west=false:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.453=cobblestone_wall:north=low:east=low:south=none:west=low:up=true andesite_wall:north=low:east=low:south=none:west=low:up=true blackstone_wall:north=low:east=low:south=none:west=low:up=true brick_wall:north=low:east=low:south=none:west=low:up=true cobbled_deepslate_wall:north=low:east=low:south=none:west=low:up=true deepslate_brick_wall:north=low:east=low:south=none:west=low:up=true deepslate_tile_wall:north=low:east=low:south=none:west=low:up=true diorite_wall:north=low:east=low:south=none:west=low:up=true end_stone_brick_wall:north=low:east=low:south=none:west=low:up=true granite_wall:north=low:east=low:south=none:west=low:up=true mossy_cobblestone_wall:north=low:east=low:south=none:west=low:up=true mossy_stone_brick_wall:north=low:east=low:south=none:west=low:up=true mud_brick_wall:north=low:east=low:south=none:west=low:up=true nether_brick_wall:north=low:east=low:south=none:west=low:up=true polished_blackstone_brick_wall:north=low:east=low:south=none:west=low:up=true polished_blackstone_wall:north=low:east=low:south=none:west=low:up=true polished_deepslate_wall:north=low:east=low:south=none:west=low:up=true prismarine_wall:north=low:east=low:south=none:west=low:up=true red_nether_brick_wall:north=low:east=low:south=none:west=low:up=true red_sandstone_wall:north=low:east=low:south=none:west=low:up=true sandstone_wall:north=low:east=low:south=none:west=low:up=true stone_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_andesite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_andesite_wall:north=low:east=low:south=none:west=low:up=true create:cut_andesite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_andesite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_asurine_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_asurine_wall:north=low:east=low:south=none:west=low:up=true create:cut_asurine_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_asurine_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_calcite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_calcite_wall:north=low:east=low:south=none:west=low:up=true create:cut_calcite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_calcite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_crimsite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_crimsite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_deepslate_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_deepslate_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_diorite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_diorite_wall:north=low:east=low:south=none:west=low:up=true create:cut_diorite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_diorite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_dripstone_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_dripstone_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_granite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_granite_wall:north=low:east=low:south=none:west=low:up=true create:cut_granite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_granite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_limestone_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_limestone_wall:north=low:east=low:south=none:west=low:up=true create:cut_limestone_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_limestone_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_ochrum_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_ochrum_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_scorchia_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_scorchia_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_scoria_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_scoria_wall:north=low:east=low:south=none:west=low:up=true create:cut_scoria_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_scoria_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_tuff_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_tuff_wall:north=low:east=low:south=none:west=low:up=true create:cut_tuff_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_tuff_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_veridium_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_veridium_wall:north=low:east=low:south=none:west=low:up=true create:cut_veridium_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_veridium_brick_wall:north=low:east=low:south=none:west=low:up=true +block.453=cobblestone_wall:north=low:east=low:south=none:west=low:up=true andesite_wall:north=low:east=low:south=none:west=low:up=true blackstone_wall:north=low:east=low:south=none:west=low:up=true brick_wall:north=low:east=low:south=none:west=low:up=true cobbled_deepslate_wall:north=low:east=low:south=none:west=low:up=true deepslate_brick_wall:north=low:east=low:south=none:west=low:up=true deepslate_tile_wall:north=low:east=low:south=none:west=low:up=true diorite_wall:north=low:east=low:south=none:west=low:up=true end_stone_brick_wall:north=low:east=low:south=none:west=low:up=true granite_wall:north=low:east=low:south=none:west=low:up=true mossy_cobblestone_wall:north=low:east=low:south=none:west=low:up=true mossy_stone_brick_wall:north=low:east=low:south=none:west=low:up=true mud_brick_wall:north=low:east=low:south=none:west=low:up=true nether_brick_wall:north=low:east=low:south=none:west=low:up=true polished_blackstone_brick_wall:north=low:east=low:south=none:west=low:up=true polished_blackstone_wall:north=low:east=low:south=none:west=low:up=true polished_deepslate_wall:north=low:east=low:south=none:west=low:up=true prismarine_wall:north=low:east=low:south=none:west=low:up=true red_nether_brick_wall:north=low:east=low:south=none:west=low:up=true red_sandstone_wall:north=low:east=low:south=none:west=low:up=true sandstone_wall:north=low:east=low:south=none:west=low:up=true stone_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_andesite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_andesite_wall:north=low:east=low:south=none:west=low:up=true create:cut_andesite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_andesite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_asurine_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_asurine_wall:north=low:east=low:south=none:west=low:up=true create:cut_asurine_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_asurine_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_calcite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_calcite_wall:north=low:east=low:south=none:west=low:up=true create:cut_calcite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_calcite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_crimsite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_crimsite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_deepslate_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_deepslate_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_diorite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_diorite_wall:north=low:east=low:south=none:west=low:up=true create:cut_diorite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_diorite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_dripstone_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_dripstone_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_granite_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_granite_wall:north=low:east=low:south=none:west=low:up=true create:cut_granite_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_granite_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_limestone_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_limestone_wall:north=low:east=low:south=none:west=low:up=true create:cut_limestone_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_limestone_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_ochrum_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_ochrum_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_scorchia_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_scorchia_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_scoria_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_scoria_wall:north=low:east=low:south=none:west=low:up=true create:cut_scoria_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_scoria_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_tuff_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_tuff_wall:north=low:east=low:south=none:west=low:up=true create:cut_tuff_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_tuff_brick_wall:north=low:east=low:south=none:west=low:up=true create:cut_veridium_wall:north=low:east=low:south=none:west=low:up=true create:polished_cut_veridium_wall:north=low:east=low:south=none:west=low:up=true create:cut_veridium_brick_wall:north=low:east=low:south=none:west=low:up=true create:small_veridium_brick_wall:north=low:east=low:south=none:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=true:south=false:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.454=cobblestone_wall:north=none:east=low:south=low:west=low:up=true andesite_wall:north=none:east=low:south=low:west=low:up=true blackstone_wall:north=none:east=low:south=low:west=low:up=true brick_wall:north=none:east=low:south=low:west=low:up=true cobbled_deepslate_wall:north=none:east=low:south=low:west=low:up=true deepslate_brick_wall:north=none:east=low:south=low:west=low:up=true deepslate_tile_wall:north=none:east=low:south=low:west=low:up=true diorite_wall:north=none:east=low:south=low:west=low:up=true end_stone_brick_wall:north=none:east=low:south=low:west=low:up=true granite_wall:north=none:east=low:south=low:west=low:up=true mossy_cobblestone_wall:north=none:east=low:south=low:west=low:up=true mossy_stone_brick_wall:north=none:east=low:south=low:west=low:up=true mud_brick_wall:north=none:east=low:south=low:west=low:up=true nether_brick_wall:north=none:east=low:south=low:west=low:up=true polished_blackstone_brick_wall:north=none:east=low:south=low:west=low:up=true polished_blackstone_wall:north=none:east=low:south=low:west=low:up=true polished_deepslate_wall:north=none:east=low:south=low:west=low:up=true prismarine_wall:north=none:east=low:south=low:west=low:up=true red_nether_brick_wall:north=none:east=low:south=low:west=low:up=true red_sandstone_wall:north=none:east=low:south=low:west=low:up=true sandstone_wall:north=none:east=low:south=low:west=low:up=true stone_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_andesite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_andesite_wall:north=none:east=low:south=low:west=low:up=true create:cut_andesite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_andesite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_asurine_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_asurine_wall:north=none:east=low:south=low:west=low:up=true create:cut_asurine_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_asurine_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_calcite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_calcite_wall:north=none:east=low:south=low:west=low:up=true create:cut_calcite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_calcite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_crimsite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_crimsite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_deepslate_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_deepslate_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_diorite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_diorite_wall:north=none:east=low:south=low:west=low:up=true create:cut_diorite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_diorite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_dripstone_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_dripstone_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_granite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_granite_wall:north=none:east=low:south=low:west=low:up=true create:cut_granite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_granite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_limestone_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_limestone_wall:north=none:east=low:south=low:west=low:up=true create:cut_limestone_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_limestone_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_ochrum_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_ochrum_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_scorchia_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_scorchia_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_scoria_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_scoria_wall:north=none:east=low:south=low:west=low:up=true create:cut_scoria_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_scoria_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_tuff_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_tuff_wall:north=none:east=low:south=low:west=low:up=true create:cut_tuff_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_tuff_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_veridium_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_veridium_wall:north=none:east=low:south=low:west=low:up=true create:cut_veridium_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_veridium_brick_wall:north=none:east=low:south=low:west=low:up=true +block.454=cobblestone_wall:north=none:east=low:south=low:west=low:up=true andesite_wall:north=none:east=low:south=low:west=low:up=true blackstone_wall:north=none:east=low:south=low:west=low:up=true brick_wall:north=none:east=low:south=low:west=low:up=true cobbled_deepslate_wall:north=none:east=low:south=low:west=low:up=true deepslate_brick_wall:north=none:east=low:south=low:west=low:up=true deepslate_tile_wall:north=none:east=low:south=low:west=low:up=true diorite_wall:north=none:east=low:south=low:west=low:up=true end_stone_brick_wall:north=none:east=low:south=low:west=low:up=true granite_wall:north=none:east=low:south=low:west=low:up=true mossy_cobblestone_wall:north=none:east=low:south=low:west=low:up=true mossy_stone_brick_wall:north=none:east=low:south=low:west=low:up=true mud_brick_wall:north=none:east=low:south=low:west=low:up=true nether_brick_wall:north=none:east=low:south=low:west=low:up=true polished_blackstone_brick_wall:north=none:east=low:south=low:west=low:up=true polished_blackstone_wall:north=none:east=low:south=low:west=low:up=true polished_deepslate_wall:north=none:east=low:south=low:west=low:up=true prismarine_wall:north=none:east=low:south=low:west=low:up=true red_nether_brick_wall:north=none:east=low:south=low:west=low:up=true red_sandstone_wall:north=none:east=low:south=low:west=low:up=true sandstone_wall:north=none:east=low:south=low:west=low:up=true stone_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_andesite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_andesite_wall:north=none:east=low:south=low:west=low:up=true create:cut_andesite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_andesite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_asurine_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_asurine_wall:north=none:east=low:south=low:west=low:up=true create:cut_asurine_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_asurine_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_calcite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_calcite_wall:north=none:east=low:south=low:west=low:up=true create:cut_calcite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_calcite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_crimsite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_crimsite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_deepslate_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_deepslate_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_diorite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_diorite_wall:north=none:east=low:south=low:west=low:up=true create:cut_diorite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_diorite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_dripstone_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_dripstone_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_granite_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_granite_wall:north=none:east=low:south=low:west=low:up=true create:cut_granite_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_granite_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_limestone_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_limestone_wall:north=none:east=low:south=low:west=low:up=true create:cut_limestone_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_limestone_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_ochrum_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_ochrum_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_scorchia_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_scorchia_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_scoria_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_scoria_wall:north=none:east=low:south=low:west=low:up=true create:cut_scoria_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_scoria_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_tuff_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_tuff_wall:north=none:east=low:south=low:west=low:up=true create:cut_tuff_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_tuff_brick_wall:north=none:east=low:south=low:west=low:up=true create:cut_veridium_wall:north=none:east=low:south=low:west=low:up=true create:polished_cut_veridium_wall:north=none:east=low:south=low:west=low:up=true create:cut_veridium_brick_wall:north=none:east=low:south=low:west=low:up=true create:small_veridium_brick_wall:north=none:east=low:south=low:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false -block.455=cobblestone_wall:north=low:east=low:south=low:west=low:up=true andesite_wall:north=low:east=low:south=low:west=low:up=true blackstone_wall:north=low:east=low:south=low:west=low:up=true brick_wall:north=low:east=low:south=low:west=low:up=true cobbled_deepslate_wall:north=low:east=low:south=low:west=low:up=true deepslate_brick_wall:north=low:east=low:south=low:west=low:up=true deepslate_tile_wall:north=low:east=low:south=low:west=low:up=true diorite_wall:north=low:east=low:south=low:west=low:up=true end_stone_brick_wall:north=low:east=low:south=low:west=low:up=true granite_wall:north=low:east=low:south=low:west=low:up=true mossy_cobblestone_wall:north=low:east=low:south=low:west=low:up=true mossy_stone_brick_wall:north=low:east=low:south=low:west=low:up=true mud_brick_wall:north=low:east=low:south=low:west=low:up=true nether_brick_wall:north=low:east=low:south=low:west=low:up=true polished_blackstone_brick_wall:north=low:east=low:south=low:west=low:up=true polished_blackstone_wall:north=low:east=low:south=low:west=low:up=true polished_deepslate_wall:north=low:east=low:south=low:west=low:up=true prismarine_wall:north=low:east=low:south=low:west=low:up=true red_nether_brick_wall:north=low:east=low:south=low:west=low:up=true red_sandstone_wall:north=low:east=low:south=low:west=low:up=true sandstone_wall:north=low:east=low:south=low:west=low:up=true stone_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_andesite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_andesite_wall:north=low:east=low:south=low:west=low:up=true create:cut_andesite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_andesite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_asurine_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_asurine_wall:north=low:east=low:south=low:west=low:up=true create:cut_asurine_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_asurine_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_calcite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_calcite_wall:north=low:east=low:south=low:west=low:up=true create:cut_calcite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_calcite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_crimsite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_deepslate_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_diorite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_diorite_wall:north=low:east=low:south=low:west=low:up=true create:cut_diorite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_diorite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_dripstone_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_granite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_granite_wall:north=low:east=low:south=low:west=low:up=true create:cut_granite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_granite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_limestone_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_limestone_wall:north=low:east=low:south=low:west=low:up=true create:cut_limestone_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_limestone_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_ochrum_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_scorchia_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_scoria_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_scoria_wall:north=low:east=low:south=low:west=low:up=true create:cut_scoria_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_scoria_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_tuff_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_tuff_wall:north=low:east=low:south=low:west=low:up=true create:cut_tuff_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_tuff_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_veridium_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_veridium_wall:north=low:east=low:south=low:west=low:up=true create:cut_veridium_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_veridium_brick_wall:north=low:east=low:south=low:west=low:up=true +block.455=cobblestone_wall:north=low:east=low:south=low:west=low:up=true andesite_wall:north=low:east=low:south=low:west=low:up=true blackstone_wall:north=low:east=low:south=low:west=low:up=true brick_wall:north=low:east=low:south=low:west=low:up=true cobbled_deepslate_wall:north=low:east=low:south=low:west=low:up=true deepslate_brick_wall:north=low:east=low:south=low:west=low:up=true deepslate_tile_wall:north=low:east=low:south=low:west=low:up=true diorite_wall:north=low:east=low:south=low:west=low:up=true end_stone_brick_wall:north=low:east=low:south=low:west=low:up=true granite_wall:north=low:east=low:south=low:west=low:up=true mossy_cobblestone_wall:north=low:east=low:south=low:west=low:up=true mossy_stone_brick_wall:north=low:east=low:south=low:west=low:up=true mud_brick_wall:north=low:east=low:south=low:west=low:up=true nether_brick_wall:north=low:east=low:south=low:west=low:up=true polished_blackstone_brick_wall:north=low:east=low:south=low:west=low:up=true polished_blackstone_wall:north=low:east=low:south=low:west=low:up=true polished_deepslate_wall:north=low:east=low:south=low:west=low:up=true prismarine_wall:north=low:east=low:south=low:west=low:up=true red_nether_brick_wall:north=low:east=low:south=low:west=low:up=true red_sandstone_wall:north=low:east=low:south=low:west=low:up=true sandstone_wall:north=low:east=low:south=low:west=low:up=true stone_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_andesite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_andesite_wall:north=low:east=low:south=low:west=low:up=true create:cut_andesite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_andesite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_asurine_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_asurine_wall:north=low:east=low:south=low:west=low:up=true create:cut_asurine_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_asurine_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_calcite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_calcite_wall:north=low:east=low:south=low:west=low:up=true create:cut_calcite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_calcite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_crimsite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_deepslate_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_diorite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_diorite_wall:north=low:east=low:south=low:west=low:up=true create:cut_diorite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_diorite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_dripstone_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_granite_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_granite_wall:north=low:east=low:south=low:west=low:up=true create:cut_granite_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_granite_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_limestone_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_limestone_wall:north=low:east=low:south=low:west=low:up=true create:cut_limestone_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_limestone_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_ochrum_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_scorchia_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_scoria_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_scoria_wall:north=low:east=low:south=low:west=low:up=true create:cut_scoria_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_scoria_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_tuff_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_tuff_wall:north=low:east=low:south=low:west=low:up=true create:cut_tuff_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_tuff_brick_wall:north=low:east=low:south=low:west=low:up=true create:cut_veridium_wall:north=low:east=low:south=low:west=low:up=true create:polished_cut_veridium_wall:north=low:east=low:south=low:west=low:up=true create:cut_veridium_brick_wall:north=low:east=low:south=low:west=low:up=true create:small_veridium_brick_wall:north=low:east=low:south=low:west=low:up=true \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=true:south=true:west=true:up=true:north_east=false:north_west=false:south_east=false:south_west=false block.456=cobblestone_wall:north=tall:east=none:south=none:west=none:up=true andesite_wall:north=tall:east=none:south=none:west=none:up=true blackstone_wall:north=tall:east=none:south=none:west=none:up=true brick_wall:north=tall:east=none:south=none:west=none:up=true cobbled_deepslate_wall:north=tall:east=none:south=none:west=none:up=true deepslate_brick_wall:north=tall:east=none:south=none:west=none:up=true deepslate_tile_wall:north=tall:east=none:south=none:west=none:up=true diorite_wall:north=tall:east=none:south=none:west=none:up=true end_stone_brick_wall:north=tall:east=none:south=none:west=none:up=true granite_wall:north=tall:east=none:south=none:west=none:up=true mossy_cobblestone_wall:north=tall:east=none:south=none:west=none:up=true mossy_stone_brick_wall:north=tall:east=none:south=none:west=none:up=true mud_brick_wall:north=tall:east=none:south=none:west=none:up=true nether_brick_wall:north=tall:east=none:south=none:west=none:up=true polished_blackstone_brick_wall:north=tall:east=none:south=none:west=none:up=true polished_blackstone_wall:north=tall:east=none:south=none:west=none:up=true polished_deepslate_wall:north=tall:east=none:south=none:west=none:up=true prismarine_wall:north=tall:east=none:south=none:west=none:up=true red_nether_brick_wall:north=tall:east=none:south=none:west=none:up=true red_sandstone_wall:north=tall:east=none:south=none:west=none:up=true sandstone_wall:north=tall:east=none:south=none:west=none:up=true stone_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_andesite_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_andesite_wall:north=tall:east=none:south=none:west=none:up=true create:cut_andesite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_andesite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_asurine_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_asurine_wall:north=tall:east=none:south=none:west=none:up=true create:cut_asurine_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_asurine_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_calcite_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_calcite_wall:north=tall:east=none:south=none:west=none:up=true create:cut_calcite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_calcite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_crimsite_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=tall:east=none:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_crimsite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_deepslate_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=tall:east=none:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_deepslate_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_diorite_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_diorite_wall:north=tall:east=none:south=none:west=none:up=true create:cut_diorite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_diorite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_dripstone_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=tall:east=none:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_dripstone_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_granite_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_granite_wall:north=tall:east=none:south=none:west=none:up=true create:cut_granite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_granite_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_limestone_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_limestone_wall:north=tall:east=none:south=none:west=none:up=true create:cut_limestone_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_limestone_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_ochrum_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=tall:east=none:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_ochrum_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_scorchia_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=tall:east=none:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_scorchia_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_scoria_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_scoria_wall:north=tall:east=none:south=none:west=none:up=true create:cut_scoria_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_scoria_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_tuff_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_tuff_wall:north=tall:east=none:south=none:west=none:up=true create:cut_tuff_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_tuff_brick_wall:north=tall:east=none:south=none:west=none:up=true create:cut_veridium_wall:north=tall:east=none:south=none:west=none:up=true create:polished_cut_veridium_wall:north=tall:east=none:south=none:west=none:up=true create:cut_veridium_brick_wall:north=tall:east=none:south=none:west=none:up=true create:small_veridium_brick_wall:north=tall:east=none:south=none:west=none:up=true @@ -831,19 +846,26 @@ block.479=cobblestone_wall:north=low:east=low:south=tall:west=tall:up=true andes block.480=cobblestone_wall:north=low:east=tall:south=tall:west=low:up=true andesite_wall:north=low:east=tall:south=tall:west=low:up=true blackstone_wall:north=low:east=tall:south=tall:west=low:up=true brick_wall:north=low:east=tall:south=tall:west=low:up=true cobbled_deepslate_wall:north=low:east=tall:south=tall:west=low:up=true deepslate_brick_wall:north=low:east=tall:south=tall:west=low:up=true deepslate_tile_wall:north=low:east=tall:south=tall:west=low:up=true diorite_wall:north=low:east=tall:south=tall:west=low:up=true end_stone_brick_wall:north=low:east=tall:south=tall:west=low:up=true granite_wall:north=low:east=tall:south=tall:west=low:up=true mossy_cobblestone_wall:north=low:east=tall:south=tall:west=low:up=true mossy_stone_brick_wall:north=low:east=tall:south=tall:west=low:up=true mud_brick_wall:north=low:east=tall:south=tall:west=low:up=true nether_brick_wall:north=low:east=tall:south=tall:west=low:up=true polished_blackstone_brick_wall:north=low:east=tall:south=tall:west=low:up=true polished_blackstone_wall:north=low:east=tall:south=tall:west=low:up=true polished_deepslate_wall:north=low:east=tall:south=tall:west=low:up=true prismarine_wall:north=low:east=tall:south=tall:west=low:up=true red_nether_brick_wall:north=low:east=tall:south=tall:west=low:up=true red_sandstone_wall:north=low:east=tall:south=tall:west=low:up=true sandstone_wall:north=low:east=tall:south=tall:west=low:up=true stone_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_andesite_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_andesite_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_andesite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_andesite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_asurine_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_asurine_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_asurine_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_asurine_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_calcite_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_calcite_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_calcite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_calcite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_crimsite_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_crimsite_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_crimsite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_crimsite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_deepslate_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_deepslate_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_deepslate_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_deepslate_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_diorite_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_diorite_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_diorite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_diorite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_dripstone_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_dripstone_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_dripstone_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_dripstone_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_granite_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_granite_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_granite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_granite_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_limestone_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_limestone_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_limestone_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_limestone_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_ochrum_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_ochrum_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_ochrum_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_ochrum_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_scorchia_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_scorchia_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_scorchia_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_scorchia_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_scoria_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_scoria_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_scoria_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_scoria_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_tuff_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_tuff_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_tuff_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_tuff_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_veridium_wall:north=low:east=tall:south=tall:west=low:up=true create:polished_cut_veridium_wall:north=low:east=tall:south=tall:west=low:up=true create:cut_veridium_brick_wall:north=low:east=tall:south=tall:west=low:up=true create:small_veridium_brick_wall:north=low:east=tall:south=tall:west=low:up=true -block.481=cobblestone_wall:north=low:east=none:south=low:west=none:up=false andesite_wall:north=low:east=none:south=low:west=none:up=false blackstone_wall:north=low:east=none:south=low:west=none:up=false brick_wall:north=low:east=none:south=low:west=none:up=false cobbled_deepslate_wall:north=low:east=none:south=low:west=none:up=false deepslate_brick_wall:north=low:east=none:south=low:west=none:up=false deepslate_tile_wall:north=low:east=none:south=low:west=none:up=false diorite_wall:north=low:east=none:south=low:west=none:up=false end_stone_brick_wall:north=low:east=none:south=low:west=none:up=false granite_wall:north=low:east=none:south=low:west=none:up=false mossy_cobblestone_wall:north=low:east=none:south=low:west=none:up=false mossy_stone_brick_wall:north=low:east=none:south=low:west=none:up=false mud_brick_wall:north=low:east=none:south=low:west=none:up=false nether_brick_wall:north=low:east=none:south=low:west=none:up=false polished_blackstone_brick_wall:north=low:east=none:south=low:west=none:up=false polished_blackstone_wall:north=low:east=none:south=low:west=none:up=false polished_deepslate_wall:north=low:east=none:south=low:west=none:up=false prismarine_wall:north=low:east=none:south=low:west=none:up=false red_nether_brick_wall:north=low:east=none:south=low:west=none:up=false red_sandstone_wall:north=low:east=none:south=low:west=none:up=false sandstone_wall:north=low:east=none:south=low:west=none:up=false stone_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_andesite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_andesite_wall:north=low:east=none:south=low:west=none:up=false create:cut_andesite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_andesite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_asurine_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_asurine_wall:north=low:east=none:south=low:west=none:up=false create:cut_asurine_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_asurine_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_calcite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_calcite_wall:north=low:east=none:south=low:west=none:up=false create:cut_calcite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_calcite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_crimsite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_crimsite_wall:north=low:east=none:south=low:west=none:up=false create:cut_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_deepslate_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_deepslate_wall:north=low:east=none:south=low:west=none:up=false create:cut_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_diorite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_diorite_wall:north=low:east=none:south=low:west=none:up=false create:cut_diorite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_diorite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_dripstone_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_dripstone_wall:north=low:east=none:south=low:west=none:up=false create:cut_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_granite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_granite_wall:north=low:east=none:south=low:west=none:up=false create:cut_granite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_granite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_limestone_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_limestone_wall:north=low:east=none:south=low:west=none:up=false create:cut_limestone_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_limestone_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_ochrum_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_ochrum_wall:north=low:east=none:south=low:west=none:up=false create:cut_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_scorchia_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_scorchia_wall:north=low:east=none:south=low:west=none:up=false create:cut_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_scoria_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_scoria_wall:north=low:east=none:south=low:west=none:up=false create:cut_scoria_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_scoria_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_tuff_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_tuff_wall:north=low:east=none:south=low:west=none:up=false create:cut_tuff_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_tuff_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_veridium_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_veridium_wall:north=low:east=none:south=low:west=none:up=false create:cut_veridium_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_veridium_brick_wall:north=low:east=none:south=low:west=none:up=false +block.481=cobblestone_wall:north=low:east=none:south=low:west=none:up=false andesite_wall:north=low:east=none:south=low:west=none:up=false blackstone_wall:north=low:east=none:south=low:west=none:up=false brick_wall:north=low:east=none:south=low:west=none:up=false cobbled_deepslate_wall:north=low:east=none:south=low:west=none:up=false deepslate_brick_wall:north=low:east=none:south=low:west=none:up=false deepslate_tile_wall:north=low:east=none:south=low:west=none:up=false diorite_wall:north=low:east=none:south=low:west=none:up=false end_stone_brick_wall:north=low:east=none:south=low:west=none:up=false granite_wall:north=low:east=none:south=low:west=none:up=false mossy_cobblestone_wall:north=low:east=none:south=low:west=none:up=false mossy_stone_brick_wall:north=low:east=none:south=low:west=none:up=false mud_brick_wall:north=low:east=none:south=low:west=none:up=false nether_brick_wall:north=low:east=none:south=low:west=none:up=false polished_blackstone_brick_wall:north=low:east=none:south=low:west=none:up=false polished_blackstone_wall:north=low:east=none:south=low:west=none:up=false polished_deepslate_wall:north=low:east=none:south=low:west=none:up=false prismarine_wall:north=low:east=none:south=low:west=none:up=false red_nether_brick_wall:north=low:east=none:south=low:west=none:up=false red_sandstone_wall:north=low:east=none:south=low:west=none:up=false sandstone_wall:north=low:east=none:south=low:west=none:up=false stone_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_andesite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_andesite_wall:north=low:east=none:south=low:west=none:up=false create:cut_andesite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_andesite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_asurine_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_asurine_wall:north=low:east=none:south=low:west=none:up=false create:cut_asurine_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_asurine_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_calcite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_calcite_wall:north=low:east=none:south=low:west=none:up=false create:cut_calcite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_calcite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_crimsite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_crimsite_wall:north=low:east=none:south=low:west=none:up=false create:cut_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_crimsite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_deepslate_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_deepslate_wall:north=low:east=none:south=low:west=none:up=false create:cut_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_deepslate_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_diorite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_diorite_wall:north=low:east=none:south=low:west=none:up=false create:cut_diorite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_diorite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_dripstone_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_dripstone_wall:north=low:east=none:south=low:west=none:up=false create:cut_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_dripstone_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_granite_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_granite_wall:north=low:east=none:south=low:west=none:up=false create:cut_granite_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_granite_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_limestone_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_limestone_wall:north=low:east=none:south=low:west=none:up=false create:cut_limestone_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_limestone_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_ochrum_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_ochrum_wall:north=low:east=none:south=low:west=none:up=false create:cut_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_ochrum_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_scorchia_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_scorchia_wall:north=low:east=none:south=low:west=none:up=false create:cut_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_scorchia_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_scoria_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_scoria_wall:north=low:east=none:south=low:west=none:up=false create:cut_scoria_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_scoria_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_tuff_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_tuff_wall:north=low:east=none:south=low:west=none:up=false create:cut_tuff_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_tuff_brick_wall:north=low:east=none:south=low:west=none:up=false create:cut_veridium_wall:north=low:east=none:south=low:west=none:up=false create:polished_cut_veridium_wall:north=low:east=none:south=low:west=none:up=false create:cut_veridium_brick_wall:north=low:east=none:south=low:west=none:up=false create:small_veridium_brick_wall:north=low:east=none:south=low:west=none:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=false:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false -block.482=cobblestone_wall:north=none:east=low:south=none:west=low:up=false andesite_wall:north=none:east=low:south=none:west=low:up=false blackstone_wall:north=none:east=low:south=none:west=low:up=false brick_wall:north=none:east=low:south=none:west=low:up=false cobbled_deepslate_wall:north=none:east=low:south=none:west=low:up=false deepslate_brick_wall:north=none:east=low:south=none:west=low:up=false deepslate_tile_wall:north=none:east=low:south=none:west=low:up=false diorite_wall:north=none:east=low:south=none:west=low:up=false end_stone_brick_wall:north=none:east=low:south=none:west=low:up=false granite_wall:north=none:east=low:south=none:west=low:up=false mossy_cobblestone_wall:north=none:east=low:south=none:west=low:up=false mossy_stone_brick_wall:north=none:east=low:south=none:west=low:up=false mud_brick_wall:north=none:east=low:south=none:west=low:up=false nether_brick_wall:north=none:east=low:south=none:west=low:up=false polished_blackstone_brick_wall:north=none:east=low:south=none:west=low:up=false polished_blackstone_wall:north=none:east=low:south=none:west=low:up=false polished_deepslate_wall:north=none:east=low:south=none:west=low:up=false prismarine_wall:north=none:east=low:south=none:west=low:up=false red_nether_brick_wall:north=none:east=low:south=none:west=low:up=false red_sandstone_wall:north=none:east=low:south=none:west=low:up=false sandstone_wall:north=none:east=low:south=none:west=low:up=false stone_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_andesite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_andesite_wall:north=none:east=low:south=none:west=low:up=false create:cut_andesite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_andesite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_asurine_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_asurine_wall:north=none:east=low:south=none:west=low:up=false create:cut_asurine_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_asurine_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_calcite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_calcite_wall:north=none:east=low:south=none:west=low:up=false create:cut_calcite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_calcite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_crimsite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=low:up=false create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_deepslate_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=low:up=false create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_diorite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_diorite_wall:north=none:east=low:south=none:west=low:up=false create:cut_diorite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_diorite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_dripstone_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=low:up=false create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_granite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_granite_wall:north=none:east=low:south=none:west=low:up=false create:cut_granite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_granite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_limestone_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_limestone_wall:north=none:east=low:south=none:west=low:up=false create:cut_limestone_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_limestone_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_ochrum_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=low:up=false create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_scorchia_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=low:up=false create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_scoria_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_scoria_wall:north=none:east=low:south=none:west=low:up=false create:cut_scoria_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_scoria_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_tuff_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_tuff_wall:north=none:east=low:south=none:west=low:up=false create:cut_tuff_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_tuff_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_veridium_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_veridium_wall:north=none:east=low:south=none:west=low:up=false create:cut_veridium_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_veridium_brick_wall:north=none:east=low:south=none:west=low:up=false +block.482=cobblestone_wall:north=none:east=low:south=none:west=low:up=false andesite_wall:north=none:east=low:south=none:west=low:up=false blackstone_wall:north=none:east=low:south=none:west=low:up=false brick_wall:north=none:east=low:south=none:west=low:up=false cobbled_deepslate_wall:north=none:east=low:south=none:west=low:up=false deepslate_brick_wall:north=none:east=low:south=none:west=low:up=false deepslate_tile_wall:north=none:east=low:south=none:west=low:up=false diorite_wall:north=none:east=low:south=none:west=low:up=false end_stone_brick_wall:north=none:east=low:south=none:west=low:up=false granite_wall:north=none:east=low:south=none:west=low:up=false mossy_cobblestone_wall:north=none:east=low:south=none:west=low:up=false mossy_stone_brick_wall:north=none:east=low:south=none:west=low:up=false mud_brick_wall:north=none:east=low:south=none:west=low:up=false nether_brick_wall:north=none:east=low:south=none:west=low:up=false polished_blackstone_brick_wall:north=none:east=low:south=none:west=low:up=false polished_blackstone_wall:north=none:east=low:south=none:west=low:up=false polished_deepslate_wall:north=none:east=low:south=none:west=low:up=false prismarine_wall:north=none:east=low:south=none:west=low:up=false red_nether_brick_wall:north=none:east=low:south=none:west=low:up=false red_sandstone_wall:north=none:east=low:south=none:west=low:up=false sandstone_wall:north=none:east=low:south=none:west=low:up=false stone_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_andesite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_andesite_wall:north=none:east=low:south=none:west=low:up=false create:cut_andesite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_andesite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_asurine_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_asurine_wall:north=none:east=low:south=none:west=low:up=false create:cut_asurine_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_asurine_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_calcite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_calcite_wall:north=none:east=low:south=none:west=low:up=false create:cut_calcite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_calcite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_crimsite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=low:up=false create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_crimsite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_deepslate_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=low:up=false create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_deepslate_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_diorite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_diorite_wall:north=none:east=low:south=none:west=low:up=false create:cut_diorite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_diorite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_dripstone_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=low:up=false create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_dripstone_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_granite_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_granite_wall:north=none:east=low:south=none:west=low:up=false create:cut_granite_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_granite_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_limestone_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_limestone_wall:north=none:east=low:south=none:west=low:up=false create:cut_limestone_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_limestone_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_ochrum_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=low:up=false create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_ochrum_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_scorchia_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=low:up=false create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_scorchia_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_scoria_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_scoria_wall:north=none:east=low:south=none:west=low:up=false create:cut_scoria_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_scoria_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_tuff_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_tuff_wall:north=none:east=low:south=none:west=low:up=false create:cut_tuff_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_tuff_brick_wall:north=none:east=low:south=none:west=low:up=false create:cut_veridium_wall:north=none:east=low:south=none:west=low:up=false create:polished_cut_veridium_wall:north=none:east=low:south=none:west=low:up=false create:cut_veridium_brick_wall:north=none:east=low:south=none:west=low:up=false create:small_veridium_brick_wall:north=none:east=low:south=none:west=low:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=true:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false -block.483=cobblestone_wall:north=low:east=none:south=none:west=low:up=false andesite_wall:north=low:east=none:south=none:west=low:up=false blackstone_wall:north=low:east=none:south=none:west=low:up=false brick_wall:north=low:east=none:south=none:west=low:up=false cobbled_deepslate_wall:north=low:east=none:south=none:west=low:up=false deepslate_brick_wall:north=low:east=none:south=none:west=low:up=false deepslate_tile_wall:north=low:east=none:south=none:west=low:up=false diorite_wall:north=low:east=none:south=none:west=low:up=false end_stone_brick_wall:north=low:east=none:south=none:west=low:up=false granite_wall:north=low:east=none:south=none:west=low:up=false mossy_cobblestone_wall:north=low:east=none:south=none:west=low:up=false mossy_stone_brick_wall:north=low:east=none:south=none:west=low:up=false mud_brick_wall:north=low:east=none:south=none:west=low:up=false nether_brick_wall:north=low:east=none:south=none:west=low:up=false polished_blackstone_brick_wall:north=low:east=none:south=none:west=low:up=false polished_blackstone_wall:north=low:east=none:south=none:west=low:up=false polished_deepslate_wall:north=low:east=none:south=none:west=low:up=false prismarine_wall:north=low:east=none:south=none:west=low:up=false red_nether_brick_wall:north=low:east=none:south=none:west=low:up=false red_sandstone_wall:north=low:east=none:south=none:west=low:up=false sandstone_wall:north=low:east=none:south=none:west=low:up=false stone_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_andesite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_andesite_wall:north=low:east=none:south=none:west=low:up=false create:cut_andesite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_andesite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_asurine_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_asurine_wall:north=low:east=none:south=none:west=low:up=false create:cut_asurine_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_asurine_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_calcite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_calcite_wall:north=low:east=none:south=none:west=low:up=false create:cut_calcite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_calcite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_crimsite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_crimsite_wall:north=low:east=none:south=none:west=low:up=false create:cut_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_deepslate_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_deepslate_wall:north=low:east=none:south=none:west=low:up=false create:cut_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_diorite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_diorite_wall:north=low:east=none:south=none:west=low:up=false create:cut_diorite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_diorite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_dripstone_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_dripstone_wall:north=low:east=none:south=none:west=low:up=false create:cut_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_granite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_granite_wall:north=low:east=none:south=none:west=low:up=false create:cut_granite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_granite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_limestone_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_limestone_wall:north=low:east=none:south=none:west=low:up=false create:cut_limestone_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_limestone_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_ochrum_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_ochrum_wall:north=low:east=none:south=none:west=low:up=false create:cut_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_scorchia_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_scorchia_wall:north=low:east=none:south=none:west=low:up=false create:cut_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_scoria_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_scoria_wall:north=low:east=none:south=none:west=low:up=false create:cut_scoria_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_scoria_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_tuff_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_tuff_wall:north=low:east=none:south=none:west=low:up=false create:cut_tuff_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_tuff_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_veridium_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_veridium_wall:north=low:east=none:south=none:west=low:up=false create:cut_veridium_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_veridium_brick_wall:north=low:east=none:south=none:west=low:up=false +block.483=cobblestone_wall:north=low:east=none:south=none:west=low:up=false andesite_wall:north=low:east=none:south=none:west=low:up=false blackstone_wall:north=low:east=none:south=none:west=low:up=false brick_wall:north=low:east=none:south=none:west=low:up=false cobbled_deepslate_wall:north=low:east=none:south=none:west=low:up=false deepslate_brick_wall:north=low:east=none:south=none:west=low:up=false deepslate_tile_wall:north=low:east=none:south=none:west=low:up=false diorite_wall:north=low:east=none:south=none:west=low:up=false end_stone_brick_wall:north=low:east=none:south=none:west=low:up=false granite_wall:north=low:east=none:south=none:west=low:up=false mossy_cobblestone_wall:north=low:east=none:south=none:west=low:up=false mossy_stone_brick_wall:north=low:east=none:south=none:west=low:up=false mud_brick_wall:north=low:east=none:south=none:west=low:up=false nether_brick_wall:north=low:east=none:south=none:west=low:up=false polished_blackstone_brick_wall:north=low:east=none:south=none:west=low:up=false polished_blackstone_wall:north=low:east=none:south=none:west=low:up=false polished_deepslate_wall:north=low:east=none:south=none:west=low:up=false prismarine_wall:north=low:east=none:south=none:west=low:up=false red_nether_brick_wall:north=low:east=none:south=none:west=low:up=false red_sandstone_wall:north=low:east=none:south=none:west=low:up=false sandstone_wall:north=low:east=none:south=none:west=low:up=false stone_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_andesite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_andesite_wall:north=low:east=none:south=none:west=low:up=false create:cut_andesite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_andesite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_asurine_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_asurine_wall:north=low:east=none:south=none:west=low:up=false create:cut_asurine_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_asurine_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_calcite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_calcite_wall:north=low:east=none:south=none:west=low:up=false create:cut_calcite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_calcite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_crimsite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_crimsite_wall:north=low:east=none:south=none:west=low:up=false create:cut_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_crimsite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_deepslate_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_deepslate_wall:north=low:east=none:south=none:west=low:up=false create:cut_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_deepslate_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_diorite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_diorite_wall:north=low:east=none:south=none:west=low:up=false create:cut_diorite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_diorite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_dripstone_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_dripstone_wall:north=low:east=none:south=none:west=low:up=false create:cut_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_dripstone_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_granite_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_granite_wall:north=low:east=none:south=none:west=low:up=false create:cut_granite_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_granite_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_limestone_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_limestone_wall:north=low:east=none:south=none:west=low:up=false create:cut_limestone_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_limestone_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_ochrum_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_ochrum_wall:north=low:east=none:south=none:west=low:up=false create:cut_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_ochrum_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_scorchia_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_scorchia_wall:north=low:east=none:south=none:west=low:up=false create:cut_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_scorchia_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_scoria_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_scoria_wall:north=low:east=none:south=none:west=low:up=false create:cut_scoria_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_scoria_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_tuff_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_tuff_wall:north=low:east=none:south=none:west=low:up=false create:cut_tuff_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_tuff_brick_wall:north=low:east=none:south=none:west=low:up=false create:cut_veridium_wall:north=low:east=none:south=none:west=low:up=false create:polished_cut_veridium_wall:north=low:east=none:south=none:west=low:up=false create:cut_veridium_brick_wall:north=low:east=none:south=none:west=low:up=false create:small_veridium_brick_wall:north=low:east=none:south=none:west=low:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=false:south=false:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false -block.484=cobblestone_wall:north=low:east=low:south=none:west=none:up=false andesite_wall:north=low:east=low:south=none:west=none:up=false blackstone_wall:north=low:east=low:south=none:west=none:up=false brick_wall:north=low:east=low:south=none:west=none:up=false cobbled_deepslate_wall:north=low:east=low:south=none:west=none:up=false deepslate_brick_wall:north=low:east=low:south=none:west=none:up=false deepslate_tile_wall:north=low:east=low:south=none:west=none:up=false diorite_wall:north=low:east=low:south=none:west=none:up=false end_stone_brick_wall:north=low:east=low:south=none:west=none:up=false granite_wall:north=low:east=low:south=none:west=none:up=false mossy_cobblestone_wall:north=low:east=low:south=none:west=none:up=false mossy_stone_brick_wall:north=low:east=low:south=none:west=none:up=false mud_brick_wall:north=low:east=low:south=none:west=none:up=false nether_brick_wall:north=low:east=low:south=none:west=none:up=false polished_blackstone_brick_wall:north=low:east=low:south=none:west=none:up=false polished_blackstone_wall:north=low:east=low:south=none:west=none:up=false polished_deepslate_wall:north=low:east=low:south=none:west=none:up=false prismarine_wall:north=low:east=low:south=none:west=none:up=false red_nether_brick_wall:north=low:east=low:south=none:west=none:up=false red_sandstone_wall:north=low:east=low:south=none:west=none:up=false sandstone_wall:north=low:east=low:south=none:west=none:up=false stone_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_andesite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_andesite_wall:north=low:east=low:south=none:west=none:up=false create:cut_andesite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_andesite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_asurine_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_asurine_wall:north=low:east=low:south=none:west=none:up=false create:cut_asurine_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_asurine_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_calcite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_calcite_wall:north=low:east=low:south=none:west=none:up=false create:cut_calcite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_calcite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_crimsite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_crimsite_wall:north=low:east=low:south=none:west=none:up=false create:cut_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_deepslate_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_deepslate_wall:north=low:east=low:south=none:west=none:up=false create:cut_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_diorite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_diorite_wall:north=low:east=low:south=none:west=none:up=false create:cut_diorite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_diorite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_dripstone_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_dripstone_wall:north=low:east=low:south=none:west=none:up=false create:cut_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_granite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_granite_wall:north=low:east=low:south=none:west=none:up=false create:cut_granite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_granite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_limestone_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_limestone_wall:north=low:east=low:south=none:west=none:up=false create:cut_limestone_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_limestone_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_ochrum_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_ochrum_wall:north=low:east=low:south=none:west=none:up=false create:cut_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_scorchia_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_scorchia_wall:north=low:east=low:south=none:west=none:up=false create:cut_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_scoria_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_scoria_wall:north=low:east=low:south=none:west=none:up=false create:cut_scoria_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_scoria_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_tuff_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_tuff_wall:north=low:east=low:south=none:west=none:up=false create:cut_tuff_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_tuff_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_veridium_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_veridium_wall:north=low:east=low:south=none:west=none:up=false create:cut_veridium_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_veridium_brick_wall:north=low:east=low:south=none:west=none:up=false +block.484=cobblestone_wall:north=low:east=low:south=none:west=none:up=false andesite_wall:north=low:east=low:south=none:west=none:up=false blackstone_wall:north=low:east=low:south=none:west=none:up=false brick_wall:north=low:east=low:south=none:west=none:up=false cobbled_deepslate_wall:north=low:east=low:south=none:west=none:up=false deepslate_brick_wall:north=low:east=low:south=none:west=none:up=false deepslate_tile_wall:north=low:east=low:south=none:west=none:up=false diorite_wall:north=low:east=low:south=none:west=none:up=false end_stone_brick_wall:north=low:east=low:south=none:west=none:up=false granite_wall:north=low:east=low:south=none:west=none:up=false mossy_cobblestone_wall:north=low:east=low:south=none:west=none:up=false mossy_stone_brick_wall:north=low:east=low:south=none:west=none:up=false mud_brick_wall:north=low:east=low:south=none:west=none:up=false nether_brick_wall:north=low:east=low:south=none:west=none:up=false polished_blackstone_brick_wall:north=low:east=low:south=none:west=none:up=false polished_blackstone_wall:north=low:east=low:south=none:west=none:up=false polished_deepslate_wall:north=low:east=low:south=none:west=none:up=false prismarine_wall:north=low:east=low:south=none:west=none:up=false red_nether_brick_wall:north=low:east=low:south=none:west=none:up=false red_sandstone_wall:north=low:east=low:south=none:west=none:up=false sandstone_wall:north=low:east=low:south=none:west=none:up=false stone_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_andesite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_andesite_wall:north=low:east=low:south=none:west=none:up=false create:cut_andesite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_andesite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_asurine_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_asurine_wall:north=low:east=low:south=none:west=none:up=false create:cut_asurine_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_asurine_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_calcite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_calcite_wall:north=low:east=low:south=none:west=none:up=false create:cut_calcite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_calcite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_crimsite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_crimsite_wall:north=low:east=low:south=none:west=none:up=false create:cut_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_crimsite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_deepslate_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_deepslate_wall:north=low:east=low:south=none:west=none:up=false create:cut_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_deepslate_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_diorite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_diorite_wall:north=low:east=low:south=none:west=none:up=false create:cut_diorite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_diorite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_dripstone_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_dripstone_wall:north=low:east=low:south=none:west=none:up=false create:cut_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_dripstone_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_granite_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_granite_wall:north=low:east=low:south=none:west=none:up=false create:cut_granite_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_granite_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_limestone_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_limestone_wall:north=low:east=low:south=none:west=none:up=false create:cut_limestone_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_limestone_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_ochrum_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_ochrum_wall:north=low:east=low:south=none:west=none:up=false create:cut_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_ochrum_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_scorchia_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_scorchia_wall:north=low:east=low:south=none:west=none:up=false create:cut_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_scorchia_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_scoria_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_scoria_wall:north=low:east=low:south=none:west=none:up=false create:cut_scoria_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_scoria_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_tuff_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_tuff_wall:north=low:east=low:south=none:west=none:up=false create:cut_tuff_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_tuff_brick_wall:north=low:east=low:south=none:west=none:up=false create:cut_veridium_wall:north=low:east=low:south=none:west=none:up=false create:polished_cut_veridium_wall:north=low:east=low:south=none:west=none:up=false create:cut_veridium_brick_wall:north=low:east=low:south=none:west=none:up=false create:small_veridium_brick_wall:north=low:east=low:south=none:west=none:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=true:south=false:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false -block.485=cobblestone_wall:north=none:east=none:south=low:west=low:up=false andesite_wall:north=none:east=none:south=low:west=low:up=false blackstone_wall:north=none:east=none:south=low:west=low:up=false brick_wall:north=none:east=none:south=low:west=low:up=false cobbled_deepslate_wall:north=none:east=none:south=low:west=low:up=false deepslate_brick_wall:north=none:east=none:south=low:west=low:up=false deepslate_tile_wall:north=none:east=none:south=low:west=low:up=false diorite_wall:north=none:east=none:south=low:west=low:up=false end_stone_brick_wall:north=none:east=none:south=low:west=low:up=false granite_wall:north=none:east=none:south=low:west=low:up=false mossy_cobblestone_wall:north=none:east=none:south=low:west=low:up=false mossy_stone_brick_wall:north=none:east=none:south=low:west=low:up=false mud_brick_wall:north=none:east=none:south=low:west=low:up=false nether_brick_wall:north=none:east=none:south=low:west=low:up=false polished_blackstone_brick_wall:north=none:east=none:south=low:west=low:up=false polished_blackstone_wall:north=none:east=none:south=low:west=low:up=false polished_deepslate_wall:north=none:east=none:south=low:west=low:up=false prismarine_wall:north=none:east=none:south=low:west=low:up=false red_nether_brick_wall:north=none:east=none:south=low:west=low:up=false red_sandstone_wall:north=none:east=none:south=low:west=low:up=false sandstone_wall:north=none:east=none:south=low:west=low:up=false stone_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_andesite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_andesite_wall:north=none:east=none:south=low:west=low:up=false create:cut_andesite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_andesite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_asurine_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_asurine_wall:north=none:east=none:south=low:west=low:up=false create:cut_asurine_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_asurine_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_calcite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_calcite_wall:north=none:east=none:south=low:west=low:up=false create:cut_calcite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_calcite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_crimsite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_crimsite_wall:north=none:east=none:south=low:west=low:up=false create:cut_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_deepslate_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_deepslate_wall:north=none:east=none:south=low:west=low:up=false create:cut_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_diorite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_diorite_wall:north=none:east=none:south=low:west=low:up=false create:cut_diorite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_diorite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_dripstone_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_dripstone_wall:north=none:east=none:south=low:west=low:up=false create:cut_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_granite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_granite_wall:north=none:east=none:south=low:west=low:up=false create:cut_granite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_granite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_limestone_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_limestone_wall:north=none:east=none:south=low:west=low:up=false create:cut_limestone_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_limestone_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_ochrum_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_ochrum_wall:north=none:east=none:south=low:west=low:up=false create:cut_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_scorchia_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_scorchia_wall:north=none:east=none:south=low:west=low:up=false create:cut_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_scoria_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_scoria_wall:north=none:east=none:south=low:west=low:up=false create:cut_scoria_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_scoria_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_tuff_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_tuff_wall:north=none:east=none:south=low:west=low:up=false create:cut_tuff_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_tuff_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_veridium_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_veridium_wall:north=none:east=none:south=low:west=low:up=false create:cut_veridium_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_veridium_brick_wall:north=none:east=none:south=low:west=low:up=false +block.485=cobblestone_wall:north=none:east=none:south=low:west=low:up=false andesite_wall:north=none:east=none:south=low:west=low:up=false blackstone_wall:north=none:east=none:south=low:west=low:up=false brick_wall:north=none:east=none:south=low:west=low:up=false cobbled_deepslate_wall:north=none:east=none:south=low:west=low:up=false deepslate_brick_wall:north=none:east=none:south=low:west=low:up=false deepslate_tile_wall:north=none:east=none:south=low:west=low:up=false diorite_wall:north=none:east=none:south=low:west=low:up=false end_stone_brick_wall:north=none:east=none:south=low:west=low:up=false granite_wall:north=none:east=none:south=low:west=low:up=false mossy_cobblestone_wall:north=none:east=none:south=low:west=low:up=false mossy_stone_brick_wall:north=none:east=none:south=low:west=low:up=false mud_brick_wall:north=none:east=none:south=low:west=low:up=false nether_brick_wall:north=none:east=none:south=low:west=low:up=false polished_blackstone_brick_wall:north=none:east=none:south=low:west=low:up=false polished_blackstone_wall:north=none:east=none:south=low:west=low:up=false polished_deepslate_wall:north=none:east=none:south=low:west=low:up=false prismarine_wall:north=none:east=none:south=low:west=low:up=false red_nether_brick_wall:north=none:east=none:south=low:west=low:up=false red_sandstone_wall:north=none:east=none:south=low:west=low:up=false sandstone_wall:north=none:east=none:south=low:west=low:up=false stone_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_andesite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_andesite_wall:north=none:east=none:south=low:west=low:up=false create:cut_andesite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_andesite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_asurine_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_asurine_wall:north=none:east=none:south=low:west=low:up=false create:cut_asurine_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_asurine_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_calcite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_calcite_wall:north=none:east=none:south=low:west=low:up=false create:cut_calcite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_calcite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_crimsite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_crimsite_wall:north=none:east=none:south=low:west=low:up=false create:cut_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_crimsite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_deepslate_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_deepslate_wall:north=none:east=none:south=low:west=low:up=false create:cut_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_deepslate_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_diorite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_diorite_wall:north=none:east=none:south=low:west=low:up=false create:cut_diorite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_diorite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_dripstone_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_dripstone_wall:north=none:east=none:south=low:west=low:up=false create:cut_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_dripstone_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_granite_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_granite_wall:north=none:east=none:south=low:west=low:up=false create:cut_granite_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_granite_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_limestone_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_limestone_wall:north=none:east=none:south=low:west=low:up=false create:cut_limestone_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_limestone_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_ochrum_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_ochrum_wall:north=none:east=none:south=low:west=low:up=false create:cut_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_ochrum_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_scorchia_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_scorchia_wall:north=none:east=none:south=low:west=low:up=false create:cut_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_scorchia_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_scoria_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_scoria_wall:north=none:east=none:south=low:west=low:up=false create:cut_scoria_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_scoria_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_tuff_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_tuff_wall:north=none:east=none:south=low:west=low:up=false create:cut_tuff_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_tuff_brick_wall:north=none:east=none:south=low:west=low:up=false create:cut_veridium_wall:north=none:east=none:south=low:west=low:up=false create:polished_cut_veridium_wall:north=none:east=none:south=low:west=low:up=false create:cut_veridium_brick_wall:north=none:east=none:south=low:west=low:up=false create:small_veridium_brick_wall:north=none:east=none:south=low:west=low:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=false:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false -block.486=cobblestone_wall:north=none:east=low:south=low:west=none:up=false andesite_wall:north=none:east=low:south=low:west=none:up=false blackstone_wall:north=none:east=low:south=low:west=none:up=false brick_wall:north=none:east=low:south=low:west=none:up=false cobbled_deepslate_wall:north=none:east=low:south=low:west=none:up=false deepslate_brick_wall:north=none:east=low:south=low:west=none:up=false deepslate_tile_wall:north=none:east=low:south=low:west=none:up=false diorite_wall:north=none:east=low:south=low:west=none:up=false end_stone_brick_wall:north=none:east=low:south=low:west=none:up=false granite_wall:north=none:east=low:south=low:west=none:up=false mossy_cobblestone_wall:north=none:east=low:south=low:west=none:up=false mossy_stone_brick_wall:north=none:east=low:south=low:west=none:up=false mud_brick_wall:north=none:east=low:south=low:west=none:up=false nether_brick_wall:north=none:east=low:south=low:west=none:up=false polished_blackstone_brick_wall:north=none:east=low:south=low:west=none:up=false polished_blackstone_wall:north=none:east=low:south=low:west=none:up=false polished_deepslate_wall:north=none:east=low:south=low:west=none:up=false prismarine_wall:north=none:east=low:south=low:west=none:up=false red_nether_brick_wall:north=none:east=low:south=low:west=none:up=false red_sandstone_wall:north=none:east=low:south=low:west=none:up=false sandstone_wall:north=none:east=low:south=low:west=none:up=false stone_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_andesite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_andesite_wall:north=none:east=low:south=low:west=none:up=false create:cut_andesite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_andesite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_asurine_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_asurine_wall:north=none:east=low:south=low:west=none:up=false create:cut_asurine_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_asurine_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_calcite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_calcite_wall:north=none:east=low:south=low:west=none:up=false create:cut_calcite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_calcite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_crimsite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_crimsite_wall:north=none:east=low:south=low:west=none:up=false create:cut_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_deepslate_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_deepslate_wall:north=none:east=low:south=low:west=none:up=false create:cut_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_diorite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_diorite_wall:north=none:east=low:south=low:west=none:up=false create:cut_diorite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_diorite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_dripstone_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_dripstone_wall:north=none:east=low:south=low:west=none:up=false create:cut_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_granite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_granite_wall:north=none:east=low:south=low:west=none:up=false create:cut_granite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_granite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_limestone_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_limestone_wall:north=none:east=low:south=low:west=none:up=false create:cut_limestone_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_limestone_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_ochrum_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_ochrum_wall:north=none:east=low:south=low:west=none:up=false create:cut_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_scorchia_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_scorchia_wall:north=none:east=low:south=low:west=none:up=false create:cut_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_scoria_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_scoria_wall:north=none:east=low:south=low:west=none:up=false create:cut_scoria_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_scoria_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_tuff_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_tuff_wall:north=none:east=low:south=low:west=none:up=false create:cut_tuff_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_tuff_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_veridium_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_veridium_wall:north=none:east=low:south=low:west=none:up=false create:cut_veridium_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_veridium_brick_wall:north=none:east=low:south=low:west=none:up=false +block.486=cobblestone_wall:north=none:east=low:south=low:west=none:up=false andesite_wall:north=none:east=low:south=low:west=none:up=false blackstone_wall:north=none:east=low:south=low:west=none:up=false brick_wall:north=none:east=low:south=low:west=none:up=false cobbled_deepslate_wall:north=none:east=low:south=low:west=none:up=false deepslate_brick_wall:north=none:east=low:south=low:west=none:up=false deepslate_tile_wall:north=none:east=low:south=low:west=none:up=false diorite_wall:north=none:east=low:south=low:west=none:up=false end_stone_brick_wall:north=none:east=low:south=low:west=none:up=false granite_wall:north=none:east=low:south=low:west=none:up=false mossy_cobblestone_wall:north=none:east=low:south=low:west=none:up=false mossy_stone_brick_wall:north=none:east=low:south=low:west=none:up=false mud_brick_wall:north=none:east=low:south=low:west=none:up=false nether_brick_wall:north=none:east=low:south=low:west=none:up=false polished_blackstone_brick_wall:north=none:east=low:south=low:west=none:up=false polished_blackstone_wall:north=none:east=low:south=low:west=none:up=false polished_deepslate_wall:north=none:east=low:south=low:west=none:up=false prismarine_wall:north=none:east=low:south=low:west=none:up=false red_nether_brick_wall:north=none:east=low:south=low:west=none:up=false red_sandstone_wall:north=none:east=low:south=low:west=none:up=false sandstone_wall:north=none:east=low:south=low:west=none:up=false stone_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_andesite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_andesite_wall:north=none:east=low:south=low:west=none:up=false create:cut_andesite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_andesite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_asurine_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_asurine_wall:north=none:east=low:south=low:west=none:up=false create:cut_asurine_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_asurine_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_calcite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_calcite_wall:north=none:east=low:south=low:west=none:up=false create:cut_calcite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_calcite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_crimsite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_crimsite_wall:north=none:east=low:south=low:west=none:up=false create:cut_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_crimsite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_deepslate_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_deepslate_wall:north=none:east=low:south=low:west=none:up=false create:cut_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_deepslate_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_diorite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_diorite_wall:north=none:east=low:south=low:west=none:up=false create:cut_diorite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_diorite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_dripstone_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_dripstone_wall:north=none:east=low:south=low:west=none:up=false create:cut_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_dripstone_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_granite_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_granite_wall:north=none:east=low:south=low:west=none:up=false create:cut_granite_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_granite_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_limestone_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_limestone_wall:north=none:east=low:south=low:west=none:up=false create:cut_limestone_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_limestone_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_ochrum_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_ochrum_wall:north=none:east=low:south=low:west=none:up=false create:cut_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_ochrum_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_scorchia_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_scorchia_wall:north=none:east=low:south=low:west=none:up=false create:cut_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_scorchia_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_scoria_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_scoria_wall:north=none:east=low:south=low:west=none:up=false create:cut_scoria_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_scoria_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_tuff_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_tuff_wall:north=none:east=low:south=low:west=none:up=false create:cut_tuff_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_tuff_brick_wall:north=none:east=low:south=low:west=none:up=false create:cut_veridium_wall:north=none:east=low:south=low:west=none:up=false create:polished_cut_veridium_wall:north=none:east=low:south=low:west=none:up=false create:cut_veridium_brick_wall:north=none:east=low:south=low:west=none:up=false create:small_veridium_brick_wall:north=none:east=low:south=low:west=none:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=false:east=true:south=true:west=false:up=false:north_east=false:north_west=false:south_east=false:south_west=false -block.487=cobblestone_wall:north=low:east=low:south=low:west=low:up=false andesite_wall:north=low:east=low:south=low:west=low:up=false blackstone_wall:north=low:east=low:south=low:west=low:up=false brick_wall:north=low:east=low:south=low:west=low:up=false cobbled_deepslate_wall:north=low:east=low:south=low:west=low:up=false deepslate_brick_wall:north=low:east=low:south=low:west=low:up=false deepslate_tile_wall:north=low:east=low:south=low:west=low:up=false diorite_wall:north=low:east=low:south=low:west=low:up=false end_stone_brick_wall:north=low:east=low:south=low:west=low:up=false granite_wall:north=low:east=low:south=low:west=low:up=false mossy_cobblestone_wall:north=low:east=low:south=low:west=low:up=false mossy_stone_brick_wall:north=low:east=low:south=low:west=low:up=false mud_brick_wall:north=low:east=low:south=low:west=low:up=false nether_brick_wall:north=low:east=low:south=low:west=low:up=false polished_blackstone_brick_wall:north=low:east=low:south=low:west=low:up=false polished_blackstone_wall:north=low:east=low:south=low:west=low:up=false polished_deepslate_wall:north=low:east=low:south=low:west=low:up=false prismarine_wall:north=low:east=low:south=low:west=low:up=false red_nether_brick_wall:north=low:east=low:south=low:west=low:up=false red_sandstone_wall:north=low:east=low:south=low:west=low:up=false sandstone_wall:north=low:east=low:south=low:west=low:up=false stone_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_andesite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_andesite_wall:north=low:east=low:south=low:west=low:up=false create:cut_andesite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_andesite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_asurine_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_asurine_wall:north=low:east=low:south=low:west=low:up=false create:cut_asurine_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_asurine_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_calcite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_calcite_wall:north=low:east=low:south=low:west=low:up=false create:cut_calcite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_calcite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_crimsite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_crimsite_wall:north=low:east=low:south=low:west=low:up=false create:cut_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_deepslate_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_deepslate_wall:north=low:east=low:south=low:west=low:up=false create:cut_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_diorite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_diorite_wall:north=low:east=low:south=low:west=low:up=false create:cut_diorite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_diorite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_dripstone_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_dripstone_wall:north=low:east=low:south=low:west=low:up=false create:cut_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_granite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_granite_wall:north=low:east=low:south=low:west=low:up=false create:cut_granite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_granite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_limestone_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_limestone_wall:north=low:east=low:south=low:west=low:up=false create:cut_limestone_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_limestone_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_ochrum_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_ochrum_wall:north=low:east=low:south=low:west=low:up=false create:cut_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_scorchia_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_scorchia_wall:north=low:east=low:south=low:west=low:up=false create:cut_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_scoria_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_scoria_wall:north=low:east=low:south=low:west=low:up=false create:cut_scoria_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_scoria_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_tuff_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_tuff_wall:north=low:east=low:south=low:west=low:up=false create:cut_tuff_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_tuff_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_veridium_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_veridium_wall:north=low:east=low:south=low:west=low:up=false create:cut_veridium_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_veridium_brick_wall:north=low:east=low:south=low:west=low:up=false +block.487=cobblestone_wall:north=low:east=low:south=low:west=low:up=false andesite_wall:north=low:east=low:south=low:west=low:up=false blackstone_wall:north=low:east=low:south=low:west=low:up=false brick_wall:north=low:east=low:south=low:west=low:up=false cobbled_deepslate_wall:north=low:east=low:south=low:west=low:up=false deepslate_brick_wall:north=low:east=low:south=low:west=low:up=false deepslate_tile_wall:north=low:east=low:south=low:west=low:up=false diorite_wall:north=low:east=low:south=low:west=low:up=false end_stone_brick_wall:north=low:east=low:south=low:west=low:up=false granite_wall:north=low:east=low:south=low:west=low:up=false mossy_cobblestone_wall:north=low:east=low:south=low:west=low:up=false mossy_stone_brick_wall:north=low:east=low:south=low:west=low:up=false mud_brick_wall:north=low:east=low:south=low:west=low:up=false nether_brick_wall:north=low:east=low:south=low:west=low:up=false polished_blackstone_brick_wall:north=low:east=low:south=low:west=low:up=false polished_blackstone_wall:north=low:east=low:south=low:west=low:up=false polished_deepslate_wall:north=low:east=low:south=low:west=low:up=false prismarine_wall:north=low:east=low:south=low:west=low:up=false red_nether_brick_wall:north=low:east=low:south=low:west=low:up=false red_sandstone_wall:north=low:east=low:south=low:west=low:up=false sandstone_wall:north=low:east=low:south=low:west=low:up=false stone_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_andesite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_andesite_wall:north=low:east=low:south=low:west=low:up=false create:cut_andesite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_andesite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_asurine_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_asurine_wall:north=low:east=low:south=low:west=low:up=false create:cut_asurine_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_asurine_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_calcite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_calcite_wall:north=low:east=low:south=low:west=low:up=false create:cut_calcite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_calcite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_crimsite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_crimsite_wall:north=low:east=low:south=low:west=low:up=false create:cut_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_crimsite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_deepslate_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_deepslate_wall:north=low:east=low:south=low:west=low:up=false create:cut_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_deepslate_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_diorite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_diorite_wall:north=low:east=low:south=low:west=low:up=false create:cut_diorite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_diorite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_dripstone_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_dripstone_wall:north=low:east=low:south=low:west=low:up=false create:cut_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_dripstone_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_granite_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_granite_wall:north=low:east=low:south=low:west=low:up=false create:cut_granite_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_granite_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_limestone_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_limestone_wall:north=low:east=low:south=low:west=low:up=false create:cut_limestone_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_limestone_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_ochrum_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_ochrum_wall:north=low:east=low:south=low:west=low:up=false create:cut_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_ochrum_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_scorchia_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_scorchia_wall:north=low:east=low:south=low:west=low:up=false create:cut_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_scorchia_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_scoria_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_scoria_wall:north=low:east=low:south=low:west=low:up=false create:cut_scoria_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_scoria_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_tuff_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_tuff_wall:north=low:east=low:south=low:west=low:up=false create:cut_tuff_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_tuff_brick_wall:north=low:east=low:south=low:west=low:up=false create:cut_veridium_wall:north=low:east=low:south=low:west=low:up=false create:polished_cut_veridium_wall:north=low:east=low:south=low:west=low:up=false create:cut_veridium_brick_wall:north=low:east=low:south=low:west=low:up=false create:small_veridium_brick_wall:north=low:east=low:south=low:west=low:up=false \ + diagonalwalls:minecraft/cobblestone_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_cobblestone_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/stone_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mossy_stone_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/granite_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/diorite_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/andesite_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/cobbled_deepslate_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_deepslate_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/deepslate_tile_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_wall tuff_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_tuff_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/tuff_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/mud_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/resin_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/sandstone_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_sandstone_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/prismarine_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/nether_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/red_nether_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/blackstone_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/polished_blackstone_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false diagonalwalls:minecraft/end_stone_brick_wall:north=true:east=true:south=true:west=true:up=false:north_east=false:north_west=false:south_east=false:south_west=false block.488=cobblestone_wall:north=tall:east=none:south=tall:west=none:up=false andesite_wall:north=tall:east=none:south=tall:west=none:up=false blackstone_wall:north=tall:east=none:south=tall:west=none:up=false brick_wall:north=tall:east=none:south=tall:west=none:up=false cobbled_deepslate_wall:north=tall:east=none:south=tall:west=none:up=false deepslate_brick_wall:north=tall:east=none:south=tall:west=none:up=false deepslate_tile_wall:north=tall:east=none:south=tall:west=none:up=false diorite_wall:north=tall:east=none:south=tall:west=none:up=false end_stone_brick_wall:north=tall:east=none:south=tall:west=none:up=false granite_wall:north=tall:east=none:south=tall:west=none:up=false mossy_cobblestone_wall:north=tall:east=none:south=tall:west=none:up=false mossy_stone_brick_wall:north=tall:east=none:south=tall:west=none:up=false mud_brick_wall:north=tall:east=none:south=tall:west=none:up=false nether_brick_wall:north=tall:east=none:south=tall:west=none:up=false polished_blackstone_brick_wall:north=tall:east=none:south=tall:west=none:up=false polished_blackstone_wall:north=tall:east=none:south=tall:west=none:up=false polished_deepslate_wall:north=tall:east=none:south=tall:west=none:up=false prismarine_wall:north=tall:east=none:south=tall:west=none:up=false red_nether_brick_wall:north=tall:east=none:south=tall:west=none:up=false red_sandstone_wall:north=tall:east=none:south=tall:west=none:up=false sandstone_wall:north=tall:east=none:south=tall:west=none:up=false stone_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_andesite_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_andesite_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_andesite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_andesite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_asurine_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_asurine_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_asurine_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_asurine_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_calcite_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_calcite_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_calcite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_calcite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_crimsite_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_crimsite_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_crimsite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_crimsite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_deepslate_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_deepslate_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_deepslate_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_deepslate_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_diorite_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_diorite_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_diorite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_diorite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_dripstone_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_dripstone_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_dripstone_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_dripstone_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_granite_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_granite_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_granite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_granite_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_limestone_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_limestone_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_limestone_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_limestone_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_ochrum_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_ochrum_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_ochrum_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_ochrum_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_scorchia_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_scorchia_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_scorchia_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_scorchia_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_scoria_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_scoria_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_scoria_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_scoria_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_tuff_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_tuff_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_tuff_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_tuff_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_veridium_wall:north=tall:east=none:south=tall:west=none:up=false create:polished_cut_veridium_wall:north=tall:east=none:south=tall:west=none:up=false create:cut_veridium_brick_wall:north=tall:east=none:south=tall:west=none:up=false create:small_veridium_brick_wall:north=tall:east=none:south=tall:west=none:up=false From fb844aaf8e3168a138d3067a6d75b9a15ecfa8df Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:04:01 +0100 Subject: [PATCH 064/101] Added support for tables (floodfill) from mods: `Another Furniture`, `Valhelsia Furniture`, `MrCrayfish's Furniture Mod: Refurbished`, `Create`, `[Let's Do] Meadow` and `[Let's Do] Vinery` --- shaders/block.properties | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index e4f65d2..9a8c0df 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -45,11 +45,19 @@ block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_o # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone \ diagonalwalls:minecraft/cobblestone_wall:north_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=true diagonalwalls:minecraft/granite_wall:north_east=true diagonalwalls:minecraft/diorite_wall:north_east=true diagonalwalls:minecraft/andesite_wall:north_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=true diagonalwalls:minecraft/polished_tuff_wall:north_east=true diagonalwalls:minecraft/tuff_brick_wall:north_east=true diagonalwalls:minecraft/brick_wall:north_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=true diagonalwalls:minecraft/resin_brick_wall:north_east=true diagonalwalls:minecraft/sandstone_wall:north_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=true diagonalwalls:minecraft/prismarine_wall:north_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=true diagonalwalls:minecraft/blackstone_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true \ - diagonalwindows:minecraft/iron_bars + diagonalwindows:minecraft/iron_bars \ + refurbished_furniture:birch_table \ + create:schematic_table \ + meadow:table meadow:stone_table \ + vinery:dark_cherry_table \ + another_furniture:oak_table another_furniture:spruce_table another_furniture:birch_table another_furniture:jungle_table another_furniture:acacia_table another_furniture:dark_oak_table another_furniture:mangrove_table another_furniture:cherry_table another_furniture:bamboo_table another_furniture:crimson_table another_furniture:warped_table \ + refurbished_furniture:oak_table refurbished_furniture:spruce_table refurbished_furniture:birch_table refurbished_furniture:jungle_table refurbished_furniture:acacia_table refurbished_furniture:dark_oak_table refurbished_furniture:mangrove_table refurbished_furniture:cherry_table refurbished_furniture:bamboo_table refurbished_furniture:crimson_table refurbished_furniture:warped_table \ + valhelsia_furniture:acacia_table valhelsia_furniture:bamboo_table valhelsia_furniture:birch_table valhelsia_furniture:cherry_table valhelsia_furniture:crimson_table valhelsia_furniture:dark_oak_table valhelsia_furniture:jungle_table valhelsia_furniture:mangrove_table valhelsia_furniture:oak_table valhelsia_furniture:spruce_table valhelsia_furniture:warped_table valhelsia_furniture:black_acacia_table valhelsia_furniture:blue_acacia_table valhelsia_furniture:brown_acacia_table valhelsia_furniture:cyan_acacia_table valhelsia_furniture:gray_acacia_table valhelsia_furniture:green_acacia_table valhelsia_furniture:light_blue_acacia_table valhelsia_furniture:light_gray_acacia_table valhelsia_furniture:lime_acacia_table valhelsia_furniture:magenta_acacia_table valhelsia_furniture:orange_acacia_table valhelsia_furniture:pink_acacia_table valhelsia_furniture:purple_acacia_table valhelsia_furniture:red_acacia_table valhelsia_furniture:white_acacia_table valhelsia_furniture:yellow_acacia_table valhelsia_furniture:black_bamboo_table valhelsia_furniture:blue_bamboo_table valhelsia_furniture:brown_bamboo_table valhelsia_furniture:cyan_bamboo_table valhelsia_furniture:gray_bamboo_table valhelsia_furniture:green_bamboo_table valhelsia_furniture:light_blue_bamboo_table valhelsia_furniture:light_gray_bamboo_table valhelsia_furniture:lime_bamboo_table valhelsia_furniture:magenta_bamboo_table valhelsia_furniture:orange_bamboo_table valhelsia_furniture:pink_bamboo_table valhelsia_furniture:purple_bamboo_table valhelsia_furniture:red_bamboo_table valhelsia_furniture:white_bamboo_table valhelsia_furniture:yellow_bamboo_table valhelsia_furniture:black_birch_table valhelsia_furniture:blue_birch_table valhelsia_furniture:brown_birch_table valhelsia_furniture:cyan_birch_table valhelsia_furniture:gray_birch_table valhelsia_furniture:green_birch_table valhelsia_furniture:light_blue_birch_table valhelsia_furniture:light_gray_birch_table valhelsia_furniture:lime_birch_table valhelsia_furniture:magenta_birch_table valhelsia_furniture:orange_birch_table valhelsia_furniture:pink_birch_table valhelsia_furniture:purple_birch_table valhelsia_furniture:red_birch_table valhelsia_furniture:white_birch_table valhelsia_furniture:yellow_birch_table valhelsia_furniture:black_cherry_table valhelsia_furniture:blue_cherry_table valhelsia_furniture:brown_cherry_table valhelsia_furniture:cyan_cherry_table valhelsia_furniture:gray_cherry_table valhelsia_furniture:green_cherry_table valhelsia_furniture:light_blue_cherry_table valhelsia_furniture:light_gray_cherry_table valhelsia_furniture:lime_cherry_table valhelsia_furniture:magenta_cherry_table valhelsia_furniture:orange_cherry_table valhelsia_furniture:pink_cherry_table valhelsia_furniture:purple_cherry_table valhelsia_furniture:red_cherry_table valhelsia_furniture:white_cherry_table valhelsia_furniture:yellow_cherry_table valhelsia_furniture:black_crimson_table valhelsia_furniture:blue_crimson_table valhelsia_furniture:brown_crimson_table valhelsia_furniture:cyan_crimson_table valhelsia_furniture:gray_crimson_table valhelsia_furniture:green_crimson_table valhelsia_furniture:light_blue_crimson_table valhelsia_furniture:light_gray_crimson_table valhelsia_furniture:lime_crimson_table valhelsia_furniture:magenta_crimson_table valhelsia_furniture:orange_crimson_table valhelsia_furniture:pink_crimson_table valhelsia_furniture:purple_crimson_table valhelsia_furniture:red_crimson_table valhelsia_furniture:white_crimson_table valhelsia_furniture:yellow_crimson_table valhelsia_furniture:black_dark_oak_table valhelsia_furniture:blue_dark_oak_table valhelsia_furniture:brown_dark_oak_table valhelsia_furniture:cyan_dark_oak_table valhelsia_furniture:gray_dark_oak_table valhelsia_furniture:green_dark_oak_table valhelsia_furniture:light_blue_dark_oak_table valhelsia_furniture:light_gray_dark_oak_table valhelsia_furniture:lime_dark_oak_table valhelsia_furniture:magenta_dark_oak_table valhelsia_furniture:orange_dark_oak_table valhelsia_furniture:pink_dark_oak_table valhelsia_furniture:purple_dark_oak_table valhelsia_furniture:red_dark_oak_table valhelsia_furniture:white_dark_oak_table valhelsia_furniture:yellow_dark_oak_table valhelsia_furniture:black_jungle_table valhelsia_furniture:blue_jungle_table valhelsia_furniture:brown_jungle_table valhelsia_furniture:cyan_jungle_table valhelsia_furniture:gray_jungle_table valhelsia_furniture:green_jungle_table valhelsia_furniture:light_blue_jungle_table valhelsia_furniture:light_gray_jungle_table valhelsia_furniture:lime_jungle_table valhelsia_furniture:magenta_jungle_table valhelsia_furniture:orange_jungle_table valhelsia_furniture:pink_jungle_table valhelsia_furniture:purple_jungle_table valhelsia_furniture:red_jungle_table valhelsia_furniture:white_jungle_table valhelsia_furniture:yellow_jungle_table valhelsia_furniture:black_mangrove_table valhelsia_furniture:blue_mangrove_table valhelsia_furniture:brown_mangrove_table valhelsia_furniture:cyan_mangrove_table valhelsia_furniture:gray_mangrove_table valhelsia_furniture:green_mangrove_table valhelsia_furniture:light_blue_mangrove_table valhelsia_furniture:light_gray_mangrove_table valhelsia_furniture:lime_mangrove_table valhelsia_furniture:magenta_mangrove_table valhelsia_furniture:orange_mangrove_table valhelsia_furniture:pink_mangrove_table valhelsia_furniture:purple_mangrove_table valhelsia_furniture:red_mangrove_table valhelsia_furniture:white_mangrove_table valhelsia_furniture:yellow_mangrove_table valhelsia_furniture:black_oak_table valhelsia_furniture:blue_oak_table valhelsia_furniture:brown_oak_table valhelsia_furniture:cyan_oak_table valhelsia_furniture:gray_oak_table valhelsia_furniture:green_oak_table valhelsia_furniture:light_blue_oak_table valhelsia_furniture:light_gray_oak_table valhelsia_furniture:lime_oak_table valhelsia_furniture:magenta_oak_table valhelsia_furniture:orange_oak_table valhelsia_furniture:pink_oak_table valhelsia_furniture:purple_oak_table valhelsia_furniture:red_oak_table valhelsia_furniture:white_oak_table valhelsia_furniture:yellow_oak_table valhelsia_furniture:black_spruce_table valhelsia_furniture:blue_spruce_table valhelsia_furniture:brown_spruce_table valhelsia_furniture:cyan_spruce_table valhelsia_furniture:gray_spruce_table valhelsia_furniture:green_spruce_table valhelsia_furniture:light_blue_spruce_table valhelsia_furniture:light_gray_spruce_table valhelsia_furniture:lime_spruce_table valhelsia_furniture:magenta_spruce_table valhelsia_furniture:orange_spruce_table valhelsia_furniture:pink_spruce_table valhelsia_furniture:purple_spruce_table valhelsia_furniture:red_spruce_table valhelsia_furniture:white_spruce_table valhelsia_furniture:yellow_spruce_table valhelsia_furniture:black_warped_table valhelsia_furniture:blue_warped_table valhelsia_furniture:brown_warped_table valhelsia_furniture:cyan_warped_table valhelsia_furniture:gray_warped_table valhelsia_furniture:green_warped_table valhelsia_furniture:light_blue_warped_table valhelsia_furniture:light_gray_warped_table valhelsia_furniture:lime_warped_table valhelsia_furniture:magenta_warped_table valhelsia_furniture:orange_warped_table valhelsia_furniture:pink_warped_table valhelsia_furniture:purple_warped_table valhelsia_furniture:red_warped_table valhelsia_furniture:white_warped_table valhelsia_furniture:yellow_warped_table # Blocks that occlude 75% of light block.53=bell \ - humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate + humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate \ + vinery:dark_cherry_big_table ####### ----- waving blocks with SSS ----- ####### From 44869954189fc8a97023e9c95e968d17a7246bcd Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:04:54 +0100 Subject: [PATCH 065/101] Floodfill correction for `refurbished_furniture:plate` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 9a8c0df..e24d9ad 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -35,7 +35,8 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ humility-afm:candlestick_copper humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false \ - gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged + gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \ + refurbished_furniture:plate # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ From 461b45e3f96416a751a6ea8bd36c2387a632f481 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:05:46 +0100 Subject: [PATCH 066/101] Added support for `Gravestones` mod --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index e24d9ad..ac860d5 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -41,7 +41,8 @@ block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook can # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence \ - humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_bamboo_black humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_anchor_tree_black humility-afm:cabinet_block_anchor_tree_blue humility-afm:cabinet_block_anchor_tree_brown humility-afm:cabinet_block_anchor_tree_cyan humility-afm:cabinet_block_anchor_tree_gray humility-afm:cabinet_block_anchor_tree_green humility-afm:cabinet_block_anchor_tree_light_blue humility-afm:cabinet_block_anchor_tree_light_gray humility-afm:cabinet_block_anchor_tree_lime humility-afm:cabinet_block_anchor_tree_magenta humility-afm:cabinet_block_anchor_tree_orange humility-afm:cabinet_block_anchor_tree_pink humility-afm:cabinet_block_anchor_tree_purple humility-afm:cabinet_block_anchor_tree_red humility-afm:cabinet_block_anchor_tree_white humility-afm:cabinet_block_anchor_tree_yellow humility-afm:cabinet_block_mushroom_black humility-afm:cabinet_block_mushroom_blue humility-afm:cabinet_block_mushroom_brown humility-afm:cabinet_block_mushroom_cyan humility-afm:cabinet_block_mushroom_gray humility-afm:cabinet_block_mushroom_green humility-afm:cabinet_block_mushroom_light_blue humility-afm:cabinet_block_mushroom_light_gray humility-afm:cabinet_block_mushroom_lime humility-afm:cabinet_block_mushroom_magenta humility-afm:cabinet_block_mushroom_orange humility-afm:cabinet_block_mushroom_pink humility-afm:cabinet_block_mushroom_purple humility-afm:cabinet_block_mushroom_red humility-afm:cabinet_block_mushroom_white humility-afm:cabinet_block_mushroom_yellow humility-afm:cabinet_block_mushroom_fir_black humility-afm:cabinet_block_mushroom_fir_blue humility-afm:cabinet_block_mushroom_fir_brown humility-afm:cabinet_block_mushroom_fir_cyan humility-afm:cabinet_block_mushroom_fir_gray humility-afm:cabinet_block_mushroom_fir_green humility-afm:cabinet_block_mushroom_fir_light_blue humility-afm:cabinet_block_mushroom_fir_light_gray humility-afm:cabinet_block_mushroom_fir_lime humility-afm:cabinet_block_mushroom_fir_magenta humility-afm:cabinet_block_mushroom_fir_orange humility-afm:cabinet_block_mushroom_fir_pink humility-afm:cabinet_block_mushroom_fir_purple humility-afm:cabinet_block_mushroom_fir_red humility-afm:cabinet_block_mushroom_fir_white humility-afm:cabinet_block_mushroom_fir_yellow humility-afm:cabinet_block_nether_sakura_black humility-afm:cabinet_block_nether_sakura_blue humility-afm:cabinet_block_nether_sakura_brown humility-afm:cabinet_block_nether_sakura_cyan humility-afm:cabinet_block_nether_sakura_gray humility-afm:cabinet_block_nether_sakura_green humility-afm:cabinet_block_nether_sakura_light_blue humility-afm:cabinet_block_nether_sakura_light_gray humility-afm:cabinet_block_nether_sakura_lime humility-afm:cabinet_block_nether_sakura_magenta humility-afm:cabinet_block_nether_sakura_orange humility-afm:cabinet_block_nether_sakura_pink humility-afm:cabinet_block_nether_sakura_purple humility-afm:cabinet_block_nether_sakura_red humility-afm:cabinet_block_nether_sakura_white humility-afm:cabinet_block_nether_sakura_yellow humility-afm:cabinet_block_stalagnate_black humility-afm:cabinet_block_stalagnate_blue humility-afm:cabinet_block_stalagnate_brown humility-afm:cabinet_block_stalagnate_cyan humility-afm:cabinet_block_stalagnate_gray humility-afm:cabinet_block_stalagnate_green humility-afm:cabinet_block_stalagnate_light_blue humility-afm:cabinet_block_stalagnate_light_gray humility-afm:cabinet_block_stalagnate_lime humility-afm:cabinet_block_stalagnate_magenta humility-afm:cabinet_block_stalagnate_orange humility-afm:cabinet_block_stalagnate_pink humility-afm:cabinet_block_stalagnate_purple humility-afm:cabinet_block_stalagnate_red humility-afm:cabinet_block_stalagnate_white humility-afm:cabinet_block_stalagnate_yellow humility-afm:cabinet_block_wart_black humility-afm:cabinet_block_wart_blue humility-afm:cabinet_block_wart_brown humility-afm:cabinet_block_wart_cyan humility-afm:cabinet_block_wart_gray humility-afm:cabinet_block_wart_green humility-afm:cabinet_block_wart_light_blue humility-afm:cabinet_block_wart_light_gray humility-afm:cabinet_block_wart_lime humility-afm:cabinet_block_wart_magenta humility-afm:cabinet_block_wart_orange humility-afm:cabinet_block_wart_pink humility-afm:cabinet_block_wart_purple humility-afm:cabinet_block_wart_red humility-afm:cabinet_block_wart_white humility-afm:cabinet_block_wart_yellow humility-afm:cabinet_block_willow_black humility-afm:cabinet_block_willow_blue humility-afm:cabinet_block_willow_brown humility-afm:cabinet_block_willow_cyan humility-afm:cabinet_block_willow_gray humility-afm:cabinet_block_willow_green humility-afm:cabinet_block_willow_light_blue humility-afm:cabinet_block_willow_light_gray humility-afm:cabinet_block_willow_lime humility-afm:cabinet_block_willow_magenta humility-afm:cabinet_block_willow_orange humility-afm:cabinet_block_willow_pink humility-afm:cabinet_block_willow_purple humility-afm:cabinet_block_willow_red humility-afm:cabinet_block_willow_white humility-afm:cabinet_block_willow_yellow humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_anchor_tree_black humility-afm:illuminated_cabinet_block_anchor_tree_blue humility-afm:illuminated_cabinet_block_anchor_tree_brown humility-afm:illuminated_cabinet_block_anchor_tree_cyan humility-afm:illuminated_cabinet_block_anchor_tree_gray humility-afm:illuminated_cabinet_block_anchor_tree_green humility-afm:illuminated_cabinet_block_anchor_tree_light_blue humility-afm:illuminated_cabinet_block_anchor_tree_light_gray humility-afm:illuminated_cabinet_block_anchor_tree_lime humility-afm:illuminated_cabinet_block_anchor_tree_magenta humility-afm:illuminated_cabinet_block_anchor_tree_orange humility-afm:illuminated_cabinet_block_anchor_tree_pink humility-afm:illuminated_cabinet_block_anchor_tree_purple humility-afm:illuminated_cabinet_block_anchor_tree_red humility-afm:illuminated_cabinet_block_anchor_tree_white humility-afm:illuminated_cabinet_block_anchor_tree_yellow humility-afm:illuminated_cabinet_block_mushroom_black humility-afm:illuminated_cabinet_block_mushroom_blue humility-afm:illuminated_cabinet_block_mushroom_brown humility-afm:illuminated_cabinet_block_mushroom_cyan humility-afm:illuminated_cabinet_block_mushroom_gray humility-afm:illuminated_cabinet_block_mushroom_green humility-afm:illuminated_cabinet_block_mushroom_light_blue humility-afm:illuminated_cabinet_block_mushroom_light_gray humility-afm:illuminated_cabinet_block_mushroom_lime humility-afm:illuminated_cabinet_block_mushroom_magenta humility-afm:illuminated_cabinet_block_mushroom_orange humility-afm:illuminated_cabinet_block_mushroom_pink humility-afm:illuminated_cabinet_block_mushroom_purple humility-afm:illuminated_cabinet_block_mushroom_red humility-afm:illuminated_cabinet_block_mushroom_white humility-afm:illuminated_cabinet_block_mushroom_yellow humility-afm:illuminated_cabinet_block_mushroom_fir_black humility-afm:illuminated_cabinet_block_mushroom_fir_blue humility-afm:illuminated_cabinet_block_mushroom_fir_brown humility-afm:illuminated_cabinet_block_mushroom_fir_cyan humility-afm:illuminated_cabinet_block_mushroom_fir_gray humility-afm:illuminated_cabinet_block_mushroom_fir_green humility-afm:illuminated_cabinet_block_mushroom_fir_light_blue humility-afm:illuminated_cabinet_block_mushroom_fir_light_gray humility-afm:illuminated_cabinet_block_mushroom_fir_lime humility-afm:illuminated_cabinet_block_mushroom_fir_magenta humility-afm:illuminated_cabinet_block_mushroom_fir_orange humility-afm:illuminated_cabinet_block_mushroom_fir_pink humility-afm:illuminated_cabinet_block_mushroom_fir_purple humility-afm:illuminated_cabinet_block_mushroom_fir_red humility-afm:illuminated_cabinet_block_mushroom_fir_white humility-afm:illuminated_cabinet_block_mushroom_fir_yellow humility-afm:illuminated_cabinet_block_nether_sakura_black humility-afm:illuminated_cabinet_block_nether_sakura_blue humility-afm:illuminated_cabinet_block_nether_sakura_brown humility-afm:illuminated_cabinet_block_nether_sakura_cyan humility-afm:illuminated_cabinet_block_nether_sakura_gray humility-afm:illuminated_cabinet_block_nether_sakura_green humility-afm:illuminated_cabinet_block_nether_sakura_light_blue humility-afm:illuminated_cabinet_block_nether_sakura_light_gray humility-afm:illuminated_cabinet_block_nether_sakura_lime humility-afm:illuminated_cabinet_block_nether_sakura_magenta humility-afm:illuminated_cabinet_block_nether_sakura_orange humility-afm:illuminated_cabinet_block_nether_sakura_pink humility-afm:illuminated_cabinet_block_nether_sakura_purple humility-afm:illuminated_cabinet_block_nether_sakura_red humility-afm:illuminated_cabinet_block_nether_sakura_white humility-afm:illuminated_cabinet_block_nether_sakura_yellow humility-afm:illuminated_cabinet_block_stalagnate_black humility-afm:illuminated_cabinet_block_stalagnate_blue humility-afm:illuminated_cabinet_block_stalagnate_brown humility-afm:illuminated_cabinet_block_stalagnate_cyan humility-afm:illuminated_cabinet_block_stalagnate_gray humility-afm:illuminated_cabinet_block_stalagnate_green humility-afm:illuminated_cabinet_block_stalagnate_light_blue humility-afm:illuminated_cabinet_block_stalagnate_light_gray humility-afm:illuminated_cabinet_block_stalagnate_lime humility-afm:illuminated_cabinet_block_stalagnate_magenta humility-afm:illuminated_cabinet_block_stalagnate_orange humility-afm:illuminated_cabinet_block_stalagnate_pink humility-afm:illuminated_cabinet_block_stalagnate_purple humility-afm:illuminated_cabinet_block_stalagnate_red humility-afm:illuminated_cabinet_block_stalagnate_white humility-afm:illuminated_cabinet_block_stalagnate_yellow humility-afm:illuminated_cabinet_block_wart_black humility-afm:illuminated_cabinet_block_wart_blue humility-afm:illuminated_cabinet_block_wart_brown humility-afm:illuminated_cabinet_block_wart_cyan humility-afm:illuminated_cabinet_block_wart_gray humility-afm:illuminated_cabinet_block_wart_green humility-afm:illuminated_cabinet_block_wart_light_blue humility-afm:illuminated_cabinet_block_wart_light_gray humility-afm:illuminated_cabinet_block_wart_lime humility-afm:illuminated_cabinet_block_wart_magenta humility-afm:illuminated_cabinet_block_wart_orange humility-afm:illuminated_cabinet_block_wart_pink humility-afm:illuminated_cabinet_block_wart_purple humility-afm:illuminated_cabinet_block_wart_red humility-afm:illuminated_cabinet_block_wart_white humility-afm:illuminated_cabinet_block_wart_yellow humility-afm:illuminated_cabinet_block_willow_black humility-afm:illuminated_cabinet_block_willow_blue humility-afm:illuminated_cabinet_block_willow_brown humility-afm:illuminated_cabinet_block_willow_cyan humility-afm:illuminated_cabinet_block_willow_gray humility-afm:illuminated_cabinet_block_willow_green humility-afm:illuminated_cabinet_block_willow_light_blue humility-afm:illuminated_cabinet_block_willow_light_gray humility-afm:illuminated_cabinet_block_willow_lime humility-afm:illuminated_cabinet_block_willow_magenta humility-afm:illuminated_cabinet_block_willow_orange humility-afm:illuminated_cabinet_block_willow_pink humility-afm:illuminated_cabinet_block_willow_purple humility-afm:illuminated_cabinet_block_willow_red humility-afm:illuminated_cabinet_block_willow_white humility-afm:illuminated_cabinet_block_willow_yellow + humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_bamboo_black humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_anchor_tree_black humility-afm:cabinet_block_anchor_tree_blue humility-afm:cabinet_block_anchor_tree_brown humility-afm:cabinet_block_anchor_tree_cyan humility-afm:cabinet_block_anchor_tree_gray humility-afm:cabinet_block_anchor_tree_green humility-afm:cabinet_block_anchor_tree_light_blue humility-afm:cabinet_block_anchor_tree_light_gray humility-afm:cabinet_block_anchor_tree_lime humility-afm:cabinet_block_anchor_tree_magenta humility-afm:cabinet_block_anchor_tree_orange humility-afm:cabinet_block_anchor_tree_pink humility-afm:cabinet_block_anchor_tree_purple humility-afm:cabinet_block_anchor_tree_red humility-afm:cabinet_block_anchor_tree_white humility-afm:cabinet_block_anchor_tree_yellow humility-afm:cabinet_block_mushroom_black humility-afm:cabinet_block_mushroom_blue humility-afm:cabinet_block_mushroom_brown humility-afm:cabinet_block_mushroom_cyan humility-afm:cabinet_block_mushroom_gray humility-afm:cabinet_block_mushroom_green humility-afm:cabinet_block_mushroom_light_blue humility-afm:cabinet_block_mushroom_light_gray humility-afm:cabinet_block_mushroom_lime humility-afm:cabinet_block_mushroom_magenta humility-afm:cabinet_block_mushroom_orange humility-afm:cabinet_block_mushroom_pink humility-afm:cabinet_block_mushroom_purple humility-afm:cabinet_block_mushroom_red humility-afm:cabinet_block_mushroom_white humility-afm:cabinet_block_mushroom_yellow humility-afm:cabinet_block_mushroom_fir_black humility-afm:cabinet_block_mushroom_fir_blue humility-afm:cabinet_block_mushroom_fir_brown humility-afm:cabinet_block_mushroom_fir_cyan humility-afm:cabinet_block_mushroom_fir_gray humility-afm:cabinet_block_mushroom_fir_green humility-afm:cabinet_block_mushroom_fir_light_blue humility-afm:cabinet_block_mushroom_fir_light_gray humility-afm:cabinet_block_mushroom_fir_lime humility-afm:cabinet_block_mushroom_fir_magenta humility-afm:cabinet_block_mushroom_fir_orange humility-afm:cabinet_block_mushroom_fir_pink humility-afm:cabinet_block_mushroom_fir_purple humility-afm:cabinet_block_mushroom_fir_red humility-afm:cabinet_block_mushroom_fir_white humility-afm:cabinet_block_mushroom_fir_yellow humility-afm:cabinet_block_nether_sakura_black humility-afm:cabinet_block_nether_sakura_blue humility-afm:cabinet_block_nether_sakura_brown humility-afm:cabinet_block_nether_sakura_cyan humility-afm:cabinet_block_nether_sakura_gray humility-afm:cabinet_block_nether_sakura_green humility-afm:cabinet_block_nether_sakura_light_blue humility-afm:cabinet_block_nether_sakura_light_gray humility-afm:cabinet_block_nether_sakura_lime humility-afm:cabinet_block_nether_sakura_magenta humility-afm:cabinet_block_nether_sakura_orange humility-afm:cabinet_block_nether_sakura_pink humility-afm:cabinet_block_nether_sakura_purple humility-afm:cabinet_block_nether_sakura_red humility-afm:cabinet_block_nether_sakura_white humility-afm:cabinet_block_nether_sakura_yellow humility-afm:cabinet_block_stalagnate_black humility-afm:cabinet_block_stalagnate_blue humility-afm:cabinet_block_stalagnate_brown humility-afm:cabinet_block_stalagnate_cyan humility-afm:cabinet_block_stalagnate_gray humility-afm:cabinet_block_stalagnate_green humility-afm:cabinet_block_stalagnate_light_blue humility-afm:cabinet_block_stalagnate_light_gray humility-afm:cabinet_block_stalagnate_lime humility-afm:cabinet_block_stalagnate_magenta humility-afm:cabinet_block_stalagnate_orange humility-afm:cabinet_block_stalagnate_pink humility-afm:cabinet_block_stalagnate_purple humility-afm:cabinet_block_stalagnate_red humility-afm:cabinet_block_stalagnate_white humility-afm:cabinet_block_stalagnate_yellow humility-afm:cabinet_block_wart_black humility-afm:cabinet_block_wart_blue humility-afm:cabinet_block_wart_brown humility-afm:cabinet_block_wart_cyan humility-afm:cabinet_block_wart_gray humility-afm:cabinet_block_wart_green humility-afm:cabinet_block_wart_light_blue humility-afm:cabinet_block_wart_light_gray humility-afm:cabinet_block_wart_lime humility-afm:cabinet_block_wart_magenta humility-afm:cabinet_block_wart_orange humility-afm:cabinet_block_wart_pink humility-afm:cabinet_block_wart_purple humility-afm:cabinet_block_wart_red humility-afm:cabinet_block_wart_white humility-afm:cabinet_block_wart_yellow humility-afm:cabinet_block_willow_black humility-afm:cabinet_block_willow_blue humility-afm:cabinet_block_willow_brown humility-afm:cabinet_block_willow_cyan humility-afm:cabinet_block_willow_gray humility-afm:cabinet_block_willow_green humility-afm:cabinet_block_willow_light_blue humility-afm:cabinet_block_willow_light_gray humility-afm:cabinet_block_willow_lime humility-afm:cabinet_block_willow_magenta humility-afm:cabinet_block_willow_orange humility-afm:cabinet_block_willow_pink humility-afm:cabinet_block_willow_purple humility-afm:cabinet_block_willow_red humility-afm:cabinet_block_willow_white humility-afm:cabinet_block_willow_yellow humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_anchor_tree_black humility-afm:illuminated_cabinet_block_anchor_tree_blue humility-afm:illuminated_cabinet_block_anchor_tree_brown humility-afm:illuminated_cabinet_block_anchor_tree_cyan humility-afm:illuminated_cabinet_block_anchor_tree_gray humility-afm:illuminated_cabinet_block_anchor_tree_green humility-afm:illuminated_cabinet_block_anchor_tree_light_blue humility-afm:illuminated_cabinet_block_anchor_tree_light_gray humility-afm:illuminated_cabinet_block_anchor_tree_lime humility-afm:illuminated_cabinet_block_anchor_tree_magenta humility-afm:illuminated_cabinet_block_anchor_tree_orange humility-afm:illuminated_cabinet_block_anchor_tree_pink humility-afm:illuminated_cabinet_block_anchor_tree_purple humility-afm:illuminated_cabinet_block_anchor_tree_red humility-afm:illuminated_cabinet_block_anchor_tree_white humility-afm:illuminated_cabinet_block_anchor_tree_yellow humility-afm:illuminated_cabinet_block_mushroom_black humility-afm:illuminated_cabinet_block_mushroom_blue humility-afm:illuminated_cabinet_block_mushroom_brown humility-afm:illuminated_cabinet_block_mushroom_cyan humility-afm:illuminated_cabinet_block_mushroom_gray humility-afm:illuminated_cabinet_block_mushroom_green humility-afm:illuminated_cabinet_block_mushroom_light_blue humility-afm:illuminated_cabinet_block_mushroom_light_gray humility-afm:illuminated_cabinet_block_mushroom_lime humility-afm:illuminated_cabinet_block_mushroom_magenta humility-afm:illuminated_cabinet_block_mushroom_orange humility-afm:illuminated_cabinet_block_mushroom_pink humility-afm:illuminated_cabinet_block_mushroom_purple humility-afm:illuminated_cabinet_block_mushroom_red humility-afm:illuminated_cabinet_block_mushroom_white humility-afm:illuminated_cabinet_block_mushroom_yellow humility-afm:illuminated_cabinet_block_mushroom_fir_black humility-afm:illuminated_cabinet_block_mushroom_fir_blue humility-afm:illuminated_cabinet_block_mushroom_fir_brown humility-afm:illuminated_cabinet_block_mushroom_fir_cyan humility-afm:illuminated_cabinet_block_mushroom_fir_gray humility-afm:illuminated_cabinet_block_mushroom_fir_green humility-afm:illuminated_cabinet_block_mushroom_fir_light_blue humility-afm:illuminated_cabinet_block_mushroom_fir_light_gray humility-afm:illuminated_cabinet_block_mushroom_fir_lime humility-afm:illuminated_cabinet_block_mushroom_fir_magenta humility-afm:illuminated_cabinet_block_mushroom_fir_orange humility-afm:illuminated_cabinet_block_mushroom_fir_pink humility-afm:illuminated_cabinet_block_mushroom_fir_purple humility-afm:illuminated_cabinet_block_mushroom_fir_red humility-afm:illuminated_cabinet_block_mushroom_fir_white humility-afm:illuminated_cabinet_block_mushroom_fir_yellow humility-afm:illuminated_cabinet_block_nether_sakura_black humility-afm:illuminated_cabinet_block_nether_sakura_blue humility-afm:illuminated_cabinet_block_nether_sakura_brown humility-afm:illuminated_cabinet_block_nether_sakura_cyan humility-afm:illuminated_cabinet_block_nether_sakura_gray humility-afm:illuminated_cabinet_block_nether_sakura_green humility-afm:illuminated_cabinet_block_nether_sakura_light_blue humility-afm:illuminated_cabinet_block_nether_sakura_light_gray humility-afm:illuminated_cabinet_block_nether_sakura_lime humility-afm:illuminated_cabinet_block_nether_sakura_magenta humility-afm:illuminated_cabinet_block_nether_sakura_orange humility-afm:illuminated_cabinet_block_nether_sakura_pink humility-afm:illuminated_cabinet_block_nether_sakura_purple humility-afm:illuminated_cabinet_block_nether_sakura_red humility-afm:illuminated_cabinet_block_nether_sakura_white humility-afm:illuminated_cabinet_block_nether_sakura_yellow humility-afm:illuminated_cabinet_block_stalagnate_black humility-afm:illuminated_cabinet_block_stalagnate_blue humility-afm:illuminated_cabinet_block_stalagnate_brown humility-afm:illuminated_cabinet_block_stalagnate_cyan humility-afm:illuminated_cabinet_block_stalagnate_gray humility-afm:illuminated_cabinet_block_stalagnate_green humility-afm:illuminated_cabinet_block_stalagnate_light_blue humility-afm:illuminated_cabinet_block_stalagnate_light_gray humility-afm:illuminated_cabinet_block_stalagnate_lime humility-afm:illuminated_cabinet_block_stalagnate_magenta humility-afm:illuminated_cabinet_block_stalagnate_orange humility-afm:illuminated_cabinet_block_stalagnate_pink humility-afm:illuminated_cabinet_block_stalagnate_purple humility-afm:illuminated_cabinet_block_stalagnate_red humility-afm:illuminated_cabinet_block_stalagnate_white humility-afm:illuminated_cabinet_block_stalagnate_yellow humility-afm:illuminated_cabinet_block_wart_black humility-afm:illuminated_cabinet_block_wart_blue humility-afm:illuminated_cabinet_block_wart_brown humility-afm:illuminated_cabinet_block_wart_cyan humility-afm:illuminated_cabinet_block_wart_gray humility-afm:illuminated_cabinet_block_wart_green humility-afm:illuminated_cabinet_block_wart_light_blue humility-afm:illuminated_cabinet_block_wart_light_gray humility-afm:illuminated_cabinet_block_wart_lime humility-afm:illuminated_cabinet_block_wart_magenta humility-afm:illuminated_cabinet_block_wart_orange humility-afm:illuminated_cabinet_block_wart_pink humility-afm:illuminated_cabinet_block_wart_purple humility-afm:illuminated_cabinet_block_wart_red humility-afm:illuminated_cabinet_block_wart_white humility-afm:illuminated_cabinet_block_wart_yellow humility-afm:illuminated_cabinet_block_willow_black humility-afm:illuminated_cabinet_block_willow_blue humility-afm:illuminated_cabinet_block_willow_brown humility-afm:illuminated_cabinet_block_willow_cyan humility-afm:illuminated_cabinet_block_willow_gray humility-afm:illuminated_cabinet_block_willow_green humility-afm:illuminated_cabinet_block_willow_light_blue humility-afm:illuminated_cabinet_block_willow_light_gray humility-afm:illuminated_cabinet_block_willow_lime humility-afm:illuminated_cabinet_block_willow_magenta humility-afm:illuminated_cabinet_block_willow_orange humility-afm:illuminated_cabinet_block_willow_pink humility-afm:illuminated_cabinet_block_willow_purple humility-afm:illuminated_cabinet_block_willow_red humility-afm:illuminated_cabinet_block_willow_white humility-afm:illuminated_cabinet_block_willow_yellow \ + gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone \ From 113ad677d9d5dccd7ce3be1c4924220b2de8d074 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 9 Nov 2024 21:59:50 +0100 Subject: [PATCH 067/101] Added support for `Ocean's Delight` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index ac860d5..4162d8c 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -103,7 +103,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ garnished:sorrowful_lichen garnished:anniversary_cake \ fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff \ - aquamirae:elodea + aquamirae:elodea \ + oceansdelight:guardian_soup ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ From 5f2861da1c45b68a227102f3c3064392dfd34576 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 9 Nov 2024 22:04:08 +0100 Subject: [PATCH 068/101] Added support for `Vegan Delight` --- shaders/block.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 4162d8c..1fd1a2f 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -71,7 +71,8 @@ block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush \ - herbalbrews:wild_coffee_plant herbalbrews:wild_yerba_mate_plant herbalbrews:wild_rooibos_plant herbalbrews:hibiscus herbalbrews:lavender herbalbrews:coffee_plant herbalbrews:yerba_mate_plant herbalbrews:rooibos_plant + herbalbrews:wild_coffee_plant herbalbrews:wild_yerba_mate_plant herbalbrews:wild_rooibos_plant herbalbrews:hibiscus herbalbrews:lavender herbalbrews:coffee_plant herbalbrews:yerba_mate_plant herbalbrews:rooibos_plant \ + vegandelight:wild_soybean ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ From ed1059ec3a68b81b17cfce96eea160cdda9cee42 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:40:28 +0100 Subject: [PATCH 069/101] Reordered mods alphabetically --- shaders/block.properties | 240 +++++++++++++++++++-------------------- 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 1fd1a2f..97d9c14 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -8,16 +8,17 @@ block.11=bamboo bamboo_sapling block.12=minecraft:short_grass minecraft:grass block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower minecraft:tall_grass:half=lower minecraft:sunflower:half=lower minecraft:large_fern:half=lower minecraft:peony:half=lower minecraft:rose_bush:half=lower minecraft:lilac:half=lower minecraft:tall_seagrass:half=lower \ - conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ biomesoplenty:tall_lavender:half=lower biomesoplenty:eyebulb:half=lower biomesoplenty:blue_hydrangea:half=lower \ - natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower \ - farmersdelight:wild_rice:half=lower + conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ + farmersdelight:wild_rice:half=lower \ + natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ - conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ biomesoplenty:tall_lavender:half=upper biomesoplenty:eyebulb:half=upper biomesoplenty:blue_hydrangea:half=upper \ - natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper \ - farmersdelight:wild_rice:half=upper + conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ + farmersdelight:wild_rice:half=upper \ + natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper + block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling @@ -32,29 +33,28 @@ block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:be # Blocks for FloodFill to ignore block.50=chain ladder lever lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button polished_blackstone_button spruce_button stone_button warped_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ - supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ - humility-afm:candlestick_copper humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false \ gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \ - refurbished_furniture:plate + humility-afm:candlestick_copper humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false \ + refurbished_furniture:plate \ + supplementaries:candle_holder:lit=false supplementaries:candle_holder_black:lit=false supplementaries:candle_holder_blue:lit=false supplementaries:candle_holder_brown:lit=false supplementaries:candle_holder_cyan:lit=false supplementaries:candle_holder_gray:lit=false supplementaries:candle_holder_green:lit=false supplementaries:candle_holder_light_blue:lit=false supplementaries:candle_holder_light_gray:lit=false supplementaries:candle_holder_lime:lit=false supplementaries:candle_holder_magenta:lit=false supplementaries:candle_holder_orange:lit=false supplementaries:candle_holder_pink:lit=false supplementaries:candle_holder_purple:lit=false supplementaries:candle_holder_red:lit=false supplementaries:candle_holder_white:lit=false supplementaries:candle_holder_yellow:lit=false # Blocks that occlude 25% of light block.51=acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence nether_brick_fence oak_fence spruce_fence warped_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence \ - humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_bamboo_black humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_anchor_tree_black humility-afm:cabinet_block_anchor_tree_blue humility-afm:cabinet_block_anchor_tree_brown humility-afm:cabinet_block_anchor_tree_cyan humility-afm:cabinet_block_anchor_tree_gray humility-afm:cabinet_block_anchor_tree_green humility-afm:cabinet_block_anchor_tree_light_blue humility-afm:cabinet_block_anchor_tree_light_gray humility-afm:cabinet_block_anchor_tree_lime humility-afm:cabinet_block_anchor_tree_magenta humility-afm:cabinet_block_anchor_tree_orange humility-afm:cabinet_block_anchor_tree_pink humility-afm:cabinet_block_anchor_tree_purple humility-afm:cabinet_block_anchor_tree_red humility-afm:cabinet_block_anchor_tree_white humility-afm:cabinet_block_anchor_tree_yellow humility-afm:cabinet_block_mushroom_black humility-afm:cabinet_block_mushroom_blue humility-afm:cabinet_block_mushroom_brown humility-afm:cabinet_block_mushroom_cyan humility-afm:cabinet_block_mushroom_gray humility-afm:cabinet_block_mushroom_green humility-afm:cabinet_block_mushroom_light_blue humility-afm:cabinet_block_mushroom_light_gray humility-afm:cabinet_block_mushroom_lime humility-afm:cabinet_block_mushroom_magenta humility-afm:cabinet_block_mushroom_orange humility-afm:cabinet_block_mushroom_pink humility-afm:cabinet_block_mushroom_purple humility-afm:cabinet_block_mushroom_red humility-afm:cabinet_block_mushroom_white humility-afm:cabinet_block_mushroom_yellow humility-afm:cabinet_block_mushroom_fir_black humility-afm:cabinet_block_mushroom_fir_blue humility-afm:cabinet_block_mushroom_fir_brown humility-afm:cabinet_block_mushroom_fir_cyan humility-afm:cabinet_block_mushroom_fir_gray humility-afm:cabinet_block_mushroom_fir_green humility-afm:cabinet_block_mushroom_fir_light_blue humility-afm:cabinet_block_mushroom_fir_light_gray humility-afm:cabinet_block_mushroom_fir_lime humility-afm:cabinet_block_mushroom_fir_magenta humility-afm:cabinet_block_mushroom_fir_orange humility-afm:cabinet_block_mushroom_fir_pink humility-afm:cabinet_block_mushroom_fir_purple humility-afm:cabinet_block_mushroom_fir_red humility-afm:cabinet_block_mushroom_fir_white humility-afm:cabinet_block_mushroom_fir_yellow humility-afm:cabinet_block_nether_sakura_black humility-afm:cabinet_block_nether_sakura_blue humility-afm:cabinet_block_nether_sakura_brown humility-afm:cabinet_block_nether_sakura_cyan humility-afm:cabinet_block_nether_sakura_gray humility-afm:cabinet_block_nether_sakura_green humility-afm:cabinet_block_nether_sakura_light_blue humility-afm:cabinet_block_nether_sakura_light_gray humility-afm:cabinet_block_nether_sakura_lime humility-afm:cabinet_block_nether_sakura_magenta humility-afm:cabinet_block_nether_sakura_orange humility-afm:cabinet_block_nether_sakura_pink humility-afm:cabinet_block_nether_sakura_purple humility-afm:cabinet_block_nether_sakura_red humility-afm:cabinet_block_nether_sakura_white humility-afm:cabinet_block_nether_sakura_yellow humility-afm:cabinet_block_stalagnate_black humility-afm:cabinet_block_stalagnate_blue humility-afm:cabinet_block_stalagnate_brown humility-afm:cabinet_block_stalagnate_cyan humility-afm:cabinet_block_stalagnate_gray humility-afm:cabinet_block_stalagnate_green humility-afm:cabinet_block_stalagnate_light_blue humility-afm:cabinet_block_stalagnate_light_gray humility-afm:cabinet_block_stalagnate_lime humility-afm:cabinet_block_stalagnate_magenta humility-afm:cabinet_block_stalagnate_orange humility-afm:cabinet_block_stalagnate_pink humility-afm:cabinet_block_stalagnate_purple humility-afm:cabinet_block_stalagnate_red humility-afm:cabinet_block_stalagnate_white humility-afm:cabinet_block_stalagnate_yellow humility-afm:cabinet_block_wart_black humility-afm:cabinet_block_wart_blue humility-afm:cabinet_block_wart_brown humility-afm:cabinet_block_wart_cyan humility-afm:cabinet_block_wart_gray humility-afm:cabinet_block_wart_green humility-afm:cabinet_block_wart_light_blue humility-afm:cabinet_block_wart_light_gray humility-afm:cabinet_block_wart_lime humility-afm:cabinet_block_wart_magenta humility-afm:cabinet_block_wart_orange humility-afm:cabinet_block_wart_pink humility-afm:cabinet_block_wart_purple humility-afm:cabinet_block_wart_red humility-afm:cabinet_block_wart_white humility-afm:cabinet_block_wart_yellow humility-afm:cabinet_block_willow_black humility-afm:cabinet_block_willow_blue humility-afm:cabinet_block_willow_brown humility-afm:cabinet_block_willow_cyan humility-afm:cabinet_block_willow_gray humility-afm:cabinet_block_willow_green humility-afm:cabinet_block_willow_light_blue humility-afm:cabinet_block_willow_light_gray humility-afm:cabinet_block_willow_lime humility-afm:cabinet_block_willow_magenta humility-afm:cabinet_block_willow_orange humility-afm:cabinet_block_willow_pink humility-afm:cabinet_block_willow_purple humility-afm:cabinet_block_willow_red humility-afm:cabinet_block_willow_white humility-afm:cabinet_block_willow_yellow humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_anchor_tree_black humility-afm:illuminated_cabinet_block_anchor_tree_blue humility-afm:illuminated_cabinet_block_anchor_tree_brown humility-afm:illuminated_cabinet_block_anchor_tree_cyan humility-afm:illuminated_cabinet_block_anchor_tree_gray humility-afm:illuminated_cabinet_block_anchor_tree_green humility-afm:illuminated_cabinet_block_anchor_tree_light_blue humility-afm:illuminated_cabinet_block_anchor_tree_light_gray humility-afm:illuminated_cabinet_block_anchor_tree_lime humility-afm:illuminated_cabinet_block_anchor_tree_magenta humility-afm:illuminated_cabinet_block_anchor_tree_orange humility-afm:illuminated_cabinet_block_anchor_tree_pink humility-afm:illuminated_cabinet_block_anchor_tree_purple humility-afm:illuminated_cabinet_block_anchor_tree_red humility-afm:illuminated_cabinet_block_anchor_tree_white humility-afm:illuminated_cabinet_block_anchor_tree_yellow humility-afm:illuminated_cabinet_block_mushroom_black humility-afm:illuminated_cabinet_block_mushroom_blue humility-afm:illuminated_cabinet_block_mushroom_brown humility-afm:illuminated_cabinet_block_mushroom_cyan humility-afm:illuminated_cabinet_block_mushroom_gray humility-afm:illuminated_cabinet_block_mushroom_green humility-afm:illuminated_cabinet_block_mushroom_light_blue humility-afm:illuminated_cabinet_block_mushroom_light_gray humility-afm:illuminated_cabinet_block_mushroom_lime humility-afm:illuminated_cabinet_block_mushroom_magenta humility-afm:illuminated_cabinet_block_mushroom_orange humility-afm:illuminated_cabinet_block_mushroom_pink humility-afm:illuminated_cabinet_block_mushroom_purple humility-afm:illuminated_cabinet_block_mushroom_red humility-afm:illuminated_cabinet_block_mushroom_white humility-afm:illuminated_cabinet_block_mushroom_yellow humility-afm:illuminated_cabinet_block_mushroom_fir_black humility-afm:illuminated_cabinet_block_mushroom_fir_blue humility-afm:illuminated_cabinet_block_mushroom_fir_brown humility-afm:illuminated_cabinet_block_mushroom_fir_cyan humility-afm:illuminated_cabinet_block_mushroom_fir_gray humility-afm:illuminated_cabinet_block_mushroom_fir_green humility-afm:illuminated_cabinet_block_mushroom_fir_light_blue humility-afm:illuminated_cabinet_block_mushroom_fir_light_gray humility-afm:illuminated_cabinet_block_mushroom_fir_lime humility-afm:illuminated_cabinet_block_mushroom_fir_magenta humility-afm:illuminated_cabinet_block_mushroom_fir_orange humility-afm:illuminated_cabinet_block_mushroom_fir_pink humility-afm:illuminated_cabinet_block_mushroom_fir_purple humility-afm:illuminated_cabinet_block_mushroom_fir_red humility-afm:illuminated_cabinet_block_mushroom_fir_white humility-afm:illuminated_cabinet_block_mushroom_fir_yellow humility-afm:illuminated_cabinet_block_nether_sakura_black humility-afm:illuminated_cabinet_block_nether_sakura_blue humility-afm:illuminated_cabinet_block_nether_sakura_brown humility-afm:illuminated_cabinet_block_nether_sakura_cyan humility-afm:illuminated_cabinet_block_nether_sakura_gray humility-afm:illuminated_cabinet_block_nether_sakura_green humility-afm:illuminated_cabinet_block_nether_sakura_light_blue humility-afm:illuminated_cabinet_block_nether_sakura_light_gray humility-afm:illuminated_cabinet_block_nether_sakura_lime humility-afm:illuminated_cabinet_block_nether_sakura_magenta humility-afm:illuminated_cabinet_block_nether_sakura_orange humility-afm:illuminated_cabinet_block_nether_sakura_pink humility-afm:illuminated_cabinet_block_nether_sakura_purple humility-afm:illuminated_cabinet_block_nether_sakura_red humility-afm:illuminated_cabinet_block_nether_sakura_white humility-afm:illuminated_cabinet_block_nether_sakura_yellow humility-afm:illuminated_cabinet_block_stalagnate_black humility-afm:illuminated_cabinet_block_stalagnate_blue humility-afm:illuminated_cabinet_block_stalagnate_brown humility-afm:illuminated_cabinet_block_stalagnate_cyan humility-afm:illuminated_cabinet_block_stalagnate_gray humility-afm:illuminated_cabinet_block_stalagnate_green humility-afm:illuminated_cabinet_block_stalagnate_light_blue humility-afm:illuminated_cabinet_block_stalagnate_light_gray humility-afm:illuminated_cabinet_block_stalagnate_lime humility-afm:illuminated_cabinet_block_stalagnate_magenta humility-afm:illuminated_cabinet_block_stalagnate_orange humility-afm:illuminated_cabinet_block_stalagnate_pink humility-afm:illuminated_cabinet_block_stalagnate_purple humility-afm:illuminated_cabinet_block_stalagnate_red humility-afm:illuminated_cabinet_block_stalagnate_white humility-afm:illuminated_cabinet_block_stalagnate_yellow humility-afm:illuminated_cabinet_block_wart_black humility-afm:illuminated_cabinet_block_wart_blue humility-afm:illuminated_cabinet_block_wart_brown humility-afm:illuminated_cabinet_block_wart_cyan humility-afm:illuminated_cabinet_block_wart_gray humility-afm:illuminated_cabinet_block_wart_green humility-afm:illuminated_cabinet_block_wart_light_blue humility-afm:illuminated_cabinet_block_wart_light_gray humility-afm:illuminated_cabinet_block_wart_lime humility-afm:illuminated_cabinet_block_wart_magenta humility-afm:illuminated_cabinet_block_wart_orange humility-afm:illuminated_cabinet_block_wart_pink humility-afm:illuminated_cabinet_block_wart_purple humility-afm:illuminated_cabinet_block_wart_red humility-afm:illuminated_cabinet_block_wart_white humility-afm:illuminated_cabinet_block_wart_yellow humility-afm:illuminated_cabinet_block_willow_black humility-afm:illuminated_cabinet_block_willow_blue humility-afm:illuminated_cabinet_block_willow_brown humility-afm:illuminated_cabinet_block_willow_cyan humility-afm:illuminated_cabinet_block_willow_gray humility-afm:illuminated_cabinet_block_willow_green humility-afm:illuminated_cabinet_block_willow_light_blue humility-afm:illuminated_cabinet_block_willow_light_gray humility-afm:illuminated_cabinet_block_willow_lime humility-afm:illuminated_cabinet_block_willow_magenta humility-afm:illuminated_cabinet_block_willow_orange humility-afm:illuminated_cabinet_block_willow_pink humility-afm:illuminated_cabinet_block_willow_purple humility-afm:illuminated_cabinet_block_willow_red humility-afm:illuminated_cabinet_block_willow_white humility-afm:illuminated_cabinet_block_willow_yellow \ - gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged + gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \ + humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_bamboo_black humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_anchor_tree_black humility-afm:cabinet_block_anchor_tree_blue humility-afm:cabinet_block_anchor_tree_brown humility-afm:cabinet_block_anchor_tree_cyan humility-afm:cabinet_block_anchor_tree_gray humility-afm:cabinet_block_anchor_tree_green humility-afm:cabinet_block_anchor_tree_light_blue humility-afm:cabinet_block_anchor_tree_light_gray humility-afm:cabinet_block_anchor_tree_lime humility-afm:cabinet_block_anchor_tree_magenta humility-afm:cabinet_block_anchor_tree_orange humility-afm:cabinet_block_anchor_tree_pink humility-afm:cabinet_block_anchor_tree_purple humility-afm:cabinet_block_anchor_tree_red humility-afm:cabinet_block_anchor_tree_white humility-afm:cabinet_block_anchor_tree_yellow humility-afm:cabinet_block_mushroom_black humility-afm:cabinet_block_mushroom_blue humility-afm:cabinet_block_mushroom_brown humility-afm:cabinet_block_mushroom_cyan humility-afm:cabinet_block_mushroom_gray humility-afm:cabinet_block_mushroom_green humility-afm:cabinet_block_mushroom_light_blue humility-afm:cabinet_block_mushroom_light_gray humility-afm:cabinet_block_mushroom_lime humility-afm:cabinet_block_mushroom_magenta humility-afm:cabinet_block_mushroom_orange humility-afm:cabinet_block_mushroom_pink humility-afm:cabinet_block_mushroom_purple humility-afm:cabinet_block_mushroom_red humility-afm:cabinet_block_mushroom_white humility-afm:cabinet_block_mushroom_yellow humility-afm:cabinet_block_mushroom_fir_black humility-afm:cabinet_block_mushroom_fir_blue humility-afm:cabinet_block_mushroom_fir_brown humility-afm:cabinet_block_mushroom_fir_cyan humility-afm:cabinet_block_mushroom_fir_gray humility-afm:cabinet_block_mushroom_fir_green humility-afm:cabinet_block_mushroom_fir_light_blue humility-afm:cabinet_block_mushroom_fir_light_gray humility-afm:cabinet_block_mushroom_fir_lime humility-afm:cabinet_block_mushroom_fir_magenta humility-afm:cabinet_block_mushroom_fir_orange humility-afm:cabinet_block_mushroom_fir_pink humility-afm:cabinet_block_mushroom_fir_purple humility-afm:cabinet_block_mushroom_fir_red humility-afm:cabinet_block_mushroom_fir_white humility-afm:cabinet_block_mushroom_fir_yellow humility-afm:cabinet_block_nether_sakura_black humility-afm:cabinet_block_nether_sakura_blue humility-afm:cabinet_block_nether_sakura_brown humility-afm:cabinet_block_nether_sakura_cyan humility-afm:cabinet_block_nether_sakura_gray humility-afm:cabinet_block_nether_sakura_green humility-afm:cabinet_block_nether_sakura_light_blue humility-afm:cabinet_block_nether_sakura_light_gray humility-afm:cabinet_block_nether_sakura_lime humility-afm:cabinet_block_nether_sakura_magenta humility-afm:cabinet_block_nether_sakura_orange humility-afm:cabinet_block_nether_sakura_pink humility-afm:cabinet_block_nether_sakura_purple humility-afm:cabinet_block_nether_sakura_red humility-afm:cabinet_block_nether_sakura_white humility-afm:cabinet_block_nether_sakura_yellow humility-afm:cabinet_block_stalagnate_black humility-afm:cabinet_block_stalagnate_blue humility-afm:cabinet_block_stalagnate_brown humility-afm:cabinet_block_stalagnate_cyan humility-afm:cabinet_block_stalagnate_gray humility-afm:cabinet_block_stalagnate_green humility-afm:cabinet_block_stalagnate_light_blue humility-afm:cabinet_block_stalagnate_light_gray humility-afm:cabinet_block_stalagnate_lime humility-afm:cabinet_block_stalagnate_magenta humility-afm:cabinet_block_stalagnate_orange humility-afm:cabinet_block_stalagnate_pink humility-afm:cabinet_block_stalagnate_purple humility-afm:cabinet_block_stalagnate_red humility-afm:cabinet_block_stalagnate_white humility-afm:cabinet_block_stalagnate_yellow humility-afm:cabinet_block_wart_black humility-afm:cabinet_block_wart_blue humility-afm:cabinet_block_wart_brown humility-afm:cabinet_block_wart_cyan humility-afm:cabinet_block_wart_gray humility-afm:cabinet_block_wart_green humility-afm:cabinet_block_wart_light_blue humility-afm:cabinet_block_wart_light_gray humility-afm:cabinet_block_wart_lime humility-afm:cabinet_block_wart_magenta humility-afm:cabinet_block_wart_orange humility-afm:cabinet_block_wart_pink humility-afm:cabinet_block_wart_purple humility-afm:cabinet_block_wart_red humility-afm:cabinet_block_wart_white humility-afm:cabinet_block_wart_yellow humility-afm:cabinet_block_willow_black humility-afm:cabinet_block_willow_blue humility-afm:cabinet_block_willow_brown humility-afm:cabinet_block_willow_cyan humility-afm:cabinet_block_willow_gray humility-afm:cabinet_block_willow_green humility-afm:cabinet_block_willow_light_blue humility-afm:cabinet_block_willow_light_gray humility-afm:cabinet_block_willow_lime humility-afm:cabinet_block_willow_magenta humility-afm:cabinet_block_willow_orange humility-afm:cabinet_block_willow_pink humility-afm:cabinet_block_willow_purple humility-afm:cabinet_block_willow_red humility-afm:cabinet_block_willow_white humility-afm:cabinet_block_willow_yellow humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_anchor_tree_black humility-afm:illuminated_cabinet_block_anchor_tree_blue humility-afm:illuminated_cabinet_block_anchor_tree_brown humility-afm:illuminated_cabinet_block_anchor_tree_cyan humility-afm:illuminated_cabinet_block_anchor_tree_gray humility-afm:illuminated_cabinet_block_anchor_tree_green humility-afm:illuminated_cabinet_block_anchor_tree_light_blue humility-afm:illuminated_cabinet_block_anchor_tree_light_gray humility-afm:illuminated_cabinet_block_anchor_tree_lime humility-afm:illuminated_cabinet_block_anchor_tree_magenta humility-afm:illuminated_cabinet_block_anchor_tree_orange humility-afm:illuminated_cabinet_block_anchor_tree_pink humility-afm:illuminated_cabinet_block_anchor_tree_purple humility-afm:illuminated_cabinet_block_anchor_tree_red humility-afm:illuminated_cabinet_block_anchor_tree_white humility-afm:illuminated_cabinet_block_anchor_tree_yellow humility-afm:illuminated_cabinet_block_mushroom_black humility-afm:illuminated_cabinet_block_mushroom_blue humility-afm:illuminated_cabinet_block_mushroom_brown humility-afm:illuminated_cabinet_block_mushroom_cyan humility-afm:illuminated_cabinet_block_mushroom_gray humility-afm:illuminated_cabinet_block_mushroom_green humility-afm:illuminated_cabinet_block_mushroom_light_blue humility-afm:illuminated_cabinet_block_mushroom_light_gray humility-afm:illuminated_cabinet_block_mushroom_lime humility-afm:illuminated_cabinet_block_mushroom_magenta humility-afm:illuminated_cabinet_block_mushroom_orange humility-afm:illuminated_cabinet_block_mushroom_pink humility-afm:illuminated_cabinet_block_mushroom_purple humility-afm:illuminated_cabinet_block_mushroom_red humility-afm:illuminated_cabinet_block_mushroom_white humility-afm:illuminated_cabinet_block_mushroom_yellow humility-afm:illuminated_cabinet_block_mushroom_fir_black humility-afm:illuminated_cabinet_block_mushroom_fir_blue humility-afm:illuminated_cabinet_block_mushroom_fir_brown humility-afm:illuminated_cabinet_block_mushroom_fir_cyan humility-afm:illuminated_cabinet_block_mushroom_fir_gray humility-afm:illuminated_cabinet_block_mushroom_fir_green humility-afm:illuminated_cabinet_block_mushroom_fir_light_blue humility-afm:illuminated_cabinet_block_mushroom_fir_light_gray humility-afm:illuminated_cabinet_block_mushroom_fir_lime humility-afm:illuminated_cabinet_block_mushroom_fir_magenta humility-afm:illuminated_cabinet_block_mushroom_fir_orange humility-afm:illuminated_cabinet_block_mushroom_fir_pink humility-afm:illuminated_cabinet_block_mushroom_fir_purple humility-afm:illuminated_cabinet_block_mushroom_fir_red humility-afm:illuminated_cabinet_block_mushroom_fir_white humility-afm:illuminated_cabinet_block_mushroom_fir_yellow humility-afm:illuminated_cabinet_block_nether_sakura_black humility-afm:illuminated_cabinet_block_nether_sakura_blue humility-afm:illuminated_cabinet_block_nether_sakura_brown humility-afm:illuminated_cabinet_block_nether_sakura_cyan humility-afm:illuminated_cabinet_block_nether_sakura_gray humility-afm:illuminated_cabinet_block_nether_sakura_green humility-afm:illuminated_cabinet_block_nether_sakura_light_blue humility-afm:illuminated_cabinet_block_nether_sakura_light_gray humility-afm:illuminated_cabinet_block_nether_sakura_lime humility-afm:illuminated_cabinet_block_nether_sakura_magenta humility-afm:illuminated_cabinet_block_nether_sakura_orange humility-afm:illuminated_cabinet_block_nether_sakura_pink humility-afm:illuminated_cabinet_block_nether_sakura_purple humility-afm:illuminated_cabinet_block_nether_sakura_red humility-afm:illuminated_cabinet_block_nether_sakura_white humility-afm:illuminated_cabinet_block_nether_sakura_yellow humility-afm:illuminated_cabinet_block_stalagnate_black humility-afm:illuminated_cabinet_block_stalagnate_blue humility-afm:illuminated_cabinet_block_stalagnate_brown humility-afm:illuminated_cabinet_block_stalagnate_cyan humility-afm:illuminated_cabinet_block_stalagnate_gray humility-afm:illuminated_cabinet_block_stalagnate_green humility-afm:illuminated_cabinet_block_stalagnate_light_blue humility-afm:illuminated_cabinet_block_stalagnate_light_gray humility-afm:illuminated_cabinet_block_stalagnate_lime humility-afm:illuminated_cabinet_block_stalagnate_magenta humility-afm:illuminated_cabinet_block_stalagnate_orange humility-afm:illuminated_cabinet_block_stalagnate_pink humility-afm:illuminated_cabinet_block_stalagnate_purple humility-afm:illuminated_cabinet_block_stalagnate_red humility-afm:illuminated_cabinet_block_stalagnate_white humility-afm:illuminated_cabinet_block_stalagnate_yellow humility-afm:illuminated_cabinet_block_wart_black humility-afm:illuminated_cabinet_block_wart_blue humility-afm:illuminated_cabinet_block_wart_brown humility-afm:illuminated_cabinet_block_wart_cyan humility-afm:illuminated_cabinet_block_wart_gray humility-afm:illuminated_cabinet_block_wart_green humility-afm:illuminated_cabinet_block_wart_light_blue humility-afm:illuminated_cabinet_block_wart_light_gray humility-afm:illuminated_cabinet_block_wart_lime humility-afm:illuminated_cabinet_block_wart_magenta humility-afm:illuminated_cabinet_block_wart_orange humility-afm:illuminated_cabinet_block_wart_pink humility-afm:illuminated_cabinet_block_wart_purple humility-afm:illuminated_cabinet_block_wart_red humility-afm:illuminated_cabinet_block_wart_white humility-afm:illuminated_cabinet_block_wart_yellow humility-afm:illuminated_cabinet_block_willow_black humility-afm:illuminated_cabinet_block_willow_blue humility-afm:illuminated_cabinet_block_willow_brown humility-afm:illuminated_cabinet_block_willow_cyan humility-afm:illuminated_cabinet_block_willow_gray humility-afm:illuminated_cabinet_block_willow_green humility-afm:illuminated_cabinet_block_willow_light_blue humility-afm:illuminated_cabinet_block_willow_light_gray humility-afm:illuminated_cabinet_block_willow_lime humility-afm:illuminated_cabinet_block_willow_magenta humility-afm:illuminated_cabinet_block_willow_orange humility-afm:illuminated_cabinet_block_willow_pink humility-afm:illuminated_cabinet_block_willow_purple humility-afm:illuminated_cabinet_block_willow_red humility-afm:illuminated_cabinet_block_willow_white humility-afm:illuminated_cabinet_block_willow_yellow # Blocks that occlude 50% of light block.52=iron_bars pointed_dripstone \ + another_furniture:oak_table another_furniture:spruce_table another_furniture:birch_table another_furniture:jungle_table another_furniture:acacia_table another_furniture:dark_oak_table another_furniture:mangrove_table another_furniture:cherry_table another_furniture:bamboo_table another_furniture:crimson_table another_furniture:warped_table \ + create:schematic_table \ diagonalwalls:minecraft/cobblestone_wall:north_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=true diagonalwalls:minecraft/granite_wall:north_east=true diagonalwalls:minecraft/diorite_wall:north_east=true diagonalwalls:minecraft/andesite_wall:north_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=true diagonalwalls:minecraft/polished_tuff_wall:north_east=true diagonalwalls:minecraft/tuff_brick_wall:north_east=true diagonalwalls:minecraft/brick_wall:north_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=true diagonalwalls:minecraft/resin_brick_wall:north_east=true diagonalwalls:minecraft/sandstone_wall:north_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=true diagonalwalls:minecraft/prismarine_wall:north_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=true diagonalwalls:minecraft/blackstone_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/tuff_wall tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/tuff_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/resin_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true \ diagonalwindows:minecraft/iron_bars \ - refurbished_furniture:birch_table \ - create:schematic_table \ meadow:table meadow:stone_table \ - vinery:dark_cherry_table \ - another_furniture:oak_table another_furniture:spruce_table another_furniture:birch_table another_furniture:jungle_table another_furniture:acacia_table another_furniture:dark_oak_table another_furniture:mangrove_table another_furniture:cherry_table another_furniture:bamboo_table another_furniture:crimson_table another_furniture:warped_table \ refurbished_furniture:oak_table refurbished_furniture:spruce_table refurbished_furniture:birch_table refurbished_furniture:jungle_table refurbished_furniture:acacia_table refurbished_furniture:dark_oak_table refurbished_furniture:mangrove_table refurbished_furniture:cherry_table refurbished_furniture:bamboo_table refurbished_furniture:crimson_table refurbished_furniture:warped_table \ - valhelsia_furniture:acacia_table valhelsia_furniture:bamboo_table valhelsia_furniture:birch_table valhelsia_furniture:cherry_table valhelsia_furniture:crimson_table valhelsia_furniture:dark_oak_table valhelsia_furniture:jungle_table valhelsia_furniture:mangrove_table valhelsia_furniture:oak_table valhelsia_furniture:spruce_table valhelsia_furniture:warped_table valhelsia_furniture:black_acacia_table valhelsia_furniture:blue_acacia_table valhelsia_furniture:brown_acacia_table valhelsia_furniture:cyan_acacia_table valhelsia_furniture:gray_acacia_table valhelsia_furniture:green_acacia_table valhelsia_furniture:light_blue_acacia_table valhelsia_furniture:light_gray_acacia_table valhelsia_furniture:lime_acacia_table valhelsia_furniture:magenta_acacia_table valhelsia_furniture:orange_acacia_table valhelsia_furniture:pink_acacia_table valhelsia_furniture:purple_acacia_table valhelsia_furniture:red_acacia_table valhelsia_furniture:white_acacia_table valhelsia_furniture:yellow_acacia_table valhelsia_furniture:black_bamboo_table valhelsia_furniture:blue_bamboo_table valhelsia_furniture:brown_bamboo_table valhelsia_furniture:cyan_bamboo_table valhelsia_furniture:gray_bamboo_table valhelsia_furniture:green_bamboo_table valhelsia_furniture:light_blue_bamboo_table valhelsia_furniture:light_gray_bamboo_table valhelsia_furniture:lime_bamboo_table valhelsia_furniture:magenta_bamboo_table valhelsia_furniture:orange_bamboo_table valhelsia_furniture:pink_bamboo_table valhelsia_furniture:purple_bamboo_table valhelsia_furniture:red_bamboo_table valhelsia_furniture:white_bamboo_table valhelsia_furniture:yellow_bamboo_table valhelsia_furniture:black_birch_table valhelsia_furniture:blue_birch_table valhelsia_furniture:brown_birch_table valhelsia_furniture:cyan_birch_table valhelsia_furniture:gray_birch_table valhelsia_furniture:green_birch_table valhelsia_furniture:light_blue_birch_table valhelsia_furniture:light_gray_birch_table valhelsia_furniture:lime_birch_table valhelsia_furniture:magenta_birch_table valhelsia_furniture:orange_birch_table valhelsia_furniture:pink_birch_table valhelsia_furniture:purple_birch_table valhelsia_furniture:red_birch_table valhelsia_furniture:white_birch_table valhelsia_furniture:yellow_birch_table valhelsia_furniture:black_cherry_table valhelsia_furniture:blue_cherry_table valhelsia_furniture:brown_cherry_table valhelsia_furniture:cyan_cherry_table valhelsia_furniture:gray_cherry_table valhelsia_furniture:green_cherry_table valhelsia_furniture:light_blue_cherry_table valhelsia_furniture:light_gray_cherry_table valhelsia_furniture:lime_cherry_table valhelsia_furniture:magenta_cherry_table valhelsia_furniture:orange_cherry_table valhelsia_furniture:pink_cherry_table valhelsia_furniture:purple_cherry_table valhelsia_furniture:red_cherry_table valhelsia_furniture:white_cherry_table valhelsia_furniture:yellow_cherry_table valhelsia_furniture:black_crimson_table valhelsia_furniture:blue_crimson_table valhelsia_furniture:brown_crimson_table valhelsia_furniture:cyan_crimson_table valhelsia_furniture:gray_crimson_table valhelsia_furniture:green_crimson_table valhelsia_furniture:light_blue_crimson_table valhelsia_furniture:light_gray_crimson_table valhelsia_furniture:lime_crimson_table valhelsia_furniture:magenta_crimson_table valhelsia_furniture:orange_crimson_table valhelsia_furniture:pink_crimson_table valhelsia_furniture:purple_crimson_table valhelsia_furniture:red_crimson_table valhelsia_furniture:white_crimson_table valhelsia_furniture:yellow_crimson_table valhelsia_furniture:black_dark_oak_table valhelsia_furniture:blue_dark_oak_table valhelsia_furniture:brown_dark_oak_table valhelsia_furniture:cyan_dark_oak_table valhelsia_furniture:gray_dark_oak_table valhelsia_furniture:green_dark_oak_table valhelsia_furniture:light_blue_dark_oak_table valhelsia_furniture:light_gray_dark_oak_table valhelsia_furniture:lime_dark_oak_table valhelsia_furniture:magenta_dark_oak_table valhelsia_furniture:orange_dark_oak_table valhelsia_furniture:pink_dark_oak_table valhelsia_furniture:purple_dark_oak_table valhelsia_furniture:red_dark_oak_table valhelsia_furniture:white_dark_oak_table valhelsia_furniture:yellow_dark_oak_table valhelsia_furniture:black_jungle_table valhelsia_furniture:blue_jungle_table valhelsia_furniture:brown_jungle_table valhelsia_furniture:cyan_jungle_table valhelsia_furniture:gray_jungle_table valhelsia_furniture:green_jungle_table valhelsia_furniture:light_blue_jungle_table valhelsia_furniture:light_gray_jungle_table valhelsia_furniture:lime_jungle_table valhelsia_furniture:magenta_jungle_table valhelsia_furniture:orange_jungle_table valhelsia_furniture:pink_jungle_table valhelsia_furniture:purple_jungle_table valhelsia_furniture:red_jungle_table valhelsia_furniture:white_jungle_table valhelsia_furniture:yellow_jungle_table valhelsia_furniture:black_mangrove_table valhelsia_furniture:blue_mangrove_table valhelsia_furniture:brown_mangrove_table valhelsia_furniture:cyan_mangrove_table valhelsia_furniture:gray_mangrove_table valhelsia_furniture:green_mangrove_table valhelsia_furniture:light_blue_mangrove_table valhelsia_furniture:light_gray_mangrove_table valhelsia_furniture:lime_mangrove_table valhelsia_furniture:magenta_mangrove_table valhelsia_furniture:orange_mangrove_table valhelsia_furniture:pink_mangrove_table valhelsia_furniture:purple_mangrove_table valhelsia_furniture:red_mangrove_table valhelsia_furniture:white_mangrove_table valhelsia_furniture:yellow_mangrove_table valhelsia_furniture:black_oak_table valhelsia_furniture:blue_oak_table valhelsia_furniture:brown_oak_table valhelsia_furniture:cyan_oak_table valhelsia_furniture:gray_oak_table valhelsia_furniture:green_oak_table valhelsia_furniture:light_blue_oak_table valhelsia_furniture:light_gray_oak_table valhelsia_furniture:lime_oak_table valhelsia_furniture:magenta_oak_table valhelsia_furniture:orange_oak_table valhelsia_furniture:pink_oak_table valhelsia_furniture:purple_oak_table valhelsia_furniture:red_oak_table valhelsia_furniture:white_oak_table valhelsia_furniture:yellow_oak_table valhelsia_furniture:black_spruce_table valhelsia_furniture:blue_spruce_table valhelsia_furniture:brown_spruce_table valhelsia_furniture:cyan_spruce_table valhelsia_furniture:gray_spruce_table valhelsia_furniture:green_spruce_table valhelsia_furniture:light_blue_spruce_table valhelsia_furniture:light_gray_spruce_table valhelsia_furniture:lime_spruce_table valhelsia_furniture:magenta_spruce_table valhelsia_furniture:orange_spruce_table valhelsia_furniture:pink_spruce_table valhelsia_furniture:purple_spruce_table valhelsia_furniture:red_spruce_table valhelsia_furniture:white_spruce_table valhelsia_furniture:yellow_spruce_table valhelsia_furniture:black_warped_table valhelsia_furniture:blue_warped_table valhelsia_furniture:brown_warped_table valhelsia_furniture:cyan_warped_table valhelsia_furniture:gray_warped_table valhelsia_furniture:green_warped_table valhelsia_furniture:light_blue_warped_table valhelsia_furniture:light_gray_warped_table valhelsia_furniture:lime_warped_table valhelsia_furniture:magenta_warped_table valhelsia_furniture:orange_warped_table valhelsia_furniture:pink_warped_table valhelsia_furniture:purple_warped_table valhelsia_furniture:red_warped_table valhelsia_furniture:white_warped_table valhelsia_furniture:yellow_warped_table + valhelsia_furniture:acacia_table valhelsia_furniture:bamboo_table valhelsia_furniture:birch_table valhelsia_furniture:cherry_table valhelsia_furniture:crimson_table valhelsia_furniture:dark_oak_table valhelsia_furniture:jungle_table valhelsia_furniture:mangrove_table valhelsia_furniture:oak_table valhelsia_furniture:spruce_table valhelsia_furniture:warped_table valhelsia_furniture:black_acacia_table valhelsia_furniture:blue_acacia_table valhelsia_furniture:brown_acacia_table valhelsia_furniture:cyan_acacia_table valhelsia_furniture:gray_acacia_table valhelsia_furniture:green_acacia_table valhelsia_furniture:light_blue_acacia_table valhelsia_furniture:light_gray_acacia_table valhelsia_furniture:lime_acacia_table valhelsia_furniture:magenta_acacia_table valhelsia_furniture:orange_acacia_table valhelsia_furniture:pink_acacia_table valhelsia_furniture:purple_acacia_table valhelsia_furniture:red_acacia_table valhelsia_furniture:white_acacia_table valhelsia_furniture:yellow_acacia_table valhelsia_furniture:black_bamboo_table valhelsia_furniture:blue_bamboo_table valhelsia_furniture:brown_bamboo_table valhelsia_furniture:cyan_bamboo_table valhelsia_furniture:gray_bamboo_table valhelsia_furniture:green_bamboo_table valhelsia_furniture:light_blue_bamboo_table valhelsia_furniture:light_gray_bamboo_table valhelsia_furniture:lime_bamboo_table valhelsia_furniture:magenta_bamboo_table valhelsia_furniture:orange_bamboo_table valhelsia_furniture:pink_bamboo_table valhelsia_furniture:purple_bamboo_table valhelsia_furniture:red_bamboo_table valhelsia_furniture:white_bamboo_table valhelsia_furniture:yellow_bamboo_table valhelsia_furniture:black_birch_table valhelsia_furniture:blue_birch_table valhelsia_furniture:brown_birch_table valhelsia_furniture:cyan_birch_table valhelsia_furniture:gray_birch_table valhelsia_furniture:green_birch_table valhelsia_furniture:light_blue_birch_table valhelsia_furniture:light_gray_birch_table valhelsia_furniture:lime_birch_table valhelsia_furniture:magenta_birch_table valhelsia_furniture:orange_birch_table valhelsia_furniture:pink_birch_table valhelsia_furniture:purple_birch_table valhelsia_furniture:red_birch_table valhelsia_furniture:white_birch_table valhelsia_furniture:yellow_birch_table valhelsia_furniture:black_cherry_table valhelsia_furniture:blue_cherry_table valhelsia_furniture:brown_cherry_table valhelsia_furniture:cyan_cherry_table valhelsia_furniture:gray_cherry_table valhelsia_furniture:green_cherry_table valhelsia_furniture:light_blue_cherry_table valhelsia_furniture:light_gray_cherry_table valhelsia_furniture:lime_cherry_table valhelsia_furniture:magenta_cherry_table valhelsia_furniture:orange_cherry_table valhelsia_furniture:pink_cherry_table valhelsia_furniture:purple_cherry_table valhelsia_furniture:red_cherry_table valhelsia_furniture:white_cherry_table valhelsia_furniture:yellow_cherry_table valhelsia_furniture:black_crimson_table valhelsia_furniture:blue_crimson_table valhelsia_furniture:brown_crimson_table valhelsia_furniture:cyan_crimson_table valhelsia_furniture:gray_crimson_table valhelsia_furniture:green_crimson_table valhelsia_furniture:light_blue_crimson_table valhelsia_furniture:light_gray_crimson_table valhelsia_furniture:lime_crimson_table valhelsia_furniture:magenta_crimson_table valhelsia_furniture:orange_crimson_table valhelsia_furniture:pink_crimson_table valhelsia_furniture:purple_crimson_table valhelsia_furniture:red_crimson_table valhelsia_furniture:white_crimson_table valhelsia_furniture:yellow_crimson_table valhelsia_furniture:black_dark_oak_table valhelsia_furniture:blue_dark_oak_table valhelsia_furniture:brown_dark_oak_table valhelsia_furniture:cyan_dark_oak_table valhelsia_furniture:gray_dark_oak_table valhelsia_furniture:green_dark_oak_table valhelsia_furniture:light_blue_dark_oak_table valhelsia_furniture:light_gray_dark_oak_table valhelsia_furniture:lime_dark_oak_table valhelsia_furniture:magenta_dark_oak_table valhelsia_furniture:orange_dark_oak_table valhelsia_furniture:pink_dark_oak_table valhelsia_furniture:purple_dark_oak_table valhelsia_furniture:red_dark_oak_table valhelsia_furniture:white_dark_oak_table valhelsia_furniture:yellow_dark_oak_table valhelsia_furniture:black_jungle_table valhelsia_furniture:blue_jungle_table valhelsia_furniture:brown_jungle_table valhelsia_furniture:cyan_jungle_table valhelsia_furniture:gray_jungle_table valhelsia_furniture:green_jungle_table valhelsia_furniture:light_blue_jungle_table valhelsia_furniture:light_gray_jungle_table valhelsia_furniture:lime_jungle_table valhelsia_furniture:magenta_jungle_table valhelsia_furniture:orange_jungle_table valhelsia_furniture:pink_jungle_table valhelsia_furniture:purple_jungle_table valhelsia_furniture:red_jungle_table valhelsia_furniture:white_jungle_table valhelsia_furniture:yellow_jungle_table valhelsia_furniture:black_mangrove_table valhelsia_furniture:blue_mangrove_table valhelsia_furniture:brown_mangrove_table valhelsia_furniture:cyan_mangrove_table valhelsia_furniture:gray_mangrove_table valhelsia_furniture:green_mangrove_table valhelsia_furniture:light_blue_mangrove_table valhelsia_furniture:light_gray_mangrove_table valhelsia_furniture:lime_mangrove_table valhelsia_furniture:magenta_mangrove_table valhelsia_furniture:orange_mangrove_table valhelsia_furniture:pink_mangrove_table valhelsia_furniture:purple_mangrove_table valhelsia_furniture:red_mangrove_table valhelsia_furniture:white_mangrove_table valhelsia_furniture:yellow_mangrove_table valhelsia_furniture:black_oak_table valhelsia_furniture:blue_oak_table valhelsia_furniture:brown_oak_table valhelsia_furniture:cyan_oak_table valhelsia_furniture:gray_oak_table valhelsia_furniture:green_oak_table valhelsia_furniture:light_blue_oak_table valhelsia_furniture:light_gray_oak_table valhelsia_furniture:lime_oak_table valhelsia_furniture:magenta_oak_table valhelsia_furniture:orange_oak_table valhelsia_furniture:pink_oak_table valhelsia_furniture:purple_oak_table valhelsia_furniture:red_oak_table valhelsia_furniture:white_oak_table valhelsia_furniture:yellow_oak_table valhelsia_furniture:black_spruce_table valhelsia_furniture:blue_spruce_table valhelsia_furniture:brown_spruce_table valhelsia_furniture:cyan_spruce_table valhelsia_furniture:gray_spruce_table valhelsia_furniture:green_spruce_table valhelsia_furniture:light_blue_spruce_table valhelsia_furniture:light_gray_spruce_table valhelsia_furniture:lime_spruce_table valhelsia_furniture:magenta_spruce_table valhelsia_furniture:orange_spruce_table valhelsia_furniture:pink_spruce_table valhelsia_furniture:purple_spruce_table valhelsia_furniture:red_spruce_table valhelsia_furniture:white_spruce_table valhelsia_furniture:yellow_spruce_table valhelsia_furniture:black_warped_table valhelsia_furniture:blue_warped_table valhelsia_furniture:brown_warped_table valhelsia_furniture:cyan_warped_table valhelsia_furniture:gray_warped_table valhelsia_furniture:green_warped_table valhelsia_furniture:light_blue_warped_table valhelsia_furniture:light_gray_warped_table valhelsia_furniture:lime_warped_table valhelsia_furniture:magenta_warped_table valhelsia_furniture:orange_warped_table valhelsia_furniture:pink_warped_table valhelsia_furniture:purple_warped_table valhelsia_furniture:red_warped_table valhelsia_furniture:white_warped_table valhelsia_furniture:yellow_warped_table \ + vinery:dark_cherry_table # Blocks that occlude 75% of light block.53=bell \ @@ -68,56 +68,56 @@ block.53=bell \ ## add a newline to organize for modded blocks block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:pink_petals minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:icy_iris biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:hair biomesoplenty:dune_grass \ - natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:helvola \ farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ - vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush \ herbalbrews:wild_coffee_plant herbalbrews:wild_yerba_mate_plant herbalbrews:wild_rooibos_plant herbalbrews:hibiscus herbalbrews:lavender herbalbrews:coffee_plant herbalbrews:yerba_mate_plant herbalbrews:rooibos_plant \ - vegandelight:wild_soybean + natures_spirit:tall_frigid_grass natures_spirit:frigid_grass natures_spirit:tall_scorched_grass natures_spirit:scorched_grass natures_spirit:tall_beach_grass natures_spirit:beach_grass natures_spirit:tall_sedge_grass natures_spirit:sedge_grass natures_spirit:large_flaxen_fern natures_spirit:flaxen_fern natures_spirit:tall_oat_grass natures_spirit:oat_grass natures_spirit:lush_fern natures_spirit:tall_melic_grass natures_spirit:melic_grass natures_spirit:green_bearberries natures_spirit:red_bearberries natures_spirit:purple_bearberries natures_spirit:green_bitter_sprouts natures_spirit:red_bitter_sprouts natures_spirit:purple_bitter_sprouts natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:ornate_wall_succulent natures_spirit:drowsy_wall_succulent natures_spirit:aureate_wall_succulent natures_spirit:sage_wall_succulent natures_spirit:foamy_wall_succulent natures_spirit:imperial_wall_succulent natures_spirit:regal_wall_succulent natures_spirit:ornate_succulent natures_spirit:drowsy_succulent natures_spirit:aureate_succulent natures_spirit:sage_succulent natures_spirit:foamy_succulent natures_spirit:imperial_succulent natures_spirit:regal_succulent natures_spirit:lavender natures_spirit:bleeding_heart natures_spirit:blue_bulbs natures_spirit:carnation natures_spirit:snapdragon natures_spirit:foxglove natures_spirit:marigold natures_spirit:bluebell natures_spirit:tiger_lily natures_spirit:purple_wildflower natures_spirit:yellow_wildflower natures_spirit:red_heather natures_spirit:white_heather natures_spirit:purple_heather natures_spirit:anemone natures_spirit:dwarf_blossoms natures_spirit:protea natures_spirit:hibiscus natures_spirit:blue_iris natures_spirit:black_iris natures_spirit:ruby_blossoms natures_spirit:silverbush natures_spirit:helvola \ + vegandelight:wild_soybean \ + vinery:taiga_grape_bush_white vinery:taiga_grape_bush_red vinery:savanna_grape_bush_white vinery:savanna_grape_bush_red vinery:white_grape_bush vinery:red_grape_bush ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ - conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom \ - biomesoplenty:bush + biomesoplenty:bush \ + conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom ## air waving ## add a newline to organize for modded blocks block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ - westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves \ - conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ - biomesoplenty:redwood_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:cypress_leaves biomesoplenty:snowblossom_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:fir_leaves biomesoplenty:pine_leaves biomesoplenty:red_maple_leaves biomesoplenty:orange_maple_leaves biomesoplenty:yellow_maple_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:empyreal_leaves \ - natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ beachparty:palm_leaves \ + biomesoplenty:redwood_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:cypress_leaves biomesoplenty:snowblossom_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:fir_leaves biomesoplenty:pine_leaves biomesoplenty:red_maple_leaves biomesoplenty:orange_maple_leaves biomesoplenty:yellow_maple_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:empyreal_leaves \ + conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ + garnished:walnut_leaves garnished:almond_leaves garnished:pecan_leaves garnished:pistachio_leaves garnished:macadamia_leaves garnished:peanut_leaves garnished:hazelnut_leaves garnished:chestnut_leaves garnished:nut_leaves garnished:unassigned_nut_leaves garnished:cashew_leaves \ + natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ vinery:dark_cherry_leaves vinery:apple_leaves \ - garnished:walnut_leaves garnished:almond_leaves garnished:pecan_leaves garnished:pistachio_leaves garnished:macadamia_leaves garnished:peanut_leaves garnished:hazelnut_leaves garnished:chestnut_leaves garnished:nut_leaves garnished:unassigned_nut_leaves garnished:cashew_leaves + westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves ####### ----- blocks with SSS ----- ####### ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ - westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble biomesoplenty:spanish_moss biomesoplenty:willow_vine \ - natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:red_moss_carpet \ - vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ - nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ - herbalbrews:hibiscus_tea_block \ - beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ - garnished:sorrowful_lichen garnished:anniversary_cake \ - fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff \ aquamirae:elodea \ - oceansdelight:guardian_soup + beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ + biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble biomesoplenty:spanish_moss biomesoplenty:willow_vine \ + fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff \ + garnished:sorrowful_lichen garnished:anniversary_cake \ + herbalbrews:hibiscus_tea_block \ + natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:red_moss_carpet \ + nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ + oceansdelight:guardian_soup \ + vinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \ + westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass ## weak sss block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ - biomesoplenty:toadstool \ - natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ - herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ - beachparty:seashell_block beachparty:beach_parasol \ - farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ - ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ - create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ - fd:birthday_cake \ aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ + beachparty:seashell_block beachparty:beach_parasol \ + biomesoplenty:toadstool \ + create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ + ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ + farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ + fd:birthday_cake \ + herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ + natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ savethehotbar:sack savethehotbar:skeleton_head_grave savethehotbar:zombie_head_grave ## weak sss @@ -152,8 +152,8 @@ block.106=candle:candles=1:lit=true \ supplementaries:candle_holder:candles=1:lit=true block.107=candle:candles=2:lit=true \ - supplementaries:candle_holder:candles=2:lit=true \ - humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true + humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true \ + supplementaries:candle_holder:candles=2:lit=true block.108=candle:candles=3:lit=true \ supplementaries:candle_holder:candles=3:lit=true @@ -165,8 +165,8 @@ block.110=black_candle:candles=1:lit=true \ supplementaries:candle_holder_black:candles=1:lit=true block.111=black_candle:candles=2:lit=true \ - supplementaries:candle_holder_black:candles=2:lit=true \ - humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true + humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true \ + supplementaries:candle_holder_black:candles=2:lit=true block.112=black_candle:candles=3:lit=true \ supplementaries:candle_holder_black:candles=3:lit=true @@ -178,8 +178,8 @@ block.114=blue_candle:candles=1:lit=true \ supplementaries:candle_holder_blue:candles=1:lit=true block.115=blue_candle:candles=2:lit=true \ - supplementaries:candle_holder_blue:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_blue:lit=true humility-afm:candlestick_exposed_copper_candle_blue:lit=true humility-afm:candlestick_gold_candle_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=true humility-afm:candlestick_weathered_copper_candle_blue:lit=true + humility-afm:candlestick_copper_candle_blue:lit=true humility-afm:candlestick_exposed_copper_candle_blue:lit=true humility-afm:candlestick_gold_candle_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=true humility-afm:candlestick_weathered_copper_candle_blue:lit=true \ + supplementaries:candle_holder_blue:candles=2:lit=true block.116=blue_candle:candles=3:lit=true \ supplementaries:candle_holder_blue:candles=3:lit=true @@ -191,8 +191,8 @@ block.118=brown_candle:candles=1:lit=true \ supplementaries:candle_holder_brown:candles=1:lit=true block.119=brown_candle:candles=2:lit=true \ - supplementaries:candle_holder_brown:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_brown:lit=true humility-afm:candlestick_exposed_copper_candle_brown:lit=true humility-afm:candlestick_gold_candle_brown:lit=true humility-afm:candlestick_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=true humility-afm:candlestick_weathered_copper_candle_brown:lit=true + humility-afm:candlestick_copper_candle_brown:lit=true humility-afm:candlestick_exposed_copper_candle_brown:lit=true humility-afm:candlestick_gold_candle_brown:lit=true humility-afm:candlestick_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=true humility-afm:candlestick_weathered_copper_candle_brown:lit=true \ + supplementaries:candle_holder_brown:candles=2:lit=true block.120=brown_candle:candles=3:lit=true \ supplementaries:candle_holder_brown:candles=3:lit=true @@ -204,8 +204,8 @@ block.122=cyan_candle:candles=1:lit=true \ supplementaries:candle_holder_cyan:candles=1:lit=true block.123=cyan_candle:candles=2:lit=true \ - supplementaries:candle_holder_cyan:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_cyan:lit=true humility-afm:candlestick_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_gold_candle_cyan:lit=true humility-afm:candlestick_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_weathered_copper_candle_cyan:lit=true + humility-afm:candlestick_copper_candle_cyan:lit=true humility-afm:candlestick_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_gold_candle_cyan:lit=true humility-afm:candlestick_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_weathered_copper_candle_cyan:lit=true \ + supplementaries:candle_holder_cyan:candles=2:lit=true block.124=cyan_candle:candles=3:lit=true \ supplementaries:candle_holder_cyan:candles=3:lit=true @@ -217,8 +217,8 @@ block.126=gray_candle:candles=1:lit=true \ supplementaries:candle_holder_gray:candles=1:lit=true block.127=gray_candle:candles=2:lit=true \ - supplementaries:candle_holder_gray:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_gray:lit=true humility-afm:candlestick_exposed_copper_candle_gray:lit=true humility-afm:candlestick_gold_candle_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=true humility-afm:candlestick_weathered_copper_candle_gray:lit=true + humility-afm:candlestick_copper_candle_gray:lit=true humility-afm:candlestick_exposed_copper_candle_gray:lit=true humility-afm:candlestick_gold_candle_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=true humility-afm:candlestick_weathered_copper_candle_gray:lit=true \ + supplementaries:candle_holder_gray:candles=2:lit=true block.128=gray_candle:candles=2:lit=true \ supplementaries:candle_holder_gray:candles=3:lit=true @@ -230,8 +230,8 @@ block.130=green_candle:candles=1:lit=true \ supplementaries:candle_holder_green:candles=1:lit=true block.131=green_candle:candles=2:lit=true \ - supplementaries:candle_holder_green:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_green:lit=true humility-afm:candlestick_exposed_copper_candle_green:lit=true humility-afm:candlestick_gold_candle_green:lit=true humility-afm:candlestick_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_copper_candle_green:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=true humility-afm:candlestick_weathered_copper_candle_green:lit=true + humility-afm:candlestick_copper_candle_green:lit=true humility-afm:candlestick_exposed_copper_candle_green:lit=true humility-afm:candlestick_gold_candle_green:lit=true humility-afm:candlestick_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_copper_candle_green:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=true humility-afm:candlestick_weathered_copper_candle_green:lit=true \ + supplementaries:candle_holder_green:candles=2:lit=true block.132=green_candle:candles=3:lit=true \ supplementaries:candle_holder_green:candles=3:lit=true @@ -243,8 +243,8 @@ block.134=light_blue_candle:candles=1:lit=true \ supplementaries:candle_holder_light_blue:candles=1:lit=true block.135=light_blue_candle:candles=2:lit=true \ - supplementaries:candle_holder_light_blue:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_light_blue:lit=true humility-afm:candlestick_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_gold_candle_light_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_weathered_copper_candle_light_blue:lit=true + humility-afm:candlestick_copper_candle_light_blue:lit=true humility-afm:candlestick_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_gold_candle_light_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_weathered_copper_candle_light_blue:lit=true \ + supplementaries:candle_holder_light_blue:candles=2:lit=true block.136=light_blue_candle:candles=3:lit=true \ supplementaries:candle_holder_light_blue:candles=3:lit=true @@ -256,8 +256,8 @@ block.138=light_gray_candle:candles=1:lit=true \ supplementaries:candle_holder_light_gray:candles=1:lit=true block.139=light_gray_candle:candles=2:lit=true \ - supplementaries:candle_holder_light_gray:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_light_gray:lit=true humility-afm:candlestick_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_gold_candle_light_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_weathered_copper_candle_light_gray:lit=true + humility-afm:candlestick_copper_candle_light_gray:lit=true humility-afm:candlestick_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_gold_candle_light_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_weathered_copper_candle_light_gray:lit=true \ + supplementaries:candle_holder_light_gray:candles=2:lit=true block.140=light_gray_candle:candles=3:lit=true \ supplementaries:candle_holder_light_gray:candles=3:lit=true @@ -269,8 +269,8 @@ block.142=lime_candle:candles=1:lit=true \ supplementaries:candle_holder_lime:candles=1:lit=true block.143=lime_candle:candles=2:lit=true \ - supplementaries:candle_holder_lime:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_lime:lit=true humility-afm:candlestick_exposed_copper_candle_lime:lit=true humility-afm:candlestick_gold_candle_lime:lit=true humility-afm:candlestick_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=true humility-afm:candlestick_weathered_copper_candle_lime:lit=true + humility-afm:candlestick_copper_candle_lime:lit=true humility-afm:candlestick_exposed_copper_candle_lime:lit=true humility-afm:candlestick_gold_candle_lime:lit=true humility-afm:candlestick_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=true humility-afm:candlestick_weathered_copper_candle_lime:lit=true \ + supplementaries:candle_holder_lime:candles=2:lit=true block.144=lime_candle:candles=3:lit=true \ supplementaries:candle_holder_lime:candles=3:lit=true @@ -282,8 +282,8 @@ block.146=magenta_candle:candles=1:lit=true \ supplementaries:candle_holder_magenta:candles=1:lit=true block.147=magenta_candle:candles=2:lit=true \ - supplementaries:candle_holder_magenta:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_magenta:lit=true humility-afm:candlestick_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_gold_candle_magenta:lit=true humility-afm:candlestick_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_weathered_copper_candle_magenta:lit=true + humility-afm:candlestick_copper_candle_magenta:lit=true humility-afm:candlestick_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_gold_candle_magenta:lit=true humility-afm:candlestick_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_weathered_copper_candle_magenta:lit=true \ + supplementaries:candle_holder_magenta:candles=2:lit=true block.148=magenta_candle:candles=3:lit=true \ supplementaries:candle_holder_magenta:candles=3:lit=true @@ -295,8 +295,8 @@ block.150=orange_candle:candles=1:lit=true \ supplementaries:candle_holder_orange:candles=1:lit=true block.151=orange_candle:candles=2:lit=true \ - supplementaries:candle_holder_orange:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_orange:lit=true humility-afm:candlestick_exposed_copper_candle_orange:lit=true humility-afm:candlestick_gold_candle_orange:lit=true humility-afm:candlestick_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=true humility-afm:candlestick_weathered_copper_candle_orange:lit=true + humility-afm:candlestick_copper_candle_orange:lit=true humility-afm:candlestick_exposed_copper_candle_orange:lit=true humility-afm:candlestick_gold_candle_orange:lit=true humility-afm:candlestick_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=true humility-afm:candlestick_weathered_copper_candle_orange:lit=true \ + supplementaries:candle_holder_orange:candles=2:lit=true block.152=orange_candle:candles=3:lit=true \ supplementaries:candle_holder_orange:candles=3:lit=true @@ -308,8 +308,8 @@ block.154=pink_candle:candles=1:lit=true \ supplementaries:candle_holder_pink:candles=1:lit=true block.155=pink_candle:candles=2:lit=true \ - supplementaries:candle_holder_pink:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_pink:lit=true humility-afm:candlestick_exposed_copper_candle_pink:lit=true humility-afm:candlestick_gold_candle_pink:lit=true humility-afm:candlestick_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=true humility-afm:candlestick_weathered_copper_candle_pink:lit=true + humility-afm:candlestick_copper_candle_pink:lit=true humility-afm:candlestick_exposed_copper_candle_pink:lit=true humility-afm:candlestick_gold_candle_pink:lit=true humility-afm:candlestick_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=true humility-afm:candlestick_weathered_copper_candle_pink:lit=true \ + supplementaries:candle_holder_pink:candles=2:lit=true block.156=pink_candle:candles=3:lit=true \ supplementaries:candle_holder_pink:candles=3:lit=true @@ -321,8 +321,8 @@ block.158=purple_candle:candles=1:lit=true \ supplementaries:candle_holder_purple:candles=1:lit=true block.159=purple_candle:candles=2:lit=true \ - supplementaries:candle_holder_purple:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_purple:lit=true humility-afm:candlestick_exposed_copper_candle_purple:lit=true humility-afm:candlestick_gold_candle_purple:lit=true humility-afm:candlestick_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=true humility-afm:candlestick_weathered_copper_candle_purple:lit=true + humility-afm:candlestick_copper_candle_purple:lit=true humility-afm:candlestick_exposed_copper_candle_purple:lit=true humility-afm:candlestick_gold_candle_purple:lit=true humility-afm:candlestick_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=true humility-afm:candlestick_weathered_copper_candle_purple:lit=true \ + supplementaries:candle_holder_purple:candles=2:lit=true block.160=purple_candle:candles=3:lit=true \ supplementaries:candle_holder_purple:candles=3:lit=true @@ -334,8 +334,8 @@ block.162=red_candle:candles=1:lit=true \ supplementaries:candle_holder_red:candles=1:lit=true block.163=red_candle:candles=2:lit=true \ - supplementaries:candle_holder_red:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_red:lit=true humility-afm:candlestick_exposed_copper_candle_red:lit=true humility-afm:candlestick_gold_candle_red:lit=true humility-afm:candlestick_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_copper_candle_red:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=true humility-afm:candlestick_weathered_copper_candle_red:lit=true + humility-afm:candlestick_copper_candle_red:lit=true humility-afm:candlestick_exposed_copper_candle_red:lit=true humility-afm:candlestick_gold_candle_red:lit=true humility-afm:candlestick_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_copper_candle_red:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=true humility-afm:candlestick_weathered_copper_candle_red:lit=true \ + supplementaries:candle_holder_red:candles=2:lit=true block.164=red_candle:candles=3:lit=true \ supplementaries:candle_holder_red:candles=3:lit=true @@ -347,8 +347,8 @@ block.166=white_candle:candles=1:lit=true \ supplementaries:candle_holder_white:candles=1:lit=true block.167=white_candle:candles=2:lit=true \ - supplementaries:candle_holder_white:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true + humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true \ + supplementaries:candle_holder_white:candles=2:lit=true block.168=white_candle:candles=3:lit=true \ supplementaries:candle_holder_white:candles=3:lit=true @@ -360,8 +360,8 @@ block.170=yellow_candle:candles=1:lit=true \ supplementaries:candle_holder_yellow:candles=1:lit=true block.171=yellow_candle:candles=2:lit=true \ - supplementaries:candle_holder_yellow:candles=2:lit=true \ - humility-afm:candlestick_copper_candle_yellow:lit=true humility-afm:candlestick_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_gold_candle_yellow:lit=true humility-afm:candlestick_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=true humility-afm:candlestick_weathered_copper_candle_yellow:lit=true + humility-afm:candlestick_copper_candle_yellow:lit=true humility-afm:candlestick_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_gold_candle_yellow:lit=true humility-afm:candlestick_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=true humility-afm:candlestick_weathered_copper_candle_yellow:lit=true \ + supplementaries:candle_holder_yellow:candles=2:lit=true block.172=yellow_candle:candles=3:lit=true \ supplementaries:candle_holder_yellow:candles=3:lit=true @@ -373,8 +373,8 @@ block.174=candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle: supplementaries:candle_holder:candles=1:lit=true supplementaries:candle_holder_black:candles=1:lit=true supplementaries:candle_holder_blue:candles=1:lit=true supplementaries:candle_holder_brown:candles=1:lit=true supplementaries:candle_holder_cyan:candles=1:lit=true supplementaries:candle_holder_gray:candles=1:lit=true supplementaries:candle_holder_green:candles=1:lit=true supplementaries:candle_holder_light_blue:candles=1:lit=true supplementaries:candle_holder_light_gray:candles=1:lit=true supplementaries:candle_holder_lime:candles=1:lit=true supplementaries:candle_holder_magenta:candles=1:lit=true supplementaries:candle_holder_orange:candles=1:lit=true supplementaries:candle_holder_pink:candles=1:lit=true supplementaries:candle_holder_purple:candles=1:lit=true supplementaries:candle_holder_red:candles=1:lit=true supplementaries:candle_holder_white:candles=1:lit=true supplementaries:candle_holder_yellow:candles=1:lit=true block.175=candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true \ - supplementaries:candle_holder:candles=2:lit=true supplementaries:candle_holder_black:candles=2:lit=true supplementaries:candle_holder_blue:candles=2:lit=true supplementaries:candle_holder_brown:candles=2:lit=true supplementaries:candle_holder_cyan:candles=2:lit=true supplementaries:candle_holder_gray:candles=2:lit=true supplementaries:candle_holder_green:candles=2:lit=true supplementaries:candle_holder_light_blue:candles=2:lit=true supplementaries:candle_holder_light_gray:candles=2:lit=true supplementaries:candle_holder_lime:candles=2:lit=true supplementaries:candle_holder_magenta:candles=2:lit=true supplementaries:candle_holder_orange:candles=2:lit=true supplementaries:candle_holder_pink:candles=2:lit=true supplementaries:candle_holder_purple:candles=2:lit=true supplementaries:candle_holder_red:candles=2:lit=true supplementaries:candle_holder_white:candles=2:lit=true supplementaries:candle_holder_yellow:candles=2:lit=true \ - humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_copper_candle_black:lit=true humility-afm:candlestick_copper_candle_blue:lit=true humility-afm:candlestick_copper_candle_brown:lit=true humility-afm:candlestick_copper_candle_cyan:lit=true humility-afm:candlestick_copper_candle_gray:lit=true humility-afm:candlestick_copper_candle_green:lit=true humility-afm:candlestick_copper_candle_light_blue:lit=true humility-afm:candlestick_copper_candle_light_gray:lit=true humility-afm:candlestick_copper_candle_lime:lit=true humility-afm:candlestick_copper_candle_magenta:lit=true humility-afm:candlestick_copper_candle_orange:lit=true humility-afm:candlestick_copper_candle_pink:lit=true humility-afm:candlestick_copper_candle_purple:lit=true humility-afm:candlestick_copper_candle_red:lit=true humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_copper_candle_yellow:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle_black:lit=true humility-afm:candlestick_exposed_copper_candle_blue:lit=true humility-afm:candlestick_exposed_copper_candle_brown:lit=true humility-afm:candlestick_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_exposed_copper_candle_gray:lit=true humility-afm:candlestick_exposed_copper_candle_green:lit=true humility-afm:candlestick_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_exposed_copper_candle_lime:lit=true humility-afm:candlestick_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_exposed_copper_candle_orange:lit=true humility-afm:candlestick_exposed_copper_candle_pink:lit=true humility-afm:candlestick_exposed_copper_candle_purple:lit=true humility-afm:candlestick_exposed_copper_candle_red:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_gold_candle_black:lit=true humility-afm:candlestick_gold_candle_blue:lit=true humility-afm:candlestick_gold_candle_brown:lit=true humility-afm:candlestick_gold_candle_cyan:lit=true humility-afm:candlestick_gold_candle_gray:lit=true humility-afm:candlestick_gold_candle_green:lit=true humility-afm:candlestick_gold_candle_light_blue:lit=true humility-afm:candlestick_gold_candle_light_gray:lit=true humility-afm:candlestick_gold_candle_lime:lit=true humility-afm:candlestick_gold_candle_magenta:lit=true humility-afm:candlestick_gold_candle_orange:lit=true humility-afm:candlestick_gold_candle_pink:lit=true humility-afm:candlestick_gold_candle_purple:lit=true humility-afm:candlestick_gold_candle_red:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_gold_candle_yellow:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_oxidized_copper_candle_black:lit=true humility-afm:candlestick_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_green:lit=true humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_oxidized_copper_candle_red:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle_black:lit=true humility-afm:candlestick_waxed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_copper_candle_green:lit=true humility-afm:candlestick_waxed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_copper_candle_red:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle_black:lit=true humility-afm:candlestick_weathered_copper_candle_blue:lit=true humility-afm:candlestick_weathered_copper_candle_brown:lit=true humility-afm:candlestick_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_weathered_copper_candle_gray:lit=true humility-afm:candlestick_weathered_copper_candle_green:lit=true humility-afm:candlestick_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_weathered_copper_candle_lime:lit=true humility-afm:candlestick_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_weathered_copper_candle_orange:lit=true humility-afm:candlestick_weathered_copper_candle_pink:lit=true humility-afm:candlestick_weathered_copper_candle_purple:lit=true humility-afm:candlestick_weathered_copper_candle_red:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_yellow:lit=true + humility-afm:candlestick_copper_candle:lit=true humility-afm:candlestick_copper_candle_black:lit=true humility-afm:candlestick_copper_candle_blue:lit=true humility-afm:candlestick_copper_candle_brown:lit=true humility-afm:candlestick_copper_candle_cyan:lit=true humility-afm:candlestick_copper_candle_gray:lit=true humility-afm:candlestick_copper_candle_green:lit=true humility-afm:candlestick_copper_candle_light_blue:lit=true humility-afm:candlestick_copper_candle_light_gray:lit=true humility-afm:candlestick_copper_candle_lime:lit=true humility-afm:candlestick_copper_candle_magenta:lit=true humility-afm:candlestick_copper_candle_orange:lit=true humility-afm:candlestick_copper_candle_pink:lit=true humility-afm:candlestick_copper_candle_purple:lit=true humility-afm:candlestick_copper_candle_red:lit=true humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_copper_candle_yellow:lit=true humility-afm:candlestick_exposed_copper_candle:lit=true humility-afm:candlestick_exposed_copper_candle_black:lit=true humility-afm:candlestick_exposed_copper_candle_blue:lit=true humility-afm:candlestick_exposed_copper_candle_brown:lit=true humility-afm:candlestick_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_exposed_copper_candle_gray:lit=true humility-afm:candlestick_exposed_copper_candle_green:lit=true humility-afm:candlestick_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_exposed_copper_candle_lime:lit=true humility-afm:candlestick_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_exposed_copper_candle_orange:lit=true humility-afm:candlestick_exposed_copper_candle_pink:lit=true humility-afm:candlestick_exposed_copper_candle_purple:lit=true humility-afm:candlestick_exposed_copper_candle_red:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_gold_candle:lit=true humility-afm:candlestick_gold_candle_black:lit=true humility-afm:candlestick_gold_candle_blue:lit=true humility-afm:candlestick_gold_candle_brown:lit=true humility-afm:candlestick_gold_candle_cyan:lit=true humility-afm:candlestick_gold_candle_gray:lit=true humility-afm:candlestick_gold_candle_green:lit=true humility-afm:candlestick_gold_candle_light_blue:lit=true humility-afm:candlestick_gold_candle_light_gray:lit=true humility-afm:candlestick_gold_candle_lime:lit=true humility-afm:candlestick_gold_candle_magenta:lit=true humility-afm:candlestick_gold_candle_orange:lit=true humility-afm:candlestick_gold_candle_pink:lit=true humility-afm:candlestick_gold_candle_purple:lit=true humility-afm:candlestick_gold_candle_red:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_gold_candle_yellow:lit=true humility-afm:candlestick_oxidized_copper_candle:lit=true humility-afm:candlestick_oxidized_copper_candle_black:lit=true humility-afm:candlestick_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_green:lit=true humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_oxidized_copper_candle_red:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_copper_candle:lit=true humility-afm:candlestick_waxed_copper_candle_black:lit=true humility-afm:candlestick_waxed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_copper_candle_green:lit=true humility-afm:candlestick_waxed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_copper_candle_red:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_exposed_copper_candle:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=true humility-afm:candlestick_waxed_weathered_copper_candle:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=true humility-afm:candlestick_weathered_copper_candle:lit=true humility-afm:candlestick_weathered_copper_candle_black:lit=true humility-afm:candlestick_weathered_copper_candle_blue:lit=true humility-afm:candlestick_weathered_copper_candle_brown:lit=true humility-afm:candlestick_weathered_copper_candle_cyan:lit=true humility-afm:candlestick_weathered_copper_candle_gray:lit=true humility-afm:candlestick_weathered_copper_candle_green:lit=true humility-afm:candlestick_weathered_copper_candle_light_blue:lit=true humility-afm:candlestick_weathered_copper_candle_light_gray:lit=true humility-afm:candlestick_weathered_copper_candle_lime:lit=true humility-afm:candlestick_weathered_copper_candle_magenta:lit=true humility-afm:candlestick_weathered_copper_candle_orange:lit=true humility-afm:candlestick_weathered_copper_candle_pink:lit=true humility-afm:candlestick_weathered_copper_candle_purple:lit=true humility-afm:candlestick_weathered_copper_candle_red:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_yellow:lit=true \ + supplementaries:candle_holder:candles=2:lit=true supplementaries:candle_holder_black:candles=2:lit=true supplementaries:candle_holder_blue:candles=2:lit=true supplementaries:candle_holder_brown:candles=2:lit=true supplementaries:candle_holder_cyan:candles=2:lit=true supplementaries:candle_holder_gray:candles=2:lit=true supplementaries:candle_holder_green:candles=2:lit=true supplementaries:candle_holder_light_blue:candles=2:lit=true supplementaries:candle_holder_light_gray:candles=2:lit=true supplementaries:candle_holder_lime:candles=2:lit=true supplementaries:candle_holder_magenta:candles=2:lit=true supplementaries:candle_holder_orange:candles=2:lit=true supplementaries:candle_holder_pink:candles=2:lit=true supplementaries:candle_holder_purple:candles=2:lit=true supplementaries:candle_holder_red:candles=2:lit=true supplementaries:candle_holder_white:candles=2:lit=true supplementaries:candle_holder_yellow:candles=2:lit=true block.176=candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true \ supplementaries:candle_holder:candles=3:lit=true supplementaries:candle_holder_black:candles=3:lit=true supplementaries:candle_holder_blue:candles=3:lit=true supplementaries:candle_holder_brown:candles=3:lit=true supplementaries:candle_holder_cyan:candles=3:lit=true supplementaries:candle_holder_gray:candles=3:lit=true supplementaries:candle_holder_green:candles=3:lit=true supplementaries:candle_holder_light_blue:candles=3:lit=true supplementaries:candle_holder_light_gray:candles=3:lit=true supplementaries:candle_holder_lime:candles=3:lit=true supplementaries:candle_holder_magenta:candles=3:lit=true supplementaries:candle_holder_orange:candles=3:lit=true supplementaries:candle_holder_pink:candles=3:lit=true supplementaries:candle_holder_purple:candles=3:lit=true supplementaries:candle_holder_red:candles=3:lit=true supplementaries:candle_holder_white:candles=3:lit=true supplementaries:candle_holder_yellow:candles=3:lit=true @@ -519,8 +519,8 @@ block.240=sea_pickle:waterlogged=true:pickles=3 block.241=sea_pickle:waterlogged=true:pickles=4 block.242=sea_lantern \ - mcwlights:sea_lantern_slab \ - humility-afm:jack_o_lantern_soul + humility-afm:jack_o_lantern_soul \ + mcwlights:sea_lantern_slab block.243=shroomlight \ mcwlights:shroomlight_slab @@ -532,82 +532,82 @@ block.245=soul_lantern \ mcwlights:soul_classic_street_lamp:lit=true:part=top mcwlights:soul_classic_street_lamp:lit=true:part=base mcwlights:soul_double_street_lamp:lit=true:part=top mcwlights:soul_double_street_lamp:lit=true:part=base block.246=soul_torch soul_wall_torch \ - supplementaries:sconce_soul supplementaries:sconce_wall_soul \ - mcwlights:soul_acacia_tiki_torch mcwlights:soul_bamboo_tiki_torch mcwlights:soul_birch_tiki_torch mcwlights:soul_cherry_tiki_torch mcwlights:soul_crimson_tiki_torch mcwlights:soul_dark_oak_tiki_torch mcwlights:soul_jungle_tiki_torch mcwlights:soul_mangrove_tiki_torch mcwlights:soul_oak_tiki_torch mcwlights:soul_spruce_tiki_torch mcwlights:soul_warped_tiki_torch + mcwlights:soul_acacia_tiki_torch mcwlights:soul_bamboo_tiki_torch mcwlights:soul_birch_tiki_torch mcwlights:soul_cherry_tiki_torch mcwlights:soul_crimson_tiki_torch mcwlights:soul_dark_oak_tiki_torch mcwlights:soul_jungle_tiki_torch mcwlights:soul_mangrove_tiki_torch mcwlights:soul_oak_tiki_torch mcwlights:soul_spruce_tiki_torch mcwlights:soul_warped_tiki_torch \ + supplementaries:sconce_soul supplementaries:sconce_wall_soul block.247=torch wall_torch \ - supplementaries:sconce supplementaries:sconce_wall supplementaries:sconce_lever \ - mcwlights:framed_torch mcwlights:iron_framed_torch mcwlights:reinforced_torch mcwlights:rustic_torch mcwlights:upgraded_torch mcwlights:acacia_tiki_torch mcwlights:bamboo_tiki_torch mcwlights:birch_tiki_torch mcwlights:cherry_tiki_torch mcwlights:crimson_tiki_torch mcwlights:dark_oak_tiki_torch mcwlights:jungle_tiki_torch mcwlights:mangrove_tiki_torch mcwlights:oak_tiki_torch mcwlights:spruce_tiki_torch mcwlights:warped_tiki_torch + mcwlights:framed_torch mcwlights:iron_framed_torch mcwlights:reinforced_torch mcwlights:rustic_torch mcwlights:upgraded_torch mcwlights:acacia_tiki_torch mcwlights:bamboo_tiki_torch mcwlights:birch_tiki_torch mcwlights:cherry_tiki_torch mcwlights:crimson_tiki_torch mcwlights:dark_oak_tiki_torch mcwlights:jungle_tiki_torch mcwlights:mangrove_tiki_torch mcwlights:oak_tiki_torch mcwlights:spruce_tiki_torch mcwlights:warped_tiki_torch \ + supplementaries:sconce supplementaries:sconce_wall supplementaries:sconce_lever block.248=westerosblocks:safe_fire block.249=conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light -block.250=mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true \ +block.250=betterend:terminite_bulb_lantern_black betterend:iron_bulb_lantern_black \ humility-afm:led_black \ - betterend:terminite_bulb_lantern_black betterend:iron_bulb_lantern_black + mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true -block.251=mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true \ - humility-afm:led_blue \ +block.251=betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue \ betternether:blue_weeping_obsidian \ - betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue + humility-afm:led_blue \ + mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true -block.252=mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true \ +block.252=betterend:terminite_bulb_lantern_brown betterend:iron_bulb_lantern_brown \ humility-afm:led_brown \ - betterend:terminite_bulb_lantern_brown betterend:iron_bulb_lantern_brown + mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true -block.253=mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true \ +block.253=betterend:terminite_bulb_lantern_cyan betterend:iron_bulb_lantern_cyan \ humility-afm:led_cyan \ - betterend:terminite_bulb_lantern_cyan betterend:iron_bulb_lantern_cyan + mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true -block.254=mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true \ +block.254= betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray \ humility-afm:led_gray \ - betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray + mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true -block.255=mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true \ +block.255=betterend:terminite_bulb_lantern_green betterend:iron_bulb_lantern_green \ humility-afm:led_green \ - betterend:terminite_bulb_lantern_green betterend:iron_bulb_lantern_green + mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true -block.256=mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true \ +block.256=betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue \ humility-afm:led_light_blue \ - betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue + mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true -block.257=mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true \ +block.257=betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray \ humility-afm:led_light_gray \ - betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray + mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true -block.258=mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true \ +block.258= betterend:terminite_bulb_lantern_lime betterend:iron_bulb_lantern_lime \ humility-afm:led_lime \ - betterend:terminite_bulb_lantern_lime betterend:iron_bulb_lantern_lime + mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true -block.259=mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true \ +block.259= betterend:terminite_bulb_lantern_magenta betterend:iron_bulb_lantern_magenta \ humility-afm:led_magenta \ - betterend:terminite_bulb_lantern_magenta betterend:iron_bulb_lantern_magenta + mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true -block.260=mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true \ +block.260= betterend:terminite_bulb_lantern_orange betterend:iron_bulb_lantern_orange \ humility-afm:led_orange \ - betterend:terminite_bulb_lantern_orange betterend:iron_bulb_lantern_orange + mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true -block.261=mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true \ +block.261=betterend:terminite_bulb_lantern_pink betterend:iron_bulb_lantern_pink humility-afm:led_pink \ - betterend:terminite_bulb_lantern_pink betterend:iron_bulb_lantern_pink + mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true -block.262=mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true \ - humility-afm:led_purple \ +block.262=betterend:terminite_bulb_lantern_purple betterend:iron_bulb_lantern_purple \ betternether:whispering_gourd_lantern \ - betterend:terminite_bulb_lantern_purple betterend:iron_bulb_lantern_purple + humility-afm:led_purple \ + mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true -block.263=mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true \ +block.263=betterend:terminite_bulb_lantern_red betterend:iron_bulb_lantern_red \ humility-afm:led_red \ - betterend:terminite_bulb_lantern_red betterend:iron_bulb_lantern_red + mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true -block.264=mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true \ +block.264=betterend:terminite_bulb_lantern_white betterend:iron_bulb_lantern_white \ humility-afm:led_white \ - betterend:terminite_bulb_lantern_white betterend:iron_bulb_lantern_white + mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true -block.265=mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true \ +block.265=betterend:iron_bulb_lantern_yellow betterend:terminite_bulb_lantern_yellow \ humility-afm:led_yellow \ - betterend:iron_bulb_lantern_yellow betterend:terminite_bulb_lantern_yellow + mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true ####### ----- reflective translucents / glass ----- ####### From 0e8f27ad2782638d116fcea2c734c04f91e119aa Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:53:20 +0100 Subject: [PATCH 070/101] Moved `Humility AFM` from simple 75% floodfill into custom LPV shapes --- shaders/block.properties | 50 +++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 97d9c14..9885b3c 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -58,7 +58,6 @@ block.52=iron_bars pointed_dripstone \ # Blocks that occlude 75% of light block.53=bell \ - humility-afm:outer_stairs_acacia humility-afm:outer_stairs_bamboo humility-afm:outer_stairs_birch humility-afm:outer_stairs_cherry humility-afm:outer_stairs_crimson humility-afm:outer_stairs_dark_oak humility-afm:outer_stairs_jungle humility-afm:outer_stairs_mangrove humility-afm:outer_stairs_oak humility-afm:outer_stairs_spruce humility-afm:outer_stairs_warped humility-afm:outer_stairs_anchor_tree humility-afm:outer_stairs_mushroom humility-afm:outer_stairs_mushroom_fir humility-afm:outer_stairs_nether_sakura humility-afm:outer_stairs_stalagnate humility-afm:outer_stairs_wart humility-afm:outer_stairs_willow humility-afm:outer_stairs_mud_bricks humility-afm:outer_stairs_quartz humility-afm:outer_stairs_red_sandstone humility-afm:outer_stairs_sandstone humility-afm:outer_stairs_andesite humility-afm:outer_stairs_blackstone humility-afm:outer_stairs_dark_prismarine humility-afm:outer_stairs_diorite humility-afm:outer_stairs_granite humility-afm:outer_stairs_mossy_stone_brick humility-afm:outer_stairs_polished_andesite humility-afm:outer_stairs_polished_blackstone_brick humility-afm:outer_stairs_polished_diorite humility-afm:outer_stairs_polished_granite humility-afm:outer_stairs_prismarine humility-afm:outer_stairs_prismarine_bricks humility-afm:outer_stairs_purpur humility-afm:outer_stairs_stone humility-afm:outer_stairs_stone_brick humility-afm:outer_stairs_brick humility-afm:outer_stairs_cobblestone humility-afm:outer_stairs_mossy_cobblestone humility-afm:outer_stairs_nether_brick humility-afm:outer_stairs_polished_blackstone humility-afm:outer_stairs_red_nether_brick humility-afm:outer_stairs_smooth_quartz humility-afm:outer_stairs_smooth_red_sandstone humility-afm:outer_stairs_smooth_sandstone humility-afm:outer_stairs_end_stone_brick humility-afm:outer_stairs_cut_copper humility-afm:outer_stairs_exposed_cut_copper humility-afm:outer_stairs_oxidized_cut_copper humility-afm:outer_stairs_weathered_cut_copper humility-afm:outer_stairs_cobbled_deepslate humility-afm:outer_stairs_deepslate_brick humility-afm:outer_stairs_deepslate_tile humility-afm:outer_stairs_polished_deepslate humility-afm:inner_stairs_acacia humility-afm:inner_stairs_bamboo humility-afm:inner_stairs_birch humility-afm:inner_stairs_cherry humility-afm:inner_stairs_crimson humility-afm:inner_stairs_dark_oak humility-afm:inner_stairs_jungle humility-afm:inner_stairs_mangrove humility-afm:inner_stairs_oak humility-afm:inner_stairs_spruce humility-afm:inner_stairs_warped humility-afm:inner_stairs_anchor_tree humility-afm:inner_stairs_mushroom humility-afm:inner_stairs_mushroom_fir humility-afm:inner_stairs_nether_sakura humility-afm:inner_stairs_stalagnate humility-afm:inner_stairs_wart humility-afm:inner_stairs_willow humility-afm:inner_stairs_mud_bricks humility-afm:inner_stairs_quartz humility-afm:inner_stairs_red_sandstone humility-afm:inner_stairs_sandstone humility-afm:inner_stairs_andesite humility-afm:inner_stairs_blackstone humility-afm:inner_stairs_dark_prismarine humility-afm:inner_stairs_diorite humility-afm:inner_stairs_granite humility-afm:inner_stairs_mossy_stone_brick humility-afm:inner_stairs_polished_andesite humility-afm:inner_stairs_polished_blackstone_brick humility-afm:inner_stairs_polished_diorite humility-afm:inner_stairs_polished_granite humility-afm:inner_stairs_prismarine humility-afm:inner_stairs_prismarine_bricks humility-afm:inner_stairs_purpur humility-afm:inner_stairs_stone humility-afm:inner_stairs_stone_brick humility-afm:inner_stairs_brick humility-afm:inner_stairs_cobblestone humility-afm:inner_stairs_mossy_cobblestone humility-afm:inner_stairs_nether_brick humility-afm:inner_stairs_polished_blackstone humility-afm:inner_stairs_red_nether_brick humility-afm:inner_stairs_smooth_quartz humility-afm:inner_stairs_smooth_red_sandstone humility-afm:inner_stairs_smooth_sandstone humility-afm:inner_stairs_end_stone_brick humility-afm:inner_stairs_cut_copper humility-afm:inner_stairs_exposed_cut_copper humility-afm:inner_stairs_oxidized_cut_copper humility-afm:inner_stairs_weathered_cut_copper humility-afm:inner_stairs_cobbled_deepslate humility-afm:inner_stairs_deepslate_brick humility-afm:inner_stairs_deepslate_tile humility-afm:inner_stairs_polished_deepslate \ vinery:dark_cherry_big_table @@ -717,21 +716,29 @@ block.418=acacia_stairs:shape=straight:half=bottom:facing=south bamboo_stairs:sh block.419=acacia_stairs:shape=straight:half=bottom:facing=west bamboo_stairs:shape=straight:half=bottom:facing=west bamboo_mosaic_stairs:shape=straight:half=bottom:facing=west birch_stairs:shape=straight:half=bottom:facing=west cherry_stairs:shape=straight:half=bottom:facing=west crimson_stairs:shape=straight:half=bottom:facing=west dark_oak_stairs:shape=straight:half=bottom:facing=west jungle_stairs:shape=straight:half=bottom:facing=west mangrove_stairs:shape=straight:half=bottom:facing=west oak_stairs:shape=straight:half=bottom:facing=west spruce_stairs:shape=straight:half=bottom:facing=west warped_stairs:shape=straight:half=bottom:facing=west andesite_stairs:shape=straight:half=bottom:facing=west blackstone_stairs:shape=straight:half=bottom:facing=west brick_stairs:shape=straight:half=bottom:facing=west cobbled_deepslate_stairs:shape=straight:half=bottom:facing=west cobblestone_stairs:shape=straight:half=bottom:facing=west cut_copper_stairs:shape=straight:half=bottom:facing=west dark_prismarine_stairs:shape=straight:half=bottom:facing=west deepslate_brick_stairs:shape=straight:half=bottom:facing=west deepslate_tile_stairs:shape=straight:half=bottom:facing=west diorite_stairs:shape=straight:half=bottom:facing=west end_stone_brick_stairs:shape=straight:half=bottom:facing=west exposed_cut_copper_stairs:shape=straight:half=bottom:facing=west granite_stairs:shape=straight:half=bottom:facing=west mossy_cobblestone_stairs:shape=straight:half=bottom:facing=west mossy_stone_brick_stairs:shape=straight:half=bottom:facing=west mud_brick_stairs:shape=straight:half=bottom:facing=west nether_brick_stairs:shape=straight:half=bottom:facing=west oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=west polished_andesite_stairs:shape=straight:half=bottom:facing=west polished_blackstone_brick_stairs:shape=straight:half=bottom:facing=west polished_blackstone_stairs:shape=straight:half=bottom:facing=west polished_deepslate_stairs:shape=straight:half=bottom:facing=west polished_diorite_stairs:shape=straight:half=bottom:facing=west polished_granite_stairs:shape=straight:half=bottom:facing=west prismarine_brick_stairs:shape=straight:half=bottom:facing=west prismarine_stairs:shape=straight:half=bottom:facing=west purpur_stairs:shape=straight:half=bottom:facing=west quartz_stairs:shape=straight:half=bottom:facing=west red_nether_brick_stairs:shape=straight:half=bottom:facing=west red_sandstone_stairs:shape=straight:half=bottom:facing=west sandstone_stairs:shape=straight:half=bottom:facing=west smooth_quartz_stairs:shape=straight:half=bottom:facing=west smooth_red_sandstone_stairs:shape=straight:half=bottom:facing=west smooth_sandstone_stairs:shape=straight:half=bottom:facing=west stone_brick_stairs:shape=straight:half=bottom:facing=west stone_stairs:shape=straight:half=bottom:facing=west waxed_cut_copper_stairs:shape=straight:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=straight:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=straight:half=bottom:facing=west weathered_cut_copper_stairs:shape=straight:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=straight:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=straight:half=bottom:facing=west create:cut_andesite_stairs:shape=straight:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=straight:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=straight:half=bottom:facing=west create:small_andesite_brick_stairs:shape=straight:half=bottom:facing=west create:cut_asurine_stairs:shape=straight:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=straight:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=straight:half=bottom:facing=west create:small_asurine_brick_stairs:shape=straight:half=bottom:facing=west create:cut_calcite_stairs:shape=straight:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=straight:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=straight:half=bottom:facing=west create:small_calcite_brick_stairs:shape=straight:half=bottom:facing=west create:cut_crimsite_stairs:shape=straight:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=straight:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=straight:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=straight:half=bottom:facing=west create:cut_deepslate_stairs:shape=straight:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=straight:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=straight:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=straight:half=bottom:facing=west create:cut_diorite_stairs:shape=straight:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=straight:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=straight:half=bottom:facing=west create:small_diorite_brick_stairs:shape=straight:half=bottom:facing=west create:cut_dripstone_stairs:shape=straight:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=straight:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=straight:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=straight:half=bottom:facing=west create:cut_granite_stairs:shape=straight:half=bottom:facing=west create:polished_cut_granite_stairs:shape=straight:half=bottom:facing=west create:cut_granite_brick_stairs:shape=straight:half=bottom:facing=west create:small_granite_brick_stairs:shape=straight:half=bottom:facing=west create:cut_limestone_stairs:shape=straight:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=straight:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=straight:half=bottom:facing=west create:small_limestone_brick_stairs:shape=straight:half=bottom:facing=west create:cut_ochrum_stairs:shape=straight:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=straight:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=straight:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=straight:half=bottom:facing=west create:cut_scorchia_stairs:shape=straight:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=straight:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=straight:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=straight:half=bottom:facing=west create:cut_scoria_stairs:shape=straight:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=straight:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=straight:half=bottom:facing=west create:small_scoria_brick_stairs:shape=straight:half=bottom:facing=west create:cut_tuff_stairs:shape=straight:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=straight:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=straight:half=bottom:facing=west create:small_tuff_brick_stairs:shape=straight:half=bottom:facing=west create:cut_veridium_stairs:shape=straight:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=straight:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=straight:half=bottom:facing=west create:small_veridium_brick_stairs:shape=straight:half=bottom:facing=west create:copper_shingle_stairs:shape=straight:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=west create:copper_tile_stairs:shape=straight:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=straight:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=straight:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=straight:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=straight:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=straight:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=west -block.420=acacia_stairs:shape=inner_left:half=bottom:facing=south bamboo_stairs:shape=inner_left:half=bottom:facing=south bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=south birch_stairs:shape=inner_left:half=bottom:facing=south cherry_stairs:shape=inner_left:half=bottom:facing=south crimson_stairs:shape=inner_left:half=bottom:facing=south dark_oak_stairs:shape=inner_left:half=bottom:facing=south jungle_stairs:shape=inner_left:half=bottom:facing=south mangrove_stairs:shape=inner_left:half=bottom:facing=south oak_stairs:shape=inner_left:half=bottom:facing=south spruce_stairs:shape=inner_left:half=bottom:facing=south warped_stairs:shape=inner_left:half=bottom:facing=south andesite_stairs:shape=inner_left:half=bottom:facing=south blackstone_stairs:shape=inner_left:half=bottom:facing=south brick_stairs:shape=inner_left:half=bottom:facing=south cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=south cobblestone_stairs:shape=inner_left:half=bottom:facing=south cut_copper_stairs:shape=inner_left:half=bottom:facing=south dark_prismarine_stairs:shape=inner_left:half=bottom:facing=south deepslate_brick_stairs:shape=inner_left:half=bottom:facing=south deepslate_tile_stairs:shape=inner_left:half=bottom:facing=south diorite_stairs:shape=inner_left:half=bottom:facing=south end_stone_brick_stairs:shape=inner_left:half=bottom:facing=south exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=south granite_stairs:shape=inner_left:half=bottom:facing=south mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=south mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=south mud_brick_stairs:shape=inner_left:half=bottom:facing=south nether_brick_stairs:shape=inner_left:half=bottom:facing=south oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=south polished_andesite_stairs:shape=inner_left:half=bottom:facing=south polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=south polished_blackstone_stairs:shape=inner_left:half=bottom:facing=south polished_deepslate_stairs:shape=inner_left:half=bottom:facing=south polished_diorite_stairs:shape=inner_left:half=bottom:facing=south polished_granite_stairs:shape=inner_left:half=bottom:facing=south prismarine_brick_stairs:shape=inner_left:half=bottom:facing=south prismarine_stairs:shape=inner_left:half=bottom:facing=south purpur_stairs:shape=inner_left:half=bottom:facing=south quartz_stairs:shape=inner_left:half=bottom:facing=south red_nether_brick_stairs:shape=inner_left:half=bottom:facing=south red_sandstone_stairs:shape=inner_left:half=bottom:facing=south sandstone_stairs:shape=inner_left:half=bottom:facing=south smooth_quartz_stairs:shape=inner_left:half=bottom:facing=south smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=south smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=south stone_brick_stairs:shape=inner_left:half=bottom:facing=south stone_stairs:shape=inner_left:half=bottom:facing=south waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=south weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=south create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_granite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=south create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=south create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=south acacia_stairs:shape=inner_right:half=bottom:facing=east bamboo_stairs:shape=inner_right:half=bottom:facing=east bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=east birch_stairs:shape=inner_right:half=bottom:facing=east cherry_stairs:shape=inner_right:half=bottom:facing=east crimson_stairs:shape=inner_right:half=bottom:facing=east dark_oak_stairs:shape=inner_right:half=bottom:facing=east jungle_stairs:shape=inner_right:half=bottom:facing=east mangrove_stairs:shape=inner_right:half=bottom:facing=east oak_stairs:shape=inner_right:half=bottom:facing=east spruce_stairs:shape=inner_right:half=bottom:facing=east warped_stairs:shape=inner_right:half=bottom:facing=east andesite_stairs:shape=inner_right:half=bottom:facing=east blackstone_stairs:shape=inner_right:half=bottom:facing=east brick_stairs:shape=inner_right:half=bottom:facing=east cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=east cobblestone_stairs:shape=inner_right:half=bottom:facing=east cut_copper_stairs:shape=inner_right:half=bottom:facing=east dark_prismarine_stairs:shape=inner_right:half=bottom:facing=east deepslate_brick_stairs:shape=inner_right:half=bottom:facing=east deepslate_tile_stairs:shape=inner_right:half=bottom:facing=east diorite_stairs:shape=inner_right:half=bottom:facing=east end_stone_brick_stairs:shape=inner_right:half=bottom:facing=east exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=east granite_stairs:shape=inner_right:half=bottom:facing=east mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=east mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=east mud_brick_stairs:shape=inner_right:half=bottom:facing=east nether_brick_stairs:shape=inner_right:half=bottom:facing=east oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=east polished_andesite_stairs:shape=inner_right:half=bottom:facing=east polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=east polished_blackstone_stairs:shape=inner_right:half=bottom:facing=east polished_deepslate_stairs:shape=inner_right:half=bottom:facing=east polished_diorite_stairs:shape=inner_right:half=bottom:facing=east polished_granite_stairs:shape=inner_right:half=bottom:facing=east prismarine_brick_stairs:shape=inner_right:half=bottom:facing=east prismarine_stairs:shape=inner_right:half=bottom:facing=east purpur_stairs:shape=inner_right:half=bottom:facing=east quartz_stairs:shape=inner_right:half=bottom:facing=east red_nether_brick_stairs:shape=inner_right:half=bottom:facing=east red_sandstone_stairs:shape=inner_right:half=bottom:facing=east sandstone_stairs:shape=inner_right:half=bottom:facing=east smooth_quartz_stairs:shape=inner_right:half=bottom:facing=east smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=east smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=east stone_brick_stairs:shape=inner_right:half=bottom:facing=east stone_stairs:shape=inner_right:half=bottom:facing=east waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=east weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=east create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_granite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=east create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=east create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=east +block.420=acacia_stairs:shape=inner_left:half=bottom:facing=south bamboo_stairs:shape=inner_left:half=bottom:facing=south bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=south birch_stairs:shape=inner_left:half=bottom:facing=south cherry_stairs:shape=inner_left:half=bottom:facing=south crimson_stairs:shape=inner_left:half=bottom:facing=south dark_oak_stairs:shape=inner_left:half=bottom:facing=south jungle_stairs:shape=inner_left:half=bottom:facing=south mangrove_stairs:shape=inner_left:half=bottom:facing=south oak_stairs:shape=inner_left:half=bottom:facing=south spruce_stairs:shape=inner_left:half=bottom:facing=south warped_stairs:shape=inner_left:half=bottom:facing=south andesite_stairs:shape=inner_left:half=bottom:facing=south blackstone_stairs:shape=inner_left:half=bottom:facing=south brick_stairs:shape=inner_left:half=bottom:facing=south cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=south cobblestone_stairs:shape=inner_left:half=bottom:facing=south cut_copper_stairs:shape=inner_left:half=bottom:facing=south dark_prismarine_stairs:shape=inner_left:half=bottom:facing=south deepslate_brick_stairs:shape=inner_left:half=bottom:facing=south deepslate_tile_stairs:shape=inner_left:half=bottom:facing=south diorite_stairs:shape=inner_left:half=bottom:facing=south end_stone_brick_stairs:shape=inner_left:half=bottom:facing=south exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=south granite_stairs:shape=inner_left:half=bottom:facing=south mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=south mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=south mud_brick_stairs:shape=inner_left:half=bottom:facing=south nether_brick_stairs:shape=inner_left:half=bottom:facing=south oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=south polished_andesite_stairs:shape=inner_left:half=bottom:facing=south polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=south polished_blackstone_stairs:shape=inner_left:half=bottom:facing=south polished_deepslate_stairs:shape=inner_left:half=bottom:facing=south polished_diorite_stairs:shape=inner_left:half=bottom:facing=south polished_granite_stairs:shape=inner_left:half=bottom:facing=south prismarine_brick_stairs:shape=inner_left:half=bottom:facing=south prismarine_stairs:shape=inner_left:half=bottom:facing=south purpur_stairs:shape=inner_left:half=bottom:facing=south quartz_stairs:shape=inner_left:half=bottom:facing=south red_nether_brick_stairs:shape=inner_left:half=bottom:facing=south red_sandstone_stairs:shape=inner_left:half=bottom:facing=south sandstone_stairs:shape=inner_left:half=bottom:facing=south smooth_quartz_stairs:shape=inner_left:half=bottom:facing=south smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=south smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=south stone_brick_stairs:shape=inner_left:half=bottom:facing=south stone_stairs:shape=inner_left:half=bottom:facing=south waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=south weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=south create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_granite_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=south create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=south create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=south create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=south create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=south create:copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=south acacia_stairs:shape=inner_right:half=bottom:facing=east bamboo_stairs:shape=inner_right:half=bottom:facing=east bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=east birch_stairs:shape=inner_right:half=bottom:facing=east cherry_stairs:shape=inner_right:half=bottom:facing=east crimson_stairs:shape=inner_right:half=bottom:facing=east dark_oak_stairs:shape=inner_right:half=bottom:facing=east jungle_stairs:shape=inner_right:half=bottom:facing=east mangrove_stairs:shape=inner_right:half=bottom:facing=east oak_stairs:shape=inner_right:half=bottom:facing=east spruce_stairs:shape=inner_right:half=bottom:facing=east warped_stairs:shape=inner_right:half=bottom:facing=east andesite_stairs:shape=inner_right:half=bottom:facing=east blackstone_stairs:shape=inner_right:half=bottom:facing=east brick_stairs:shape=inner_right:half=bottom:facing=east cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=east cobblestone_stairs:shape=inner_right:half=bottom:facing=east cut_copper_stairs:shape=inner_right:half=bottom:facing=east dark_prismarine_stairs:shape=inner_right:half=bottom:facing=east deepslate_brick_stairs:shape=inner_right:half=bottom:facing=east deepslate_tile_stairs:shape=inner_right:half=bottom:facing=east diorite_stairs:shape=inner_right:half=bottom:facing=east end_stone_brick_stairs:shape=inner_right:half=bottom:facing=east exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=east granite_stairs:shape=inner_right:half=bottom:facing=east mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=east mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=east mud_brick_stairs:shape=inner_right:half=bottom:facing=east nether_brick_stairs:shape=inner_right:half=bottom:facing=east oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=east polished_andesite_stairs:shape=inner_right:half=bottom:facing=east polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=east polished_blackstone_stairs:shape=inner_right:half=bottom:facing=east polished_deepslate_stairs:shape=inner_right:half=bottom:facing=east polished_diorite_stairs:shape=inner_right:half=bottom:facing=east polished_granite_stairs:shape=inner_right:half=bottom:facing=east prismarine_brick_stairs:shape=inner_right:half=bottom:facing=east prismarine_stairs:shape=inner_right:half=bottom:facing=east purpur_stairs:shape=inner_right:half=bottom:facing=east quartz_stairs:shape=inner_right:half=bottom:facing=east red_nether_brick_stairs:shape=inner_right:half=bottom:facing=east red_sandstone_stairs:shape=inner_right:half=bottom:facing=east sandstone_stairs:shape=inner_right:half=bottom:facing=east smooth_quartz_stairs:shape=inner_right:half=bottom:facing=east smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=east smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=east stone_brick_stairs:shape=inner_right:half=bottom:facing=east stone_stairs:shape=inner_right:half=bottom:facing=east waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=east weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=east create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_granite_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=east create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=east create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=east create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=east create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=east create:copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=east \ + humility-afm:inner_stairs_acacia:half=bottom:facing=north humility-afm:inner_stairs_bamboo:half=bottom:facing=north humility-afm:inner_stairs_birch:half=bottom:facing=north humility-afm:inner_stairs_cherry:half=bottom:facing=north humility-afm:inner_stairs_crimson:half=bottom:facing=north humility-afm:inner_stairs_dark_oak:half=bottom:facing=north humility-afm:inner_stairs_jungle:half=bottom:facing=north humility-afm:inner_stairs_mangrove:half=bottom:facing=north humility-afm:inner_stairs_oak:half=bottom:facing=north humility-afm:inner_stairs_spruce:half=bottom:facing=north humility-afm:inner_stairs_warped:half=bottom:facing=north humility-afm:inner_stairs_anchor_tree:half=bottom:facing=north humility-afm:inner_stairs_mushroom:half=bottom:facing=north humility-afm:inner_stairs_mushroom_fir:half=bottom:facing=north humility-afm:inner_stairs_nether_sakura:half=bottom:facing=north humility-afm:inner_stairs_stalagnate:half=bottom:facing=north humility-afm:inner_stairs_wart:half=bottom:facing=north humility-afm:inner_stairs_willow:half=bottom:facing=north humility-afm:inner_stairs_mud_bricks:half=bottom:facing=north humility-afm:inner_stairs_quartz:half=bottom:facing=north humility-afm:inner_stairs_red_sandstone:half=bottom:facing=north humility-afm:inner_stairs_sandstone:half=bottom:facing=north humility-afm:inner_stairs_andesite:half=bottom:facing=north humility-afm:inner_stairs_blackstone:half=bottom:facing=north humility-afm:inner_stairs_dark_prismarine:half=bottom:facing=north humility-afm:inner_stairs_diorite:half=bottom:facing=north humility-afm:inner_stairs_granite:half=bottom:facing=north humility-afm:inner_stairs_mossy_stone_brick:half=bottom:facing=north humility-afm:inner_stairs_polished_andesite:half=bottom:facing=north humility-afm:inner_stairs_polished_blackstone_brick:half=bottom:facing=north humility-afm:inner_stairs_polished_diorite:half=bottom:facing=north humility-afm:inner_stairs_polished_granite:half=bottom:facing=north humility-afm:inner_stairs_prismarine:half=bottom:facing=north humility-afm:inner_stairs_prismarine_bricks:half=bottom:facing=north humility-afm:inner_stairs_purpur:half=bottom:facing=north humility-afm:inner_stairs_stone:half=bottom:facing=north humility-afm:inner_stairs_stone_brick:half=bottom:facing=north humility-afm:inner_stairs_brick:half=bottom:facing=north humility-afm:inner_stairs_cobblestone:half=bottom:facing=north humility-afm:inner_stairs_mossy_cobblestone:half=bottom:facing=north humility-afm:inner_stairs_nether_brick:half=bottom:facing=north humility-afm:inner_stairs_polished_blackstone:half=bottom:facing=north humility-afm:inner_stairs_red_nether_brick:half=bottom:facing=north humility-afm:inner_stairs_smooth_quartz:half=bottom:facing=north humility-afm:inner_stairs_smooth_red_sandstone:half=bottom:facing=north humility-afm:inner_stairs_smooth_sandstone:half=bottom:facing=north humility-afm:inner_stairs_end_stone_brick:half=bottom:facing=north humility-afm:inner_stairs_cut_copper:half=bottom:facing=north humility-afm:inner_stairs_exposed_cut_copper:half=bottom:facing=north humility-afm:inner_stairs_oxidized_cut_copper:half=bottom:facing=north humility-afm:inner_stairs_weathered_cut_copper:half=bottom:facing=north humility-afm:inner_stairs_cobbled_deepslate:half=bottom:facing=north humility-afm:inner_stairs_deepslate_brick:half=bottom:facing=north humility-afm:inner_stairs_deepslate_tile:half=bottom:facing=north humility-afm:inner_stairs_polished_deepslate:half=bottom:facing=north -block.421=acacia_stairs:shape=inner_left:half=bottom:facing=west bamboo_stairs:shape=inner_left:half=bottom:facing=west bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=west birch_stairs:shape=inner_left:half=bottom:facing=west cherry_stairs:shape=inner_left:half=bottom:facing=west crimson_stairs:shape=inner_left:half=bottom:facing=west dark_oak_stairs:shape=inner_left:half=bottom:facing=west jungle_stairs:shape=inner_left:half=bottom:facing=west mangrove_stairs:shape=inner_left:half=bottom:facing=west oak_stairs:shape=inner_left:half=bottom:facing=west spruce_stairs:shape=inner_left:half=bottom:facing=west warped_stairs:shape=inner_left:half=bottom:facing=west andesite_stairs:shape=inner_left:half=bottom:facing=west blackstone_stairs:shape=inner_left:half=bottom:facing=west brick_stairs:shape=inner_left:half=bottom:facing=west cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=west cobblestone_stairs:shape=inner_left:half=bottom:facing=west cut_copper_stairs:shape=inner_left:half=bottom:facing=west dark_prismarine_stairs:shape=inner_left:half=bottom:facing=west deepslate_brick_stairs:shape=inner_left:half=bottom:facing=west deepslate_tile_stairs:shape=inner_left:half=bottom:facing=west diorite_stairs:shape=inner_left:half=bottom:facing=west end_stone_brick_stairs:shape=inner_left:half=bottom:facing=west exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=west granite_stairs:shape=inner_left:half=bottom:facing=west mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=west mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=west mud_brick_stairs:shape=inner_left:half=bottom:facing=west nether_brick_stairs:shape=inner_left:half=bottom:facing=west oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=west polished_andesite_stairs:shape=inner_left:half=bottom:facing=west polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=west polished_blackstone_stairs:shape=inner_left:half=bottom:facing=west polished_deepslate_stairs:shape=inner_left:half=bottom:facing=west polished_diorite_stairs:shape=inner_left:half=bottom:facing=west polished_granite_stairs:shape=inner_left:half=bottom:facing=west prismarine_brick_stairs:shape=inner_left:half=bottom:facing=west prismarine_stairs:shape=inner_left:half=bottom:facing=west purpur_stairs:shape=inner_left:half=bottom:facing=west quartz_stairs:shape=inner_left:half=bottom:facing=west red_nether_brick_stairs:shape=inner_left:half=bottom:facing=west red_sandstone_stairs:shape=inner_left:half=bottom:facing=west sandstone_stairs:shape=inner_left:half=bottom:facing=west smooth_quartz_stairs:shape=inner_left:half=bottom:facing=west smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=west smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=west stone_brick_stairs:shape=inner_left:half=bottom:facing=west stone_stairs:shape=inner_left:half=bottom:facing=west waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=west weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=west create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_granite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=west create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=west create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=west acacia_stairs:shape=inner_right:half=bottom:facing=south bamboo_stairs:shape=inner_right:half=bottom:facing=south bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=south birch_stairs:shape=inner_right:half=bottom:facing=south cherry_stairs:shape=inner_right:half=bottom:facing=south crimson_stairs:shape=inner_right:half=bottom:facing=south dark_oak_stairs:shape=inner_right:half=bottom:facing=south jungle_stairs:shape=inner_right:half=bottom:facing=south mangrove_stairs:shape=inner_right:half=bottom:facing=south oak_stairs:shape=inner_right:half=bottom:facing=south spruce_stairs:shape=inner_right:half=bottom:facing=south warped_stairs:shape=inner_right:half=bottom:facing=south andesite_stairs:shape=inner_right:half=bottom:facing=south blackstone_stairs:shape=inner_right:half=bottom:facing=south brick_stairs:shape=inner_right:half=bottom:facing=south cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=south cobblestone_stairs:shape=inner_right:half=bottom:facing=south cut_copper_stairs:shape=inner_right:half=bottom:facing=south dark_prismarine_stairs:shape=inner_right:half=bottom:facing=south deepslate_brick_stairs:shape=inner_right:half=bottom:facing=south deepslate_tile_stairs:shape=inner_right:half=bottom:facing=south diorite_stairs:shape=inner_right:half=bottom:facing=south end_stone_brick_stairs:shape=inner_right:half=bottom:facing=south exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=south granite_stairs:shape=inner_right:half=bottom:facing=south mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=south mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=south mud_brick_stairs:shape=inner_right:half=bottom:facing=south nether_brick_stairs:shape=inner_right:half=bottom:facing=south oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=south polished_andesite_stairs:shape=inner_right:half=bottom:facing=south polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=south polished_blackstone_stairs:shape=inner_right:half=bottom:facing=south polished_deepslate_stairs:shape=inner_right:half=bottom:facing=south polished_diorite_stairs:shape=inner_right:half=bottom:facing=south polished_granite_stairs:shape=inner_right:half=bottom:facing=south prismarine_brick_stairs:shape=inner_right:half=bottom:facing=south prismarine_stairs:shape=inner_right:half=bottom:facing=south purpur_stairs:shape=inner_right:half=bottom:facing=south quartz_stairs:shape=inner_right:half=bottom:facing=south red_nether_brick_stairs:shape=inner_right:half=bottom:facing=south red_sandstone_stairs:shape=inner_right:half=bottom:facing=south sandstone_stairs:shape=inner_right:half=bottom:facing=south smooth_quartz_stairs:shape=inner_right:half=bottom:facing=south smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=south smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=south stone_brick_stairs:shape=inner_right:half=bottom:facing=south stone_stairs:shape=inner_right:half=bottom:facing=south waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=south weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=south create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_granite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=south create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=south create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=south +block.421=acacia_stairs:shape=inner_left:half=bottom:facing=west bamboo_stairs:shape=inner_left:half=bottom:facing=west bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=west birch_stairs:shape=inner_left:half=bottom:facing=west cherry_stairs:shape=inner_left:half=bottom:facing=west crimson_stairs:shape=inner_left:half=bottom:facing=west dark_oak_stairs:shape=inner_left:half=bottom:facing=west jungle_stairs:shape=inner_left:half=bottom:facing=west mangrove_stairs:shape=inner_left:half=bottom:facing=west oak_stairs:shape=inner_left:half=bottom:facing=west spruce_stairs:shape=inner_left:half=bottom:facing=west warped_stairs:shape=inner_left:half=bottom:facing=west andesite_stairs:shape=inner_left:half=bottom:facing=west blackstone_stairs:shape=inner_left:half=bottom:facing=west brick_stairs:shape=inner_left:half=bottom:facing=west cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=west cobblestone_stairs:shape=inner_left:half=bottom:facing=west cut_copper_stairs:shape=inner_left:half=bottom:facing=west dark_prismarine_stairs:shape=inner_left:half=bottom:facing=west deepslate_brick_stairs:shape=inner_left:half=bottom:facing=west deepslate_tile_stairs:shape=inner_left:half=bottom:facing=west diorite_stairs:shape=inner_left:half=bottom:facing=west end_stone_brick_stairs:shape=inner_left:half=bottom:facing=west exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=west granite_stairs:shape=inner_left:half=bottom:facing=west mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=west mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=west mud_brick_stairs:shape=inner_left:half=bottom:facing=west nether_brick_stairs:shape=inner_left:half=bottom:facing=west oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=west polished_andesite_stairs:shape=inner_left:half=bottom:facing=west polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=west polished_blackstone_stairs:shape=inner_left:half=bottom:facing=west polished_deepslate_stairs:shape=inner_left:half=bottom:facing=west polished_diorite_stairs:shape=inner_left:half=bottom:facing=west polished_granite_stairs:shape=inner_left:half=bottom:facing=west prismarine_brick_stairs:shape=inner_left:half=bottom:facing=west prismarine_stairs:shape=inner_left:half=bottom:facing=west purpur_stairs:shape=inner_left:half=bottom:facing=west quartz_stairs:shape=inner_left:half=bottom:facing=west red_nether_brick_stairs:shape=inner_left:half=bottom:facing=west red_sandstone_stairs:shape=inner_left:half=bottom:facing=west sandstone_stairs:shape=inner_left:half=bottom:facing=west smooth_quartz_stairs:shape=inner_left:half=bottom:facing=west smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=west smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=west stone_brick_stairs:shape=inner_left:half=bottom:facing=west stone_stairs:shape=inner_left:half=bottom:facing=west waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=west weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=west create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_granite_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=west create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=west create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=west create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=west create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=west create:copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=west acacia_stairs:shape=inner_right:half=bottom:facing=south bamboo_stairs:shape=inner_right:half=bottom:facing=south bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=south birch_stairs:shape=inner_right:half=bottom:facing=south cherry_stairs:shape=inner_right:half=bottom:facing=south crimson_stairs:shape=inner_right:half=bottom:facing=south dark_oak_stairs:shape=inner_right:half=bottom:facing=south jungle_stairs:shape=inner_right:half=bottom:facing=south mangrove_stairs:shape=inner_right:half=bottom:facing=south oak_stairs:shape=inner_right:half=bottom:facing=south spruce_stairs:shape=inner_right:half=bottom:facing=south warped_stairs:shape=inner_right:half=bottom:facing=south andesite_stairs:shape=inner_right:half=bottom:facing=south blackstone_stairs:shape=inner_right:half=bottom:facing=south brick_stairs:shape=inner_right:half=bottom:facing=south cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=south cobblestone_stairs:shape=inner_right:half=bottom:facing=south cut_copper_stairs:shape=inner_right:half=bottom:facing=south dark_prismarine_stairs:shape=inner_right:half=bottom:facing=south deepslate_brick_stairs:shape=inner_right:half=bottom:facing=south deepslate_tile_stairs:shape=inner_right:half=bottom:facing=south diorite_stairs:shape=inner_right:half=bottom:facing=south end_stone_brick_stairs:shape=inner_right:half=bottom:facing=south exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=south granite_stairs:shape=inner_right:half=bottom:facing=south mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=south mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=south mud_brick_stairs:shape=inner_right:half=bottom:facing=south nether_brick_stairs:shape=inner_right:half=bottom:facing=south oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=south polished_andesite_stairs:shape=inner_right:half=bottom:facing=south polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=south polished_blackstone_stairs:shape=inner_right:half=bottom:facing=south polished_deepslate_stairs:shape=inner_right:half=bottom:facing=south polished_diorite_stairs:shape=inner_right:half=bottom:facing=south polished_granite_stairs:shape=inner_right:half=bottom:facing=south prismarine_brick_stairs:shape=inner_right:half=bottom:facing=south prismarine_stairs:shape=inner_right:half=bottom:facing=south purpur_stairs:shape=inner_right:half=bottom:facing=south quartz_stairs:shape=inner_right:half=bottom:facing=south red_nether_brick_stairs:shape=inner_right:half=bottom:facing=south red_sandstone_stairs:shape=inner_right:half=bottom:facing=south sandstone_stairs:shape=inner_right:half=bottom:facing=south smooth_quartz_stairs:shape=inner_right:half=bottom:facing=south smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=south smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=south stone_brick_stairs:shape=inner_right:half=bottom:facing=south stone_stairs:shape=inner_right:half=bottom:facing=south waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=south weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=south create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_granite_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=south create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=south create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=south create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=south create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=south create:copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=south \ + humility-afm:inner_stairs_acacia:half=bottom:facing=east humility-afm:inner_stairs_bamboo:half=bottom:facing=east humility-afm:inner_stairs_birch:half=bottom:facing=east humility-afm:inner_stairs_cherry:half=bottom:facing=east humility-afm:inner_stairs_crimson:half=bottom:facing=east humility-afm:inner_stairs_dark_oak:half=bottom:facing=east humility-afm:inner_stairs_jungle:half=bottom:facing=east humility-afm:inner_stairs_mangrove:half=bottom:facing=east humility-afm:inner_stairs_oak:half=bottom:facing=east humility-afm:inner_stairs_spruce:half=bottom:facing=east humility-afm:inner_stairs_warped:half=bottom:facing=east humility-afm:inner_stairs_anchor_tree:half=bottom:facing=east humility-afm:inner_stairs_mushroom:half=bottom:facing=east humility-afm:inner_stairs_mushroom_fir:half=bottom:facing=east humility-afm:inner_stairs_nether_sakura:half=bottom:facing=east humility-afm:inner_stairs_stalagnate:half=bottom:facing=east humility-afm:inner_stairs_wart:half=bottom:facing=east humility-afm:inner_stairs_willow:half=bottom:facing=east humility-afm:inner_stairs_mud_bricks:half=bottom:facing=east humility-afm:inner_stairs_quartz:half=bottom:facing=east humility-afm:inner_stairs_red_sandstone:half=bottom:facing=east humility-afm:inner_stairs_sandstone:half=bottom:facing=east humility-afm:inner_stairs_andesite:half=bottom:facing=east humility-afm:inner_stairs_blackstone:half=bottom:facing=east humility-afm:inner_stairs_dark_prismarine:half=bottom:facing=east humility-afm:inner_stairs_diorite:half=bottom:facing=east humility-afm:inner_stairs_granite:half=bottom:facing=east humility-afm:inner_stairs_mossy_stone_brick:half=bottom:facing=east humility-afm:inner_stairs_polished_andesite:half=bottom:facing=east humility-afm:inner_stairs_polished_blackstone_brick:half=bottom:facing=east humility-afm:inner_stairs_polished_diorite:half=bottom:facing=east humility-afm:inner_stairs_polished_granite:half=bottom:facing=east humility-afm:inner_stairs_prismarine:half=bottom:facing=east humility-afm:inner_stairs_prismarine_bricks:half=bottom:facing=east humility-afm:inner_stairs_purpur:half=bottom:facing=east humility-afm:inner_stairs_stone:half=bottom:facing=east humility-afm:inner_stairs_stone_brick:half=bottom:facing=east humility-afm:inner_stairs_brick:half=bottom:facing=east humility-afm:inner_stairs_cobblestone:half=bottom:facing=east humility-afm:inner_stairs_mossy_cobblestone:half=bottom:facing=east humility-afm:inner_stairs_nether_brick:half=bottom:facing=east humility-afm:inner_stairs_polished_blackstone:half=bottom:facing=east humility-afm:inner_stairs_red_nether_brick:half=bottom:facing=east humility-afm:inner_stairs_smooth_quartz:half=bottom:facing=east humility-afm:inner_stairs_smooth_red_sandstone:half=bottom:facing=east humility-afm:inner_stairs_smooth_sandstone:half=bottom:facing=east humility-afm:inner_stairs_end_stone_brick:half=bottom:facing=east humility-afm:inner_stairs_cut_copper:half=bottom:facing=east humility-afm:inner_stairs_exposed_cut_copper:half=bottom:facing=east humility-afm:inner_stairs_oxidized_cut_copper:half=bottom:facing=east humility-afm:inner_stairs_weathered_cut_copper:half=bottom:facing=east humility-afm:inner_stairs_cobbled_deepslate:half=bottom:facing=east humility-afm:inner_stairs_deepslate_brick:half=bottom:facing=east humility-afm:inner_stairs_deepslate_tile:half=bottom:facing=east humility-afm:inner_stairs_polished_deepslate:half=bottom:facing=east -block.422=acacia_stairs:shape=inner_left:half=bottom:facing=north bamboo_stairs:shape=inner_left:half=bottom:facing=north bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=north birch_stairs:shape=inner_left:half=bottom:facing=north cherry_stairs:shape=inner_left:half=bottom:facing=north crimson_stairs:shape=inner_left:half=bottom:facing=north dark_oak_stairs:shape=inner_left:half=bottom:facing=north jungle_stairs:shape=inner_left:half=bottom:facing=north mangrove_stairs:shape=inner_left:half=bottom:facing=north oak_stairs:shape=inner_left:half=bottom:facing=north spruce_stairs:shape=inner_left:half=bottom:facing=north warped_stairs:shape=inner_left:half=bottom:facing=north andesite_stairs:shape=inner_left:half=bottom:facing=north blackstone_stairs:shape=inner_left:half=bottom:facing=north brick_stairs:shape=inner_left:half=bottom:facing=north cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=north cobblestone_stairs:shape=inner_left:half=bottom:facing=north cut_copper_stairs:shape=inner_left:half=bottom:facing=north dark_prismarine_stairs:shape=inner_left:half=bottom:facing=north deepslate_brick_stairs:shape=inner_left:half=bottom:facing=north deepslate_tile_stairs:shape=inner_left:half=bottom:facing=north diorite_stairs:shape=inner_left:half=bottom:facing=north end_stone_brick_stairs:shape=inner_left:half=bottom:facing=north exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=north granite_stairs:shape=inner_left:half=bottom:facing=north mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=north mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=north mud_brick_stairs:shape=inner_left:half=bottom:facing=north nether_brick_stairs:shape=inner_left:half=bottom:facing=north oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=north polished_andesite_stairs:shape=inner_left:half=bottom:facing=north polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=north polished_blackstone_stairs:shape=inner_left:half=bottom:facing=north polished_deepslate_stairs:shape=inner_left:half=bottom:facing=north polished_diorite_stairs:shape=inner_left:half=bottom:facing=north polished_granite_stairs:shape=inner_left:half=bottom:facing=north prismarine_brick_stairs:shape=inner_left:half=bottom:facing=north prismarine_stairs:shape=inner_left:half=bottom:facing=north purpur_stairs:shape=inner_left:half=bottom:facing=north quartz_stairs:shape=inner_left:half=bottom:facing=north red_nether_brick_stairs:shape=inner_left:half=bottom:facing=north red_sandstone_stairs:shape=inner_left:half=bottom:facing=north sandstone_stairs:shape=inner_left:half=bottom:facing=north smooth_quartz_stairs:shape=inner_left:half=bottom:facing=north smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=north smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=north stone_brick_stairs:shape=inner_left:half=bottom:facing=north stone_stairs:shape=inner_left:half=bottom:facing=north waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=north weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=north create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_granite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=north create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=north create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=north acacia_stairs:shape=inner_right:half=bottom:facing=west bamboo_stairs:shape=inner_right:half=bottom:facing=west bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=west birch_stairs:shape=inner_right:half=bottom:facing=west cherry_stairs:shape=inner_right:half=bottom:facing=west crimson_stairs:shape=inner_right:half=bottom:facing=west dark_oak_stairs:shape=inner_right:half=bottom:facing=west jungle_stairs:shape=inner_right:half=bottom:facing=west mangrove_stairs:shape=inner_right:half=bottom:facing=west oak_stairs:shape=inner_right:half=bottom:facing=west spruce_stairs:shape=inner_right:half=bottom:facing=west warped_stairs:shape=inner_right:half=bottom:facing=west andesite_stairs:shape=inner_right:half=bottom:facing=west blackstone_stairs:shape=inner_right:half=bottom:facing=west brick_stairs:shape=inner_right:half=bottom:facing=west cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=west cobblestone_stairs:shape=inner_right:half=bottom:facing=west cut_copper_stairs:shape=inner_right:half=bottom:facing=west dark_prismarine_stairs:shape=inner_right:half=bottom:facing=west deepslate_brick_stairs:shape=inner_right:half=bottom:facing=west deepslate_tile_stairs:shape=inner_right:half=bottom:facing=west diorite_stairs:shape=inner_right:half=bottom:facing=west end_stone_brick_stairs:shape=inner_right:half=bottom:facing=west exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=west granite_stairs:shape=inner_right:half=bottom:facing=west mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=west mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=west mud_brick_stairs:shape=inner_right:half=bottom:facing=west nether_brick_stairs:shape=inner_right:half=bottom:facing=west oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=west polished_andesite_stairs:shape=inner_right:half=bottom:facing=west polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=west polished_blackstone_stairs:shape=inner_right:half=bottom:facing=west polished_deepslate_stairs:shape=inner_right:half=bottom:facing=west polished_diorite_stairs:shape=inner_right:half=bottom:facing=west polished_granite_stairs:shape=inner_right:half=bottom:facing=west prismarine_brick_stairs:shape=inner_right:half=bottom:facing=west prismarine_stairs:shape=inner_right:half=bottom:facing=west purpur_stairs:shape=inner_right:half=bottom:facing=west quartz_stairs:shape=inner_right:half=bottom:facing=west red_nether_brick_stairs:shape=inner_right:half=bottom:facing=west red_sandstone_stairs:shape=inner_right:half=bottom:facing=west sandstone_stairs:shape=inner_right:half=bottom:facing=west smooth_quartz_stairs:shape=inner_right:half=bottom:facing=west smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=west smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=west stone_brick_stairs:shape=inner_right:half=bottom:facing=west stone_stairs:shape=inner_right:half=bottom:facing=west waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=west weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=west create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_granite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=west create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=west create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=west +block.422=acacia_stairs:shape=inner_left:half=bottom:facing=north bamboo_stairs:shape=inner_left:half=bottom:facing=north bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=north birch_stairs:shape=inner_left:half=bottom:facing=north cherry_stairs:shape=inner_left:half=bottom:facing=north crimson_stairs:shape=inner_left:half=bottom:facing=north dark_oak_stairs:shape=inner_left:half=bottom:facing=north jungle_stairs:shape=inner_left:half=bottom:facing=north mangrove_stairs:shape=inner_left:half=bottom:facing=north oak_stairs:shape=inner_left:half=bottom:facing=north spruce_stairs:shape=inner_left:half=bottom:facing=north warped_stairs:shape=inner_left:half=bottom:facing=north andesite_stairs:shape=inner_left:half=bottom:facing=north blackstone_stairs:shape=inner_left:half=bottom:facing=north brick_stairs:shape=inner_left:half=bottom:facing=north cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=north cobblestone_stairs:shape=inner_left:half=bottom:facing=north cut_copper_stairs:shape=inner_left:half=bottom:facing=north dark_prismarine_stairs:shape=inner_left:half=bottom:facing=north deepslate_brick_stairs:shape=inner_left:half=bottom:facing=north deepslate_tile_stairs:shape=inner_left:half=bottom:facing=north diorite_stairs:shape=inner_left:half=bottom:facing=north end_stone_brick_stairs:shape=inner_left:half=bottom:facing=north exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=north granite_stairs:shape=inner_left:half=bottom:facing=north mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=north mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=north mud_brick_stairs:shape=inner_left:half=bottom:facing=north nether_brick_stairs:shape=inner_left:half=bottom:facing=north oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=north polished_andesite_stairs:shape=inner_left:half=bottom:facing=north polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=north polished_blackstone_stairs:shape=inner_left:half=bottom:facing=north polished_deepslate_stairs:shape=inner_left:half=bottom:facing=north polished_diorite_stairs:shape=inner_left:half=bottom:facing=north polished_granite_stairs:shape=inner_left:half=bottom:facing=north prismarine_brick_stairs:shape=inner_left:half=bottom:facing=north prismarine_stairs:shape=inner_left:half=bottom:facing=north purpur_stairs:shape=inner_left:half=bottom:facing=north quartz_stairs:shape=inner_left:half=bottom:facing=north red_nether_brick_stairs:shape=inner_left:half=bottom:facing=north red_sandstone_stairs:shape=inner_left:half=bottom:facing=north sandstone_stairs:shape=inner_left:half=bottom:facing=north smooth_quartz_stairs:shape=inner_left:half=bottom:facing=north smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=north smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=north stone_brick_stairs:shape=inner_left:half=bottom:facing=north stone_stairs:shape=inner_left:half=bottom:facing=north waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=north weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=north create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_granite_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=north create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=north create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=north create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=north create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=north create:copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=north acacia_stairs:shape=inner_right:half=bottom:facing=west bamboo_stairs:shape=inner_right:half=bottom:facing=west bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=west birch_stairs:shape=inner_right:half=bottom:facing=west cherry_stairs:shape=inner_right:half=bottom:facing=west crimson_stairs:shape=inner_right:half=bottom:facing=west dark_oak_stairs:shape=inner_right:half=bottom:facing=west jungle_stairs:shape=inner_right:half=bottom:facing=west mangrove_stairs:shape=inner_right:half=bottom:facing=west oak_stairs:shape=inner_right:half=bottom:facing=west spruce_stairs:shape=inner_right:half=bottom:facing=west warped_stairs:shape=inner_right:half=bottom:facing=west andesite_stairs:shape=inner_right:half=bottom:facing=west blackstone_stairs:shape=inner_right:half=bottom:facing=west brick_stairs:shape=inner_right:half=bottom:facing=west cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=west cobblestone_stairs:shape=inner_right:half=bottom:facing=west cut_copper_stairs:shape=inner_right:half=bottom:facing=west dark_prismarine_stairs:shape=inner_right:half=bottom:facing=west deepslate_brick_stairs:shape=inner_right:half=bottom:facing=west deepslate_tile_stairs:shape=inner_right:half=bottom:facing=west diorite_stairs:shape=inner_right:half=bottom:facing=west end_stone_brick_stairs:shape=inner_right:half=bottom:facing=west exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=west granite_stairs:shape=inner_right:half=bottom:facing=west mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=west mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=west mud_brick_stairs:shape=inner_right:half=bottom:facing=west nether_brick_stairs:shape=inner_right:half=bottom:facing=west oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=west polished_andesite_stairs:shape=inner_right:half=bottom:facing=west polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=west polished_blackstone_stairs:shape=inner_right:half=bottom:facing=west polished_deepslate_stairs:shape=inner_right:half=bottom:facing=west polished_diorite_stairs:shape=inner_right:half=bottom:facing=west polished_granite_stairs:shape=inner_right:half=bottom:facing=west prismarine_brick_stairs:shape=inner_right:half=bottom:facing=west prismarine_stairs:shape=inner_right:half=bottom:facing=west purpur_stairs:shape=inner_right:half=bottom:facing=west quartz_stairs:shape=inner_right:half=bottom:facing=west red_nether_brick_stairs:shape=inner_right:half=bottom:facing=west red_sandstone_stairs:shape=inner_right:half=bottom:facing=west sandstone_stairs:shape=inner_right:half=bottom:facing=west smooth_quartz_stairs:shape=inner_right:half=bottom:facing=west smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=west smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=west stone_brick_stairs:shape=inner_right:half=bottom:facing=west stone_stairs:shape=inner_right:half=bottom:facing=west waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=west weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=west create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_granite_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=west create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=west create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=west create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=west create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=west create:copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=west \ + humility-afm:inner_stairs_acacia:half=bottom:facing=south humility-afm:inner_stairs_bamboo:half=bottom:facing=south humility-afm:inner_stairs_birch:half=bottom:facing=south humility-afm:inner_stairs_cherry:half=bottom:facing=south humility-afm:inner_stairs_crimson:half=bottom:facing=south humility-afm:inner_stairs_dark_oak:half=bottom:facing=south humility-afm:inner_stairs_jungle:half=bottom:facing=south humility-afm:inner_stairs_mangrove:half=bottom:facing=south humility-afm:inner_stairs_oak:half=bottom:facing=south humility-afm:inner_stairs_spruce:half=bottom:facing=south humility-afm:inner_stairs_warped:half=bottom:facing=south humility-afm:inner_stairs_anchor_tree:half=bottom:facing=south humility-afm:inner_stairs_mushroom:half=bottom:facing=south humility-afm:inner_stairs_mushroom_fir:half=bottom:facing=south humility-afm:inner_stairs_nether_sakura:half=bottom:facing=south humility-afm:inner_stairs_stalagnate:half=bottom:facing=south humility-afm:inner_stairs_wart:half=bottom:facing=south humility-afm:inner_stairs_willow:half=bottom:facing=south humility-afm:inner_stairs_mud_bricks:half=bottom:facing=south humility-afm:inner_stairs_quartz:half=bottom:facing=south humility-afm:inner_stairs_red_sandstone:half=bottom:facing=south humility-afm:inner_stairs_sandstone:half=bottom:facing=south humility-afm:inner_stairs_andesite:half=bottom:facing=south humility-afm:inner_stairs_blackstone:half=bottom:facing=south humility-afm:inner_stairs_dark_prismarine:half=bottom:facing=south humility-afm:inner_stairs_diorite:half=bottom:facing=south humility-afm:inner_stairs_granite:half=bottom:facing=south humility-afm:inner_stairs_mossy_stone_brick:half=bottom:facing=south humility-afm:inner_stairs_polished_andesite:half=bottom:facing=south humility-afm:inner_stairs_polished_blackstone_brick:half=bottom:facing=south humility-afm:inner_stairs_polished_diorite:half=bottom:facing=south humility-afm:inner_stairs_polished_granite:half=bottom:facing=south humility-afm:inner_stairs_prismarine:half=bottom:facing=south humility-afm:inner_stairs_prismarine_bricks:half=bottom:facing=south humility-afm:inner_stairs_purpur:half=bottom:facing=south humility-afm:inner_stairs_stone:half=bottom:facing=south humility-afm:inner_stairs_stone_brick:half=bottom:facing=south humility-afm:inner_stairs_brick:half=bottom:facing=south humility-afm:inner_stairs_cobblestone:half=bottom:facing=south humility-afm:inner_stairs_mossy_cobblestone:half=bottom:facing=south humility-afm:inner_stairs_nether_brick:half=bottom:facing=south humility-afm:inner_stairs_polished_blackstone:half=bottom:facing=south humility-afm:inner_stairs_red_nether_brick:half=bottom:facing=south humility-afm:inner_stairs_smooth_quartz:half=bottom:facing=south humility-afm:inner_stairs_smooth_red_sandstone:half=bottom:facing=south humility-afm:inner_stairs_smooth_sandstone:half=bottom:facing=south humility-afm:inner_stairs_end_stone_brick:half=bottom:facing=south humility-afm:inner_stairs_cut_copper:half=bottom:facing=south humility-afm:inner_stairs_exposed_cut_copper:half=bottom:facing=south humility-afm:inner_stairs_oxidized_cut_copper:half=bottom:facing=south humility-afm:inner_stairs_weathered_cut_copper:half=bottom:facing=south humility-afm:inner_stairs_cobbled_deepslate:half=bottom:facing=south humility-afm:inner_stairs_deepslate_brick:half=bottom:facing=south humility-afm:inner_stairs_deepslate_tile:half=bottom:facing=south humility-afm:inner_stairs_polished_deepslate:half=bottom:facing=south -block.423=acacia_stairs:shape=inner_left:half=bottom:facing=east bamboo_stairs:shape=inner_left:half=bottom:facing=east bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=east birch_stairs:shape=inner_left:half=bottom:facing=east cherry_stairs:shape=inner_left:half=bottom:facing=east crimson_stairs:shape=inner_left:half=bottom:facing=east dark_oak_stairs:shape=inner_left:half=bottom:facing=east jungle_stairs:shape=inner_left:half=bottom:facing=east mangrove_stairs:shape=inner_left:half=bottom:facing=east oak_stairs:shape=inner_left:half=bottom:facing=east spruce_stairs:shape=inner_left:half=bottom:facing=east warped_stairs:shape=inner_left:half=bottom:facing=east andesite_stairs:shape=inner_left:half=bottom:facing=east blackstone_stairs:shape=inner_left:half=bottom:facing=east brick_stairs:shape=inner_left:half=bottom:facing=east cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=east cobblestone_stairs:shape=inner_left:half=bottom:facing=east cut_copper_stairs:shape=inner_left:half=bottom:facing=east dark_prismarine_stairs:shape=inner_left:half=bottom:facing=east deepslate_brick_stairs:shape=inner_left:half=bottom:facing=east deepslate_tile_stairs:shape=inner_left:half=bottom:facing=east diorite_stairs:shape=inner_left:half=bottom:facing=east end_stone_brick_stairs:shape=inner_left:half=bottom:facing=east exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=east granite_stairs:shape=inner_left:half=bottom:facing=east mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=east mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=east mud_brick_stairs:shape=inner_left:half=bottom:facing=east nether_brick_stairs:shape=inner_left:half=bottom:facing=east oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=east polished_andesite_stairs:shape=inner_left:half=bottom:facing=east polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=east polished_blackstone_stairs:shape=inner_left:half=bottom:facing=east polished_deepslate_stairs:shape=inner_left:half=bottom:facing=east polished_diorite_stairs:shape=inner_left:half=bottom:facing=east polished_granite_stairs:shape=inner_left:half=bottom:facing=east prismarine_brick_stairs:shape=inner_left:half=bottom:facing=east prismarine_stairs:shape=inner_left:half=bottom:facing=east purpur_stairs:shape=inner_left:half=bottom:facing=east quartz_stairs:shape=inner_left:half=bottom:facing=east red_nether_brick_stairs:shape=inner_left:half=bottom:facing=east red_sandstone_stairs:shape=inner_left:half=bottom:facing=east sandstone_stairs:shape=inner_left:half=bottom:facing=east smooth_quartz_stairs:shape=inner_left:half=bottom:facing=east smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=east smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=east stone_brick_stairs:shape=inner_left:half=bottom:facing=east stone_stairs:shape=inner_left:half=bottom:facing=east waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=east weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=east create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_granite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=east create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=east create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=east acacia_stairs:shape=inner_right:half=bottom:facing=north bamboo_stairs:shape=inner_right:half=bottom:facing=north bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=north birch_stairs:shape=inner_right:half=bottom:facing=north cherry_stairs:shape=inner_right:half=bottom:facing=north crimson_stairs:shape=inner_right:half=bottom:facing=north dark_oak_stairs:shape=inner_right:half=bottom:facing=north jungle_stairs:shape=inner_right:half=bottom:facing=north mangrove_stairs:shape=inner_right:half=bottom:facing=north oak_stairs:shape=inner_right:half=bottom:facing=north spruce_stairs:shape=inner_right:half=bottom:facing=north warped_stairs:shape=inner_right:half=bottom:facing=north andesite_stairs:shape=inner_right:half=bottom:facing=north blackstone_stairs:shape=inner_right:half=bottom:facing=north brick_stairs:shape=inner_right:half=bottom:facing=north cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=north cobblestone_stairs:shape=inner_right:half=bottom:facing=north cut_copper_stairs:shape=inner_right:half=bottom:facing=north dark_prismarine_stairs:shape=inner_right:half=bottom:facing=north deepslate_brick_stairs:shape=inner_right:half=bottom:facing=north deepslate_tile_stairs:shape=inner_right:half=bottom:facing=north diorite_stairs:shape=inner_right:half=bottom:facing=north end_stone_brick_stairs:shape=inner_right:half=bottom:facing=north exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=north granite_stairs:shape=inner_right:half=bottom:facing=north mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=north mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=north mud_brick_stairs:shape=inner_right:half=bottom:facing=north nether_brick_stairs:shape=inner_right:half=bottom:facing=north oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=north polished_andesite_stairs:shape=inner_right:half=bottom:facing=north polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=north polished_blackstone_stairs:shape=inner_right:half=bottom:facing=north polished_deepslate_stairs:shape=inner_right:half=bottom:facing=north polished_diorite_stairs:shape=inner_right:half=bottom:facing=north polished_granite_stairs:shape=inner_right:half=bottom:facing=north prismarine_brick_stairs:shape=inner_right:half=bottom:facing=north prismarine_stairs:shape=inner_right:half=bottom:facing=north purpur_stairs:shape=inner_right:half=bottom:facing=north quartz_stairs:shape=inner_right:half=bottom:facing=north red_nether_brick_stairs:shape=inner_right:half=bottom:facing=north red_sandstone_stairs:shape=inner_right:half=bottom:facing=north sandstone_stairs:shape=inner_right:half=bottom:facing=north smooth_quartz_stairs:shape=inner_right:half=bottom:facing=north smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=north smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=north stone_brick_stairs:shape=inner_right:half=bottom:facing=north stone_stairs:shape=inner_right:half=bottom:facing=north waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=north weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=north create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_granite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=north create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=north create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=north +block.423=acacia_stairs:shape=inner_left:half=bottom:facing=east bamboo_stairs:shape=inner_left:half=bottom:facing=east bamboo_mosaic_stairs:shape=inner_left:half=bottom:facing=east birch_stairs:shape=inner_left:half=bottom:facing=east cherry_stairs:shape=inner_left:half=bottom:facing=east crimson_stairs:shape=inner_left:half=bottom:facing=east dark_oak_stairs:shape=inner_left:half=bottom:facing=east jungle_stairs:shape=inner_left:half=bottom:facing=east mangrove_stairs:shape=inner_left:half=bottom:facing=east oak_stairs:shape=inner_left:half=bottom:facing=east spruce_stairs:shape=inner_left:half=bottom:facing=east warped_stairs:shape=inner_left:half=bottom:facing=east andesite_stairs:shape=inner_left:half=bottom:facing=east blackstone_stairs:shape=inner_left:half=bottom:facing=east brick_stairs:shape=inner_left:half=bottom:facing=east cobbled_deepslate_stairs:shape=inner_left:half=bottom:facing=east cobblestone_stairs:shape=inner_left:half=bottom:facing=east cut_copper_stairs:shape=inner_left:half=bottom:facing=east dark_prismarine_stairs:shape=inner_left:half=bottom:facing=east deepslate_brick_stairs:shape=inner_left:half=bottom:facing=east deepslate_tile_stairs:shape=inner_left:half=bottom:facing=east diorite_stairs:shape=inner_left:half=bottom:facing=east end_stone_brick_stairs:shape=inner_left:half=bottom:facing=east exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=east granite_stairs:shape=inner_left:half=bottom:facing=east mossy_cobblestone_stairs:shape=inner_left:half=bottom:facing=east mossy_stone_brick_stairs:shape=inner_left:half=bottom:facing=east mud_brick_stairs:shape=inner_left:half=bottom:facing=east nether_brick_stairs:shape=inner_left:half=bottom:facing=east oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=east polished_andesite_stairs:shape=inner_left:half=bottom:facing=east polished_blackstone_brick_stairs:shape=inner_left:half=bottom:facing=east polished_blackstone_stairs:shape=inner_left:half=bottom:facing=east polished_deepslate_stairs:shape=inner_left:half=bottom:facing=east polished_diorite_stairs:shape=inner_left:half=bottom:facing=east polished_granite_stairs:shape=inner_left:half=bottom:facing=east prismarine_brick_stairs:shape=inner_left:half=bottom:facing=east prismarine_stairs:shape=inner_left:half=bottom:facing=east purpur_stairs:shape=inner_left:half=bottom:facing=east quartz_stairs:shape=inner_left:half=bottom:facing=east red_nether_brick_stairs:shape=inner_left:half=bottom:facing=east red_sandstone_stairs:shape=inner_left:half=bottom:facing=east sandstone_stairs:shape=inner_left:half=bottom:facing=east smooth_quartz_stairs:shape=inner_left:half=bottom:facing=east smooth_red_sandstone_stairs:shape=inner_left:half=bottom:facing=east smooth_sandstone_stairs:shape=inner_left:half=bottom:facing=east stone_brick_stairs:shape=inner_left:half=bottom:facing=east stone_stairs:shape=inner_left:half=bottom:facing=east waxed_cut_copper_stairs:shape=inner_left:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=inner_left:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_left:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=east weathered_cut_copper_stairs:shape=inner_left:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=inner_left:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=inner_left:half=bottom:facing=east create:cut_andesite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=inner_left:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_andesite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_asurine_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=inner_left:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_asurine_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_calcite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=inner_left:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_calcite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_crimsite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=inner_left:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_deepslate_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=inner_left:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_diorite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=inner_left:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_diorite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_dripstone_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=inner_left:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_granite_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_granite_stairs:shape=inner_left:half=bottom:facing=east create:cut_granite_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_granite_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_limestone_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=inner_left:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_limestone_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_ochrum_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=inner_left:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_scorchia_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=inner_left:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_scoria_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=inner_left:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_scoria_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_tuff_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=inner_left:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_tuff_brick_stairs:shape=inner_left:half=bottom:facing=east create:cut_veridium_stairs:shape=inner_left:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=inner_left:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=inner_left:half=bottom:facing=east create:small_veridium_brick_stairs:shape=inner_left:half=bottom:facing=east create:copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=bottom:facing=east create:copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=bottom:facing=east acacia_stairs:shape=inner_right:half=bottom:facing=north bamboo_stairs:shape=inner_right:half=bottom:facing=north bamboo_mosaic_stairs:shape=inner_right:half=bottom:facing=north birch_stairs:shape=inner_right:half=bottom:facing=north cherry_stairs:shape=inner_right:half=bottom:facing=north crimson_stairs:shape=inner_right:half=bottom:facing=north dark_oak_stairs:shape=inner_right:half=bottom:facing=north jungle_stairs:shape=inner_right:half=bottom:facing=north mangrove_stairs:shape=inner_right:half=bottom:facing=north oak_stairs:shape=inner_right:half=bottom:facing=north spruce_stairs:shape=inner_right:half=bottom:facing=north warped_stairs:shape=inner_right:half=bottom:facing=north andesite_stairs:shape=inner_right:half=bottom:facing=north blackstone_stairs:shape=inner_right:half=bottom:facing=north brick_stairs:shape=inner_right:half=bottom:facing=north cobbled_deepslate_stairs:shape=inner_right:half=bottom:facing=north cobblestone_stairs:shape=inner_right:half=bottom:facing=north cut_copper_stairs:shape=inner_right:half=bottom:facing=north dark_prismarine_stairs:shape=inner_right:half=bottom:facing=north deepslate_brick_stairs:shape=inner_right:half=bottom:facing=north deepslate_tile_stairs:shape=inner_right:half=bottom:facing=north diorite_stairs:shape=inner_right:half=bottom:facing=north end_stone_brick_stairs:shape=inner_right:half=bottom:facing=north exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=north granite_stairs:shape=inner_right:half=bottom:facing=north mossy_cobblestone_stairs:shape=inner_right:half=bottom:facing=north mossy_stone_brick_stairs:shape=inner_right:half=bottom:facing=north mud_brick_stairs:shape=inner_right:half=bottom:facing=north nether_brick_stairs:shape=inner_right:half=bottom:facing=north oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=north polished_andesite_stairs:shape=inner_right:half=bottom:facing=north polished_blackstone_brick_stairs:shape=inner_right:half=bottom:facing=north polished_blackstone_stairs:shape=inner_right:half=bottom:facing=north polished_deepslate_stairs:shape=inner_right:half=bottom:facing=north polished_diorite_stairs:shape=inner_right:half=bottom:facing=north polished_granite_stairs:shape=inner_right:half=bottom:facing=north prismarine_brick_stairs:shape=inner_right:half=bottom:facing=north prismarine_stairs:shape=inner_right:half=bottom:facing=north purpur_stairs:shape=inner_right:half=bottom:facing=north quartz_stairs:shape=inner_right:half=bottom:facing=north red_nether_brick_stairs:shape=inner_right:half=bottom:facing=north red_sandstone_stairs:shape=inner_right:half=bottom:facing=north sandstone_stairs:shape=inner_right:half=bottom:facing=north smooth_quartz_stairs:shape=inner_right:half=bottom:facing=north smooth_red_sandstone_stairs:shape=inner_right:half=bottom:facing=north smooth_sandstone_stairs:shape=inner_right:half=bottom:facing=north stone_brick_stairs:shape=inner_right:half=bottom:facing=north stone_stairs:shape=inner_right:half=bottom:facing=north waxed_cut_copper_stairs:shape=inner_right:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=inner_right:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_right:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=north weathered_cut_copper_stairs:shape=inner_right:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=inner_right:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=inner_right:half=bottom:facing=north create:cut_andesite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=inner_right:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_andesite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_asurine_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=inner_right:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_asurine_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_calcite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=inner_right:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_calcite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_crimsite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=inner_right:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_deepslate_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=inner_right:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_diorite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=inner_right:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_diorite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_dripstone_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=inner_right:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_granite_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_granite_stairs:shape=inner_right:half=bottom:facing=north create:cut_granite_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_granite_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_limestone_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=inner_right:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_limestone_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_ochrum_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=inner_right:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_scorchia_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=inner_right:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_scoria_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=inner_right:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_scoria_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_tuff_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=inner_right:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_tuff_brick_stairs:shape=inner_right:half=bottom:facing=north create:cut_veridium_stairs:shape=inner_right:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=inner_right:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=inner_right:half=bottom:facing=north create:small_veridium_brick_stairs:shape=inner_right:half=bottom:facing=north create:copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=bottom:facing=north create:copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=bottom:facing=north \ + humility-afm:inner_stairs_acacia:half=bottom:facing=west humility-afm:inner_stairs_bamboo:half=bottom:facing=west humility-afm:inner_stairs_birch:half=bottom:facing=west humility-afm:inner_stairs_cherry:half=bottom:facing=west humility-afm:inner_stairs_crimson:half=bottom:facing=west humility-afm:inner_stairs_dark_oak:half=bottom:facing=west humility-afm:inner_stairs_jungle:half=bottom:facing=west humility-afm:inner_stairs_mangrove:half=bottom:facing=west humility-afm:inner_stairs_oak:half=bottom:facing=west humility-afm:inner_stairs_spruce:half=bottom:facing=west humility-afm:inner_stairs_warped:half=bottom:facing=west humility-afm:inner_stairs_anchor_tree:half=bottom:facing=west humility-afm:inner_stairs_mushroom:half=bottom:facing=west humility-afm:inner_stairs_mushroom_fir:half=bottom:facing=west humility-afm:inner_stairs_nether_sakura:half=bottom:facing=west humility-afm:inner_stairs_stalagnate:half=bottom:facing=west humility-afm:inner_stairs_wart:half=bottom:facing=west humility-afm:inner_stairs_willow:half=bottom:facing=west humility-afm:inner_stairs_mud_bricks:half=bottom:facing=west humility-afm:inner_stairs_quartz:half=bottom:facing=west humility-afm:inner_stairs_red_sandstone:half=bottom:facing=west humility-afm:inner_stairs_sandstone:half=bottom:facing=west humility-afm:inner_stairs_andesite:half=bottom:facing=west humility-afm:inner_stairs_blackstone:half=bottom:facing=west humility-afm:inner_stairs_dark_prismarine:half=bottom:facing=west humility-afm:inner_stairs_diorite:half=bottom:facing=west humility-afm:inner_stairs_granite:half=bottom:facing=west humility-afm:inner_stairs_mossy_stone_brick:half=bottom:facing=west humility-afm:inner_stairs_polished_andesite:half=bottom:facing=west humility-afm:inner_stairs_polished_blackstone_brick:half=bottom:facing=west humility-afm:inner_stairs_polished_diorite:half=bottom:facing=west humility-afm:inner_stairs_polished_granite:half=bottom:facing=west humility-afm:inner_stairs_prismarine:half=bottom:facing=west humility-afm:inner_stairs_prismarine_bricks:half=bottom:facing=west humility-afm:inner_stairs_purpur:half=bottom:facing=west humility-afm:inner_stairs_stone:half=bottom:facing=west humility-afm:inner_stairs_stone_brick:half=bottom:facing=west humility-afm:inner_stairs_brick:half=bottom:facing=west humility-afm:inner_stairs_cobblestone:half=bottom:facing=west humility-afm:inner_stairs_mossy_cobblestone:half=bottom:facing=west humility-afm:inner_stairs_nether_brick:half=bottom:facing=west humility-afm:inner_stairs_polished_blackstone:half=bottom:facing=west humility-afm:inner_stairs_red_nether_brick:half=bottom:facing=west humility-afm:inner_stairs_smooth_quartz:half=bottom:facing=west humility-afm:inner_stairs_smooth_red_sandstone:half=bottom:facing=west humility-afm:inner_stairs_smooth_sandstone:half=bottom:facing=west humility-afm:inner_stairs_end_stone_brick:half=bottom:facing=west humility-afm:inner_stairs_cut_copper:half=bottom:facing=west humility-afm:inner_stairs_exposed_cut_copper:half=bottom:facing=west humility-afm:inner_stairs_oxidized_cut_copper:half=bottom:facing=west humility-afm:inner_stairs_weathered_cut_copper:half=bottom:facing=west humility-afm:inner_stairs_cobbled_deepslate:half=bottom:facing=west humility-afm:inner_stairs_deepslate_brick:half=bottom:facing=west humility-afm:inner_stairs_deepslate_tile:half=bottom:facing=west humility-afm:inner_stairs_polished_deepslate:half=bottom:facing=west -block.424=acacia_stairs:shape=outer_left:half=bottom:facing=north bamboo_stairs:shape=outer_left:half=bottom:facing=north bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=north birch_stairs:shape=outer_left:half=bottom:facing=north cherry_stairs:shape=outer_left:half=bottom:facing=north crimson_stairs:shape=outer_left:half=bottom:facing=north dark_oak_stairs:shape=outer_left:half=bottom:facing=north jungle_stairs:shape=outer_left:half=bottom:facing=north mangrove_stairs:shape=outer_left:half=bottom:facing=north oak_stairs:shape=outer_left:half=bottom:facing=north spruce_stairs:shape=outer_left:half=bottom:facing=north warped_stairs:shape=outer_left:half=bottom:facing=north andesite_stairs:shape=outer_left:half=bottom:facing=north blackstone_stairs:shape=outer_left:half=bottom:facing=north brick_stairs:shape=outer_left:half=bottom:facing=north cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=north cobblestone_stairs:shape=outer_left:half=bottom:facing=north cut_copper_stairs:shape=outer_left:half=bottom:facing=north dark_prismarine_stairs:shape=outer_left:half=bottom:facing=north deepslate_brick_stairs:shape=outer_left:half=bottom:facing=north deepslate_tile_stairs:shape=outer_left:half=bottom:facing=north diorite_stairs:shape=outer_left:half=bottom:facing=north end_stone_brick_stairs:shape=outer_left:half=bottom:facing=north exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=north granite_stairs:shape=outer_left:half=bottom:facing=north mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=north mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=north mud_brick_stairs:shape=outer_left:half=bottom:facing=north nether_brick_stairs:shape=outer_left:half=bottom:facing=north oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=north polished_andesite_stairs:shape=outer_left:half=bottom:facing=north polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=north polished_blackstone_stairs:shape=outer_left:half=bottom:facing=north polished_deepslate_stairs:shape=outer_left:half=bottom:facing=north polished_diorite_stairs:shape=outer_left:half=bottom:facing=north polished_granite_stairs:shape=outer_left:half=bottom:facing=north prismarine_brick_stairs:shape=outer_left:half=bottom:facing=north prismarine_stairs:shape=outer_left:half=bottom:facing=north purpur_stairs:shape=outer_left:half=bottom:facing=north quartz_stairs:shape=outer_left:half=bottom:facing=north red_nether_brick_stairs:shape=outer_left:half=bottom:facing=north red_sandstone_stairs:shape=outer_left:half=bottom:facing=north sandstone_stairs:shape=outer_left:half=bottom:facing=north smooth_quartz_stairs:shape=outer_left:half=bottom:facing=north smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=north smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=north stone_brick_stairs:shape=outer_left:half=bottom:facing=north stone_stairs:shape=outer_left:half=bottom:facing=north waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=north weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=north create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_granite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=north create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=north create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=north acacia_stairs:shape=outer_right:half=bottom:facing=west bamboo_stairs:shape=outer_right:half=bottom:facing=west bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=west birch_stairs:shape=outer_right:half=bottom:facing=west cherry_stairs:shape=outer_right:half=bottom:facing=west crimson_stairs:shape=outer_right:half=bottom:facing=west dark_oak_stairs:shape=outer_right:half=bottom:facing=west jungle_stairs:shape=outer_right:half=bottom:facing=west mangrove_stairs:shape=outer_right:half=bottom:facing=west oak_stairs:shape=outer_right:half=bottom:facing=west spruce_stairs:shape=outer_right:half=bottom:facing=west warped_stairs:shape=outer_right:half=bottom:facing=west andesite_stairs:shape=outer_right:half=bottom:facing=west blackstone_stairs:shape=outer_right:half=bottom:facing=west brick_stairs:shape=outer_right:half=bottom:facing=west cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=west cobblestone_stairs:shape=outer_right:half=bottom:facing=west cut_copper_stairs:shape=outer_right:half=bottom:facing=west dark_prismarine_stairs:shape=outer_right:half=bottom:facing=west deepslate_brick_stairs:shape=outer_right:half=bottom:facing=west deepslate_tile_stairs:shape=outer_right:half=bottom:facing=west diorite_stairs:shape=outer_right:half=bottom:facing=west end_stone_brick_stairs:shape=outer_right:half=bottom:facing=west exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=west granite_stairs:shape=outer_right:half=bottom:facing=west mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=west mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=west mud_brick_stairs:shape=outer_right:half=bottom:facing=west nether_brick_stairs:shape=outer_right:half=bottom:facing=west oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=west polished_andesite_stairs:shape=outer_right:half=bottom:facing=west polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=west polished_blackstone_stairs:shape=outer_right:half=bottom:facing=west polished_deepslate_stairs:shape=outer_right:half=bottom:facing=west polished_diorite_stairs:shape=outer_right:half=bottom:facing=west polished_granite_stairs:shape=outer_right:half=bottom:facing=west prismarine_brick_stairs:shape=outer_right:half=bottom:facing=west prismarine_stairs:shape=outer_right:half=bottom:facing=west purpur_stairs:shape=outer_right:half=bottom:facing=west quartz_stairs:shape=outer_right:half=bottom:facing=west red_nether_brick_stairs:shape=outer_right:half=bottom:facing=west red_sandstone_stairs:shape=outer_right:half=bottom:facing=west sandstone_stairs:shape=outer_right:half=bottom:facing=west smooth_quartz_stairs:shape=outer_right:half=bottom:facing=west smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=west smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=west stone_brick_stairs:shape=outer_right:half=bottom:facing=west stone_stairs:shape=outer_right:half=bottom:facing=west waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=west weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=west create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_granite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=west create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=west create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=west +block.424=acacia_stairs:shape=outer_left:half=bottom:facing=north bamboo_stairs:shape=outer_left:half=bottom:facing=north bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=north birch_stairs:shape=outer_left:half=bottom:facing=north cherry_stairs:shape=outer_left:half=bottom:facing=north crimson_stairs:shape=outer_left:half=bottom:facing=north dark_oak_stairs:shape=outer_left:half=bottom:facing=north jungle_stairs:shape=outer_left:half=bottom:facing=north mangrove_stairs:shape=outer_left:half=bottom:facing=north oak_stairs:shape=outer_left:half=bottom:facing=north spruce_stairs:shape=outer_left:half=bottom:facing=north warped_stairs:shape=outer_left:half=bottom:facing=north andesite_stairs:shape=outer_left:half=bottom:facing=north blackstone_stairs:shape=outer_left:half=bottom:facing=north brick_stairs:shape=outer_left:half=bottom:facing=north cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=north cobblestone_stairs:shape=outer_left:half=bottom:facing=north cut_copper_stairs:shape=outer_left:half=bottom:facing=north dark_prismarine_stairs:shape=outer_left:half=bottom:facing=north deepslate_brick_stairs:shape=outer_left:half=bottom:facing=north deepslate_tile_stairs:shape=outer_left:half=bottom:facing=north diorite_stairs:shape=outer_left:half=bottom:facing=north end_stone_brick_stairs:shape=outer_left:half=bottom:facing=north exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=north granite_stairs:shape=outer_left:half=bottom:facing=north mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=north mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=north mud_brick_stairs:shape=outer_left:half=bottom:facing=north nether_brick_stairs:shape=outer_left:half=bottom:facing=north oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=north polished_andesite_stairs:shape=outer_left:half=bottom:facing=north polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=north polished_blackstone_stairs:shape=outer_left:half=bottom:facing=north polished_deepslate_stairs:shape=outer_left:half=bottom:facing=north polished_diorite_stairs:shape=outer_left:half=bottom:facing=north polished_granite_stairs:shape=outer_left:half=bottom:facing=north prismarine_brick_stairs:shape=outer_left:half=bottom:facing=north prismarine_stairs:shape=outer_left:half=bottom:facing=north purpur_stairs:shape=outer_left:half=bottom:facing=north quartz_stairs:shape=outer_left:half=bottom:facing=north red_nether_brick_stairs:shape=outer_left:half=bottom:facing=north red_sandstone_stairs:shape=outer_left:half=bottom:facing=north sandstone_stairs:shape=outer_left:half=bottom:facing=north smooth_quartz_stairs:shape=outer_left:half=bottom:facing=north smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=north smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=north stone_brick_stairs:shape=outer_left:half=bottom:facing=north stone_stairs:shape=outer_left:half=bottom:facing=north waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=north weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=north create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_granite_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=north create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=north create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=north create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=north create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=north create:copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=north acacia_stairs:shape=outer_right:half=bottom:facing=west bamboo_stairs:shape=outer_right:half=bottom:facing=west bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=west birch_stairs:shape=outer_right:half=bottom:facing=west cherry_stairs:shape=outer_right:half=bottom:facing=west crimson_stairs:shape=outer_right:half=bottom:facing=west dark_oak_stairs:shape=outer_right:half=bottom:facing=west jungle_stairs:shape=outer_right:half=bottom:facing=west mangrove_stairs:shape=outer_right:half=bottom:facing=west oak_stairs:shape=outer_right:half=bottom:facing=west spruce_stairs:shape=outer_right:half=bottom:facing=west warped_stairs:shape=outer_right:half=bottom:facing=west andesite_stairs:shape=outer_right:half=bottom:facing=west blackstone_stairs:shape=outer_right:half=bottom:facing=west brick_stairs:shape=outer_right:half=bottom:facing=west cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=west cobblestone_stairs:shape=outer_right:half=bottom:facing=west cut_copper_stairs:shape=outer_right:half=bottom:facing=west dark_prismarine_stairs:shape=outer_right:half=bottom:facing=west deepslate_brick_stairs:shape=outer_right:half=bottom:facing=west deepslate_tile_stairs:shape=outer_right:half=bottom:facing=west diorite_stairs:shape=outer_right:half=bottom:facing=west end_stone_brick_stairs:shape=outer_right:half=bottom:facing=west exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=west granite_stairs:shape=outer_right:half=bottom:facing=west mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=west mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=west mud_brick_stairs:shape=outer_right:half=bottom:facing=west nether_brick_stairs:shape=outer_right:half=bottom:facing=west oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=west polished_andesite_stairs:shape=outer_right:half=bottom:facing=west polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=west polished_blackstone_stairs:shape=outer_right:half=bottom:facing=west polished_deepslate_stairs:shape=outer_right:half=bottom:facing=west polished_diorite_stairs:shape=outer_right:half=bottom:facing=west polished_granite_stairs:shape=outer_right:half=bottom:facing=west prismarine_brick_stairs:shape=outer_right:half=bottom:facing=west prismarine_stairs:shape=outer_right:half=bottom:facing=west purpur_stairs:shape=outer_right:half=bottom:facing=west quartz_stairs:shape=outer_right:half=bottom:facing=west red_nether_brick_stairs:shape=outer_right:half=bottom:facing=west red_sandstone_stairs:shape=outer_right:half=bottom:facing=west sandstone_stairs:shape=outer_right:half=bottom:facing=west smooth_quartz_stairs:shape=outer_right:half=bottom:facing=west smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=west smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=west stone_brick_stairs:shape=outer_right:half=bottom:facing=west stone_stairs:shape=outer_right:half=bottom:facing=west waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=west weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=west create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_granite_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=west create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=west create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=west create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=west create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=west create:copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=west \ + humility-afm:outer_stairs_acacia:half=bottom:facing=south humility-afm:outer_stairs_bamboo:half=bottom:facing=south humility-afm:outer_stairs_birch:half=bottom:facing=south humility-afm:outer_stairs_cherry:half=bottom:facing=south humility-afm:outer_stairs_crimson:half=bottom:facing=south humility-afm:outer_stairs_dark_oak:half=bottom:facing=south humility-afm:outer_stairs_jungle:half=bottom:facing=south humility-afm:outer_stairs_mangrove:half=bottom:facing=south humility-afm:outer_stairs_oak:half=bottom:facing=south humility-afm:outer_stairs_spruce:half=bottom:facing=south humility-afm:outer_stairs_warped:half=bottom:facing=south humility-afm:outer_stairs_anchor_tree:half=bottom:facing=south humility-afm:outer_stairs_mushroom:half=bottom:facing=south humility-afm:outer_stairs_mushroom_fir:half=bottom:facing=south humility-afm:outer_stairs_nether_sakura:half=bottom:facing=south humility-afm:outer_stairs_stalagnate:half=bottom:facing=south humility-afm:outer_stairs_wart:half=bottom:facing=south humility-afm:outer_stairs_willow:half=bottom:facing=south humility-afm:outer_stairs_mud_bricks:half=bottom:facing=south humility-afm:outer_stairs_quartz:half=bottom:facing=south humility-afm:outer_stairs_red_sandstone:half=bottom:facing=south humility-afm:outer_stairs_sandstone:half=bottom:facing=south humility-afm:outer_stairs_andesite:half=bottom:facing=south humility-afm:outer_stairs_blackstone:half=bottom:facing=south humility-afm:outer_stairs_dark_prismarine:half=bottom:facing=south humility-afm:outer_stairs_diorite:half=bottom:facing=south humility-afm:outer_stairs_granite:half=bottom:facing=south humility-afm:outer_stairs_mossy_stone_brick:half=bottom:facing=south humility-afm:outer_stairs_polished_andesite:half=bottom:facing=south humility-afm:outer_stairs_polished_blackstone_brick:half=bottom:facing=south humility-afm:outer_stairs_polished_diorite:half=bottom:facing=south humility-afm:outer_stairs_polished_granite:half=bottom:facing=south humility-afm:outer_stairs_prismarine:half=bottom:facing=south humility-afm:outer_stairs_prismarine_bricks:half=bottom:facing=south humility-afm:outer_stairs_purpur:half=bottom:facing=south humility-afm:outer_stairs_stone:half=bottom:facing=south humility-afm:outer_stairs_stone_brick:half=bottom:facing=south humility-afm:outer_stairs_brick:half=bottom:facing=south humility-afm:outer_stairs_cobblestone:half=bottom:facing=south humility-afm:outer_stairs_mossy_cobblestone:half=bottom:facing=south humility-afm:outer_stairs_nether_brick:half=bottom:facing=south humility-afm:outer_stairs_polished_blackstone:half=bottom:facing=south humility-afm:outer_stairs_red_nether_brick:half=bottom:facing=south humility-afm:outer_stairs_smooth_quartz:half=bottom:facing=south humility-afm:outer_stairs_smooth_red_sandstone:half=bottom:facing=south humility-afm:outer_stairs_smooth_sandstone:half=bottom:facing=south humility-afm:outer_stairs_end_stone_brick:half=bottom:facing=south humility-afm:outer_stairs_cut_copper:half=bottom:facing=south humility-afm:outer_stairs_exposed_cut_copper:half=bottom:facing=south humility-afm:outer_stairs_oxidized_cut_copper:half=bottom:facing=south humility-afm:outer_stairs_weathered_cut_copper:half=bottom:facing=south humility-afm:outer_stairs_cobbled_deepslate:half=bottom:facing=south humility-afm:outer_stairs_deepslate_brick:half=bottom:facing=south humility-afm:outer_stairs_deepslate_tile:half=bottom:facing=south humility-afm:outer_stairs_polished_deepslate:half=bottom:facing=south -block.425=acacia_stairs:shape=outer_left:half=bottom:facing=east bamboo_stairs:shape=outer_left:half=bottom:facing=east bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=east birch_stairs:shape=outer_left:half=bottom:facing=east cherry_stairs:shape=outer_left:half=bottom:facing=east crimson_stairs:shape=outer_left:half=bottom:facing=east dark_oak_stairs:shape=outer_left:half=bottom:facing=east jungle_stairs:shape=outer_left:half=bottom:facing=east mangrove_stairs:shape=outer_left:half=bottom:facing=east oak_stairs:shape=outer_left:half=bottom:facing=east spruce_stairs:shape=outer_left:half=bottom:facing=east warped_stairs:shape=outer_left:half=bottom:facing=east andesite_stairs:shape=outer_left:half=bottom:facing=east blackstone_stairs:shape=outer_left:half=bottom:facing=east brick_stairs:shape=outer_left:half=bottom:facing=east cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=east cobblestone_stairs:shape=outer_left:half=bottom:facing=east cut_copper_stairs:shape=outer_left:half=bottom:facing=east dark_prismarine_stairs:shape=outer_left:half=bottom:facing=east deepslate_brick_stairs:shape=outer_left:half=bottom:facing=east deepslate_tile_stairs:shape=outer_left:half=bottom:facing=east diorite_stairs:shape=outer_left:half=bottom:facing=east end_stone_brick_stairs:shape=outer_left:half=bottom:facing=east exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=east granite_stairs:shape=outer_left:half=bottom:facing=east mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=east mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=east mud_brick_stairs:shape=outer_left:half=bottom:facing=east nether_brick_stairs:shape=outer_left:half=bottom:facing=east oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=east polished_andesite_stairs:shape=outer_left:half=bottom:facing=east polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=east polished_blackstone_stairs:shape=outer_left:half=bottom:facing=east polished_deepslate_stairs:shape=outer_left:half=bottom:facing=east polished_diorite_stairs:shape=outer_left:half=bottom:facing=east polished_granite_stairs:shape=outer_left:half=bottom:facing=east prismarine_brick_stairs:shape=outer_left:half=bottom:facing=east prismarine_stairs:shape=outer_left:half=bottom:facing=east purpur_stairs:shape=outer_left:half=bottom:facing=east quartz_stairs:shape=outer_left:half=bottom:facing=east red_nether_brick_stairs:shape=outer_left:half=bottom:facing=east red_sandstone_stairs:shape=outer_left:half=bottom:facing=east sandstone_stairs:shape=outer_left:half=bottom:facing=east smooth_quartz_stairs:shape=outer_left:half=bottom:facing=east smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=east smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=east stone_brick_stairs:shape=outer_left:half=bottom:facing=east stone_stairs:shape=outer_left:half=bottom:facing=east waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=east weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=east create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_granite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=east create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=east create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=east acacia_stairs:shape=outer_right:half=bottom:facing=north bamboo_stairs:shape=outer_right:half=bottom:facing=north bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=north birch_stairs:shape=outer_right:half=bottom:facing=north cherry_stairs:shape=outer_right:half=bottom:facing=north crimson_stairs:shape=outer_right:half=bottom:facing=north dark_oak_stairs:shape=outer_right:half=bottom:facing=north jungle_stairs:shape=outer_right:half=bottom:facing=north mangrove_stairs:shape=outer_right:half=bottom:facing=north oak_stairs:shape=outer_right:half=bottom:facing=north spruce_stairs:shape=outer_right:half=bottom:facing=north warped_stairs:shape=outer_right:half=bottom:facing=north andesite_stairs:shape=outer_right:half=bottom:facing=north blackstone_stairs:shape=outer_right:half=bottom:facing=north brick_stairs:shape=outer_right:half=bottom:facing=north cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=north cobblestone_stairs:shape=outer_right:half=bottom:facing=north cut_copper_stairs:shape=outer_right:half=bottom:facing=north dark_prismarine_stairs:shape=outer_right:half=bottom:facing=north deepslate_brick_stairs:shape=outer_right:half=bottom:facing=north deepslate_tile_stairs:shape=outer_right:half=bottom:facing=north diorite_stairs:shape=outer_right:half=bottom:facing=north end_stone_brick_stairs:shape=outer_right:half=bottom:facing=north exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=north granite_stairs:shape=outer_right:half=bottom:facing=north mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=north mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=north mud_brick_stairs:shape=outer_right:half=bottom:facing=north nether_brick_stairs:shape=outer_right:half=bottom:facing=north oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=north polished_andesite_stairs:shape=outer_right:half=bottom:facing=north polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=north polished_blackstone_stairs:shape=outer_right:half=bottom:facing=north polished_deepslate_stairs:shape=outer_right:half=bottom:facing=north polished_diorite_stairs:shape=outer_right:half=bottom:facing=north polished_granite_stairs:shape=outer_right:half=bottom:facing=north prismarine_brick_stairs:shape=outer_right:half=bottom:facing=north prismarine_stairs:shape=outer_right:half=bottom:facing=north purpur_stairs:shape=outer_right:half=bottom:facing=north quartz_stairs:shape=outer_right:half=bottom:facing=north red_nether_brick_stairs:shape=outer_right:half=bottom:facing=north red_sandstone_stairs:shape=outer_right:half=bottom:facing=north sandstone_stairs:shape=outer_right:half=bottom:facing=north smooth_quartz_stairs:shape=outer_right:half=bottom:facing=north smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=north smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=north stone_brick_stairs:shape=outer_right:half=bottom:facing=north stone_stairs:shape=outer_right:half=bottom:facing=north waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=north weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=north create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_granite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=north create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=north create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=north +block.425=acacia_stairs:shape=outer_left:half=bottom:facing=east bamboo_stairs:shape=outer_left:half=bottom:facing=east bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=east birch_stairs:shape=outer_left:half=bottom:facing=east cherry_stairs:shape=outer_left:half=bottom:facing=east crimson_stairs:shape=outer_left:half=bottom:facing=east dark_oak_stairs:shape=outer_left:half=bottom:facing=east jungle_stairs:shape=outer_left:half=bottom:facing=east mangrove_stairs:shape=outer_left:half=bottom:facing=east oak_stairs:shape=outer_left:half=bottom:facing=east spruce_stairs:shape=outer_left:half=bottom:facing=east warped_stairs:shape=outer_left:half=bottom:facing=east andesite_stairs:shape=outer_left:half=bottom:facing=east blackstone_stairs:shape=outer_left:half=bottom:facing=east brick_stairs:shape=outer_left:half=bottom:facing=east cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=east cobblestone_stairs:shape=outer_left:half=bottom:facing=east cut_copper_stairs:shape=outer_left:half=bottom:facing=east dark_prismarine_stairs:shape=outer_left:half=bottom:facing=east deepslate_brick_stairs:shape=outer_left:half=bottom:facing=east deepslate_tile_stairs:shape=outer_left:half=bottom:facing=east diorite_stairs:shape=outer_left:half=bottom:facing=east end_stone_brick_stairs:shape=outer_left:half=bottom:facing=east exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=east granite_stairs:shape=outer_left:half=bottom:facing=east mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=east mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=east mud_brick_stairs:shape=outer_left:half=bottom:facing=east nether_brick_stairs:shape=outer_left:half=bottom:facing=east oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=east polished_andesite_stairs:shape=outer_left:half=bottom:facing=east polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=east polished_blackstone_stairs:shape=outer_left:half=bottom:facing=east polished_deepslate_stairs:shape=outer_left:half=bottom:facing=east polished_diorite_stairs:shape=outer_left:half=bottom:facing=east polished_granite_stairs:shape=outer_left:half=bottom:facing=east prismarine_brick_stairs:shape=outer_left:half=bottom:facing=east prismarine_stairs:shape=outer_left:half=bottom:facing=east purpur_stairs:shape=outer_left:half=bottom:facing=east quartz_stairs:shape=outer_left:half=bottom:facing=east red_nether_brick_stairs:shape=outer_left:half=bottom:facing=east red_sandstone_stairs:shape=outer_left:half=bottom:facing=east sandstone_stairs:shape=outer_left:half=bottom:facing=east smooth_quartz_stairs:shape=outer_left:half=bottom:facing=east smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=east smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=east stone_brick_stairs:shape=outer_left:half=bottom:facing=east stone_stairs:shape=outer_left:half=bottom:facing=east waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=east weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=east create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_granite_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=east create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=east create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=east create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=east create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=east create:copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=east acacia_stairs:shape=outer_right:half=bottom:facing=north bamboo_stairs:shape=outer_right:half=bottom:facing=north bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=north birch_stairs:shape=outer_right:half=bottom:facing=north cherry_stairs:shape=outer_right:half=bottom:facing=north crimson_stairs:shape=outer_right:half=bottom:facing=north dark_oak_stairs:shape=outer_right:half=bottom:facing=north jungle_stairs:shape=outer_right:half=bottom:facing=north mangrove_stairs:shape=outer_right:half=bottom:facing=north oak_stairs:shape=outer_right:half=bottom:facing=north spruce_stairs:shape=outer_right:half=bottom:facing=north warped_stairs:shape=outer_right:half=bottom:facing=north andesite_stairs:shape=outer_right:half=bottom:facing=north blackstone_stairs:shape=outer_right:half=bottom:facing=north brick_stairs:shape=outer_right:half=bottom:facing=north cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=north cobblestone_stairs:shape=outer_right:half=bottom:facing=north cut_copper_stairs:shape=outer_right:half=bottom:facing=north dark_prismarine_stairs:shape=outer_right:half=bottom:facing=north deepslate_brick_stairs:shape=outer_right:half=bottom:facing=north deepslate_tile_stairs:shape=outer_right:half=bottom:facing=north diorite_stairs:shape=outer_right:half=bottom:facing=north end_stone_brick_stairs:shape=outer_right:half=bottom:facing=north exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=north granite_stairs:shape=outer_right:half=bottom:facing=north mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=north mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=north mud_brick_stairs:shape=outer_right:half=bottom:facing=north nether_brick_stairs:shape=outer_right:half=bottom:facing=north oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=north polished_andesite_stairs:shape=outer_right:half=bottom:facing=north polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=north polished_blackstone_stairs:shape=outer_right:half=bottom:facing=north polished_deepslate_stairs:shape=outer_right:half=bottom:facing=north polished_diorite_stairs:shape=outer_right:half=bottom:facing=north polished_granite_stairs:shape=outer_right:half=bottom:facing=north prismarine_brick_stairs:shape=outer_right:half=bottom:facing=north prismarine_stairs:shape=outer_right:half=bottom:facing=north purpur_stairs:shape=outer_right:half=bottom:facing=north quartz_stairs:shape=outer_right:half=bottom:facing=north red_nether_brick_stairs:shape=outer_right:half=bottom:facing=north red_sandstone_stairs:shape=outer_right:half=bottom:facing=north sandstone_stairs:shape=outer_right:half=bottom:facing=north smooth_quartz_stairs:shape=outer_right:half=bottom:facing=north smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=north smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=north stone_brick_stairs:shape=outer_right:half=bottom:facing=north stone_stairs:shape=outer_right:half=bottom:facing=north waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=north weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=north create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_granite_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=north create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=north create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=north create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=north create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=north create:copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=north \ + humility-afm:outer_stairs_acacia:half=bottom:facing=west humility-afm:outer_stairs_bamboo:half=bottom:facing=west humility-afm:outer_stairs_birch:half=bottom:facing=west humility-afm:outer_stairs_cherry:half=bottom:facing=west humility-afm:outer_stairs_crimson:half=bottom:facing=west humility-afm:outer_stairs_dark_oak:half=bottom:facing=west humility-afm:outer_stairs_jungle:half=bottom:facing=west humility-afm:outer_stairs_mangrove:half=bottom:facing=west humility-afm:outer_stairs_oak:half=bottom:facing=west humility-afm:outer_stairs_spruce:half=bottom:facing=west humility-afm:outer_stairs_warped:half=bottom:facing=west humility-afm:outer_stairs_anchor_tree:half=bottom:facing=west humility-afm:outer_stairs_mushroom:half=bottom:facing=west humility-afm:outer_stairs_mushroom_fir:half=bottom:facing=west humility-afm:outer_stairs_nether_sakura:half=bottom:facing=west humility-afm:outer_stairs_stalagnate:half=bottom:facing=west humility-afm:outer_stairs_wart:half=bottom:facing=west humility-afm:outer_stairs_willow:half=bottom:facing=west humility-afm:outer_stairs_mud_bricks:half=bottom:facing=west humility-afm:outer_stairs_quartz:half=bottom:facing=west humility-afm:outer_stairs_red_sandstone:half=bottom:facing=west humility-afm:outer_stairs_sandstone:half=bottom:facing=west humility-afm:outer_stairs_andesite:half=bottom:facing=west humility-afm:outer_stairs_blackstone:half=bottom:facing=west humility-afm:outer_stairs_dark_prismarine:half=bottom:facing=west humility-afm:outer_stairs_diorite:half=bottom:facing=west humility-afm:outer_stairs_granite:half=bottom:facing=west humility-afm:outer_stairs_mossy_stone_brick:half=bottom:facing=west humility-afm:outer_stairs_polished_andesite:half=bottom:facing=west humility-afm:outer_stairs_polished_blackstone_brick:half=bottom:facing=west humility-afm:outer_stairs_polished_diorite:half=bottom:facing=west humility-afm:outer_stairs_polished_granite:half=bottom:facing=west humility-afm:outer_stairs_prismarine:half=bottom:facing=west humility-afm:outer_stairs_prismarine_bricks:half=bottom:facing=west humility-afm:outer_stairs_purpur:half=bottom:facing=west humility-afm:outer_stairs_stone:half=bottom:facing=west humility-afm:outer_stairs_stone_brick:half=bottom:facing=west humility-afm:outer_stairs_brick:half=bottom:facing=west humility-afm:outer_stairs_cobblestone:half=bottom:facing=west humility-afm:outer_stairs_mossy_cobblestone:half=bottom:facing=west humility-afm:outer_stairs_nether_brick:half=bottom:facing=west humility-afm:outer_stairs_polished_blackstone:half=bottom:facing=west humility-afm:outer_stairs_red_nether_brick:half=bottom:facing=west humility-afm:outer_stairs_smooth_quartz:half=bottom:facing=west humility-afm:outer_stairs_smooth_red_sandstone:half=bottom:facing=west humility-afm:outer_stairs_smooth_sandstone:half=bottom:facing=west humility-afm:outer_stairs_end_stone_brick:half=bottom:facing=west humility-afm:outer_stairs_cut_copper:half=bottom:facing=west humility-afm:outer_stairs_exposed_cut_copper:half=bottom:facing=west humility-afm:outer_stairs_oxidized_cut_copper:half=bottom:facing=west humility-afm:outer_stairs_weathered_cut_copper:half=bottom:facing=west humility-afm:outer_stairs_cobbled_deepslate:half=bottom:facing=west humility-afm:outer_stairs_deepslate_brick:half=bottom:facing=west humility-afm:outer_stairs_deepslate_tile:half=bottom:facing=west humility-afm:outer_stairs_polished_deepslate:half=bottom:facing=west -block.426=acacia_stairs:shape=outer_left:half=bottom:facing=south bamboo_stairs:shape=outer_left:half=bottom:facing=south bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=south birch_stairs:shape=outer_left:half=bottom:facing=south cherry_stairs:shape=outer_left:half=bottom:facing=south crimson_stairs:shape=outer_left:half=bottom:facing=south dark_oak_stairs:shape=outer_left:half=bottom:facing=south jungle_stairs:shape=outer_left:half=bottom:facing=south mangrove_stairs:shape=outer_left:half=bottom:facing=south oak_stairs:shape=outer_left:half=bottom:facing=south spruce_stairs:shape=outer_left:half=bottom:facing=south warped_stairs:shape=outer_left:half=bottom:facing=south andesite_stairs:shape=outer_left:half=bottom:facing=south blackstone_stairs:shape=outer_left:half=bottom:facing=south brick_stairs:shape=outer_left:half=bottom:facing=south cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=south cobblestone_stairs:shape=outer_left:half=bottom:facing=south cut_copper_stairs:shape=outer_left:half=bottom:facing=south dark_prismarine_stairs:shape=outer_left:half=bottom:facing=south deepslate_brick_stairs:shape=outer_left:half=bottom:facing=south deepslate_tile_stairs:shape=outer_left:half=bottom:facing=south diorite_stairs:shape=outer_left:half=bottom:facing=south end_stone_brick_stairs:shape=outer_left:half=bottom:facing=south exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=south granite_stairs:shape=outer_left:half=bottom:facing=south mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=south mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=south mud_brick_stairs:shape=outer_left:half=bottom:facing=south nether_brick_stairs:shape=outer_left:half=bottom:facing=south oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=south polished_andesite_stairs:shape=outer_left:half=bottom:facing=south polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=south polished_blackstone_stairs:shape=outer_left:half=bottom:facing=south polished_deepslate_stairs:shape=outer_left:half=bottom:facing=south polished_diorite_stairs:shape=outer_left:half=bottom:facing=south polished_granite_stairs:shape=outer_left:half=bottom:facing=south prismarine_brick_stairs:shape=outer_left:half=bottom:facing=south prismarine_stairs:shape=outer_left:half=bottom:facing=south purpur_stairs:shape=outer_left:half=bottom:facing=south quartz_stairs:shape=outer_left:half=bottom:facing=south red_nether_brick_stairs:shape=outer_left:half=bottom:facing=south red_sandstone_stairs:shape=outer_left:half=bottom:facing=south sandstone_stairs:shape=outer_left:half=bottom:facing=south smooth_quartz_stairs:shape=outer_left:half=bottom:facing=south smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=south smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=south stone_brick_stairs:shape=outer_left:half=bottom:facing=south stone_stairs:shape=outer_left:half=bottom:facing=south waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=south weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=south create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_granite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=south create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=south create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=south acacia_stairs:shape=outer_right:half=bottom:facing=east bamboo_stairs:shape=outer_right:half=bottom:facing=east bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=east birch_stairs:shape=outer_right:half=bottom:facing=east cherry_stairs:shape=outer_right:half=bottom:facing=east crimson_stairs:shape=outer_right:half=bottom:facing=east dark_oak_stairs:shape=outer_right:half=bottom:facing=east jungle_stairs:shape=outer_right:half=bottom:facing=east mangrove_stairs:shape=outer_right:half=bottom:facing=east oak_stairs:shape=outer_right:half=bottom:facing=east spruce_stairs:shape=outer_right:half=bottom:facing=east warped_stairs:shape=outer_right:half=bottom:facing=east andesite_stairs:shape=outer_right:half=bottom:facing=east blackstone_stairs:shape=outer_right:half=bottom:facing=east brick_stairs:shape=outer_right:half=bottom:facing=east cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=east cobblestone_stairs:shape=outer_right:half=bottom:facing=east cut_copper_stairs:shape=outer_right:half=bottom:facing=east dark_prismarine_stairs:shape=outer_right:half=bottom:facing=east deepslate_brick_stairs:shape=outer_right:half=bottom:facing=east deepslate_tile_stairs:shape=outer_right:half=bottom:facing=east diorite_stairs:shape=outer_right:half=bottom:facing=east end_stone_brick_stairs:shape=outer_right:half=bottom:facing=east exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=east granite_stairs:shape=outer_right:half=bottom:facing=east mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=east mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=east mud_brick_stairs:shape=outer_right:half=bottom:facing=east nether_brick_stairs:shape=outer_right:half=bottom:facing=east oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=east polished_andesite_stairs:shape=outer_right:half=bottom:facing=east polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=east polished_blackstone_stairs:shape=outer_right:half=bottom:facing=east polished_deepslate_stairs:shape=outer_right:half=bottom:facing=east polished_diorite_stairs:shape=outer_right:half=bottom:facing=east polished_granite_stairs:shape=outer_right:half=bottom:facing=east prismarine_brick_stairs:shape=outer_right:half=bottom:facing=east prismarine_stairs:shape=outer_right:half=bottom:facing=east purpur_stairs:shape=outer_right:half=bottom:facing=east quartz_stairs:shape=outer_right:half=bottom:facing=east red_nether_brick_stairs:shape=outer_right:half=bottom:facing=east red_sandstone_stairs:shape=outer_right:half=bottom:facing=east sandstone_stairs:shape=outer_right:half=bottom:facing=east smooth_quartz_stairs:shape=outer_right:half=bottom:facing=east smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=east smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=east stone_brick_stairs:shape=outer_right:half=bottom:facing=east stone_stairs:shape=outer_right:half=bottom:facing=east waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=east weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=east create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_granite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=east create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=east create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=east +block.426=acacia_stairs:shape=outer_left:half=bottom:facing=south bamboo_stairs:shape=outer_left:half=bottom:facing=south bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=south birch_stairs:shape=outer_left:half=bottom:facing=south cherry_stairs:shape=outer_left:half=bottom:facing=south crimson_stairs:shape=outer_left:half=bottom:facing=south dark_oak_stairs:shape=outer_left:half=bottom:facing=south jungle_stairs:shape=outer_left:half=bottom:facing=south mangrove_stairs:shape=outer_left:half=bottom:facing=south oak_stairs:shape=outer_left:half=bottom:facing=south spruce_stairs:shape=outer_left:half=bottom:facing=south warped_stairs:shape=outer_left:half=bottom:facing=south andesite_stairs:shape=outer_left:half=bottom:facing=south blackstone_stairs:shape=outer_left:half=bottom:facing=south brick_stairs:shape=outer_left:half=bottom:facing=south cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=south cobblestone_stairs:shape=outer_left:half=bottom:facing=south cut_copper_stairs:shape=outer_left:half=bottom:facing=south dark_prismarine_stairs:shape=outer_left:half=bottom:facing=south deepslate_brick_stairs:shape=outer_left:half=bottom:facing=south deepslate_tile_stairs:shape=outer_left:half=bottom:facing=south diorite_stairs:shape=outer_left:half=bottom:facing=south end_stone_brick_stairs:shape=outer_left:half=bottom:facing=south exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=south granite_stairs:shape=outer_left:half=bottom:facing=south mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=south mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=south mud_brick_stairs:shape=outer_left:half=bottom:facing=south nether_brick_stairs:shape=outer_left:half=bottom:facing=south oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=south polished_andesite_stairs:shape=outer_left:half=bottom:facing=south polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=south polished_blackstone_stairs:shape=outer_left:half=bottom:facing=south polished_deepslate_stairs:shape=outer_left:half=bottom:facing=south polished_diorite_stairs:shape=outer_left:half=bottom:facing=south polished_granite_stairs:shape=outer_left:half=bottom:facing=south prismarine_brick_stairs:shape=outer_left:half=bottom:facing=south prismarine_stairs:shape=outer_left:half=bottom:facing=south purpur_stairs:shape=outer_left:half=bottom:facing=south quartz_stairs:shape=outer_left:half=bottom:facing=south red_nether_brick_stairs:shape=outer_left:half=bottom:facing=south red_sandstone_stairs:shape=outer_left:half=bottom:facing=south sandstone_stairs:shape=outer_left:half=bottom:facing=south smooth_quartz_stairs:shape=outer_left:half=bottom:facing=south smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=south smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=south stone_brick_stairs:shape=outer_left:half=bottom:facing=south stone_stairs:shape=outer_left:half=bottom:facing=south waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=south weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=south create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_granite_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=south create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=south create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=south create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=south create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=south create:copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=south acacia_stairs:shape=outer_right:half=bottom:facing=east bamboo_stairs:shape=outer_right:half=bottom:facing=east bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=east birch_stairs:shape=outer_right:half=bottom:facing=east cherry_stairs:shape=outer_right:half=bottom:facing=east crimson_stairs:shape=outer_right:half=bottom:facing=east dark_oak_stairs:shape=outer_right:half=bottom:facing=east jungle_stairs:shape=outer_right:half=bottom:facing=east mangrove_stairs:shape=outer_right:half=bottom:facing=east oak_stairs:shape=outer_right:half=bottom:facing=east spruce_stairs:shape=outer_right:half=bottom:facing=east warped_stairs:shape=outer_right:half=bottom:facing=east andesite_stairs:shape=outer_right:half=bottom:facing=east blackstone_stairs:shape=outer_right:half=bottom:facing=east brick_stairs:shape=outer_right:half=bottom:facing=east cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=east cobblestone_stairs:shape=outer_right:half=bottom:facing=east cut_copper_stairs:shape=outer_right:half=bottom:facing=east dark_prismarine_stairs:shape=outer_right:half=bottom:facing=east deepslate_brick_stairs:shape=outer_right:half=bottom:facing=east deepslate_tile_stairs:shape=outer_right:half=bottom:facing=east diorite_stairs:shape=outer_right:half=bottom:facing=east end_stone_brick_stairs:shape=outer_right:half=bottom:facing=east exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=east granite_stairs:shape=outer_right:half=bottom:facing=east mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=east mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=east mud_brick_stairs:shape=outer_right:half=bottom:facing=east nether_brick_stairs:shape=outer_right:half=bottom:facing=east oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=east polished_andesite_stairs:shape=outer_right:half=bottom:facing=east polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=east polished_blackstone_stairs:shape=outer_right:half=bottom:facing=east polished_deepslate_stairs:shape=outer_right:half=bottom:facing=east polished_diorite_stairs:shape=outer_right:half=bottom:facing=east polished_granite_stairs:shape=outer_right:half=bottom:facing=east prismarine_brick_stairs:shape=outer_right:half=bottom:facing=east prismarine_stairs:shape=outer_right:half=bottom:facing=east purpur_stairs:shape=outer_right:half=bottom:facing=east quartz_stairs:shape=outer_right:half=bottom:facing=east red_nether_brick_stairs:shape=outer_right:half=bottom:facing=east red_sandstone_stairs:shape=outer_right:half=bottom:facing=east sandstone_stairs:shape=outer_right:half=bottom:facing=east smooth_quartz_stairs:shape=outer_right:half=bottom:facing=east smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=east smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=east stone_brick_stairs:shape=outer_right:half=bottom:facing=east stone_stairs:shape=outer_right:half=bottom:facing=east waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=east weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=east create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_granite_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=east create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=east create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=east create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=east create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=east create:copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=east \ + humility-afm:outer_stairs_acacia:half=bottom:facing=north humility-afm:outer_stairs_bamboo:half=bottom:facing=north humility-afm:outer_stairs_birch:half=bottom:facing=north humility-afm:outer_stairs_cherry:half=bottom:facing=north humility-afm:outer_stairs_crimson:half=bottom:facing=north humility-afm:outer_stairs_dark_oak:half=bottom:facing=north humility-afm:outer_stairs_jungle:half=bottom:facing=north humility-afm:outer_stairs_mangrove:half=bottom:facing=north humility-afm:outer_stairs_oak:half=bottom:facing=north humility-afm:outer_stairs_spruce:half=bottom:facing=north humility-afm:outer_stairs_warped:half=bottom:facing=north humility-afm:outer_stairs_anchor_tree:half=bottom:facing=north humility-afm:outer_stairs_mushroom:half=bottom:facing=north humility-afm:outer_stairs_mushroom_fir:half=bottom:facing=north humility-afm:outer_stairs_nether_sakura:half=bottom:facing=north humility-afm:outer_stairs_stalagnate:half=bottom:facing=north humility-afm:outer_stairs_wart:half=bottom:facing=north humility-afm:outer_stairs_willow:half=bottom:facing=north humility-afm:outer_stairs_mud_bricks:half=bottom:facing=north humility-afm:outer_stairs_quartz:half=bottom:facing=north humility-afm:outer_stairs_red_sandstone:half=bottom:facing=north humility-afm:outer_stairs_sandstone:half=bottom:facing=north humility-afm:outer_stairs_andesite:half=bottom:facing=north humility-afm:outer_stairs_blackstone:half=bottom:facing=north humility-afm:outer_stairs_dark_prismarine:half=bottom:facing=north humility-afm:outer_stairs_diorite:half=bottom:facing=north humility-afm:outer_stairs_granite:half=bottom:facing=north humility-afm:outer_stairs_mossy_stone_brick:half=bottom:facing=north humility-afm:outer_stairs_polished_andesite:half=bottom:facing=north humility-afm:outer_stairs_polished_blackstone_brick:half=bottom:facing=north humility-afm:outer_stairs_polished_diorite:half=bottom:facing=north humility-afm:outer_stairs_polished_granite:half=bottom:facing=north humility-afm:outer_stairs_prismarine:half=bottom:facing=north humility-afm:outer_stairs_prismarine_bricks:half=bottom:facing=north humility-afm:outer_stairs_purpur:half=bottom:facing=north humility-afm:outer_stairs_stone:half=bottom:facing=north humility-afm:outer_stairs_stone_brick:half=bottom:facing=north humility-afm:outer_stairs_brick:half=bottom:facing=north humility-afm:outer_stairs_cobblestone:half=bottom:facing=north humility-afm:outer_stairs_mossy_cobblestone:half=bottom:facing=north humility-afm:outer_stairs_nether_brick:half=bottom:facing=north humility-afm:outer_stairs_polished_blackstone:half=bottom:facing=north humility-afm:outer_stairs_red_nether_brick:half=bottom:facing=north humility-afm:outer_stairs_smooth_quartz:half=bottom:facing=north humility-afm:outer_stairs_smooth_red_sandstone:half=bottom:facing=north humility-afm:outer_stairs_smooth_sandstone:half=bottom:facing=north humility-afm:outer_stairs_end_stone_brick:half=bottom:facing=north humility-afm:outer_stairs_cut_copper:half=bottom:facing=north humility-afm:outer_stairs_exposed_cut_copper:half=bottom:facing=north humility-afm:outer_stairs_oxidized_cut_copper:half=bottom:facing=north humility-afm:outer_stairs_weathered_cut_copper:half=bottom:facing=north humility-afm:outer_stairs_cobbled_deepslate:half=bottom:facing=north humility-afm:outer_stairs_deepslate_brick:half=bottom:facing=north humility-afm:outer_stairs_deepslate_tile:half=bottom:facing=north humility-afm:outer_stairs_polished_deepslate:half=bottom:facing=north -block.427=acacia_stairs:shape=outer_left:half=bottom:facing=west bamboo_stairs:shape=outer_left:half=bottom:facing=west bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=west birch_stairs:shape=outer_left:half=bottom:facing=west cherry_stairs:shape=outer_left:half=bottom:facing=west crimson_stairs:shape=outer_left:half=bottom:facing=west dark_oak_stairs:shape=outer_left:half=bottom:facing=west jungle_stairs:shape=outer_left:half=bottom:facing=west mangrove_stairs:shape=outer_left:half=bottom:facing=west oak_stairs:shape=outer_left:half=bottom:facing=west spruce_stairs:shape=outer_left:half=bottom:facing=west warped_stairs:shape=outer_left:half=bottom:facing=west andesite_stairs:shape=outer_left:half=bottom:facing=west blackstone_stairs:shape=outer_left:half=bottom:facing=west brick_stairs:shape=outer_left:half=bottom:facing=west cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=west cobblestone_stairs:shape=outer_left:half=bottom:facing=west cut_copper_stairs:shape=outer_left:half=bottom:facing=west dark_prismarine_stairs:shape=outer_left:half=bottom:facing=west deepslate_brick_stairs:shape=outer_left:half=bottom:facing=west deepslate_tile_stairs:shape=outer_left:half=bottom:facing=west diorite_stairs:shape=outer_left:half=bottom:facing=west end_stone_brick_stairs:shape=outer_left:half=bottom:facing=west exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=west granite_stairs:shape=outer_left:half=bottom:facing=west mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=west mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=west mud_brick_stairs:shape=outer_left:half=bottom:facing=west nether_brick_stairs:shape=outer_left:half=bottom:facing=west oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=west polished_andesite_stairs:shape=outer_left:half=bottom:facing=west polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=west polished_blackstone_stairs:shape=outer_left:half=bottom:facing=west polished_deepslate_stairs:shape=outer_left:half=bottom:facing=west polished_diorite_stairs:shape=outer_left:half=bottom:facing=west polished_granite_stairs:shape=outer_left:half=bottom:facing=west prismarine_brick_stairs:shape=outer_left:half=bottom:facing=west prismarine_stairs:shape=outer_left:half=bottom:facing=west purpur_stairs:shape=outer_left:half=bottom:facing=west quartz_stairs:shape=outer_left:half=bottom:facing=west red_nether_brick_stairs:shape=outer_left:half=bottom:facing=west red_sandstone_stairs:shape=outer_left:half=bottom:facing=west sandstone_stairs:shape=outer_left:half=bottom:facing=west smooth_quartz_stairs:shape=outer_left:half=bottom:facing=west smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=west smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=west stone_brick_stairs:shape=outer_left:half=bottom:facing=west stone_stairs:shape=outer_left:half=bottom:facing=west waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=west weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=west create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_granite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=west create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=west create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=west acacia_stairs:shape=outer_right:half=bottom:facing=south bamboo_stairs:shape=outer_right:half=bottom:facing=south bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=south birch_stairs:shape=outer_right:half=bottom:facing=south cherry_stairs:shape=outer_right:half=bottom:facing=south crimson_stairs:shape=outer_right:half=bottom:facing=south dark_oak_stairs:shape=outer_right:half=bottom:facing=south jungle_stairs:shape=outer_right:half=bottom:facing=south mangrove_stairs:shape=outer_right:half=bottom:facing=south oak_stairs:shape=outer_right:half=bottom:facing=south spruce_stairs:shape=outer_right:half=bottom:facing=south warped_stairs:shape=outer_right:half=bottom:facing=south andesite_stairs:shape=outer_right:half=bottom:facing=south blackstone_stairs:shape=outer_right:half=bottom:facing=south brick_stairs:shape=outer_right:half=bottom:facing=south cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=south cobblestone_stairs:shape=outer_right:half=bottom:facing=south cut_copper_stairs:shape=outer_right:half=bottom:facing=south dark_prismarine_stairs:shape=outer_right:half=bottom:facing=south deepslate_brick_stairs:shape=outer_right:half=bottom:facing=south deepslate_tile_stairs:shape=outer_right:half=bottom:facing=south diorite_stairs:shape=outer_right:half=bottom:facing=south end_stone_brick_stairs:shape=outer_right:half=bottom:facing=south exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=south granite_stairs:shape=outer_right:half=bottom:facing=south mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=south mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=south mud_brick_stairs:shape=outer_right:half=bottom:facing=south nether_brick_stairs:shape=outer_right:half=bottom:facing=south oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=south polished_andesite_stairs:shape=outer_right:half=bottom:facing=south polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=south polished_blackstone_stairs:shape=outer_right:half=bottom:facing=south polished_deepslate_stairs:shape=outer_right:half=bottom:facing=south polished_diorite_stairs:shape=outer_right:half=bottom:facing=south polished_granite_stairs:shape=outer_right:half=bottom:facing=south prismarine_brick_stairs:shape=outer_right:half=bottom:facing=south prismarine_stairs:shape=outer_right:half=bottom:facing=south purpur_stairs:shape=outer_right:half=bottom:facing=south quartz_stairs:shape=outer_right:half=bottom:facing=south red_nether_brick_stairs:shape=outer_right:half=bottom:facing=south red_sandstone_stairs:shape=outer_right:half=bottom:facing=south sandstone_stairs:shape=outer_right:half=bottom:facing=south smooth_quartz_stairs:shape=outer_right:half=bottom:facing=south smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=south smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=south stone_brick_stairs:shape=outer_right:half=bottom:facing=south stone_stairs:shape=outer_right:half=bottom:facing=south waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=south weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=south create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_granite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=south create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=south create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=south +block.427=acacia_stairs:shape=outer_left:half=bottom:facing=west bamboo_stairs:shape=outer_left:half=bottom:facing=west bamboo_mosaic_stairs:shape=outer_left:half=bottom:facing=west birch_stairs:shape=outer_left:half=bottom:facing=west cherry_stairs:shape=outer_left:half=bottom:facing=west crimson_stairs:shape=outer_left:half=bottom:facing=west dark_oak_stairs:shape=outer_left:half=bottom:facing=west jungle_stairs:shape=outer_left:half=bottom:facing=west mangrove_stairs:shape=outer_left:half=bottom:facing=west oak_stairs:shape=outer_left:half=bottom:facing=west spruce_stairs:shape=outer_left:half=bottom:facing=west warped_stairs:shape=outer_left:half=bottom:facing=west andesite_stairs:shape=outer_left:half=bottom:facing=west blackstone_stairs:shape=outer_left:half=bottom:facing=west brick_stairs:shape=outer_left:half=bottom:facing=west cobbled_deepslate_stairs:shape=outer_left:half=bottom:facing=west cobblestone_stairs:shape=outer_left:half=bottom:facing=west cut_copper_stairs:shape=outer_left:half=bottom:facing=west dark_prismarine_stairs:shape=outer_left:half=bottom:facing=west deepslate_brick_stairs:shape=outer_left:half=bottom:facing=west deepslate_tile_stairs:shape=outer_left:half=bottom:facing=west diorite_stairs:shape=outer_left:half=bottom:facing=west end_stone_brick_stairs:shape=outer_left:half=bottom:facing=west exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=west granite_stairs:shape=outer_left:half=bottom:facing=west mossy_cobblestone_stairs:shape=outer_left:half=bottom:facing=west mossy_stone_brick_stairs:shape=outer_left:half=bottom:facing=west mud_brick_stairs:shape=outer_left:half=bottom:facing=west nether_brick_stairs:shape=outer_left:half=bottom:facing=west oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=west polished_andesite_stairs:shape=outer_left:half=bottom:facing=west polished_blackstone_brick_stairs:shape=outer_left:half=bottom:facing=west polished_blackstone_stairs:shape=outer_left:half=bottom:facing=west polished_deepslate_stairs:shape=outer_left:half=bottom:facing=west polished_diorite_stairs:shape=outer_left:half=bottom:facing=west polished_granite_stairs:shape=outer_left:half=bottom:facing=west prismarine_brick_stairs:shape=outer_left:half=bottom:facing=west prismarine_stairs:shape=outer_left:half=bottom:facing=west purpur_stairs:shape=outer_left:half=bottom:facing=west quartz_stairs:shape=outer_left:half=bottom:facing=west red_nether_brick_stairs:shape=outer_left:half=bottom:facing=west red_sandstone_stairs:shape=outer_left:half=bottom:facing=west sandstone_stairs:shape=outer_left:half=bottom:facing=west smooth_quartz_stairs:shape=outer_left:half=bottom:facing=west smooth_red_sandstone_stairs:shape=outer_left:half=bottom:facing=west smooth_sandstone_stairs:shape=outer_left:half=bottom:facing=west stone_brick_stairs:shape=outer_left:half=bottom:facing=west stone_stairs:shape=outer_left:half=bottom:facing=west waxed_cut_copper_stairs:shape=outer_left:half=bottom:facing=west waxed_exposed_cut_copper_stairs:shape=outer_left:half=bottom:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_left:half=bottom:facing=west waxed_weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=west weathered_cut_copper_stairs:shape=outer_left:half=bottom:facing=west createdeco:andesite_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:brass_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:copper_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:gold_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:iron_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:netherite_sheet_stairs:shape=outer_left:half=bottom:facing=west createdeco:zinc_sheet_stairs:shape=outer_left:half=bottom:facing=west create:cut_andesite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_andesite_stairs:shape=outer_left:half=bottom:facing=west create:cut_andesite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_andesite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_asurine_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_asurine_stairs:shape=outer_left:half=bottom:facing=west create:cut_asurine_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_asurine_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_calcite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_calcite_stairs:shape=outer_left:half=bottom:facing=west create:cut_calcite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_calcite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_crimsite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_crimsite_stairs:shape=outer_left:half=bottom:facing=west create:cut_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_crimsite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_deepslate_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_deepslate_stairs:shape=outer_left:half=bottom:facing=west create:cut_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_deepslate_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_diorite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_diorite_stairs:shape=outer_left:half=bottom:facing=west create:cut_diorite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_diorite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_dripstone_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_dripstone_stairs:shape=outer_left:half=bottom:facing=west create:cut_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_dripstone_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_granite_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_granite_stairs:shape=outer_left:half=bottom:facing=west create:cut_granite_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_granite_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_limestone_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_limestone_stairs:shape=outer_left:half=bottom:facing=west create:cut_limestone_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_limestone_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_ochrum_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_ochrum_stairs:shape=outer_left:half=bottom:facing=west create:cut_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_ochrum_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_scorchia_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_scorchia_stairs:shape=outer_left:half=bottom:facing=west create:cut_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_scorchia_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_scoria_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_scoria_stairs:shape=outer_left:half=bottom:facing=west create:cut_scoria_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_scoria_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_tuff_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_tuff_stairs:shape=outer_left:half=bottom:facing=west create:cut_tuff_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_tuff_brick_stairs:shape=outer_left:half=bottom:facing=west create:cut_veridium_stairs:shape=outer_left:half=bottom:facing=west create:polished_cut_veridium_stairs:shape=outer_left:half=bottom:facing=west create:cut_veridium_brick_stairs:shape=outer_left:half=bottom:facing=west create:small_veridium_brick_stairs:shape=outer_left:half=bottom:facing=west create:copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=bottom:facing=west create:copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=bottom:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=bottom:facing=west acacia_stairs:shape=outer_right:half=bottom:facing=south bamboo_stairs:shape=outer_right:half=bottom:facing=south bamboo_mosaic_stairs:shape=outer_right:half=bottom:facing=south birch_stairs:shape=outer_right:half=bottom:facing=south cherry_stairs:shape=outer_right:half=bottom:facing=south crimson_stairs:shape=outer_right:half=bottom:facing=south dark_oak_stairs:shape=outer_right:half=bottom:facing=south jungle_stairs:shape=outer_right:half=bottom:facing=south mangrove_stairs:shape=outer_right:half=bottom:facing=south oak_stairs:shape=outer_right:half=bottom:facing=south spruce_stairs:shape=outer_right:half=bottom:facing=south warped_stairs:shape=outer_right:half=bottom:facing=south andesite_stairs:shape=outer_right:half=bottom:facing=south blackstone_stairs:shape=outer_right:half=bottom:facing=south brick_stairs:shape=outer_right:half=bottom:facing=south cobbled_deepslate_stairs:shape=outer_right:half=bottom:facing=south cobblestone_stairs:shape=outer_right:half=bottom:facing=south cut_copper_stairs:shape=outer_right:half=bottom:facing=south dark_prismarine_stairs:shape=outer_right:half=bottom:facing=south deepslate_brick_stairs:shape=outer_right:half=bottom:facing=south deepslate_tile_stairs:shape=outer_right:half=bottom:facing=south diorite_stairs:shape=outer_right:half=bottom:facing=south end_stone_brick_stairs:shape=outer_right:half=bottom:facing=south exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=south granite_stairs:shape=outer_right:half=bottom:facing=south mossy_cobblestone_stairs:shape=outer_right:half=bottom:facing=south mossy_stone_brick_stairs:shape=outer_right:half=bottom:facing=south mud_brick_stairs:shape=outer_right:half=bottom:facing=south nether_brick_stairs:shape=outer_right:half=bottom:facing=south oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=south polished_andesite_stairs:shape=outer_right:half=bottom:facing=south polished_blackstone_brick_stairs:shape=outer_right:half=bottom:facing=south polished_blackstone_stairs:shape=outer_right:half=bottom:facing=south polished_deepslate_stairs:shape=outer_right:half=bottom:facing=south polished_diorite_stairs:shape=outer_right:half=bottom:facing=south polished_granite_stairs:shape=outer_right:half=bottom:facing=south prismarine_brick_stairs:shape=outer_right:half=bottom:facing=south prismarine_stairs:shape=outer_right:half=bottom:facing=south purpur_stairs:shape=outer_right:half=bottom:facing=south quartz_stairs:shape=outer_right:half=bottom:facing=south red_nether_brick_stairs:shape=outer_right:half=bottom:facing=south red_sandstone_stairs:shape=outer_right:half=bottom:facing=south sandstone_stairs:shape=outer_right:half=bottom:facing=south smooth_quartz_stairs:shape=outer_right:half=bottom:facing=south smooth_red_sandstone_stairs:shape=outer_right:half=bottom:facing=south smooth_sandstone_stairs:shape=outer_right:half=bottom:facing=south stone_brick_stairs:shape=outer_right:half=bottom:facing=south stone_stairs:shape=outer_right:half=bottom:facing=south waxed_cut_copper_stairs:shape=outer_right:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=outer_right:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_right:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=south weathered_cut_copper_stairs:shape=outer_right:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=outer_right:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=outer_right:half=bottom:facing=south create:cut_andesite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=outer_right:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_andesite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_asurine_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=outer_right:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_asurine_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_calcite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=outer_right:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_calcite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_crimsite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=outer_right:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_deepslate_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=outer_right:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_diorite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=outer_right:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_diorite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_dripstone_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=outer_right:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_granite_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_granite_stairs:shape=outer_right:half=bottom:facing=south create:cut_granite_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_granite_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_limestone_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=outer_right:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_limestone_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_ochrum_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=outer_right:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_scorchia_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=outer_right:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_scoria_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=outer_right:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_scoria_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_tuff_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=outer_right:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_tuff_brick_stairs:shape=outer_right:half=bottom:facing=south create:cut_veridium_stairs:shape=outer_right:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=outer_right:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=outer_right:half=bottom:facing=south create:small_veridium_brick_stairs:shape=outer_right:half=bottom:facing=south create:copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=bottom:facing=south create:copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=bottom:facing=south \ + humility-afm:outer_stairs_acacia:half=bottom:facing=east humility-afm:outer_stairs_bamboo:half=bottom:facing=east humility-afm:outer_stairs_birch:half=bottom:facing=east humility-afm:outer_stairs_cherry:half=bottom:facing=east humility-afm:outer_stairs_crimson:half=bottom:facing=east humility-afm:outer_stairs_dark_oak:half=bottom:facing=east humility-afm:outer_stairs_jungle:half=bottom:facing=east humility-afm:outer_stairs_mangrove:half=bottom:facing=east humility-afm:outer_stairs_oak:half=bottom:facing=east humility-afm:outer_stairs_spruce:half=bottom:facing=east humility-afm:outer_stairs_warped:half=bottom:facing=east humility-afm:outer_stairs_anchor_tree:half=bottom:facing=east humility-afm:outer_stairs_mushroom:half=bottom:facing=east humility-afm:outer_stairs_mushroom_fir:half=bottom:facing=east humility-afm:outer_stairs_nether_sakura:half=bottom:facing=east humility-afm:outer_stairs_stalagnate:half=bottom:facing=east humility-afm:outer_stairs_wart:half=bottom:facing=east humility-afm:outer_stairs_willow:half=bottom:facing=east humility-afm:outer_stairs_mud_bricks:half=bottom:facing=east humility-afm:outer_stairs_quartz:half=bottom:facing=east humility-afm:outer_stairs_red_sandstone:half=bottom:facing=east humility-afm:outer_stairs_sandstone:half=bottom:facing=east humility-afm:outer_stairs_andesite:half=bottom:facing=east humility-afm:outer_stairs_blackstone:half=bottom:facing=east humility-afm:outer_stairs_dark_prismarine:half=bottom:facing=east humility-afm:outer_stairs_diorite:half=bottom:facing=east humility-afm:outer_stairs_granite:half=bottom:facing=east humility-afm:outer_stairs_mossy_stone_brick:half=bottom:facing=east humility-afm:outer_stairs_polished_andesite:half=bottom:facing=east humility-afm:outer_stairs_polished_blackstone_brick:half=bottom:facing=east humility-afm:outer_stairs_polished_diorite:half=bottom:facing=east humility-afm:outer_stairs_polished_granite:half=bottom:facing=east humility-afm:outer_stairs_prismarine:half=bottom:facing=east humility-afm:outer_stairs_prismarine_bricks:half=bottom:facing=east humility-afm:outer_stairs_purpur:half=bottom:facing=east humility-afm:outer_stairs_stone:half=bottom:facing=east humility-afm:outer_stairs_stone_brick:half=bottom:facing=east humility-afm:outer_stairs_brick:half=bottom:facing=east humility-afm:outer_stairs_cobblestone:half=bottom:facing=east humility-afm:outer_stairs_mossy_cobblestone:half=bottom:facing=east humility-afm:outer_stairs_nether_brick:half=bottom:facing=east humility-afm:outer_stairs_polished_blackstone:half=bottom:facing=east humility-afm:outer_stairs_red_nether_brick:half=bottom:facing=east humility-afm:outer_stairs_smooth_quartz:half=bottom:facing=east humility-afm:outer_stairs_smooth_red_sandstone:half=bottom:facing=east humility-afm:outer_stairs_smooth_sandstone:half=bottom:facing=east humility-afm:outer_stairs_end_stone_brick:half=bottom:facing=east humility-afm:outer_stairs_cut_copper:half=bottom:facing=east humility-afm:outer_stairs_exposed_cut_copper:half=bottom:facing=east humility-afm:outer_stairs_oxidized_cut_copper:half=bottom:facing=east humility-afm:outer_stairs_weathered_cut_copper:half=bottom:facing=east humility-afm:outer_stairs_cobbled_deepslate:half=bottom:facing=east humility-afm:outer_stairs_deepslate_brick:half=bottom:facing=east humility-afm:outer_stairs_deepslate_tile:half=bottom:facing=east humility-afm:outer_stairs_polished_deepslate:half=bottom:facing=east block.428=acacia_stairs:shape=straight:half=top:facing=north bamboo_stairs:shape=straight:half=top:facing=north bamboo_mosaic_stairs:shape=straight:half=top:facing=north birch_stairs:shape=straight:half=top:facing=north cherry_stairs:shape=straight:half=top:facing=north crimson_stairs:shape=straight:half=top:facing=north dark_oak_stairs:shape=straight:half=top:facing=north jungle_stairs:shape=straight:half=top:facing=north mangrove_stairs:shape=straight:half=top:facing=north oak_stairs:shape=straight:half=top:facing=north spruce_stairs:shape=straight:half=top:facing=north warped_stairs:shape=straight:half=top:facing=north andesite_stairs:shape=straight:half=top:facing=north blackstone_stairs:shape=straight:half=top:facing=north brick_stairs:shape=straight:half=top:facing=north cobbled_deepslate_stairs:shape=straight:half=top:facing=north cobblestone_stairs:shape=straight:half=top:facing=north cut_copper_stairs:shape=straight:half=top:facing=north dark_prismarine_stairs:shape=straight:half=top:facing=north deepslate_brick_stairs:shape=straight:half=top:facing=north deepslate_tile_stairs:shape=straight:half=top:facing=north diorite_stairs:shape=straight:half=top:facing=north end_stone_brick_stairs:shape=straight:half=top:facing=north exposed_cut_copper_stairs:shape=straight:half=top:facing=north granite_stairs:shape=straight:half=top:facing=north mossy_cobblestone_stairs:shape=straight:half=top:facing=north mossy_stone_brick_stairs:shape=straight:half=top:facing=north mud_brick_stairs:shape=straight:half=top:facing=north nether_brick_stairs:shape=straight:half=top:facing=north oxidized_cut_copper_stairs:shape=straight:half=top:facing=north polished_andesite_stairs:shape=straight:half=top:facing=north polished_blackstone_brick_stairs:shape=straight:half=top:facing=north polished_blackstone_stairs:shape=straight:half=top:facing=north polished_deepslate_stairs:shape=straight:half=top:facing=north polished_diorite_stairs:shape=straight:half=top:facing=north polished_granite_stairs:shape=straight:half=top:facing=north prismarine_brick_stairs:shape=straight:half=top:facing=north prismarine_stairs:shape=straight:half=top:facing=north purpur_stairs:shape=straight:half=top:facing=north quartz_stairs:shape=straight:half=top:facing=north red_nether_brick_stairs:shape=straight:half=top:facing=north red_sandstone_stairs:shape=straight:half=top:facing=north sandstone_stairs:shape=straight:half=top:facing=north smooth_quartz_stairs:shape=straight:half=top:facing=north smooth_red_sandstone_stairs:shape=straight:half=top:facing=north smooth_sandstone_stairs:shape=straight:half=top:facing=north stone_brick_stairs:shape=straight:half=top:facing=north stone_stairs:shape=straight:half=top:facing=north waxed_cut_copper_stairs:shape=straight:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=straight:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=straight:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=straight:half=top:facing=north weathered_cut_copper_stairs:shape=straight:half=top:facing=north createdeco:andesite_sheet_stairs:shape=straight:half=top:facing=north createdeco:brass_sheet_stairs:shape=straight:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=straight:half=top:facing=north createdeco:copper_sheet_stairs:shape=straight:half=top:facing=north createdeco:gold_sheet_stairs:shape=straight:half=top:facing=north createdeco:iron_sheet_stairs:shape=straight:half=top:facing=north createdeco:netherite_sheet_stairs:shape=straight:half=top:facing=north createdeco:zinc_sheet_stairs:shape=straight:half=top:facing=north create:cut_andesite_stairs:shape=straight:half=top:facing=north create:polished_cut_andesite_stairs:shape=straight:half=top:facing=north create:cut_andesite_brick_stairs:shape=straight:half=top:facing=north create:small_andesite_brick_stairs:shape=straight:half=top:facing=north create:cut_asurine_stairs:shape=straight:half=top:facing=north create:polished_cut_asurine_stairs:shape=straight:half=top:facing=north create:cut_asurine_brick_stairs:shape=straight:half=top:facing=north create:small_asurine_brick_stairs:shape=straight:half=top:facing=north create:cut_calcite_stairs:shape=straight:half=top:facing=north create:polished_cut_calcite_stairs:shape=straight:half=top:facing=north create:cut_calcite_brick_stairs:shape=straight:half=top:facing=north create:small_calcite_brick_stairs:shape=straight:half=top:facing=north create:cut_crimsite_stairs:shape=straight:half=top:facing=north create:polished_cut_crimsite_stairs:shape=straight:half=top:facing=north create:cut_crimsite_brick_stairs:shape=straight:half=top:facing=north create:small_crimsite_brick_stairs:shape=straight:half=top:facing=north create:cut_deepslate_stairs:shape=straight:half=top:facing=north create:polished_cut_deepslate_stairs:shape=straight:half=top:facing=north create:cut_deepslate_brick_stairs:shape=straight:half=top:facing=north create:small_deepslate_brick_stairs:shape=straight:half=top:facing=north create:cut_diorite_stairs:shape=straight:half=top:facing=north create:polished_cut_diorite_stairs:shape=straight:half=top:facing=north create:cut_diorite_brick_stairs:shape=straight:half=top:facing=north create:small_diorite_brick_stairs:shape=straight:half=top:facing=north create:cut_dripstone_stairs:shape=straight:half=top:facing=north create:polished_cut_dripstone_stairs:shape=straight:half=top:facing=north create:cut_dripstone_brick_stairs:shape=straight:half=top:facing=north create:small_dripstone_brick_stairs:shape=straight:half=top:facing=north create:cut_granite_stairs:shape=straight:half=top:facing=north create:polished_cut_granite_stairs:shape=straight:half=top:facing=north create:cut_granite_brick_stairs:shape=straight:half=top:facing=north create:small_granite_brick_stairs:shape=straight:half=top:facing=north create:cut_limestone_stairs:shape=straight:half=top:facing=north create:polished_cut_limestone_stairs:shape=straight:half=top:facing=north create:cut_limestone_brick_stairs:shape=straight:half=top:facing=north create:small_limestone_brick_stairs:shape=straight:half=top:facing=north create:cut_ochrum_stairs:shape=straight:half=top:facing=north create:polished_cut_ochrum_stairs:shape=straight:half=top:facing=north create:cut_ochrum_brick_stairs:shape=straight:half=top:facing=north create:small_ochrum_brick_stairs:shape=straight:half=top:facing=north create:cut_scorchia_stairs:shape=straight:half=top:facing=north create:polished_cut_scorchia_stairs:shape=straight:half=top:facing=north create:cut_scorchia_brick_stairs:shape=straight:half=top:facing=north create:small_scorchia_brick_stairs:shape=straight:half=top:facing=north create:cut_scoria_stairs:shape=straight:half=top:facing=north create:polished_cut_scoria_stairs:shape=straight:half=top:facing=north create:cut_scoria_brick_stairs:shape=straight:half=top:facing=north create:small_scoria_brick_stairs:shape=straight:half=top:facing=north create:cut_tuff_stairs:shape=straight:half=top:facing=north create:polished_cut_tuff_stairs:shape=straight:half=top:facing=north create:cut_tuff_brick_stairs:shape=straight:half=top:facing=north create:small_tuff_brick_stairs:shape=straight:half=top:facing=north create:cut_veridium_stairs:shape=straight:half=top:facing=north create:polished_cut_veridium_stairs:shape=straight:half=top:facing=north create:cut_veridium_brick_stairs:shape=straight:half=top:facing=north create:small_veridium_brick_stairs:shape=straight:half=top:facing=north create:copper_shingle_stairs:shape=straight:half=top:facing=north create:exposed_copper_shingle_stairs:shape=straight:half=top:facing=north create:weathered_copper_shingle_stairs:shape=straight:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=straight:half=top:facing=north create:waxed_copper_shingle_stairs:shape=straight:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=straight:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=straight:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=top:facing=north create:copper_tile_stairs:shape=straight:half=top:facing=north create:exposed_copper_tile_stairs:shape=straight:half=top:facing=north create:weathered_copper_tile_stairs:shape=straight:half=top:facing=north create:oxidized_copper_tile_stairs:shape=straight:half=top:facing=north create:waxed_copper_tile_stairs:shape=straight:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=straight:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=straight:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=straight:half=top:facing=north @@ -741,22 +748,29 @@ block.430=acacia_stairs:shape=straight:half=top:facing=south bamboo_stairs:shape block.431=acacia_stairs:shape=straight:half=top:facing=west bamboo_stairs:shape=straight:half=top:facing=west bamboo_mosaic_stairs:shape=straight:half=top:facing=west birch_stairs:shape=straight:half=top:facing=west cherry_stairs:shape=straight:half=top:facing=west crimson_stairs:shape=straight:half=top:facing=west dark_oak_stairs:shape=straight:half=top:facing=west jungle_stairs:shape=straight:half=top:facing=west mangrove_stairs:shape=straight:half=top:facing=west oak_stairs:shape=straight:half=top:facing=west spruce_stairs:shape=straight:half=top:facing=west warped_stairs:shape=straight:half=top:facing=west andesite_stairs:shape=straight:half=top:facing=west blackstone_stairs:shape=straight:half=top:facing=west brick_stairs:shape=straight:half=top:facing=west cobbled_deepslate_stairs:shape=straight:half=top:facing=west cobblestone_stairs:shape=straight:half=top:facing=west cut_copper_stairs:shape=straight:half=top:facing=west dark_prismarine_stairs:shape=straight:half=top:facing=west deepslate_brick_stairs:shape=straight:half=top:facing=west deepslate_tile_stairs:shape=straight:half=top:facing=west diorite_stairs:shape=straight:half=top:facing=west end_stone_brick_stairs:shape=straight:half=top:facing=west exposed_cut_copper_stairs:shape=straight:half=top:facing=west granite_stairs:shape=straight:half=top:facing=west mossy_cobblestone_stairs:shape=straight:half=top:facing=west mossy_stone_brick_stairs:shape=straight:half=top:facing=west mud_brick_stairs:shape=straight:half=top:facing=west nether_brick_stairs:shape=straight:half=top:facing=west oxidized_cut_copper_stairs:shape=straight:half=top:facing=west polished_andesite_stairs:shape=straight:half=top:facing=west polished_blackstone_brick_stairs:shape=straight:half=top:facing=west polished_blackstone_stairs:shape=straight:half=top:facing=west polished_deepslate_stairs:shape=straight:half=top:facing=west polished_diorite_stairs:shape=straight:half=top:facing=west polished_granite_stairs:shape=straight:half=top:facing=west prismarine_brick_stairs:shape=straight:half=top:facing=west prismarine_stairs:shape=straight:half=top:facing=west purpur_stairs:shape=straight:half=top:facing=west quartz_stairs:shape=straight:half=top:facing=west red_nether_brick_stairs:shape=straight:half=top:facing=west red_sandstone_stairs:shape=straight:half=top:facing=west sandstone_stairs:shape=straight:half=top:facing=west smooth_quartz_stairs:shape=straight:half=top:facing=west smooth_red_sandstone_stairs:shape=straight:half=top:facing=west smooth_sandstone_stairs:shape=straight:half=top:facing=west stone_brick_stairs:shape=straight:half=top:facing=west stone_stairs:shape=straight:half=top:facing=west waxed_cut_copper_stairs:shape=straight:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=straight:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=straight:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=straight:half=top:facing=west weathered_cut_copper_stairs:shape=straight:half=top:facing=west createdeco:andesite_sheet_stairs:shape=straight:half=top:facing=west createdeco:brass_sheet_stairs:shape=straight:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=straight:half=top:facing=west createdeco:copper_sheet_stairs:shape=straight:half=top:facing=west createdeco:gold_sheet_stairs:shape=straight:half=top:facing=west createdeco:iron_sheet_stairs:shape=straight:half=top:facing=west createdeco:netherite_sheet_stairs:shape=straight:half=top:facing=west createdeco:zinc_sheet_stairs:shape=straight:half=top:facing=west create:cut_andesite_stairs:shape=straight:half=top:facing=west create:polished_cut_andesite_stairs:shape=straight:half=top:facing=west create:cut_andesite_brick_stairs:shape=straight:half=top:facing=west create:small_andesite_brick_stairs:shape=straight:half=top:facing=west create:cut_asurine_stairs:shape=straight:half=top:facing=west create:polished_cut_asurine_stairs:shape=straight:half=top:facing=west create:cut_asurine_brick_stairs:shape=straight:half=top:facing=west create:small_asurine_brick_stairs:shape=straight:half=top:facing=west create:cut_calcite_stairs:shape=straight:half=top:facing=west create:polished_cut_calcite_stairs:shape=straight:half=top:facing=west create:cut_calcite_brick_stairs:shape=straight:half=top:facing=west create:small_calcite_brick_stairs:shape=straight:half=top:facing=west create:cut_crimsite_stairs:shape=straight:half=top:facing=west create:polished_cut_crimsite_stairs:shape=straight:half=top:facing=west create:cut_crimsite_brick_stairs:shape=straight:half=top:facing=west create:small_crimsite_brick_stairs:shape=straight:half=top:facing=west create:cut_deepslate_stairs:shape=straight:half=top:facing=west create:polished_cut_deepslate_stairs:shape=straight:half=top:facing=west create:cut_deepslate_brick_stairs:shape=straight:half=top:facing=west create:small_deepslate_brick_stairs:shape=straight:half=top:facing=west create:cut_diorite_stairs:shape=straight:half=top:facing=west create:polished_cut_diorite_stairs:shape=straight:half=top:facing=west create:cut_diorite_brick_stairs:shape=straight:half=top:facing=west create:small_diorite_brick_stairs:shape=straight:half=top:facing=west create:cut_dripstone_stairs:shape=straight:half=top:facing=west create:polished_cut_dripstone_stairs:shape=straight:half=top:facing=west create:cut_dripstone_brick_stairs:shape=straight:half=top:facing=west create:small_dripstone_brick_stairs:shape=straight:half=top:facing=west create:cut_granite_stairs:shape=straight:half=top:facing=west create:polished_cut_granite_stairs:shape=straight:half=top:facing=west create:cut_granite_brick_stairs:shape=straight:half=top:facing=west create:small_granite_brick_stairs:shape=straight:half=top:facing=west create:cut_limestone_stairs:shape=straight:half=top:facing=west create:polished_cut_limestone_stairs:shape=straight:half=top:facing=west create:cut_limestone_brick_stairs:shape=straight:half=top:facing=west create:small_limestone_brick_stairs:shape=straight:half=top:facing=west create:cut_ochrum_stairs:shape=straight:half=top:facing=west create:polished_cut_ochrum_stairs:shape=straight:half=top:facing=west create:cut_ochrum_brick_stairs:shape=straight:half=top:facing=west create:small_ochrum_brick_stairs:shape=straight:half=top:facing=west create:cut_scorchia_stairs:shape=straight:half=top:facing=west create:polished_cut_scorchia_stairs:shape=straight:half=top:facing=west create:cut_scorchia_brick_stairs:shape=straight:half=top:facing=west create:small_scorchia_brick_stairs:shape=straight:half=top:facing=west create:cut_scoria_stairs:shape=straight:half=top:facing=west create:polished_cut_scoria_stairs:shape=straight:half=top:facing=west create:cut_scoria_brick_stairs:shape=straight:half=top:facing=west create:small_scoria_brick_stairs:shape=straight:half=top:facing=west create:cut_tuff_stairs:shape=straight:half=top:facing=west create:polished_cut_tuff_stairs:shape=straight:half=top:facing=west create:cut_tuff_brick_stairs:shape=straight:half=top:facing=west create:small_tuff_brick_stairs:shape=straight:half=top:facing=west create:cut_veridium_stairs:shape=straight:half=top:facing=west create:polished_cut_veridium_stairs:shape=straight:half=top:facing=west create:cut_veridium_brick_stairs:shape=straight:half=top:facing=west create:small_veridium_brick_stairs:shape=straight:half=top:facing=west create:copper_shingle_stairs:shape=straight:half=top:facing=west create:exposed_copper_shingle_stairs:shape=straight:half=top:facing=west create:weathered_copper_shingle_stairs:shape=straight:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=straight:half=top:facing=west create:waxed_copper_shingle_stairs:shape=straight:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=straight:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=straight:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=top:facing=west create:copper_tile_stairs:shape=straight:half=top:facing=west create:exposed_copper_tile_stairs:shape=straight:half=top:facing=west create:weathered_copper_tile_stairs:shape=straight:half=top:facing=west create:oxidized_copper_tile_stairs:shape=straight:half=top:facing=west create:waxed_copper_tile_stairs:shape=straight:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=straight:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=straight:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=straight:half=top:facing=west -block.432=acacia_stairs:shape=inner_left:half=top:facing=south bamboo_stairs:shape=inner_left:half=top:facing=south bamboo_mosaic_stairs:shape=inner_left:half=top:facing=south birch_stairs:shape=inner_left:half=top:facing=south cherry_stairs:shape=inner_left:half=top:facing=south crimson_stairs:shape=inner_left:half=top:facing=south dark_oak_stairs:shape=inner_left:half=top:facing=south jungle_stairs:shape=inner_left:half=top:facing=south mangrove_stairs:shape=inner_left:half=top:facing=south oak_stairs:shape=inner_left:half=top:facing=south spruce_stairs:shape=inner_left:half=top:facing=south warped_stairs:shape=inner_left:half=top:facing=south andesite_stairs:shape=inner_left:half=top:facing=south blackstone_stairs:shape=inner_left:half=top:facing=south brick_stairs:shape=inner_left:half=top:facing=south cobbled_deepslate_stairs:shape=inner_left:half=top:facing=south cobblestone_stairs:shape=inner_left:half=top:facing=south cut_copper_stairs:shape=inner_left:half=top:facing=south dark_prismarine_stairs:shape=inner_left:half=top:facing=south deepslate_brick_stairs:shape=inner_left:half=top:facing=south deepslate_tile_stairs:shape=inner_left:half=top:facing=south diorite_stairs:shape=inner_left:half=top:facing=south end_stone_brick_stairs:shape=inner_left:half=top:facing=south exposed_cut_copper_stairs:shape=inner_left:half=top:facing=south granite_stairs:shape=inner_left:half=top:facing=south mossy_cobblestone_stairs:shape=inner_left:half=top:facing=south mossy_stone_brick_stairs:shape=inner_left:half=top:facing=south mud_brick_stairs:shape=inner_left:half=top:facing=south nether_brick_stairs:shape=inner_left:half=top:facing=south oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=south polished_andesite_stairs:shape=inner_left:half=top:facing=south polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=south polished_blackstone_stairs:shape=inner_left:half=top:facing=south polished_deepslate_stairs:shape=inner_left:half=top:facing=south polished_diorite_stairs:shape=inner_left:half=top:facing=south polished_granite_stairs:shape=inner_left:half=top:facing=south prismarine_brick_stairs:shape=inner_left:half=top:facing=south prismarine_stairs:shape=inner_left:half=top:facing=south purpur_stairs:shape=inner_left:half=top:facing=south quartz_stairs:shape=inner_left:half=top:facing=south red_nether_brick_stairs:shape=inner_left:half=top:facing=south red_sandstone_stairs:shape=inner_left:half=top:facing=south sandstone_stairs:shape=inner_left:half=top:facing=south smooth_quartz_stairs:shape=inner_left:half=top:facing=south smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=south smooth_sandstone_stairs:shape=inner_left:half=top:facing=south stone_brick_stairs:shape=inner_left:half=top:facing=south stone_stairs:shape=inner_left:half=top:facing=south waxed_cut_copper_stairs:shape=inner_left:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=south weathered_cut_copper_stairs:shape=inner_left:half=top:facing=south createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=south create:cut_andesite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=south create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=south create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_asurine_stairs:shape=inner_left:half=top:facing=south create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=south create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=south create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=south create:cut_calcite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=south create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=south create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_crimsite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=south create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=south create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_deepslate_stairs:shape=inner_left:half=top:facing=south create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=south create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=south create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=south create:cut_diorite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=south create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=south create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_dripstone_stairs:shape=inner_left:half=top:facing=south create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=south create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=south create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=south create:cut_granite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=south create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=south create:small_granite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_limestone_stairs:shape=inner_left:half=top:facing=south create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=south create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=south create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=south create:cut_ochrum_stairs:shape=inner_left:half=top:facing=south create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=south create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=south create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=south create:cut_scorchia_stairs:shape=inner_left:half=top:facing=south create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=south create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=south create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=south create:cut_scoria_stairs:shape=inner_left:half=top:facing=south create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=south create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=south create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=south create:cut_tuff_stairs:shape=inner_left:half=top:facing=south create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=south create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=south create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=south create:cut_veridium_stairs:shape=inner_left:half=top:facing=south create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=south create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=south create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=south create:copper_shingle_stairs:shape=inner_left:half=top:facing=south create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:copper_tile_stairs:shape=inner_left:half=top:facing=south create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=south create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=south create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=south acacia_stairs:shape=inner_right:half=top:facing=east bamboo_stairs:shape=inner_right:half=top:facing=east bamboo_mosaic_stairs:shape=inner_right:half=top:facing=east birch_stairs:shape=inner_right:half=top:facing=east cherry_stairs:shape=inner_right:half=top:facing=east crimson_stairs:shape=inner_right:half=top:facing=east dark_oak_stairs:shape=inner_right:half=top:facing=east jungle_stairs:shape=inner_right:half=top:facing=east mangrove_stairs:shape=inner_right:half=top:facing=east oak_stairs:shape=inner_right:half=top:facing=east spruce_stairs:shape=inner_right:half=top:facing=east warped_stairs:shape=inner_right:half=top:facing=east andesite_stairs:shape=inner_right:half=top:facing=east blackstone_stairs:shape=inner_right:half=top:facing=east brick_stairs:shape=inner_right:half=top:facing=east cobbled_deepslate_stairs:shape=inner_right:half=top:facing=east cobblestone_stairs:shape=inner_right:half=top:facing=east cut_copper_stairs:shape=inner_right:half=top:facing=east dark_prismarine_stairs:shape=inner_right:half=top:facing=east deepslate_brick_stairs:shape=inner_right:half=top:facing=east deepslate_tile_stairs:shape=inner_right:half=top:facing=east diorite_stairs:shape=inner_right:half=top:facing=east end_stone_brick_stairs:shape=inner_right:half=top:facing=east exposed_cut_copper_stairs:shape=inner_right:half=top:facing=east granite_stairs:shape=inner_right:half=top:facing=east mossy_cobblestone_stairs:shape=inner_right:half=top:facing=east mossy_stone_brick_stairs:shape=inner_right:half=top:facing=east mud_brick_stairs:shape=inner_right:half=top:facing=east nether_brick_stairs:shape=inner_right:half=top:facing=east oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=east polished_andesite_stairs:shape=inner_right:half=top:facing=east polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=east polished_blackstone_stairs:shape=inner_right:half=top:facing=east polished_deepslate_stairs:shape=inner_right:half=top:facing=east polished_diorite_stairs:shape=inner_right:half=top:facing=east polished_granite_stairs:shape=inner_right:half=top:facing=east prismarine_brick_stairs:shape=inner_right:half=top:facing=east prismarine_stairs:shape=inner_right:half=top:facing=east purpur_stairs:shape=inner_right:half=top:facing=east quartz_stairs:shape=inner_right:half=top:facing=east red_nether_brick_stairs:shape=inner_right:half=top:facing=east red_sandstone_stairs:shape=inner_right:half=top:facing=east sandstone_stairs:shape=inner_right:half=top:facing=east smooth_quartz_stairs:shape=inner_right:half=top:facing=east smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=east smooth_sandstone_stairs:shape=inner_right:half=top:facing=east stone_brick_stairs:shape=inner_right:half=top:facing=east stone_stairs:shape=inner_right:half=top:facing=east waxed_cut_copper_stairs:shape=inner_right:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=east weathered_cut_copper_stairs:shape=inner_right:half=top:facing=east createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=east create:cut_andesite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=east create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=east create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_asurine_stairs:shape=inner_right:half=top:facing=east create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=east create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=east create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=east create:cut_calcite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=east create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=east create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_crimsite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=east create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=east create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_deepslate_stairs:shape=inner_right:half=top:facing=east create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=east create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=east create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=east create:cut_diorite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=east create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=east create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_dripstone_stairs:shape=inner_right:half=top:facing=east create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=east create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=east create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=east create:cut_granite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=east create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=east create:small_granite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_limestone_stairs:shape=inner_right:half=top:facing=east create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=east create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=east create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=east create:cut_ochrum_stairs:shape=inner_right:half=top:facing=east create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=east create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=east create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=east create:cut_scorchia_stairs:shape=inner_right:half=top:facing=east create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=east create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=east create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=east create:cut_scoria_stairs:shape=inner_right:half=top:facing=east create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=east create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=east create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=east create:cut_tuff_stairs:shape=inner_right:half=top:facing=east create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=east create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=east create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=east create:cut_veridium_stairs:shape=inner_right:half=top:facing=east create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=east create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=east create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=east create:copper_shingle_stairs:shape=inner_right:half=top:facing=east create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:copper_tile_stairs:shape=inner_right:half=top:facing=east create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=east create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=east create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=east +block.432=acacia_stairs:shape=inner_left:half=top:facing=south bamboo_stairs:shape=inner_left:half=top:facing=south bamboo_mosaic_stairs:shape=inner_left:half=top:facing=south birch_stairs:shape=inner_left:half=top:facing=south cherry_stairs:shape=inner_left:half=top:facing=south crimson_stairs:shape=inner_left:half=top:facing=south dark_oak_stairs:shape=inner_left:half=top:facing=south jungle_stairs:shape=inner_left:half=top:facing=south mangrove_stairs:shape=inner_left:half=top:facing=south oak_stairs:shape=inner_left:half=top:facing=south spruce_stairs:shape=inner_left:half=top:facing=south warped_stairs:shape=inner_left:half=top:facing=south andesite_stairs:shape=inner_left:half=top:facing=south blackstone_stairs:shape=inner_left:half=top:facing=south brick_stairs:shape=inner_left:half=top:facing=south cobbled_deepslate_stairs:shape=inner_left:half=top:facing=south cobblestone_stairs:shape=inner_left:half=top:facing=south cut_copper_stairs:shape=inner_left:half=top:facing=south dark_prismarine_stairs:shape=inner_left:half=top:facing=south deepslate_brick_stairs:shape=inner_left:half=top:facing=south deepslate_tile_stairs:shape=inner_left:half=top:facing=south diorite_stairs:shape=inner_left:half=top:facing=south end_stone_brick_stairs:shape=inner_left:half=top:facing=south exposed_cut_copper_stairs:shape=inner_left:half=top:facing=south granite_stairs:shape=inner_left:half=top:facing=south mossy_cobblestone_stairs:shape=inner_left:half=top:facing=south mossy_stone_brick_stairs:shape=inner_left:half=top:facing=south mud_brick_stairs:shape=inner_left:half=top:facing=south nether_brick_stairs:shape=inner_left:half=top:facing=south oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=south polished_andesite_stairs:shape=inner_left:half=top:facing=south polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=south polished_blackstone_stairs:shape=inner_left:half=top:facing=south polished_deepslate_stairs:shape=inner_left:half=top:facing=south polished_diorite_stairs:shape=inner_left:half=top:facing=south polished_granite_stairs:shape=inner_left:half=top:facing=south prismarine_brick_stairs:shape=inner_left:half=top:facing=south prismarine_stairs:shape=inner_left:half=top:facing=south purpur_stairs:shape=inner_left:half=top:facing=south quartz_stairs:shape=inner_left:half=top:facing=south red_nether_brick_stairs:shape=inner_left:half=top:facing=south red_sandstone_stairs:shape=inner_left:half=top:facing=south sandstone_stairs:shape=inner_left:half=top:facing=south smooth_quartz_stairs:shape=inner_left:half=top:facing=south smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=south smooth_sandstone_stairs:shape=inner_left:half=top:facing=south stone_brick_stairs:shape=inner_left:half=top:facing=south stone_stairs:shape=inner_left:half=top:facing=south waxed_cut_copper_stairs:shape=inner_left:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=south weathered_cut_copper_stairs:shape=inner_left:half=top:facing=south createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=south createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=south create:cut_andesite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=south create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=south create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_asurine_stairs:shape=inner_left:half=top:facing=south create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=south create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=south create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=south create:cut_calcite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=south create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=south create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_crimsite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=south create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=south create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_deepslate_stairs:shape=inner_left:half=top:facing=south create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=south create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=south create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=south create:cut_diorite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=south create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=south create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_dripstone_stairs:shape=inner_left:half=top:facing=south create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=south create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=south create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=south create:cut_granite_stairs:shape=inner_left:half=top:facing=south create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=south create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=south create:small_granite_brick_stairs:shape=inner_left:half=top:facing=south create:cut_limestone_stairs:shape=inner_left:half=top:facing=south create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=south create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=south create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=south create:cut_ochrum_stairs:shape=inner_left:half=top:facing=south create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=south create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=south create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=south create:cut_scorchia_stairs:shape=inner_left:half=top:facing=south create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=south create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=south create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=south create:cut_scoria_stairs:shape=inner_left:half=top:facing=south create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=south create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=south create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=south create:cut_tuff_stairs:shape=inner_left:half=top:facing=south create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=south create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=south create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=south create:cut_veridium_stairs:shape=inner_left:half=top:facing=south create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=south create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=south create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=south create:copper_shingle_stairs:shape=inner_left:half=top:facing=south create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=south create:copper_tile_stairs:shape=inner_left:half=top:facing=south create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=south create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=south create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=south acacia_stairs:shape=inner_right:half=top:facing=east bamboo_stairs:shape=inner_right:half=top:facing=east bamboo_mosaic_stairs:shape=inner_right:half=top:facing=east birch_stairs:shape=inner_right:half=top:facing=east cherry_stairs:shape=inner_right:half=top:facing=east crimson_stairs:shape=inner_right:half=top:facing=east dark_oak_stairs:shape=inner_right:half=top:facing=east jungle_stairs:shape=inner_right:half=top:facing=east mangrove_stairs:shape=inner_right:half=top:facing=east oak_stairs:shape=inner_right:half=top:facing=east spruce_stairs:shape=inner_right:half=top:facing=east warped_stairs:shape=inner_right:half=top:facing=east andesite_stairs:shape=inner_right:half=top:facing=east blackstone_stairs:shape=inner_right:half=top:facing=east brick_stairs:shape=inner_right:half=top:facing=east cobbled_deepslate_stairs:shape=inner_right:half=top:facing=east cobblestone_stairs:shape=inner_right:half=top:facing=east cut_copper_stairs:shape=inner_right:half=top:facing=east dark_prismarine_stairs:shape=inner_right:half=top:facing=east deepslate_brick_stairs:shape=inner_right:half=top:facing=east deepslate_tile_stairs:shape=inner_right:half=top:facing=east diorite_stairs:shape=inner_right:half=top:facing=east end_stone_brick_stairs:shape=inner_right:half=top:facing=east exposed_cut_copper_stairs:shape=inner_right:half=top:facing=east granite_stairs:shape=inner_right:half=top:facing=east mossy_cobblestone_stairs:shape=inner_right:half=top:facing=east mossy_stone_brick_stairs:shape=inner_right:half=top:facing=east mud_brick_stairs:shape=inner_right:half=top:facing=east nether_brick_stairs:shape=inner_right:half=top:facing=east oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=east polished_andesite_stairs:shape=inner_right:half=top:facing=east polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=east polished_blackstone_stairs:shape=inner_right:half=top:facing=east polished_deepslate_stairs:shape=inner_right:half=top:facing=east polished_diorite_stairs:shape=inner_right:half=top:facing=east polished_granite_stairs:shape=inner_right:half=top:facing=east prismarine_brick_stairs:shape=inner_right:half=top:facing=east prismarine_stairs:shape=inner_right:half=top:facing=east purpur_stairs:shape=inner_right:half=top:facing=east quartz_stairs:shape=inner_right:half=top:facing=east red_nether_brick_stairs:shape=inner_right:half=top:facing=east red_sandstone_stairs:shape=inner_right:half=top:facing=east sandstone_stairs:shape=inner_right:half=top:facing=east smooth_quartz_stairs:shape=inner_right:half=top:facing=east smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=east smooth_sandstone_stairs:shape=inner_right:half=top:facing=east stone_brick_stairs:shape=inner_right:half=top:facing=east stone_stairs:shape=inner_right:half=top:facing=east waxed_cut_copper_stairs:shape=inner_right:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=east weathered_cut_copper_stairs:shape=inner_right:half=top:facing=east createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=east createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=east create:cut_andesite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=east create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=east create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_asurine_stairs:shape=inner_right:half=top:facing=east create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=east create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=east create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=east create:cut_calcite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=east create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=east create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_crimsite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=east create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=east create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_deepslate_stairs:shape=inner_right:half=top:facing=east create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=east create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=east create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=east create:cut_diorite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=east create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=east create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_dripstone_stairs:shape=inner_right:half=top:facing=east create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=east create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=east create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=east create:cut_granite_stairs:shape=inner_right:half=top:facing=east create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=east create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=east create:small_granite_brick_stairs:shape=inner_right:half=top:facing=east create:cut_limestone_stairs:shape=inner_right:half=top:facing=east create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=east create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=east create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=east create:cut_ochrum_stairs:shape=inner_right:half=top:facing=east create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=east create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=east create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=east create:cut_scorchia_stairs:shape=inner_right:half=top:facing=east create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=east create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=east create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=east create:cut_scoria_stairs:shape=inner_right:half=top:facing=east create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=east create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=east create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=east create:cut_tuff_stairs:shape=inner_right:half=top:facing=east create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=east create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=east create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=east create:cut_veridium_stairs:shape=inner_right:half=top:facing=east create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=east create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=east create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=east create:copper_shingle_stairs:shape=inner_right:half=top:facing=east create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=east create:copper_tile_stairs:shape=inner_right:half=top:facing=east create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=east create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=east create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=east \ + humility-afm:inner_stairs_acacia:half=top:facing=north humility-afm:inner_stairs_bamboo:half=top:facing=north humility-afm:inner_stairs_birch:half=top:facing=north humility-afm:inner_stairs_cherry:half=top:facing=north humility-afm:inner_stairs_crimson:half=top:facing=north humility-afm:inner_stairs_dark_oak:half=top:facing=north humility-afm:inner_stairs_jungle:half=top:facing=north humility-afm:inner_stairs_mangrove:half=top:facing=north humility-afm:inner_stairs_oak:half=top:facing=north humility-afm:inner_stairs_spruce:half=top:facing=north humility-afm:inner_stairs_warped:half=top:facing=north humility-afm:inner_stairs_anchor_tree:half=top:facing=north humility-afm:inner_stairs_mushroom:half=top:facing=north humility-afm:inner_stairs_mushroom_fir:half=top:facing=north humility-afm:inner_stairs_nether_sakura:half=top:facing=north humility-afm:inner_stairs_stalagnate:half=top:facing=north humility-afm:inner_stairs_wart:half=top:facing=north humility-afm:inner_stairs_willow:half=top:facing=north humility-afm:inner_stairs_mud_bricks:half=top:facing=north humility-afm:inner_stairs_quartz:half=top:facing=north humility-afm:inner_stairs_red_sandstone:half=top:facing=north humility-afm:inner_stairs_sandstone:half=top:facing=north humility-afm:inner_stairs_andesite:half=top:facing=north humility-afm:inner_stairs_blackstone:half=top:facing=north humility-afm:inner_stairs_dark_prismarine:half=top:facing=north humility-afm:inner_stairs_diorite:half=top:facing=north humility-afm:inner_stairs_granite:half=top:facing=north humility-afm:inner_stairs_mossy_stone_brick:half=top:facing=north humility-afm:inner_stairs_polished_andesite:half=top:facing=north humility-afm:inner_stairs_polished_blackstone_brick:half=top:facing=north humility-afm:inner_stairs_polished_diorite:half=top:facing=north humility-afm:inner_stairs_polished_granite:half=top:facing=north humility-afm:inner_stairs_prismarine:half=top:facing=north humility-afm:inner_stairs_prismarine_bricks:half=top:facing=north humility-afm:inner_stairs_purpur:half=top:facing=north humility-afm:inner_stairs_stone:half=top:facing=north humility-afm:inner_stairs_stone_brick:half=top:facing=north humility-afm:inner_stairs_brick:half=top:facing=north humility-afm:inner_stairs_cobblestone:half=top:facing=north humility-afm:inner_stairs_mossy_cobblestone:half=top:facing=north humility-afm:inner_stairs_nether_brick:half=top:facing=north humility-afm:inner_stairs_polished_blackstone:half=top:facing=north humility-afm:inner_stairs_red_nether_brick:half=top:facing=north humility-afm:inner_stairs_smooth_quartz:half=top:facing=north humility-afm:inner_stairs_smooth_red_sandstone:half=top:facing=north humility-afm:inner_stairs_smooth_sandstone:half=top:facing=north humility-afm:inner_stairs_end_stone_brick:half=top:facing=north humility-afm:inner_stairs_cut_copper:half=top:facing=north humility-afm:inner_stairs_exposed_cut_copper:half=top:facing=north humility-afm:inner_stairs_oxidized_cut_copper:half=top:facing=north humility-afm:inner_stairs_weathered_cut_copper:half=top:facing=north humility-afm:inner_stairs_cobbled_deepslate:half=top:facing=north humility-afm:inner_stairs_deepslate_brick:half=top:facing=north humility-afm:inner_stairs_deepslate_tile:half=top:facing=north humility-afm:inner_stairs_polished_deepslate:half=top:facing=north -block.433=acacia_stairs:shape=inner_left:half=top:facing=west bamboo_stairs:shape=inner_left:half=top:facing=west bamboo_mosaic_stairs:shape=inner_left:half=top:facing=west birch_stairs:shape=inner_left:half=top:facing=west cherry_stairs:shape=inner_left:half=top:facing=west crimson_stairs:shape=inner_left:half=top:facing=west dark_oak_stairs:shape=inner_left:half=top:facing=west jungle_stairs:shape=inner_left:half=top:facing=west mangrove_stairs:shape=inner_left:half=top:facing=west oak_stairs:shape=inner_left:half=top:facing=west spruce_stairs:shape=inner_left:half=top:facing=west warped_stairs:shape=inner_left:half=top:facing=west andesite_stairs:shape=inner_left:half=top:facing=west blackstone_stairs:shape=inner_left:half=top:facing=west brick_stairs:shape=inner_left:half=top:facing=west cobbled_deepslate_stairs:shape=inner_left:half=top:facing=west cobblestone_stairs:shape=inner_left:half=top:facing=west cut_copper_stairs:shape=inner_left:half=top:facing=west dark_prismarine_stairs:shape=inner_left:half=top:facing=west deepslate_brick_stairs:shape=inner_left:half=top:facing=west deepslate_tile_stairs:shape=inner_left:half=top:facing=west diorite_stairs:shape=inner_left:half=top:facing=west end_stone_brick_stairs:shape=inner_left:half=top:facing=west exposed_cut_copper_stairs:shape=inner_left:half=top:facing=west granite_stairs:shape=inner_left:half=top:facing=west mossy_cobblestone_stairs:shape=inner_left:half=top:facing=west mossy_stone_brick_stairs:shape=inner_left:half=top:facing=west mud_brick_stairs:shape=inner_left:half=top:facing=west nether_brick_stairs:shape=inner_left:half=top:facing=west oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=west polished_andesite_stairs:shape=inner_left:half=top:facing=west polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=west polished_blackstone_stairs:shape=inner_left:half=top:facing=west polished_deepslate_stairs:shape=inner_left:half=top:facing=west polished_diorite_stairs:shape=inner_left:half=top:facing=west polished_granite_stairs:shape=inner_left:half=top:facing=west prismarine_brick_stairs:shape=inner_left:half=top:facing=west prismarine_stairs:shape=inner_left:half=top:facing=west purpur_stairs:shape=inner_left:half=top:facing=west quartz_stairs:shape=inner_left:half=top:facing=west red_nether_brick_stairs:shape=inner_left:half=top:facing=west red_sandstone_stairs:shape=inner_left:half=top:facing=west sandstone_stairs:shape=inner_left:half=top:facing=west smooth_quartz_stairs:shape=inner_left:half=top:facing=west smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=west smooth_sandstone_stairs:shape=inner_left:half=top:facing=west stone_brick_stairs:shape=inner_left:half=top:facing=west stone_stairs:shape=inner_left:half=top:facing=west waxed_cut_copper_stairs:shape=inner_left:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=west weathered_cut_copper_stairs:shape=inner_left:half=top:facing=west createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=west create:cut_andesite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=west create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=west create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_asurine_stairs:shape=inner_left:half=top:facing=west create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=west create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=west create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=west create:cut_calcite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=west create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=west create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_crimsite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=west create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=west create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_deepslate_stairs:shape=inner_left:half=top:facing=west create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=west create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=west create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=west create:cut_diorite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=west create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=west create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_dripstone_stairs:shape=inner_left:half=top:facing=west create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=west create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=west create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=west create:cut_granite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=west create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=west create:small_granite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_limestone_stairs:shape=inner_left:half=top:facing=west create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=west create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=west create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=west create:cut_ochrum_stairs:shape=inner_left:half=top:facing=west create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=west create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=west create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=west create:cut_scorchia_stairs:shape=inner_left:half=top:facing=west create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=west create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=west create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=west create:cut_scoria_stairs:shape=inner_left:half=top:facing=west create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=west create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=west create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=west create:cut_tuff_stairs:shape=inner_left:half=top:facing=west create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=west create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=west create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=west create:cut_veridium_stairs:shape=inner_left:half=top:facing=west create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=west create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=west create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=west create:copper_shingle_stairs:shape=inner_left:half=top:facing=west create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:copper_tile_stairs:shape=inner_left:half=top:facing=west create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=west create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=west create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=west acacia_stairs:shape=inner_right:half=top:facing=south bamboo_stairs:shape=inner_right:half=top:facing=south bamboo_mosaic_stairs:shape=inner_right:half=top:facing=south birch_stairs:shape=inner_right:half=top:facing=south cherry_stairs:shape=inner_right:half=top:facing=south crimson_stairs:shape=inner_right:half=top:facing=south dark_oak_stairs:shape=inner_right:half=top:facing=south jungle_stairs:shape=inner_right:half=top:facing=south mangrove_stairs:shape=inner_right:half=top:facing=south oak_stairs:shape=inner_right:half=top:facing=south spruce_stairs:shape=inner_right:half=top:facing=south warped_stairs:shape=inner_right:half=top:facing=south andesite_stairs:shape=inner_right:half=top:facing=south blackstone_stairs:shape=inner_right:half=top:facing=south brick_stairs:shape=inner_right:half=top:facing=south cobbled_deepslate_stairs:shape=inner_right:half=top:facing=south cobblestone_stairs:shape=inner_right:half=top:facing=south cut_copper_stairs:shape=inner_right:half=top:facing=south dark_prismarine_stairs:shape=inner_right:half=top:facing=south deepslate_brick_stairs:shape=inner_right:half=top:facing=south deepslate_tile_stairs:shape=inner_right:half=top:facing=south diorite_stairs:shape=inner_right:half=top:facing=south end_stone_brick_stairs:shape=inner_right:half=top:facing=south exposed_cut_copper_stairs:shape=inner_right:half=top:facing=south granite_stairs:shape=inner_right:half=top:facing=south mossy_cobblestone_stairs:shape=inner_right:half=top:facing=south mossy_stone_brick_stairs:shape=inner_right:half=top:facing=south mud_brick_stairs:shape=inner_right:half=top:facing=south nether_brick_stairs:shape=inner_right:half=top:facing=south oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=south polished_andesite_stairs:shape=inner_right:half=top:facing=south polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=south polished_blackstone_stairs:shape=inner_right:half=top:facing=south polished_deepslate_stairs:shape=inner_right:half=top:facing=south polished_diorite_stairs:shape=inner_right:half=top:facing=south polished_granite_stairs:shape=inner_right:half=top:facing=south prismarine_brick_stairs:shape=inner_right:half=top:facing=south prismarine_stairs:shape=inner_right:half=top:facing=south purpur_stairs:shape=inner_right:half=top:facing=south quartz_stairs:shape=inner_right:half=top:facing=south red_nether_brick_stairs:shape=inner_right:half=top:facing=south red_sandstone_stairs:shape=inner_right:half=top:facing=south sandstone_stairs:shape=inner_right:half=top:facing=south smooth_quartz_stairs:shape=inner_right:half=top:facing=south smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=south smooth_sandstone_stairs:shape=inner_right:half=top:facing=south stone_brick_stairs:shape=inner_right:half=top:facing=south stone_stairs:shape=inner_right:half=top:facing=south waxed_cut_copper_stairs:shape=inner_right:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=south weathered_cut_copper_stairs:shape=inner_right:half=top:facing=south createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=south create:cut_andesite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=south create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=south create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_asurine_stairs:shape=inner_right:half=top:facing=south create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=south create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=south create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=south create:cut_calcite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=south create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=south create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_crimsite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=south create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=south create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_deepslate_stairs:shape=inner_right:half=top:facing=south create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=south create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=south create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=south create:cut_diorite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=south create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=south create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_dripstone_stairs:shape=inner_right:half=top:facing=south create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=south create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=south create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=south create:cut_granite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=south create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=south create:small_granite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_limestone_stairs:shape=inner_right:half=top:facing=south create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=south create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=south create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=south create:cut_ochrum_stairs:shape=inner_right:half=top:facing=south create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=south create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=south create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=south create:cut_scorchia_stairs:shape=inner_right:half=top:facing=south create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=south create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=south create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=south create:cut_scoria_stairs:shape=inner_right:half=top:facing=south create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=south create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=south create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=south create:cut_tuff_stairs:shape=inner_right:half=top:facing=south create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=south create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=south create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=south create:cut_veridium_stairs:shape=inner_right:half=top:facing=south create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=south create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=south create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=south create:copper_shingle_stairs:shape=inner_right:half=top:facing=south create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:copper_tile_stairs:shape=inner_right:half=top:facing=south create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=south create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=south create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=south +block.433=acacia_stairs:shape=inner_left:half=top:facing=west bamboo_stairs:shape=inner_left:half=top:facing=west bamboo_mosaic_stairs:shape=inner_left:half=top:facing=west birch_stairs:shape=inner_left:half=top:facing=west cherry_stairs:shape=inner_left:half=top:facing=west crimson_stairs:shape=inner_left:half=top:facing=west dark_oak_stairs:shape=inner_left:half=top:facing=west jungle_stairs:shape=inner_left:half=top:facing=west mangrove_stairs:shape=inner_left:half=top:facing=west oak_stairs:shape=inner_left:half=top:facing=west spruce_stairs:shape=inner_left:half=top:facing=west warped_stairs:shape=inner_left:half=top:facing=west andesite_stairs:shape=inner_left:half=top:facing=west blackstone_stairs:shape=inner_left:half=top:facing=west brick_stairs:shape=inner_left:half=top:facing=west cobbled_deepslate_stairs:shape=inner_left:half=top:facing=west cobblestone_stairs:shape=inner_left:half=top:facing=west cut_copper_stairs:shape=inner_left:half=top:facing=west dark_prismarine_stairs:shape=inner_left:half=top:facing=west deepslate_brick_stairs:shape=inner_left:half=top:facing=west deepslate_tile_stairs:shape=inner_left:half=top:facing=west diorite_stairs:shape=inner_left:half=top:facing=west end_stone_brick_stairs:shape=inner_left:half=top:facing=west exposed_cut_copper_stairs:shape=inner_left:half=top:facing=west granite_stairs:shape=inner_left:half=top:facing=west mossy_cobblestone_stairs:shape=inner_left:half=top:facing=west mossy_stone_brick_stairs:shape=inner_left:half=top:facing=west mud_brick_stairs:shape=inner_left:half=top:facing=west nether_brick_stairs:shape=inner_left:half=top:facing=west oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=west polished_andesite_stairs:shape=inner_left:half=top:facing=west polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=west polished_blackstone_stairs:shape=inner_left:half=top:facing=west polished_deepslate_stairs:shape=inner_left:half=top:facing=west polished_diorite_stairs:shape=inner_left:half=top:facing=west polished_granite_stairs:shape=inner_left:half=top:facing=west prismarine_brick_stairs:shape=inner_left:half=top:facing=west prismarine_stairs:shape=inner_left:half=top:facing=west purpur_stairs:shape=inner_left:half=top:facing=west quartz_stairs:shape=inner_left:half=top:facing=west red_nether_brick_stairs:shape=inner_left:half=top:facing=west red_sandstone_stairs:shape=inner_left:half=top:facing=west sandstone_stairs:shape=inner_left:half=top:facing=west smooth_quartz_stairs:shape=inner_left:half=top:facing=west smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=west smooth_sandstone_stairs:shape=inner_left:half=top:facing=west stone_brick_stairs:shape=inner_left:half=top:facing=west stone_stairs:shape=inner_left:half=top:facing=west waxed_cut_copper_stairs:shape=inner_left:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=west weathered_cut_copper_stairs:shape=inner_left:half=top:facing=west createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=west createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=west create:cut_andesite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=west create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=west create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_asurine_stairs:shape=inner_left:half=top:facing=west create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=west create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=west create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=west create:cut_calcite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=west create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=west create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_crimsite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=west create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=west create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_deepslate_stairs:shape=inner_left:half=top:facing=west create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=west create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=west create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=west create:cut_diorite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=west create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=west create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_dripstone_stairs:shape=inner_left:half=top:facing=west create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=west create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=west create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=west create:cut_granite_stairs:shape=inner_left:half=top:facing=west create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=west create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=west create:small_granite_brick_stairs:shape=inner_left:half=top:facing=west create:cut_limestone_stairs:shape=inner_left:half=top:facing=west create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=west create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=west create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=west create:cut_ochrum_stairs:shape=inner_left:half=top:facing=west create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=west create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=west create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=west create:cut_scorchia_stairs:shape=inner_left:half=top:facing=west create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=west create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=west create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=west create:cut_scoria_stairs:shape=inner_left:half=top:facing=west create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=west create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=west create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=west create:cut_tuff_stairs:shape=inner_left:half=top:facing=west create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=west create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=west create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=west create:cut_veridium_stairs:shape=inner_left:half=top:facing=west create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=west create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=west create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=west create:copper_shingle_stairs:shape=inner_left:half=top:facing=west create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=west create:copper_tile_stairs:shape=inner_left:half=top:facing=west create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=west create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=west create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=west acacia_stairs:shape=inner_right:half=top:facing=south bamboo_stairs:shape=inner_right:half=top:facing=south bamboo_mosaic_stairs:shape=inner_right:half=top:facing=south birch_stairs:shape=inner_right:half=top:facing=south cherry_stairs:shape=inner_right:half=top:facing=south crimson_stairs:shape=inner_right:half=top:facing=south dark_oak_stairs:shape=inner_right:half=top:facing=south jungle_stairs:shape=inner_right:half=top:facing=south mangrove_stairs:shape=inner_right:half=top:facing=south oak_stairs:shape=inner_right:half=top:facing=south spruce_stairs:shape=inner_right:half=top:facing=south warped_stairs:shape=inner_right:half=top:facing=south andesite_stairs:shape=inner_right:half=top:facing=south blackstone_stairs:shape=inner_right:half=top:facing=south brick_stairs:shape=inner_right:half=top:facing=south cobbled_deepslate_stairs:shape=inner_right:half=top:facing=south cobblestone_stairs:shape=inner_right:half=top:facing=south cut_copper_stairs:shape=inner_right:half=top:facing=south dark_prismarine_stairs:shape=inner_right:half=top:facing=south deepslate_brick_stairs:shape=inner_right:half=top:facing=south deepslate_tile_stairs:shape=inner_right:half=top:facing=south diorite_stairs:shape=inner_right:half=top:facing=south end_stone_brick_stairs:shape=inner_right:half=top:facing=south exposed_cut_copper_stairs:shape=inner_right:half=top:facing=south granite_stairs:shape=inner_right:half=top:facing=south mossy_cobblestone_stairs:shape=inner_right:half=top:facing=south mossy_stone_brick_stairs:shape=inner_right:half=top:facing=south mud_brick_stairs:shape=inner_right:half=top:facing=south nether_brick_stairs:shape=inner_right:half=top:facing=south oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=south polished_andesite_stairs:shape=inner_right:half=top:facing=south polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=south polished_blackstone_stairs:shape=inner_right:half=top:facing=south polished_deepslate_stairs:shape=inner_right:half=top:facing=south polished_diorite_stairs:shape=inner_right:half=top:facing=south polished_granite_stairs:shape=inner_right:half=top:facing=south prismarine_brick_stairs:shape=inner_right:half=top:facing=south prismarine_stairs:shape=inner_right:half=top:facing=south purpur_stairs:shape=inner_right:half=top:facing=south quartz_stairs:shape=inner_right:half=top:facing=south red_nether_brick_stairs:shape=inner_right:half=top:facing=south red_sandstone_stairs:shape=inner_right:half=top:facing=south sandstone_stairs:shape=inner_right:half=top:facing=south smooth_quartz_stairs:shape=inner_right:half=top:facing=south smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=south smooth_sandstone_stairs:shape=inner_right:half=top:facing=south stone_brick_stairs:shape=inner_right:half=top:facing=south stone_stairs:shape=inner_right:half=top:facing=south waxed_cut_copper_stairs:shape=inner_right:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=south weathered_cut_copper_stairs:shape=inner_right:half=top:facing=south createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=south createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=south create:cut_andesite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=south create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=south create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_asurine_stairs:shape=inner_right:half=top:facing=south create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=south create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=south create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=south create:cut_calcite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=south create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=south create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_crimsite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=south create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=south create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_deepslate_stairs:shape=inner_right:half=top:facing=south create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=south create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=south create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=south create:cut_diorite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=south create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=south create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_dripstone_stairs:shape=inner_right:half=top:facing=south create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=south create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=south create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=south create:cut_granite_stairs:shape=inner_right:half=top:facing=south create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=south create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=south create:small_granite_brick_stairs:shape=inner_right:half=top:facing=south create:cut_limestone_stairs:shape=inner_right:half=top:facing=south create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=south create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=south create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=south create:cut_ochrum_stairs:shape=inner_right:half=top:facing=south create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=south create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=south create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=south create:cut_scorchia_stairs:shape=inner_right:half=top:facing=south create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=south create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=south create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=south create:cut_scoria_stairs:shape=inner_right:half=top:facing=south create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=south create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=south create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=south create:cut_tuff_stairs:shape=inner_right:half=top:facing=south create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=south create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=south create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=south create:cut_veridium_stairs:shape=inner_right:half=top:facing=south create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=south create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=south create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=south create:copper_shingle_stairs:shape=inner_right:half=top:facing=south create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=south create:copper_tile_stairs:shape=inner_right:half=top:facing=south create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=south create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=south create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=south \ + humility-afm:inner_stairs_acacia:half=top:facing=east humility-afm:inner_stairs_bamboo:half=top:facing=east humility-afm:inner_stairs_birch:half=top:facing=east humility-afm:inner_stairs_cherry:half=top:facing=east humility-afm:inner_stairs_crimson:half=top:facing=east humility-afm:inner_stairs_dark_oak:half=top:facing=east humility-afm:inner_stairs_jungle:half=top:facing=east humility-afm:inner_stairs_mangrove:half=top:facing=east humility-afm:inner_stairs_oak:half=top:facing=east humility-afm:inner_stairs_spruce:half=top:facing=east humility-afm:inner_stairs_warped:half=top:facing=east humility-afm:inner_stairs_anchor_tree:half=top:facing=east humility-afm:inner_stairs_mushroom:half=top:facing=east humility-afm:inner_stairs_mushroom_fir:half=top:facing=east humility-afm:inner_stairs_nether_sakura:half=top:facing=east humility-afm:inner_stairs_stalagnate:half=top:facing=east humility-afm:inner_stairs_wart:half=top:facing=east humility-afm:inner_stairs_willow:half=top:facing=east humility-afm:inner_stairs_mud_bricks:half=top:facing=east humility-afm:inner_stairs_quartz:half=top:facing=east humility-afm:inner_stairs_red_sandstone:half=top:facing=east humility-afm:inner_stairs_sandstone:half=top:facing=east humility-afm:inner_stairs_andesite:half=top:facing=east humility-afm:inner_stairs_blackstone:half=top:facing=east humility-afm:inner_stairs_dark_prismarine:half=top:facing=east humility-afm:inner_stairs_diorite:half=top:facing=east humility-afm:inner_stairs_granite:half=top:facing=east humility-afm:inner_stairs_mossy_stone_brick:half=top:facing=east humility-afm:inner_stairs_polished_andesite:half=top:facing=east humility-afm:inner_stairs_polished_blackstone_brick:half=top:facing=east humility-afm:inner_stairs_polished_diorite:half=top:facing=east humility-afm:inner_stairs_polished_granite:half=top:facing=east humility-afm:inner_stairs_prismarine:half=top:facing=east humility-afm:inner_stairs_prismarine_bricks:half=top:facing=east humility-afm:inner_stairs_purpur:half=top:facing=east humility-afm:inner_stairs_stone:half=top:facing=east humility-afm:inner_stairs_stone_brick:half=top:facing=east humility-afm:inner_stairs_brick:half=top:facing=east humility-afm:inner_stairs_cobblestone:half=top:facing=east humility-afm:inner_stairs_mossy_cobblestone:half=top:facing=east humility-afm:inner_stairs_nether_brick:half=top:facing=east humility-afm:inner_stairs_polished_blackstone:half=top:facing=east humility-afm:inner_stairs_red_nether_brick:half=top:facing=east humility-afm:inner_stairs_smooth_quartz:half=top:facing=east humility-afm:inner_stairs_smooth_red_sandstone:half=top:facing=east humility-afm:inner_stairs_smooth_sandstone:half=top:facing=east humility-afm:inner_stairs_end_stone_brick:half=top:facing=east humility-afm:inner_stairs_cut_copper:half=top:facing=east humility-afm:inner_stairs_exposed_cut_copper:half=top:facing=east humility-afm:inner_stairs_oxidized_cut_copper:half=top:facing=east humility-afm:inner_stairs_weathered_cut_copper:half=top:facing=east humility-afm:inner_stairs_cobbled_deepslate:half=top:facing=east humility-afm:inner_stairs_deepslate_brick:half=top:facing=east humility-afm:inner_stairs_deepslate_tile:half=top:facing=east humility-afm:inner_stairs_polished_deepslate:half=top:facing=east -block.434=acacia_stairs:shape=inner_left:half=top:facing=north bamboo_stairs:shape=inner_left:half=top:facing=north bamboo_mosaic_stairs:shape=inner_left:half=top:facing=north birch_stairs:shape=inner_left:half=top:facing=north cherry_stairs:shape=inner_left:half=top:facing=north crimson_stairs:shape=inner_left:half=top:facing=north dark_oak_stairs:shape=inner_left:half=top:facing=north jungle_stairs:shape=inner_left:half=top:facing=north mangrove_stairs:shape=inner_left:half=top:facing=north oak_stairs:shape=inner_left:half=top:facing=north spruce_stairs:shape=inner_left:half=top:facing=north warped_stairs:shape=inner_left:half=top:facing=north andesite_stairs:shape=inner_left:half=top:facing=north blackstone_stairs:shape=inner_left:half=top:facing=north brick_stairs:shape=inner_left:half=top:facing=north cobbled_deepslate_stairs:shape=inner_left:half=top:facing=north cobblestone_stairs:shape=inner_left:half=top:facing=north cut_copper_stairs:shape=inner_left:half=top:facing=north dark_prismarine_stairs:shape=inner_left:half=top:facing=north deepslate_brick_stairs:shape=inner_left:half=top:facing=north deepslate_tile_stairs:shape=inner_left:half=top:facing=north diorite_stairs:shape=inner_left:half=top:facing=north end_stone_brick_stairs:shape=inner_left:half=top:facing=north exposed_cut_copper_stairs:shape=inner_left:half=top:facing=north granite_stairs:shape=inner_left:half=top:facing=north mossy_cobblestone_stairs:shape=inner_left:half=top:facing=north mossy_stone_brick_stairs:shape=inner_left:half=top:facing=north mud_brick_stairs:shape=inner_left:half=top:facing=north nether_brick_stairs:shape=inner_left:half=top:facing=north oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=north polished_andesite_stairs:shape=inner_left:half=top:facing=north polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=north polished_blackstone_stairs:shape=inner_left:half=top:facing=north polished_deepslate_stairs:shape=inner_left:half=top:facing=north polished_diorite_stairs:shape=inner_left:half=top:facing=north polished_granite_stairs:shape=inner_left:half=top:facing=north prismarine_brick_stairs:shape=inner_left:half=top:facing=north prismarine_stairs:shape=inner_left:half=top:facing=north purpur_stairs:shape=inner_left:half=top:facing=north quartz_stairs:shape=inner_left:half=top:facing=north red_nether_brick_stairs:shape=inner_left:half=top:facing=north red_sandstone_stairs:shape=inner_left:half=top:facing=north sandstone_stairs:shape=inner_left:half=top:facing=north smooth_quartz_stairs:shape=inner_left:half=top:facing=north smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=north smooth_sandstone_stairs:shape=inner_left:half=top:facing=north stone_brick_stairs:shape=inner_left:half=top:facing=north stone_stairs:shape=inner_left:half=top:facing=north waxed_cut_copper_stairs:shape=inner_left:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=north weathered_cut_copper_stairs:shape=inner_left:half=top:facing=north createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=north create:cut_andesite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=north create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=north create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_asurine_stairs:shape=inner_left:half=top:facing=north create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=north create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=north create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=north create:cut_calcite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=north create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=north create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_crimsite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=north create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=north create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_deepslate_stairs:shape=inner_left:half=top:facing=north create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=north create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=north create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=north create:cut_diorite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=north create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=north create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_dripstone_stairs:shape=inner_left:half=top:facing=north create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=north create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=north create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=north create:cut_granite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=north create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=north create:small_granite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_limestone_stairs:shape=inner_left:half=top:facing=north create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=north create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=north create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=north create:cut_ochrum_stairs:shape=inner_left:half=top:facing=north create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=north create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=north create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=north create:cut_scorchia_stairs:shape=inner_left:half=top:facing=north create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=north create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=north create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=north create:cut_scoria_stairs:shape=inner_left:half=top:facing=north create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=north create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=north create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=north create:cut_tuff_stairs:shape=inner_left:half=top:facing=north create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=north create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=north create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=north create:cut_veridium_stairs:shape=inner_left:half=top:facing=north create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=north create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=north create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=north create:copper_shingle_stairs:shape=inner_left:half=top:facing=north create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:copper_tile_stairs:shape=inner_left:half=top:facing=north create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=north create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=north create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=north acacia_stairs:shape=inner_right:half=top:facing=west bamboo_stairs:shape=inner_right:half=top:facing=west bamboo_mosaic_stairs:shape=inner_right:half=top:facing=west birch_stairs:shape=inner_right:half=top:facing=west cherry_stairs:shape=inner_right:half=top:facing=west crimson_stairs:shape=inner_right:half=top:facing=west dark_oak_stairs:shape=inner_right:half=top:facing=west jungle_stairs:shape=inner_right:half=top:facing=west mangrove_stairs:shape=inner_right:half=top:facing=west oak_stairs:shape=inner_right:half=top:facing=west spruce_stairs:shape=inner_right:half=top:facing=west warped_stairs:shape=inner_right:half=top:facing=west andesite_stairs:shape=inner_right:half=top:facing=west blackstone_stairs:shape=inner_right:half=top:facing=west brick_stairs:shape=inner_right:half=top:facing=west cobbled_deepslate_stairs:shape=inner_right:half=top:facing=west cobblestone_stairs:shape=inner_right:half=top:facing=west cut_copper_stairs:shape=inner_right:half=top:facing=west dark_prismarine_stairs:shape=inner_right:half=top:facing=west deepslate_brick_stairs:shape=inner_right:half=top:facing=west deepslate_tile_stairs:shape=inner_right:half=top:facing=west diorite_stairs:shape=inner_right:half=top:facing=west end_stone_brick_stairs:shape=inner_right:half=top:facing=west exposed_cut_copper_stairs:shape=inner_right:half=top:facing=west granite_stairs:shape=inner_right:half=top:facing=west mossy_cobblestone_stairs:shape=inner_right:half=top:facing=west mossy_stone_brick_stairs:shape=inner_right:half=top:facing=west mud_brick_stairs:shape=inner_right:half=top:facing=west nether_brick_stairs:shape=inner_right:half=top:facing=west oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=west polished_andesite_stairs:shape=inner_right:half=top:facing=west polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=west polished_blackstone_stairs:shape=inner_right:half=top:facing=west polished_deepslate_stairs:shape=inner_right:half=top:facing=west polished_diorite_stairs:shape=inner_right:half=top:facing=west polished_granite_stairs:shape=inner_right:half=top:facing=west prismarine_brick_stairs:shape=inner_right:half=top:facing=west prismarine_stairs:shape=inner_right:half=top:facing=west purpur_stairs:shape=inner_right:half=top:facing=west quartz_stairs:shape=inner_right:half=top:facing=west red_nether_brick_stairs:shape=inner_right:half=top:facing=west red_sandstone_stairs:shape=inner_right:half=top:facing=west sandstone_stairs:shape=inner_right:half=top:facing=west smooth_quartz_stairs:shape=inner_right:half=top:facing=west smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=west smooth_sandstone_stairs:shape=inner_right:half=top:facing=west stone_brick_stairs:shape=inner_right:half=top:facing=west stone_stairs:shape=inner_right:half=top:facing=west waxed_cut_copper_stairs:shape=inner_right:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=west weathered_cut_copper_stairs:shape=inner_right:half=top:facing=west createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=west create:cut_andesite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=west create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=west create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_asurine_stairs:shape=inner_right:half=top:facing=west create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=west create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=west create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=west create:cut_calcite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=west create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=west create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_crimsite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=west create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=west create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_deepslate_stairs:shape=inner_right:half=top:facing=west create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=west create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=west create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=west create:cut_diorite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=west create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=west create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_dripstone_stairs:shape=inner_right:half=top:facing=west create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=west create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=west create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=west create:cut_granite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=west create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=west create:small_granite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_limestone_stairs:shape=inner_right:half=top:facing=west create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=west create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=west create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=west create:cut_ochrum_stairs:shape=inner_right:half=top:facing=west create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=west create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=west create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=west create:cut_scorchia_stairs:shape=inner_right:half=top:facing=west create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=west create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=west create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=west create:cut_scoria_stairs:shape=inner_right:half=top:facing=west create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=west create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=west create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=west create:cut_tuff_stairs:shape=inner_right:half=top:facing=west create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=west create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=west create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=west create:cut_veridium_stairs:shape=inner_right:half=top:facing=west create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=west create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=west create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=west create:copper_shingle_stairs:shape=inner_right:half=top:facing=west create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:copper_tile_stairs:shape=inner_right:half=top:facing=west create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=west create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=west create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=west +block.434=acacia_stairs:shape=inner_left:half=top:facing=north bamboo_stairs:shape=inner_left:half=top:facing=north bamboo_mosaic_stairs:shape=inner_left:half=top:facing=north birch_stairs:shape=inner_left:half=top:facing=north cherry_stairs:shape=inner_left:half=top:facing=north crimson_stairs:shape=inner_left:half=top:facing=north dark_oak_stairs:shape=inner_left:half=top:facing=north jungle_stairs:shape=inner_left:half=top:facing=north mangrove_stairs:shape=inner_left:half=top:facing=north oak_stairs:shape=inner_left:half=top:facing=north spruce_stairs:shape=inner_left:half=top:facing=north warped_stairs:shape=inner_left:half=top:facing=north andesite_stairs:shape=inner_left:half=top:facing=north blackstone_stairs:shape=inner_left:half=top:facing=north brick_stairs:shape=inner_left:half=top:facing=north cobbled_deepslate_stairs:shape=inner_left:half=top:facing=north cobblestone_stairs:shape=inner_left:half=top:facing=north cut_copper_stairs:shape=inner_left:half=top:facing=north dark_prismarine_stairs:shape=inner_left:half=top:facing=north deepslate_brick_stairs:shape=inner_left:half=top:facing=north deepslate_tile_stairs:shape=inner_left:half=top:facing=north diorite_stairs:shape=inner_left:half=top:facing=north end_stone_brick_stairs:shape=inner_left:half=top:facing=north exposed_cut_copper_stairs:shape=inner_left:half=top:facing=north granite_stairs:shape=inner_left:half=top:facing=north mossy_cobblestone_stairs:shape=inner_left:half=top:facing=north mossy_stone_brick_stairs:shape=inner_left:half=top:facing=north mud_brick_stairs:shape=inner_left:half=top:facing=north nether_brick_stairs:shape=inner_left:half=top:facing=north oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=north polished_andesite_stairs:shape=inner_left:half=top:facing=north polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=north polished_blackstone_stairs:shape=inner_left:half=top:facing=north polished_deepslate_stairs:shape=inner_left:half=top:facing=north polished_diorite_stairs:shape=inner_left:half=top:facing=north polished_granite_stairs:shape=inner_left:half=top:facing=north prismarine_brick_stairs:shape=inner_left:half=top:facing=north prismarine_stairs:shape=inner_left:half=top:facing=north purpur_stairs:shape=inner_left:half=top:facing=north quartz_stairs:shape=inner_left:half=top:facing=north red_nether_brick_stairs:shape=inner_left:half=top:facing=north red_sandstone_stairs:shape=inner_left:half=top:facing=north sandstone_stairs:shape=inner_left:half=top:facing=north smooth_quartz_stairs:shape=inner_left:half=top:facing=north smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=north smooth_sandstone_stairs:shape=inner_left:half=top:facing=north stone_brick_stairs:shape=inner_left:half=top:facing=north stone_stairs:shape=inner_left:half=top:facing=north waxed_cut_copper_stairs:shape=inner_left:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=north weathered_cut_copper_stairs:shape=inner_left:half=top:facing=north createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=north createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=north create:cut_andesite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=north create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=north create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_asurine_stairs:shape=inner_left:half=top:facing=north create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=north create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=north create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=north create:cut_calcite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=north create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=north create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_crimsite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=north create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=north create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_deepslate_stairs:shape=inner_left:half=top:facing=north create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=north create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=north create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=north create:cut_diorite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=north create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=north create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_dripstone_stairs:shape=inner_left:half=top:facing=north create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=north create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=north create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=north create:cut_granite_stairs:shape=inner_left:half=top:facing=north create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=north create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=north create:small_granite_brick_stairs:shape=inner_left:half=top:facing=north create:cut_limestone_stairs:shape=inner_left:half=top:facing=north create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=north create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=north create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=north create:cut_ochrum_stairs:shape=inner_left:half=top:facing=north create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=north create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=north create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=north create:cut_scorchia_stairs:shape=inner_left:half=top:facing=north create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=north create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=north create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=north create:cut_scoria_stairs:shape=inner_left:half=top:facing=north create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=north create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=north create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=north create:cut_tuff_stairs:shape=inner_left:half=top:facing=north create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=north create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=north create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=north create:cut_veridium_stairs:shape=inner_left:half=top:facing=north create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=north create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=north create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=north create:copper_shingle_stairs:shape=inner_left:half=top:facing=north create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=north create:copper_tile_stairs:shape=inner_left:half=top:facing=north create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=north create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=north create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=north acacia_stairs:shape=inner_right:half=top:facing=west bamboo_stairs:shape=inner_right:half=top:facing=west bamboo_mosaic_stairs:shape=inner_right:half=top:facing=west birch_stairs:shape=inner_right:half=top:facing=west cherry_stairs:shape=inner_right:half=top:facing=west crimson_stairs:shape=inner_right:half=top:facing=west dark_oak_stairs:shape=inner_right:half=top:facing=west jungle_stairs:shape=inner_right:half=top:facing=west mangrove_stairs:shape=inner_right:half=top:facing=west oak_stairs:shape=inner_right:half=top:facing=west spruce_stairs:shape=inner_right:half=top:facing=west warped_stairs:shape=inner_right:half=top:facing=west andesite_stairs:shape=inner_right:half=top:facing=west blackstone_stairs:shape=inner_right:half=top:facing=west brick_stairs:shape=inner_right:half=top:facing=west cobbled_deepslate_stairs:shape=inner_right:half=top:facing=west cobblestone_stairs:shape=inner_right:half=top:facing=west cut_copper_stairs:shape=inner_right:half=top:facing=west dark_prismarine_stairs:shape=inner_right:half=top:facing=west deepslate_brick_stairs:shape=inner_right:half=top:facing=west deepslate_tile_stairs:shape=inner_right:half=top:facing=west diorite_stairs:shape=inner_right:half=top:facing=west end_stone_brick_stairs:shape=inner_right:half=top:facing=west exposed_cut_copper_stairs:shape=inner_right:half=top:facing=west granite_stairs:shape=inner_right:half=top:facing=west mossy_cobblestone_stairs:shape=inner_right:half=top:facing=west mossy_stone_brick_stairs:shape=inner_right:half=top:facing=west mud_brick_stairs:shape=inner_right:half=top:facing=west nether_brick_stairs:shape=inner_right:half=top:facing=west oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=west polished_andesite_stairs:shape=inner_right:half=top:facing=west polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=west polished_blackstone_stairs:shape=inner_right:half=top:facing=west polished_deepslate_stairs:shape=inner_right:half=top:facing=west polished_diorite_stairs:shape=inner_right:half=top:facing=west polished_granite_stairs:shape=inner_right:half=top:facing=west prismarine_brick_stairs:shape=inner_right:half=top:facing=west prismarine_stairs:shape=inner_right:half=top:facing=west purpur_stairs:shape=inner_right:half=top:facing=west quartz_stairs:shape=inner_right:half=top:facing=west red_nether_brick_stairs:shape=inner_right:half=top:facing=west red_sandstone_stairs:shape=inner_right:half=top:facing=west sandstone_stairs:shape=inner_right:half=top:facing=west smooth_quartz_stairs:shape=inner_right:half=top:facing=west smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=west smooth_sandstone_stairs:shape=inner_right:half=top:facing=west stone_brick_stairs:shape=inner_right:half=top:facing=west stone_stairs:shape=inner_right:half=top:facing=west waxed_cut_copper_stairs:shape=inner_right:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=west weathered_cut_copper_stairs:shape=inner_right:half=top:facing=west createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=west createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=west create:cut_andesite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=west create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=west create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_asurine_stairs:shape=inner_right:half=top:facing=west create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=west create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=west create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=west create:cut_calcite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=west create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=west create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_crimsite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=west create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=west create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_deepslate_stairs:shape=inner_right:half=top:facing=west create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=west create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=west create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=west create:cut_diorite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=west create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=west create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_dripstone_stairs:shape=inner_right:half=top:facing=west create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=west create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=west create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=west create:cut_granite_stairs:shape=inner_right:half=top:facing=west create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=west create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=west create:small_granite_brick_stairs:shape=inner_right:half=top:facing=west create:cut_limestone_stairs:shape=inner_right:half=top:facing=west create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=west create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=west create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=west create:cut_ochrum_stairs:shape=inner_right:half=top:facing=west create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=west create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=west create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=west create:cut_scorchia_stairs:shape=inner_right:half=top:facing=west create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=west create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=west create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=west create:cut_scoria_stairs:shape=inner_right:half=top:facing=west create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=west create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=west create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=west create:cut_tuff_stairs:shape=inner_right:half=top:facing=west create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=west create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=west create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=west create:cut_veridium_stairs:shape=inner_right:half=top:facing=west create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=west create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=west create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=west create:copper_shingle_stairs:shape=inner_right:half=top:facing=west create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=west create:copper_tile_stairs:shape=inner_right:half=top:facing=west create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=west create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=west create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=west \ + humility-afm:inner_stairs_acacia:half=top:facing=south humility-afm:inner_stairs_bamboo:half=top:facing=south humility-afm:inner_stairs_birch:half=top:facing=south humility-afm:inner_stairs_cherry:half=top:facing=south humility-afm:inner_stairs_crimson:half=top:facing=south humility-afm:inner_stairs_dark_oak:half=top:facing=south humility-afm:inner_stairs_jungle:half=top:facing=south humility-afm:inner_stairs_mangrove:half=top:facing=south humility-afm:inner_stairs_oak:half=top:facing=south humility-afm:inner_stairs_spruce:half=top:facing=south humility-afm:inner_stairs_warped:half=top:facing=south humility-afm:inner_stairs_anchor_tree:half=top:facing=south humility-afm:inner_stairs_mushroom:half=top:facing=south humility-afm:inner_stairs_mushroom_fir:half=top:facing=south humility-afm:inner_stairs_nether_sakura:half=top:facing=south humility-afm:inner_stairs_stalagnate:half=top:facing=south humility-afm:inner_stairs_wart:half=top:facing=south humility-afm:inner_stairs_willow:half=top:facing=south humility-afm:inner_stairs_mud_bricks:half=top:facing=south humility-afm:inner_stairs_quartz:half=top:facing=south humility-afm:inner_stairs_red_sandstone:half=top:facing=south humility-afm:inner_stairs_sandstone:half=top:facing=south humility-afm:inner_stairs_andesite:half=top:facing=south humility-afm:inner_stairs_blackstone:half=top:facing=south humility-afm:inner_stairs_dark_prismarine:half=top:facing=south humility-afm:inner_stairs_diorite:half=top:facing=south humility-afm:inner_stairs_granite:half=top:facing=south humility-afm:inner_stairs_mossy_stone_brick:half=top:facing=south humility-afm:inner_stairs_polished_andesite:half=top:facing=south humility-afm:inner_stairs_polished_blackstone_brick:half=top:facing=south humility-afm:inner_stairs_polished_diorite:half=top:facing=south humility-afm:inner_stairs_polished_granite:half=top:facing=south humility-afm:inner_stairs_prismarine:half=top:facing=south humility-afm:inner_stairs_prismarine_bricks:half=top:facing=south humility-afm:inner_stairs_purpur:half=top:facing=south humility-afm:inner_stairs_stone:half=top:facing=south humility-afm:inner_stairs_stone_brick:half=top:facing=south humility-afm:inner_stairs_brick:half=top:facing=south humility-afm:inner_stairs_cobblestone:half=top:facing=south humility-afm:inner_stairs_mossy_cobblestone:half=top:facing=south humility-afm:inner_stairs_nether_brick:half=top:facing=south humility-afm:inner_stairs_polished_blackstone:half=top:facing=south humility-afm:inner_stairs_red_nether_brick:half=top:facing=south humility-afm:inner_stairs_smooth_quartz:half=top:facing=south humility-afm:inner_stairs_smooth_red_sandstone:half=top:facing=south humility-afm:inner_stairs_smooth_sandstone:half=top:facing=south humility-afm:inner_stairs_end_stone_brick:half=top:facing=south humility-afm:inner_stairs_cut_copper:half=top:facing=south humility-afm:inner_stairs_exposed_cut_copper:half=top:facing=south humility-afm:inner_stairs_oxidized_cut_copper:half=top:facing=south humility-afm:inner_stairs_weathered_cut_copper:half=top:facing=south humility-afm:inner_stairs_cobbled_deepslate:half=top:facing=south humility-afm:inner_stairs_deepslate_brick:half=top:facing=south humility-afm:inner_stairs_deepslate_tile:half=top:facing=south humility-afm:inner_stairs_polished_deepslate:half=top:facing=south -block.435=acacia_stairs:shape=inner_left:half=top:facing=east bamboo_stairs:shape=inner_left:half=top:facing=east bamboo_mosaic_stairs:shape=inner_left:half=top:facing=east birch_stairs:shape=inner_left:half=top:facing=east cherry_stairs:shape=inner_left:half=top:facing=east crimson_stairs:shape=inner_left:half=top:facing=east dark_oak_stairs:shape=inner_left:half=top:facing=east jungle_stairs:shape=inner_left:half=top:facing=east mangrove_stairs:shape=inner_left:half=top:facing=east oak_stairs:shape=inner_left:half=top:facing=east spruce_stairs:shape=inner_left:half=top:facing=east warped_stairs:shape=inner_left:half=top:facing=east andesite_stairs:shape=inner_left:half=top:facing=east blackstone_stairs:shape=inner_left:half=top:facing=east brick_stairs:shape=inner_left:half=top:facing=east cobbled_deepslate_stairs:shape=inner_left:half=top:facing=east cobblestone_stairs:shape=inner_left:half=top:facing=east cut_copper_stairs:shape=inner_left:half=top:facing=east dark_prismarine_stairs:shape=inner_left:half=top:facing=east deepslate_brick_stairs:shape=inner_left:half=top:facing=east deepslate_tile_stairs:shape=inner_left:half=top:facing=east diorite_stairs:shape=inner_left:half=top:facing=east end_stone_brick_stairs:shape=inner_left:half=top:facing=east exposed_cut_copper_stairs:shape=inner_left:half=top:facing=east granite_stairs:shape=inner_left:half=top:facing=east mossy_cobblestone_stairs:shape=inner_left:half=top:facing=east mossy_stone_brick_stairs:shape=inner_left:half=top:facing=east mud_brick_stairs:shape=inner_left:half=top:facing=east nether_brick_stairs:shape=inner_left:half=top:facing=east oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=east polished_andesite_stairs:shape=inner_left:half=top:facing=east polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=east polished_blackstone_stairs:shape=inner_left:half=top:facing=east polished_deepslate_stairs:shape=inner_left:half=top:facing=east polished_diorite_stairs:shape=inner_left:half=top:facing=east polished_granite_stairs:shape=inner_left:half=top:facing=east prismarine_brick_stairs:shape=inner_left:half=top:facing=east prismarine_stairs:shape=inner_left:half=top:facing=east purpur_stairs:shape=inner_left:half=top:facing=east quartz_stairs:shape=inner_left:half=top:facing=east red_nether_brick_stairs:shape=inner_left:half=top:facing=east red_sandstone_stairs:shape=inner_left:half=top:facing=east sandstone_stairs:shape=inner_left:half=top:facing=east smooth_quartz_stairs:shape=inner_left:half=top:facing=east smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=east smooth_sandstone_stairs:shape=inner_left:half=top:facing=east stone_brick_stairs:shape=inner_left:half=top:facing=east stone_stairs:shape=inner_left:half=top:facing=east waxed_cut_copper_stairs:shape=inner_left:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=east weathered_cut_copper_stairs:shape=inner_left:half=top:facing=east createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=east create:cut_andesite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=east create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=east create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_asurine_stairs:shape=inner_left:half=top:facing=east create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=east create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=east create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=east create:cut_calcite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=east create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=east create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_crimsite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=east create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=east create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_deepslate_stairs:shape=inner_left:half=top:facing=east create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=east create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=east create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=east create:cut_diorite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=east create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=east create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_dripstone_stairs:shape=inner_left:half=top:facing=east create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=east create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=east create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=east create:cut_granite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=east create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=east create:small_granite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_limestone_stairs:shape=inner_left:half=top:facing=east create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=east create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=east create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=east create:cut_ochrum_stairs:shape=inner_left:half=top:facing=east create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=east create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=east create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=east create:cut_scorchia_stairs:shape=inner_left:half=top:facing=east create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=east create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=east create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=east create:cut_scoria_stairs:shape=inner_left:half=top:facing=east create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=east create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=east create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=east create:cut_tuff_stairs:shape=inner_left:half=top:facing=east create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=east create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=east create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=east create:cut_veridium_stairs:shape=inner_left:half=top:facing=east create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=east create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=east create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=east create:copper_shingle_stairs:shape=inner_left:half=top:facing=east create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:copper_tile_stairs:shape=inner_left:half=top:facing=east create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=east create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=east create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=east acacia_stairs:shape=inner_right:half=top:facing=north bamboo_stairs:shape=inner_right:half=top:facing=north bamboo_mosaic_stairs:shape=inner_right:half=top:facing=north birch_stairs:shape=inner_right:half=top:facing=north cherry_stairs:shape=inner_right:half=top:facing=north crimson_stairs:shape=inner_right:half=top:facing=north dark_oak_stairs:shape=inner_right:half=top:facing=north jungle_stairs:shape=inner_right:half=top:facing=north mangrove_stairs:shape=inner_right:half=top:facing=north oak_stairs:shape=inner_right:half=top:facing=north spruce_stairs:shape=inner_right:half=top:facing=north warped_stairs:shape=inner_right:half=top:facing=north andesite_stairs:shape=inner_right:half=top:facing=north blackstone_stairs:shape=inner_right:half=top:facing=north brick_stairs:shape=inner_right:half=top:facing=north cobbled_deepslate_stairs:shape=inner_right:half=top:facing=north cobblestone_stairs:shape=inner_right:half=top:facing=north cut_copper_stairs:shape=inner_right:half=top:facing=north dark_prismarine_stairs:shape=inner_right:half=top:facing=north deepslate_brick_stairs:shape=inner_right:half=top:facing=north deepslate_tile_stairs:shape=inner_right:half=top:facing=north diorite_stairs:shape=inner_right:half=top:facing=north end_stone_brick_stairs:shape=inner_right:half=top:facing=north exposed_cut_copper_stairs:shape=inner_right:half=top:facing=north granite_stairs:shape=inner_right:half=top:facing=north mossy_cobblestone_stairs:shape=inner_right:half=top:facing=north mossy_stone_brick_stairs:shape=inner_right:half=top:facing=north mud_brick_stairs:shape=inner_right:half=top:facing=north nether_brick_stairs:shape=inner_right:half=top:facing=north oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=north polished_andesite_stairs:shape=inner_right:half=top:facing=north polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=north polished_blackstone_stairs:shape=inner_right:half=top:facing=north polished_deepslate_stairs:shape=inner_right:half=top:facing=north polished_diorite_stairs:shape=inner_right:half=top:facing=north polished_granite_stairs:shape=inner_right:half=top:facing=north prismarine_brick_stairs:shape=inner_right:half=top:facing=north prismarine_stairs:shape=inner_right:half=top:facing=north purpur_stairs:shape=inner_right:half=top:facing=north quartz_stairs:shape=inner_right:half=top:facing=north red_nether_brick_stairs:shape=inner_right:half=top:facing=north red_sandstone_stairs:shape=inner_right:half=top:facing=north sandstone_stairs:shape=inner_right:half=top:facing=north smooth_quartz_stairs:shape=inner_right:half=top:facing=north smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=north smooth_sandstone_stairs:shape=inner_right:half=top:facing=north stone_brick_stairs:shape=inner_right:half=top:facing=north stone_stairs:shape=inner_right:half=top:facing=north waxed_cut_copper_stairs:shape=inner_right:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=north weathered_cut_copper_stairs:shape=inner_right:half=top:facing=north createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=north create:cut_andesite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=north create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=north create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_asurine_stairs:shape=inner_right:half=top:facing=north create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=north create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=north create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=north create:cut_calcite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=north create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=north create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_crimsite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=north create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=north create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_deepslate_stairs:shape=inner_right:half=top:facing=north create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=north create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=north create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=north create:cut_diorite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=north create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=north create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_dripstone_stairs:shape=inner_right:half=top:facing=north create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=north create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=north create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=north create:cut_granite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=north create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=north create:small_granite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_limestone_stairs:shape=inner_right:half=top:facing=north create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=north create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=north create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=north create:cut_ochrum_stairs:shape=inner_right:half=top:facing=north create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=north create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=north create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=north create:cut_scorchia_stairs:shape=inner_right:half=top:facing=north create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=north create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=north create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=north create:cut_scoria_stairs:shape=inner_right:half=top:facing=north create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=north create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=north create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=north create:cut_tuff_stairs:shape=inner_right:half=top:facing=north create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=north create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=north create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=north create:cut_veridium_stairs:shape=inner_right:half=top:facing=north create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=north create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=north create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=north create:copper_shingle_stairs:shape=inner_right:half=top:facing=north create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:copper_tile_stairs:shape=inner_right:half=top:facing=north create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=north create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=north create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=north +block.435=acacia_stairs:shape=inner_left:half=top:facing=east bamboo_stairs:shape=inner_left:half=top:facing=east bamboo_mosaic_stairs:shape=inner_left:half=top:facing=east birch_stairs:shape=inner_left:half=top:facing=east cherry_stairs:shape=inner_left:half=top:facing=east crimson_stairs:shape=inner_left:half=top:facing=east dark_oak_stairs:shape=inner_left:half=top:facing=east jungle_stairs:shape=inner_left:half=top:facing=east mangrove_stairs:shape=inner_left:half=top:facing=east oak_stairs:shape=inner_left:half=top:facing=east spruce_stairs:shape=inner_left:half=top:facing=east warped_stairs:shape=inner_left:half=top:facing=east andesite_stairs:shape=inner_left:half=top:facing=east blackstone_stairs:shape=inner_left:half=top:facing=east brick_stairs:shape=inner_left:half=top:facing=east cobbled_deepslate_stairs:shape=inner_left:half=top:facing=east cobblestone_stairs:shape=inner_left:half=top:facing=east cut_copper_stairs:shape=inner_left:half=top:facing=east dark_prismarine_stairs:shape=inner_left:half=top:facing=east deepslate_brick_stairs:shape=inner_left:half=top:facing=east deepslate_tile_stairs:shape=inner_left:half=top:facing=east diorite_stairs:shape=inner_left:half=top:facing=east end_stone_brick_stairs:shape=inner_left:half=top:facing=east exposed_cut_copper_stairs:shape=inner_left:half=top:facing=east granite_stairs:shape=inner_left:half=top:facing=east mossy_cobblestone_stairs:shape=inner_left:half=top:facing=east mossy_stone_brick_stairs:shape=inner_left:half=top:facing=east mud_brick_stairs:shape=inner_left:half=top:facing=east nether_brick_stairs:shape=inner_left:half=top:facing=east oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=east polished_andesite_stairs:shape=inner_left:half=top:facing=east polished_blackstone_brick_stairs:shape=inner_left:half=top:facing=east polished_blackstone_stairs:shape=inner_left:half=top:facing=east polished_deepslate_stairs:shape=inner_left:half=top:facing=east polished_diorite_stairs:shape=inner_left:half=top:facing=east polished_granite_stairs:shape=inner_left:half=top:facing=east prismarine_brick_stairs:shape=inner_left:half=top:facing=east prismarine_stairs:shape=inner_left:half=top:facing=east purpur_stairs:shape=inner_left:half=top:facing=east quartz_stairs:shape=inner_left:half=top:facing=east red_nether_brick_stairs:shape=inner_left:half=top:facing=east red_sandstone_stairs:shape=inner_left:half=top:facing=east sandstone_stairs:shape=inner_left:half=top:facing=east smooth_quartz_stairs:shape=inner_left:half=top:facing=east smooth_red_sandstone_stairs:shape=inner_left:half=top:facing=east smooth_sandstone_stairs:shape=inner_left:half=top:facing=east stone_brick_stairs:shape=inner_left:half=top:facing=east stone_stairs:shape=inner_left:half=top:facing=east waxed_cut_copper_stairs:shape=inner_left:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=inner_left:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=inner_left:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=inner_left:half=top:facing=east weathered_cut_copper_stairs:shape=inner_left:half=top:facing=east createdeco:andesite_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:brass_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:copper_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:gold_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:iron_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:netherite_sheet_stairs:shape=inner_left:half=top:facing=east createdeco:zinc_sheet_stairs:shape=inner_left:half=top:facing=east create:cut_andesite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_andesite_stairs:shape=inner_left:half=top:facing=east create:cut_andesite_brick_stairs:shape=inner_left:half=top:facing=east create:small_andesite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_asurine_stairs:shape=inner_left:half=top:facing=east create:polished_cut_asurine_stairs:shape=inner_left:half=top:facing=east create:cut_asurine_brick_stairs:shape=inner_left:half=top:facing=east create:small_asurine_brick_stairs:shape=inner_left:half=top:facing=east create:cut_calcite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_calcite_stairs:shape=inner_left:half=top:facing=east create:cut_calcite_brick_stairs:shape=inner_left:half=top:facing=east create:small_calcite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_crimsite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_crimsite_stairs:shape=inner_left:half=top:facing=east create:cut_crimsite_brick_stairs:shape=inner_left:half=top:facing=east create:small_crimsite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_deepslate_stairs:shape=inner_left:half=top:facing=east create:polished_cut_deepslate_stairs:shape=inner_left:half=top:facing=east create:cut_deepslate_brick_stairs:shape=inner_left:half=top:facing=east create:small_deepslate_brick_stairs:shape=inner_left:half=top:facing=east create:cut_diorite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_diorite_stairs:shape=inner_left:half=top:facing=east create:cut_diorite_brick_stairs:shape=inner_left:half=top:facing=east create:small_diorite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_dripstone_stairs:shape=inner_left:half=top:facing=east create:polished_cut_dripstone_stairs:shape=inner_left:half=top:facing=east create:cut_dripstone_brick_stairs:shape=inner_left:half=top:facing=east create:small_dripstone_brick_stairs:shape=inner_left:half=top:facing=east create:cut_granite_stairs:shape=inner_left:half=top:facing=east create:polished_cut_granite_stairs:shape=inner_left:half=top:facing=east create:cut_granite_brick_stairs:shape=inner_left:half=top:facing=east create:small_granite_brick_stairs:shape=inner_left:half=top:facing=east create:cut_limestone_stairs:shape=inner_left:half=top:facing=east create:polished_cut_limestone_stairs:shape=inner_left:half=top:facing=east create:cut_limestone_brick_stairs:shape=inner_left:half=top:facing=east create:small_limestone_brick_stairs:shape=inner_left:half=top:facing=east create:cut_ochrum_stairs:shape=inner_left:half=top:facing=east create:polished_cut_ochrum_stairs:shape=inner_left:half=top:facing=east create:cut_ochrum_brick_stairs:shape=inner_left:half=top:facing=east create:small_ochrum_brick_stairs:shape=inner_left:half=top:facing=east create:cut_scorchia_stairs:shape=inner_left:half=top:facing=east create:polished_cut_scorchia_stairs:shape=inner_left:half=top:facing=east create:cut_scorchia_brick_stairs:shape=inner_left:half=top:facing=east create:small_scorchia_brick_stairs:shape=inner_left:half=top:facing=east create:cut_scoria_stairs:shape=inner_left:half=top:facing=east create:polished_cut_scoria_stairs:shape=inner_left:half=top:facing=east create:cut_scoria_brick_stairs:shape=inner_left:half=top:facing=east create:small_scoria_brick_stairs:shape=inner_left:half=top:facing=east create:cut_tuff_stairs:shape=inner_left:half=top:facing=east create:polished_cut_tuff_stairs:shape=inner_left:half=top:facing=east create:cut_tuff_brick_stairs:shape=inner_left:half=top:facing=east create:small_tuff_brick_stairs:shape=inner_left:half=top:facing=east create:cut_veridium_stairs:shape=inner_left:half=top:facing=east create:polished_cut_veridium_stairs:shape=inner_left:half=top:facing=east create:cut_veridium_brick_stairs:shape=inner_left:half=top:facing=east create:small_veridium_brick_stairs:shape=inner_left:half=top:facing=east create:copper_shingle_stairs:shape=inner_left:half=top:facing=east create:exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=inner_left:half=top:facing=east create:copper_tile_stairs:shape=inner_left:half=top:facing=east create:exposed_copper_tile_stairs:shape=inner_left:half=top:facing=east create:weathered_copper_tile_stairs:shape=inner_left:half=top:facing=east create:oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=inner_left:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=inner_left:half=top:facing=east acacia_stairs:shape=inner_right:half=top:facing=north bamboo_stairs:shape=inner_right:half=top:facing=north bamboo_mosaic_stairs:shape=inner_right:half=top:facing=north birch_stairs:shape=inner_right:half=top:facing=north cherry_stairs:shape=inner_right:half=top:facing=north crimson_stairs:shape=inner_right:half=top:facing=north dark_oak_stairs:shape=inner_right:half=top:facing=north jungle_stairs:shape=inner_right:half=top:facing=north mangrove_stairs:shape=inner_right:half=top:facing=north oak_stairs:shape=inner_right:half=top:facing=north spruce_stairs:shape=inner_right:half=top:facing=north warped_stairs:shape=inner_right:half=top:facing=north andesite_stairs:shape=inner_right:half=top:facing=north blackstone_stairs:shape=inner_right:half=top:facing=north brick_stairs:shape=inner_right:half=top:facing=north cobbled_deepslate_stairs:shape=inner_right:half=top:facing=north cobblestone_stairs:shape=inner_right:half=top:facing=north cut_copper_stairs:shape=inner_right:half=top:facing=north dark_prismarine_stairs:shape=inner_right:half=top:facing=north deepslate_brick_stairs:shape=inner_right:half=top:facing=north deepslate_tile_stairs:shape=inner_right:half=top:facing=north diorite_stairs:shape=inner_right:half=top:facing=north end_stone_brick_stairs:shape=inner_right:half=top:facing=north exposed_cut_copper_stairs:shape=inner_right:half=top:facing=north granite_stairs:shape=inner_right:half=top:facing=north mossy_cobblestone_stairs:shape=inner_right:half=top:facing=north mossy_stone_brick_stairs:shape=inner_right:half=top:facing=north mud_brick_stairs:shape=inner_right:half=top:facing=north nether_brick_stairs:shape=inner_right:half=top:facing=north oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=north polished_andesite_stairs:shape=inner_right:half=top:facing=north polished_blackstone_brick_stairs:shape=inner_right:half=top:facing=north polished_blackstone_stairs:shape=inner_right:half=top:facing=north polished_deepslate_stairs:shape=inner_right:half=top:facing=north polished_diorite_stairs:shape=inner_right:half=top:facing=north polished_granite_stairs:shape=inner_right:half=top:facing=north prismarine_brick_stairs:shape=inner_right:half=top:facing=north prismarine_stairs:shape=inner_right:half=top:facing=north purpur_stairs:shape=inner_right:half=top:facing=north quartz_stairs:shape=inner_right:half=top:facing=north red_nether_brick_stairs:shape=inner_right:half=top:facing=north red_sandstone_stairs:shape=inner_right:half=top:facing=north sandstone_stairs:shape=inner_right:half=top:facing=north smooth_quartz_stairs:shape=inner_right:half=top:facing=north smooth_red_sandstone_stairs:shape=inner_right:half=top:facing=north smooth_sandstone_stairs:shape=inner_right:half=top:facing=north stone_brick_stairs:shape=inner_right:half=top:facing=north stone_stairs:shape=inner_right:half=top:facing=north waxed_cut_copper_stairs:shape=inner_right:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=inner_right:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=inner_right:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=inner_right:half=top:facing=north weathered_cut_copper_stairs:shape=inner_right:half=top:facing=north createdeco:andesite_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:brass_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:copper_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:gold_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:iron_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:netherite_sheet_stairs:shape=inner_right:half=top:facing=north createdeco:zinc_sheet_stairs:shape=inner_right:half=top:facing=north create:cut_andesite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_andesite_stairs:shape=inner_right:half=top:facing=north create:cut_andesite_brick_stairs:shape=inner_right:half=top:facing=north create:small_andesite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_asurine_stairs:shape=inner_right:half=top:facing=north create:polished_cut_asurine_stairs:shape=inner_right:half=top:facing=north create:cut_asurine_brick_stairs:shape=inner_right:half=top:facing=north create:small_asurine_brick_stairs:shape=inner_right:half=top:facing=north create:cut_calcite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_calcite_stairs:shape=inner_right:half=top:facing=north create:cut_calcite_brick_stairs:shape=inner_right:half=top:facing=north create:small_calcite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_crimsite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_crimsite_stairs:shape=inner_right:half=top:facing=north create:cut_crimsite_brick_stairs:shape=inner_right:half=top:facing=north create:small_crimsite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_deepslate_stairs:shape=inner_right:half=top:facing=north create:polished_cut_deepslate_stairs:shape=inner_right:half=top:facing=north create:cut_deepslate_brick_stairs:shape=inner_right:half=top:facing=north create:small_deepslate_brick_stairs:shape=inner_right:half=top:facing=north create:cut_diorite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_diorite_stairs:shape=inner_right:half=top:facing=north create:cut_diorite_brick_stairs:shape=inner_right:half=top:facing=north create:small_diorite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_dripstone_stairs:shape=inner_right:half=top:facing=north create:polished_cut_dripstone_stairs:shape=inner_right:half=top:facing=north create:cut_dripstone_brick_stairs:shape=inner_right:half=top:facing=north create:small_dripstone_brick_stairs:shape=inner_right:half=top:facing=north create:cut_granite_stairs:shape=inner_right:half=top:facing=north create:polished_cut_granite_stairs:shape=inner_right:half=top:facing=north create:cut_granite_brick_stairs:shape=inner_right:half=top:facing=north create:small_granite_brick_stairs:shape=inner_right:half=top:facing=north create:cut_limestone_stairs:shape=inner_right:half=top:facing=north create:polished_cut_limestone_stairs:shape=inner_right:half=top:facing=north create:cut_limestone_brick_stairs:shape=inner_right:half=top:facing=north create:small_limestone_brick_stairs:shape=inner_right:half=top:facing=north create:cut_ochrum_stairs:shape=inner_right:half=top:facing=north create:polished_cut_ochrum_stairs:shape=inner_right:half=top:facing=north create:cut_ochrum_brick_stairs:shape=inner_right:half=top:facing=north create:small_ochrum_brick_stairs:shape=inner_right:half=top:facing=north create:cut_scorchia_stairs:shape=inner_right:half=top:facing=north create:polished_cut_scorchia_stairs:shape=inner_right:half=top:facing=north create:cut_scorchia_brick_stairs:shape=inner_right:half=top:facing=north create:small_scorchia_brick_stairs:shape=inner_right:half=top:facing=north create:cut_scoria_stairs:shape=inner_right:half=top:facing=north create:polished_cut_scoria_stairs:shape=inner_right:half=top:facing=north create:cut_scoria_brick_stairs:shape=inner_right:half=top:facing=north create:small_scoria_brick_stairs:shape=inner_right:half=top:facing=north create:cut_tuff_stairs:shape=inner_right:half=top:facing=north create:polished_cut_tuff_stairs:shape=inner_right:half=top:facing=north create:cut_tuff_brick_stairs:shape=inner_right:half=top:facing=north create:small_tuff_brick_stairs:shape=inner_right:half=top:facing=north create:cut_veridium_stairs:shape=inner_right:half=top:facing=north create:polished_cut_veridium_stairs:shape=inner_right:half=top:facing=north create:cut_veridium_brick_stairs:shape=inner_right:half=top:facing=north create:small_veridium_brick_stairs:shape=inner_right:half=top:facing=north create:copper_shingle_stairs:shape=inner_right:half=top:facing=north create:exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=inner_right:half=top:facing=north create:copper_tile_stairs:shape=inner_right:half=top:facing=north create:exposed_copper_tile_stairs:shape=inner_right:half=top:facing=north create:weathered_copper_tile_stairs:shape=inner_right:half=top:facing=north create:oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=inner_right:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=inner_right:half=top:facing=north \ + humility-afm:inner_stairs_acacia:half=top:facing=west humility-afm:inner_stairs_bamboo:half=top:facing=west humility-afm:inner_stairs_birch:half=top:facing=west humility-afm:inner_stairs_cherry:half=top:facing=west humility-afm:inner_stairs_crimson:half=top:facing=west humility-afm:inner_stairs_dark_oak:half=top:facing=west humility-afm:inner_stairs_jungle:half=top:facing=west humility-afm:inner_stairs_mangrove:half=top:facing=west humility-afm:inner_stairs_oak:half=top:facing=west humility-afm:inner_stairs_spruce:half=top:facing=west humility-afm:inner_stairs_warped:half=top:facing=west humility-afm:inner_stairs_anchor_tree:half=top:facing=west humility-afm:inner_stairs_mushroom:half=top:facing=west humility-afm:inner_stairs_mushroom_fir:half=top:facing=west humility-afm:inner_stairs_nether_sakura:half=top:facing=west humility-afm:inner_stairs_stalagnate:half=top:facing=west humility-afm:inner_stairs_wart:half=top:facing=west humility-afm:inner_stairs_willow:half=top:facing=west humility-afm:inner_stairs_mud_bricks:half=top:facing=west humility-afm:inner_stairs_quartz:half=top:facing=west humility-afm:inner_stairs_red_sandstone:half=top:facing=west humility-afm:inner_stairs_sandstone:half=top:facing=west humility-afm:inner_stairs_andesite:half=top:facing=west humility-afm:inner_stairs_blackstone:half=top:facing=west humility-afm:inner_stairs_dark_prismarine:half=top:facing=west humility-afm:inner_stairs_diorite:half=top:facing=west humility-afm:inner_stairs_granite:half=top:facing=west humility-afm:inner_stairs_mossy_stone_brick:half=top:facing=west humility-afm:inner_stairs_polished_andesite:half=top:facing=west humility-afm:inner_stairs_polished_blackstone_brick:half=top:facing=west humility-afm:inner_stairs_polished_diorite:half=top:facing=west humility-afm:inner_stairs_polished_granite:half=top:facing=west humility-afm:inner_stairs_prismarine:half=top:facing=west humility-afm:inner_stairs_prismarine_bricks:half=top:facing=west humility-afm:inner_stairs_purpur:half=top:facing=west humility-afm:inner_stairs_stone:half=top:facing=west humility-afm:inner_stairs_stone_brick:half=top:facing=west humility-afm:inner_stairs_brick:half=top:facing=west humility-afm:inner_stairs_cobblestone:half=top:facing=west humility-afm:inner_stairs_mossy_cobblestone:half=top:facing=west humility-afm:inner_stairs_nether_brick:half=top:facing=west humility-afm:inner_stairs_polished_blackstone:half=top:facing=west humility-afm:inner_stairs_red_nether_brick:half=top:facing=west humility-afm:inner_stairs_smooth_quartz:half=top:facing=west humility-afm:inner_stairs_smooth_red_sandstone:half=top:facing=west humility-afm:inner_stairs_smooth_sandstone:half=top:facing=west humility-afm:inner_stairs_end_stone_brick:half=top:facing=west humility-afm:inner_stairs_cut_copper:half=top:facing=west humility-afm:inner_stairs_exposed_cut_copper:half=top:facing=west humility-afm:inner_stairs_oxidized_cut_copper:half=top:facing=west humility-afm:inner_stairs_weathered_cut_copper:half=top:facing=west humility-afm:inner_stairs_cobbled_deepslate:half=top:facing=west humility-afm:inner_stairs_deepslate_brick:half=top:facing=west humility-afm:inner_stairs_deepslate_tile:half=top:facing=west humility-afm:inner_stairs_polished_deepslate:half=top:facing=west -block.436=acacia_stairs:shape=outer_left:half=top:facing=north bamboo_stairs:shape=outer_left:half=top:facing=north bamboo_mosaic_stairs:shape=outer_left:half=top:facing=north birch_stairs:shape=outer_left:half=top:facing=north cherry_stairs:shape=outer_left:half=top:facing=north crimson_stairs:shape=outer_left:half=top:facing=north dark_oak_stairs:shape=outer_left:half=top:facing=north jungle_stairs:shape=outer_left:half=top:facing=north mangrove_stairs:shape=outer_left:half=top:facing=north oak_stairs:shape=outer_left:half=top:facing=north spruce_stairs:shape=outer_left:half=top:facing=north warped_stairs:shape=outer_left:half=top:facing=north andesite_stairs:shape=outer_left:half=top:facing=north blackstone_stairs:shape=outer_left:half=top:facing=north brick_stairs:shape=outer_left:half=top:facing=north cobbled_deepslate_stairs:shape=outer_left:half=top:facing=north cobblestone_stairs:shape=outer_left:half=top:facing=north cut_copper_stairs:shape=outer_left:half=top:facing=north dark_prismarine_stairs:shape=outer_left:half=top:facing=north deepslate_brick_stairs:shape=outer_left:half=top:facing=north deepslate_tile_stairs:shape=outer_left:half=top:facing=north diorite_stairs:shape=outer_left:half=top:facing=north end_stone_brick_stairs:shape=outer_left:half=top:facing=north exposed_cut_copper_stairs:shape=outer_left:half=top:facing=north granite_stairs:shape=outer_left:half=top:facing=north mossy_cobblestone_stairs:shape=outer_left:half=top:facing=north mossy_stone_brick_stairs:shape=outer_left:half=top:facing=north mud_brick_stairs:shape=outer_left:half=top:facing=north nether_brick_stairs:shape=outer_left:half=top:facing=north oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=north polished_andesite_stairs:shape=outer_left:half=top:facing=north polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=north polished_blackstone_stairs:shape=outer_left:half=top:facing=north polished_deepslate_stairs:shape=outer_left:half=top:facing=north polished_diorite_stairs:shape=outer_left:half=top:facing=north polished_granite_stairs:shape=outer_left:half=top:facing=north prismarine_brick_stairs:shape=outer_left:half=top:facing=north prismarine_stairs:shape=outer_left:half=top:facing=north purpur_stairs:shape=outer_left:half=top:facing=north quartz_stairs:shape=outer_left:half=top:facing=north red_nether_brick_stairs:shape=outer_left:half=top:facing=north red_sandstone_stairs:shape=outer_left:half=top:facing=north sandstone_stairs:shape=outer_left:half=top:facing=north smooth_quartz_stairs:shape=outer_left:half=top:facing=north smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=north smooth_sandstone_stairs:shape=outer_left:half=top:facing=north stone_brick_stairs:shape=outer_left:half=top:facing=north stone_stairs:shape=outer_left:half=top:facing=north waxed_cut_copper_stairs:shape=outer_left:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=north weathered_cut_copper_stairs:shape=outer_left:half=top:facing=north createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=north create:cut_andesite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=north create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=north create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_asurine_stairs:shape=outer_left:half=top:facing=north create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=north create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=north create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=north create:cut_calcite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=north create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=north create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_crimsite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=north create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=north create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_deepslate_stairs:shape=outer_left:half=top:facing=north create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=north create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=north create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=north create:cut_diorite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=north create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=north create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_dripstone_stairs:shape=outer_left:half=top:facing=north create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=north create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=north create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=north create:cut_granite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=north create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=north create:small_granite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_limestone_stairs:shape=outer_left:half=top:facing=north create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=north create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=north create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=north create:cut_ochrum_stairs:shape=outer_left:half=top:facing=north create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=north create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=north create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=north create:cut_scorchia_stairs:shape=outer_left:half=top:facing=north create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=north create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=north create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=north create:cut_scoria_stairs:shape=outer_left:half=top:facing=north create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=north create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=north create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=north create:cut_tuff_stairs:shape=outer_left:half=top:facing=north create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=north create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=north create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=north create:cut_veridium_stairs:shape=outer_left:half=top:facing=north create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=north create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=north create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=north create:copper_shingle_stairs:shape=outer_left:half=top:facing=north create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:copper_tile_stairs:shape=outer_left:half=top:facing=north create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=north create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=north create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=north acacia_stairs:shape=outer_right:half=top:facing=west bamboo_stairs:shape=outer_right:half=top:facing=west bamboo_mosaic_stairs:shape=outer_right:half=top:facing=west birch_stairs:shape=outer_right:half=top:facing=west cherry_stairs:shape=outer_right:half=top:facing=west crimson_stairs:shape=outer_right:half=top:facing=west dark_oak_stairs:shape=outer_right:half=top:facing=west jungle_stairs:shape=outer_right:half=top:facing=west mangrove_stairs:shape=outer_right:half=top:facing=west oak_stairs:shape=outer_right:half=top:facing=west spruce_stairs:shape=outer_right:half=top:facing=west warped_stairs:shape=outer_right:half=top:facing=west andesite_stairs:shape=outer_right:half=top:facing=west blackstone_stairs:shape=outer_right:half=top:facing=west brick_stairs:shape=outer_right:half=top:facing=west cobbled_deepslate_stairs:shape=outer_right:half=top:facing=west cobblestone_stairs:shape=outer_right:half=top:facing=west cut_copper_stairs:shape=outer_right:half=top:facing=west dark_prismarine_stairs:shape=outer_right:half=top:facing=west deepslate_brick_stairs:shape=outer_right:half=top:facing=west deepslate_tile_stairs:shape=outer_right:half=top:facing=west diorite_stairs:shape=outer_right:half=top:facing=west end_stone_brick_stairs:shape=outer_right:half=top:facing=west exposed_cut_copper_stairs:shape=outer_right:half=top:facing=west granite_stairs:shape=outer_right:half=top:facing=west mossy_cobblestone_stairs:shape=outer_right:half=top:facing=west mossy_stone_brick_stairs:shape=outer_right:half=top:facing=west mud_brick_stairs:shape=outer_right:half=top:facing=west nether_brick_stairs:shape=outer_right:half=top:facing=west oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=west polished_andesite_stairs:shape=outer_right:half=top:facing=west polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=west polished_blackstone_stairs:shape=outer_right:half=top:facing=west polished_deepslate_stairs:shape=outer_right:half=top:facing=west polished_diorite_stairs:shape=outer_right:half=top:facing=west polished_granite_stairs:shape=outer_right:half=top:facing=west prismarine_brick_stairs:shape=outer_right:half=top:facing=west prismarine_stairs:shape=outer_right:half=top:facing=west purpur_stairs:shape=outer_right:half=top:facing=west quartz_stairs:shape=outer_right:half=top:facing=west red_nether_brick_stairs:shape=outer_right:half=top:facing=west red_sandstone_stairs:shape=outer_right:half=top:facing=west sandstone_stairs:shape=outer_right:half=top:facing=west smooth_quartz_stairs:shape=outer_right:half=top:facing=west smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=west smooth_sandstone_stairs:shape=outer_right:half=top:facing=west stone_brick_stairs:shape=outer_right:half=top:facing=west stone_stairs:shape=outer_right:half=top:facing=west waxed_cut_copper_stairs:shape=outer_right:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=west weathered_cut_copper_stairs:shape=outer_right:half=top:facing=west createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=west create:cut_andesite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=west create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=west create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_asurine_stairs:shape=outer_right:half=top:facing=west create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=west create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=west create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=west create:cut_calcite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=west create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=west create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_crimsite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=west create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=west create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_deepslate_stairs:shape=outer_right:half=top:facing=west create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=west create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=west create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=west create:cut_diorite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=west create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=west create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_dripstone_stairs:shape=outer_right:half=top:facing=west create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=west create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=west create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=west create:cut_granite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=west create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=west create:small_granite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_limestone_stairs:shape=outer_right:half=top:facing=west create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=west create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=west create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=west create:cut_ochrum_stairs:shape=outer_right:half=top:facing=west create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=west create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=west create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=west create:cut_scorchia_stairs:shape=outer_right:half=top:facing=west create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=west create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=west create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=west create:cut_scoria_stairs:shape=outer_right:half=top:facing=west create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=west create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=west create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=west create:cut_tuff_stairs:shape=outer_right:half=top:facing=west create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=west create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=west create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=west create:cut_veridium_stairs:shape=outer_right:half=top:facing=west create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=west create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=west create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=west create:copper_shingle_stairs:shape=outer_right:half=top:facing=west create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:copper_tile_stairs:shape=outer_right:half=top:facing=west create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=west create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=west create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=west +block.436=acacia_stairs:shape=outer_left:half=top:facing=north bamboo_stairs:shape=outer_left:half=top:facing=north bamboo_mosaic_stairs:shape=outer_left:half=top:facing=north birch_stairs:shape=outer_left:half=top:facing=north cherry_stairs:shape=outer_left:half=top:facing=north crimson_stairs:shape=outer_left:half=top:facing=north dark_oak_stairs:shape=outer_left:half=top:facing=north jungle_stairs:shape=outer_left:half=top:facing=north mangrove_stairs:shape=outer_left:half=top:facing=north oak_stairs:shape=outer_left:half=top:facing=north spruce_stairs:shape=outer_left:half=top:facing=north warped_stairs:shape=outer_left:half=top:facing=north andesite_stairs:shape=outer_left:half=top:facing=north blackstone_stairs:shape=outer_left:half=top:facing=north brick_stairs:shape=outer_left:half=top:facing=north cobbled_deepslate_stairs:shape=outer_left:half=top:facing=north cobblestone_stairs:shape=outer_left:half=top:facing=north cut_copper_stairs:shape=outer_left:half=top:facing=north dark_prismarine_stairs:shape=outer_left:half=top:facing=north deepslate_brick_stairs:shape=outer_left:half=top:facing=north deepslate_tile_stairs:shape=outer_left:half=top:facing=north diorite_stairs:shape=outer_left:half=top:facing=north end_stone_brick_stairs:shape=outer_left:half=top:facing=north exposed_cut_copper_stairs:shape=outer_left:half=top:facing=north granite_stairs:shape=outer_left:half=top:facing=north mossy_cobblestone_stairs:shape=outer_left:half=top:facing=north mossy_stone_brick_stairs:shape=outer_left:half=top:facing=north mud_brick_stairs:shape=outer_left:half=top:facing=north nether_brick_stairs:shape=outer_left:half=top:facing=north oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=north polished_andesite_stairs:shape=outer_left:half=top:facing=north polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=north polished_blackstone_stairs:shape=outer_left:half=top:facing=north polished_deepslate_stairs:shape=outer_left:half=top:facing=north polished_diorite_stairs:shape=outer_left:half=top:facing=north polished_granite_stairs:shape=outer_left:half=top:facing=north prismarine_brick_stairs:shape=outer_left:half=top:facing=north prismarine_stairs:shape=outer_left:half=top:facing=north purpur_stairs:shape=outer_left:half=top:facing=north quartz_stairs:shape=outer_left:half=top:facing=north red_nether_brick_stairs:shape=outer_left:half=top:facing=north red_sandstone_stairs:shape=outer_left:half=top:facing=north sandstone_stairs:shape=outer_left:half=top:facing=north smooth_quartz_stairs:shape=outer_left:half=top:facing=north smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=north smooth_sandstone_stairs:shape=outer_left:half=top:facing=north stone_brick_stairs:shape=outer_left:half=top:facing=north stone_stairs:shape=outer_left:half=top:facing=north waxed_cut_copper_stairs:shape=outer_left:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=north weathered_cut_copper_stairs:shape=outer_left:half=top:facing=north createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=north createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=north create:cut_andesite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=north create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=north create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_asurine_stairs:shape=outer_left:half=top:facing=north create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=north create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=north create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=north create:cut_calcite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=north create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=north create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_crimsite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=north create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=north create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_deepslate_stairs:shape=outer_left:half=top:facing=north create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=north create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=north create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=north create:cut_diorite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=north create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=north create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_dripstone_stairs:shape=outer_left:half=top:facing=north create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=north create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=north create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=north create:cut_granite_stairs:shape=outer_left:half=top:facing=north create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=north create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=north create:small_granite_brick_stairs:shape=outer_left:half=top:facing=north create:cut_limestone_stairs:shape=outer_left:half=top:facing=north create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=north create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=north create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=north create:cut_ochrum_stairs:shape=outer_left:half=top:facing=north create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=north create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=north create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=north create:cut_scorchia_stairs:shape=outer_left:half=top:facing=north create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=north create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=north create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=north create:cut_scoria_stairs:shape=outer_left:half=top:facing=north create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=north create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=north create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=north create:cut_tuff_stairs:shape=outer_left:half=top:facing=north create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=north create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=north create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=north create:cut_veridium_stairs:shape=outer_left:half=top:facing=north create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=north create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=north create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=north create:copper_shingle_stairs:shape=outer_left:half=top:facing=north create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=north create:copper_tile_stairs:shape=outer_left:half=top:facing=north create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=north create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=north create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=north acacia_stairs:shape=outer_right:half=top:facing=west bamboo_stairs:shape=outer_right:half=top:facing=west bamboo_mosaic_stairs:shape=outer_right:half=top:facing=west birch_stairs:shape=outer_right:half=top:facing=west cherry_stairs:shape=outer_right:half=top:facing=west crimson_stairs:shape=outer_right:half=top:facing=west dark_oak_stairs:shape=outer_right:half=top:facing=west jungle_stairs:shape=outer_right:half=top:facing=west mangrove_stairs:shape=outer_right:half=top:facing=west oak_stairs:shape=outer_right:half=top:facing=west spruce_stairs:shape=outer_right:half=top:facing=west warped_stairs:shape=outer_right:half=top:facing=west andesite_stairs:shape=outer_right:half=top:facing=west blackstone_stairs:shape=outer_right:half=top:facing=west brick_stairs:shape=outer_right:half=top:facing=west cobbled_deepslate_stairs:shape=outer_right:half=top:facing=west cobblestone_stairs:shape=outer_right:half=top:facing=west cut_copper_stairs:shape=outer_right:half=top:facing=west dark_prismarine_stairs:shape=outer_right:half=top:facing=west deepslate_brick_stairs:shape=outer_right:half=top:facing=west deepslate_tile_stairs:shape=outer_right:half=top:facing=west diorite_stairs:shape=outer_right:half=top:facing=west end_stone_brick_stairs:shape=outer_right:half=top:facing=west exposed_cut_copper_stairs:shape=outer_right:half=top:facing=west granite_stairs:shape=outer_right:half=top:facing=west mossy_cobblestone_stairs:shape=outer_right:half=top:facing=west mossy_stone_brick_stairs:shape=outer_right:half=top:facing=west mud_brick_stairs:shape=outer_right:half=top:facing=west nether_brick_stairs:shape=outer_right:half=top:facing=west oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=west polished_andesite_stairs:shape=outer_right:half=top:facing=west polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=west polished_blackstone_stairs:shape=outer_right:half=top:facing=west polished_deepslate_stairs:shape=outer_right:half=top:facing=west polished_diorite_stairs:shape=outer_right:half=top:facing=west polished_granite_stairs:shape=outer_right:half=top:facing=west prismarine_brick_stairs:shape=outer_right:half=top:facing=west prismarine_stairs:shape=outer_right:half=top:facing=west purpur_stairs:shape=outer_right:half=top:facing=west quartz_stairs:shape=outer_right:half=top:facing=west red_nether_brick_stairs:shape=outer_right:half=top:facing=west red_sandstone_stairs:shape=outer_right:half=top:facing=west sandstone_stairs:shape=outer_right:half=top:facing=west smooth_quartz_stairs:shape=outer_right:half=top:facing=west smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=west smooth_sandstone_stairs:shape=outer_right:half=top:facing=west stone_brick_stairs:shape=outer_right:half=top:facing=west stone_stairs:shape=outer_right:half=top:facing=west waxed_cut_copper_stairs:shape=outer_right:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=west weathered_cut_copper_stairs:shape=outer_right:half=top:facing=west createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=west createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=west create:cut_andesite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=west create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=west create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_asurine_stairs:shape=outer_right:half=top:facing=west create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=west create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=west create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=west create:cut_calcite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=west create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=west create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_crimsite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=west create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=west create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_deepslate_stairs:shape=outer_right:half=top:facing=west create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=west create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=west create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=west create:cut_diorite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=west create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=west create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_dripstone_stairs:shape=outer_right:half=top:facing=west create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=west create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=west create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=west create:cut_granite_stairs:shape=outer_right:half=top:facing=west create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=west create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=west create:small_granite_brick_stairs:shape=outer_right:half=top:facing=west create:cut_limestone_stairs:shape=outer_right:half=top:facing=west create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=west create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=west create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=west create:cut_ochrum_stairs:shape=outer_right:half=top:facing=west create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=west create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=west create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=west create:cut_scorchia_stairs:shape=outer_right:half=top:facing=west create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=west create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=west create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=west create:cut_scoria_stairs:shape=outer_right:half=top:facing=west create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=west create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=west create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=west create:cut_tuff_stairs:shape=outer_right:half=top:facing=west create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=west create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=west create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=west create:cut_veridium_stairs:shape=outer_right:half=top:facing=west create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=west create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=west create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=west create:copper_shingle_stairs:shape=outer_right:half=top:facing=west create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=west create:copper_tile_stairs:shape=outer_right:half=top:facing=west create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=west create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=west create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=west \ + humility-afm:outer_stairs_acacia:half=top:facing=south humility-afm:outer_stairs_bamboo:half=top:facing=south humility-afm:outer_stairs_birch:half=top:facing=south humility-afm:outer_stairs_cherry:half=top:facing=south humility-afm:outer_stairs_crimson:half=top:facing=south humility-afm:outer_stairs_dark_oak:half=top:facing=south humility-afm:outer_stairs_jungle:half=top:facing=south humility-afm:outer_stairs_mangrove:half=top:facing=south humility-afm:outer_stairs_oak:half=top:facing=south humility-afm:outer_stairs_spruce:half=top:facing=south humility-afm:outer_stairs_warped:half=top:facing=south humility-afm:outer_stairs_anchor_tree:half=top:facing=south humility-afm:outer_stairs_mushroom:half=top:facing=south humility-afm:outer_stairs_mushroom_fir:half=top:facing=south humility-afm:outer_stairs_nether_sakura:half=top:facing=south humility-afm:outer_stairs_stalagnate:half=top:facing=south humility-afm:outer_stairs_wart:half=top:facing=south humility-afm:outer_stairs_willow:half=top:facing=south humility-afm:outer_stairs_mud_bricks:half=top:facing=south humility-afm:outer_stairs_quartz:half=top:facing=south humility-afm:outer_stairs_red_sandstone:half=top:facing=south humility-afm:outer_stairs_sandstone:half=top:facing=south humility-afm:outer_stairs_andesite:half=top:facing=south humility-afm:outer_stairs_blackstone:half=top:facing=south humility-afm:outer_stairs_dark_prismarine:half=top:facing=south humility-afm:outer_stairs_diorite:half=top:facing=south humility-afm:outer_stairs_granite:half=top:facing=south humility-afm:outer_stairs_mossy_stone_brick:half=top:facing=south humility-afm:outer_stairs_polished_andesite:half=top:facing=south humility-afm:outer_stairs_polished_blackstone_brick:half=top:facing=south humility-afm:outer_stairs_polished_diorite:half=top:facing=south humility-afm:outer_stairs_polished_granite:half=top:facing=south humility-afm:outer_stairs_prismarine:half=top:facing=south humility-afm:outer_stairs_prismarine_bricks:half=top:facing=south humility-afm:outer_stairs_purpur:half=top:facing=south humility-afm:outer_stairs_stone:half=top:facing=south humility-afm:outer_stairs_stone_brick:half=top:facing=south humility-afm:outer_stairs_brick:half=top:facing=south humility-afm:outer_stairs_cobblestone:half=top:facing=south humility-afm:outer_stairs_mossy_cobblestone:half=top:facing=south humility-afm:outer_stairs_nether_brick:half=top:facing=south humility-afm:outer_stairs_polished_blackstone:half=top:facing=south humility-afm:outer_stairs_red_nether_brick:half=top:facing=south humility-afm:outer_stairs_smooth_quartz:half=top:facing=south humility-afm:outer_stairs_smooth_red_sandstone:half=top:facing=south humility-afm:outer_stairs_smooth_sandstone:half=top:facing=south humility-afm:outer_stairs_end_stone_brick:half=top:facing=south humility-afm:outer_stairs_cut_copper:half=top:facing=south humility-afm:outer_stairs_exposed_cut_copper:half=top:facing=south humility-afm:outer_stairs_oxidized_cut_copper:half=top:facing=south humility-afm:outer_stairs_weathered_cut_copper:half=top:facing=south humility-afm:outer_stairs_cobbled_deepslate:half=top:facing=south humility-afm:outer_stairs_deepslate_brick:half=top:facing=south humility-afm:outer_stairs_deepslate_tile:half=top:facing=south humility-afm:outer_stairs_polished_deepslate:half=top:facing=south -block.437=acacia_stairs:shape=outer_left:half=top:facing=east bamboo_stairs:shape=outer_left:half=top:facing=east bamboo_mosaic_stairs:shape=outer_left:half=top:facing=east birch_stairs:shape=outer_left:half=top:facing=east cherry_stairs:shape=outer_left:half=top:facing=east crimson_stairs:shape=outer_left:half=top:facing=east dark_oak_stairs:shape=outer_left:half=top:facing=east jungle_stairs:shape=outer_left:half=top:facing=east mangrove_stairs:shape=outer_left:half=top:facing=east oak_stairs:shape=outer_left:half=top:facing=east spruce_stairs:shape=outer_left:half=top:facing=east warped_stairs:shape=outer_left:half=top:facing=east andesite_stairs:shape=outer_left:half=top:facing=east blackstone_stairs:shape=outer_left:half=top:facing=east brick_stairs:shape=outer_left:half=top:facing=east cobbled_deepslate_stairs:shape=outer_left:half=top:facing=east cobblestone_stairs:shape=outer_left:half=top:facing=east cut_copper_stairs:shape=outer_left:half=top:facing=east dark_prismarine_stairs:shape=outer_left:half=top:facing=east deepslate_brick_stairs:shape=outer_left:half=top:facing=east deepslate_tile_stairs:shape=outer_left:half=top:facing=east diorite_stairs:shape=outer_left:half=top:facing=east end_stone_brick_stairs:shape=outer_left:half=top:facing=east exposed_cut_copper_stairs:shape=outer_left:half=top:facing=east granite_stairs:shape=outer_left:half=top:facing=east mossy_cobblestone_stairs:shape=outer_left:half=top:facing=east mossy_stone_brick_stairs:shape=outer_left:half=top:facing=east mud_brick_stairs:shape=outer_left:half=top:facing=east nether_brick_stairs:shape=outer_left:half=top:facing=east oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=east polished_andesite_stairs:shape=outer_left:half=top:facing=east polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=east polished_blackstone_stairs:shape=outer_left:half=top:facing=east polished_deepslate_stairs:shape=outer_left:half=top:facing=east polished_diorite_stairs:shape=outer_left:half=top:facing=east polished_granite_stairs:shape=outer_left:half=top:facing=east prismarine_brick_stairs:shape=outer_left:half=top:facing=east prismarine_stairs:shape=outer_left:half=top:facing=east purpur_stairs:shape=outer_left:half=top:facing=east quartz_stairs:shape=outer_left:half=top:facing=east red_nether_brick_stairs:shape=outer_left:half=top:facing=east red_sandstone_stairs:shape=outer_left:half=top:facing=east sandstone_stairs:shape=outer_left:half=top:facing=east smooth_quartz_stairs:shape=outer_left:half=top:facing=east smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=east smooth_sandstone_stairs:shape=outer_left:half=top:facing=east stone_brick_stairs:shape=outer_left:half=top:facing=east stone_stairs:shape=outer_left:half=top:facing=east waxed_cut_copper_stairs:shape=outer_left:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=east weathered_cut_copper_stairs:shape=outer_left:half=top:facing=east createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=east create:cut_andesite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=east create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=east create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_asurine_stairs:shape=outer_left:half=top:facing=east create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=east create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=east create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=east create:cut_calcite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=east create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=east create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_crimsite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=east create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=east create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_deepslate_stairs:shape=outer_left:half=top:facing=east create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=east create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=east create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=east create:cut_diorite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=east create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=east create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_dripstone_stairs:shape=outer_left:half=top:facing=east create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=east create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=east create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=east create:cut_granite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=east create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=east create:small_granite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_limestone_stairs:shape=outer_left:half=top:facing=east create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=east create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=east create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=east create:cut_ochrum_stairs:shape=outer_left:half=top:facing=east create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=east create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=east create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=east create:cut_scorchia_stairs:shape=outer_left:half=top:facing=east create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=east create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=east create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=east create:cut_scoria_stairs:shape=outer_left:half=top:facing=east create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=east create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=east create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=east create:cut_tuff_stairs:shape=outer_left:half=top:facing=east create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=east create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=east create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=east create:cut_veridium_stairs:shape=outer_left:half=top:facing=east create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=east create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=east create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=east create:copper_shingle_stairs:shape=outer_left:half=top:facing=east create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:copper_tile_stairs:shape=outer_left:half=top:facing=east create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=east create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=east create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=east acacia_stairs:shape=outer_right:half=top:facing=north bamboo_stairs:shape=outer_right:half=top:facing=north bamboo_mosaic_stairs:shape=outer_right:half=top:facing=north birch_stairs:shape=outer_right:half=top:facing=north cherry_stairs:shape=outer_right:half=top:facing=north crimson_stairs:shape=outer_right:half=top:facing=north dark_oak_stairs:shape=outer_right:half=top:facing=north jungle_stairs:shape=outer_right:half=top:facing=north mangrove_stairs:shape=outer_right:half=top:facing=north oak_stairs:shape=outer_right:half=top:facing=north spruce_stairs:shape=outer_right:half=top:facing=north warped_stairs:shape=outer_right:half=top:facing=north andesite_stairs:shape=outer_right:half=top:facing=north blackstone_stairs:shape=outer_right:half=top:facing=north brick_stairs:shape=outer_right:half=top:facing=north cobbled_deepslate_stairs:shape=outer_right:half=top:facing=north cobblestone_stairs:shape=outer_right:half=top:facing=north cut_copper_stairs:shape=outer_right:half=top:facing=north dark_prismarine_stairs:shape=outer_right:half=top:facing=north deepslate_brick_stairs:shape=outer_right:half=top:facing=north deepslate_tile_stairs:shape=outer_right:half=top:facing=north diorite_stairs:shape=outer_right:half=top:facing=north end_stone_brick_stairs:shape=outer_right:half=top:facing=north exposed_cut_copper_stairs:shape=outer_right:half=top:facing=north granite_stairs:shape=outer_right:half=top:facing=north mossy_cobblestone_stairs:shape=outer_right:half=top:facing=north mossy_stone_brick_stairs:shape=outer_right:half=top:facing=north mud_brick_stairs:shape=outer_right:half=top:facing=north nether_brick_stairs:shape=outer_right:half=top:facing=north oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=north polished_andesite_stairs:shape=outer_right:half=top:facing=north polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=north polished_blackstone_stairs:shape=outer_right:half=top:facing=north polished_deepslate_stairs:shape=outer_right:half=top:facing=north polished_diorite_stairs:shape=outer_right:half=top:facing=north polished_granite_stairs:shape=outer_right:half=top:facing=north prismarine_brick_stairs:shape=outer_right:half=top:facing=north prismarine_stairs:shape=outer_right:half=top:facing=north purpur_stairs:shape=outer_right:half=top:facing=north quartz_stairs:shape=outer_right:half=top:facing=north red_nether_brick_stairs:shape=outer_right:half=top:facing=north red_sandstone_stairs:shape=outer_right:half=top:facing=north sandstone_stairs:shape=outer_right:half=top:facing=north smooth_quartz_stairs:shape=outer_right:half=top:facing=north smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=north smooth_sandstone_stairs:shape=outer_right:half=top:facing=north stone_brick_stairs:shape=outer_right:half=top:facing=north stone_stairs:shape=outer_right:half=top:facing=north waxed_cut_copper_stairs:shape=outer_right:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=north weathered_cut_copper_stairs:shape=outer_right:half=top:facing=north createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=north create:cut_andesite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=north create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=north create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_asurine_stairs:shape=outer_right:half=top:facing=north create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=north create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=north create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=north create:cut_calcite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=north create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=north create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_crimsite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=north create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=north create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_deepslate_stairs:shape=outer_right:half=top:facing=north create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=north create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=north create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=north create:cut_diorite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=north create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=north create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_dripstone_stairs:shape=outer_right:half=top:facing=north create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=north create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=north create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=north create:cut_granite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=north create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=north create:small_granite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_limestone_stairs:shape=outer_right:half=top:facing=north create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=north create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=north create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=north create:cut_ochrum_stairs:shape=outer_right:half=top:facing=north create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=north create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=north create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=north create:cut_scorchia_stairs:shape=outer_right:half=top:facing=north create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=north create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=north create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=north create:cut_scoria_stairs:shape=outer_right:half=top:facing=north create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=north create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=north create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=north create:cut_tuff_stairs:shape=outer_right:half=top:facing=north create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=north create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=north create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=north create:cut_veridium_stairs:shape=outer_right:half=top:facing=north create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=north create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=north create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=north create:copper_shingle_stairs:shape=outer_right:half=top:facing=north create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:copper_tile_stairs:shape=outer_right:half=top:facing=north create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=north create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=north create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=north +block.437=acacia_stairs:shape=outer_left:half=top:facing=east bamboo_stairs:shape=outer_left:half=top:facing=east bamboo_mosaic_stairs:shape=outer_left:half=top:facing=east birch_stairs:shape=outer_left:half=top:facing=east cherry_stairs:shape=outer_left:half=top:facing=east crimson_stairs:shape=outer_left:half=top:facing=east dark_oak_stairs:shape=outer_left:half=top:facing=east jungle_stairs:shape=outer_left:half=top:facing=east mangrove_stairs:shape=outer_left:half=top:facing=east oak_stairs:shape=outer_left:half=top:facing=east spruce_stairs:shape=outer_left:half=top:facing=east warped_stairs:shape=outer_left:half=top:facing=east andesite_stairs:shape=outer_left:half=top:facing=east blackstone_stairs:shape=outer_left:half=top:facing=east brick_stairs:shape=outer_left:half=top:facing=east cobbled_deepslate_stairs:shape=outer_left:half=top:facing=east cobblestone_stairs:shape=outer_left:half=top:facing=east cut_copper_stairs:shape=outer_left:half=top:facing=east dark_prismarine_stairs:shape=outer_left:half=top:facing=east deepslate_brick_stairs:shape=outer_left:half=top:facing=east deepslate_tile_stairs:shape=outer_left:half=top:facing=east diorite_stairs:shape=outer_left:half=top:facing=east end_stone_brick_stairs:shape=outer_left:half=top:facing=east exposed_cut_copper_stairs:shape=outer_left:half=top:facing=east granite_stairs:shape=outer_left:half=top:facing=east mossy_cobblestone_stairs:shape=outer_left:half=top:facing=east mossy_stone_brick_stairs:shape=outer_left:half=top:facing=east mud_brick_stairs:shape=outer_left:half=top:facing=east nether_brick_stairs:shape=outer_left:half=top:facing=east oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=east polished_andesite_stairs:shape=outer_left:half=top:facing=east polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=east polished_blackstone_stairs:shape=outer_left:half=top:facing=east polished_deepslate_stairs:shape=outer_left:half=top:facing=east polished_diorite_stairs:shape=outer_left:half=top:facing=east polished_granite_stairs:shape=outer_left:half=top:facing=east prismarine_brick_stairs:shape=outer_left:half=top:facing=east prismarine_stairs:shape=outer_left:half=top:facing=east purpur_stairs:shape=outer_left:half=top:facing=east quartz_stairs:shape=outer_left:half=top:facing=east red_nether_brick_stairs:shape=outer_left:half=top:facing=east red_sandstone_stairs:shape=outer_left:half=top:facing=east sandstone_stairs:shape=outer_left:half=top:facing=east smooth_quartz_stairs:shape=outer_left:half=top:facing=east smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=east smooth_sandstone_stairs:shape=outer_left:half=top:facing=east stone_brick_stairs:shape=outer_left:half=top:facing=east stone_stairs:shape=outer_left:half=top:facing=east waxed_cut_copper_stairs:shape=outer_left:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=east weathered_cut_copper_stairs:shape=outer_left:half=top:facing=east createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=east createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=east create:cut_andesite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=east create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=east create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_asurine_stairs:shape=outer_left:half=top:facing=east create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=east create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=east create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=east create:cut_calcite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=east create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=east create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_crimsite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=east create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=east create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_deepslate_stairs:shape=outer_left:half=top:facing=east create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=east create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=east create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=east create:cut_diorite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=east create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=east create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_dripstone_stairs:shape=outer_left:half=top:facing=east create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=east create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=east create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=east create:cut_granite_stairs:shape=outer_left:half=top:facing=east create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=east create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=east create:small_granite_brick_stairs:shape=outer_left:half=top:facing=east create:cut_limestone_stairs:shape=outer_left:half=top:facing=east create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=east create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=east create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=east create:cut_ochrum_stairs:shape=outer_left:half=top:facing=east create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=east create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=east create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=east create:cut_scorchia_stairs:shape=outer_left:half=top:facing=east create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=east create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=east create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=east create:cut_scoria_stairs:shape=outer_left:half=top:facing=east create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=east create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=east create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=east create:cut_tuff_stairs:shape=outer_left:half=top:facing=east create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=east create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=east create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=east create:cut_veridium_stairs:shape=outer_left:half=top:facing=east create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=east create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=east create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=east create:copper_shingle_stairs:shape=outer_left:half=top:facing=east create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=east create:copper_tile_stairs:shape=outer_left:half=top:facing=east create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=east create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=east create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=east acacia_stairs:shape=outer_right:half=top:facing=north bamboo_stairs:shape=outer_right:half=top:facing=north bamboo_mosaic_stairs:shape=outer_right:half=top:facing=north birch_stairs:shape=outer_right:half=top:facing=north cherry_stairs:shape=outer_right:half=top:facing=north crimson_stairs:shape=outer_right:half=top:facing=north dark_oak_stairs:shape=outer_right:half=top:facing=north jungle_stairs:shape=outer_right:half=top:facing=north mangrove_stairs:shape=outer_right:half=top:facing=north oak_stairs:shape=outer_right:half=top:facing=north spruce_stairs:shape=outer_right:half=top:facing=north warped_stairs:shape=outer_right:half=top:facing=north andesite_stairs:shape=outer_right:half=top:facing=north blackstone_stairs:shape=outer_right:half=top:facing=north brick_stairs:shape=outer_right:half=top:facing=north cobbled_deepslate_stairs:shape=outer_right:half=top:facing=north cobblestone_stairs:shape=outer_right:half=top:facing=north cut_copper_stairs:shape=outer_right:half=top:facing=north dark_prismarine_stairs:shape=outer_right:half=top:facing=north deepslate_brick_stairs:shape=outer_right:half=top:facing=north deepslate_tile_stairs:shape=outer_right:half=top:facing=north diorite_stairs:shape=outer_right:half=top:facing=north end_stone_brick_stairs:shape=outer_right:half=top:facing=north exposed_cut_copper_stairs:shape=outer_right:half=top:facing=north granite_stairs:shape=outer_right:half=top:facing=north mossy_cobblestone_stairs:shape=outer_right:half=top:facing=north mossy_stone_brick_stairs:shape=outer_right:half=top:facing=north mud_brick_stairs:shape=outer_right:half=top:facing=north nether_brick_stairs:shape=outer_right:half=top:facing=north oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=north polished_andesite_stairs:shape=outer_right:half=top:facing=north polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=north polished_blackstone_stairs:shape=outer_right:half=top:facing=north polished_deepslate_stairs:shape=outer_right:half=top:facing=north polished_diorite_stairs:shape=outer_right:half=top:facing=north polished_granite_stairs:shape=outer_right:half=top:facing=north prismarine_brick_stairs:shape=outer_right:half=top:facing=north prismarine_stairs:shape=outer_right:half=top:facing=north purpur_stairs:shape=outer_right:half=top:facing=north quartz_stairs:shape=outer_right:half=top:facing=north red_nether_brick_stairs:shape=outer_right:half=top:facing=north red_sandstone_stairs:shape=outer_right:half=top:facing=north sandstone_stairs:shape=outer_right:half=top:facing=north smooth_quartz_stairs:shape=outer_right:half=top:facing=north smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=north smooth_sandstone_stairs:shape=outer_right:half=top:facing=north stone_brick_stairs:shape=outer_right:half=top:facing=north stone_stairs:shape=outer_right:half=top:facing=north waxed_cut_copper_stairs:shape=outer_right:half=top:facing=north waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=north waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=north waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=north weathered_cut_copper_stairs:shape=outer_right:half=top:facing=north createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=north createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=north create:cut_andesite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=north create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=north create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_asurine_stairs:shape=outer_right:half=top:facing=north create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=north create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=north create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=north create:cut_calcite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=north create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=north create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_crimsite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=north create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=north create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_deepslate_stairs:shape=outer_right:half=top:facing=north create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=north create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=north create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=north create:cut_diorite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=north create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=north create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_dripstone_stairs:shape=outer_right:half=top:facing=north create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=north create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=north create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=north create:cut_granite_stairs:shape=outer_right:half=top:facing=north create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=north create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=north create:small_granite_brick_stairs:shape=outer_right:half=top:facing=north create:cut_limestone_stairs:shape=outer_right:half=top:facing=north create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=north create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=north create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=north create:cut_ochrum_stairs:shape=outer_right:half=top:facing=north create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=north create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=north create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=north create:cut_scorchia_stairs:shape=outer_right:half=top:facing=north create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=north create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=north create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=north create:cut_scoria_stairs:shape=outer_right:half=top:facing=north create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=north create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=north create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=north create:cut_tuff_stairs:shape=outer_right:half=top:facing=north create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=north create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=north create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=north create:cut_veridium_stairs:shape=outer_right:half=top:facing=north create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=north create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=north create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=north create:copper_shingle_stairs:shape=outer_right:half=top:facing=north create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=north create:copper_tile_stairs:shape=outer_right:half=top:facing=north create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=north create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=north create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=north create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=north \ + humility-afm:outer_stairs_acacia:half=top:facing=west humility-afm:outer_stairs_bamboo:half=top:facing=west humility-afm:outer_stairs_birch:half=top:facing=west humility-afm:outer_stairs_cherry:half=top:facing=west humility-afm:outer_stairs_crimson:half=top:facing=west humility-afm:outer_stairs_dark_oak:half=top:facing=west humility-afm:outer_stairs_jungle:half=top:facing=west humility-afm:outer_stairs_mangrove:half=top:facing=west humility-afm:outer_stairs_oak:half=top:facing=west humility-afm:outer_stairs_spruce:half=top:facing=west humility-afm:outer_stairs_warped:half=top:facing=west humility-afm:outer_stairs_anchor_tree:half=top:facing=west humility-afm:outer_stairs_mushroom:half=top:facing=west humility-afm:outer_stairs_mushroom_fir:half=top:facing=west humility-afm:outer_stairs_nether_sakura:half=top:facing=west humility-afm:outer_stairs_stalagnate:half=top:facing=west humility-afm:outer_stairs_wart:half=top:facing=west humility-afm:outer_stairs_willow:half=top:facing=west humility-afm:outer_stairs_mud_bricks:half=top:facing=west humility-afm:outer_stairs_quartz:half=top:facing=west humility-afm:outer_stairs_red_sandstone:half=top:facing=west humility-afm:outer_stairs_sandstone:half=top:facing=west humility-afm:outer_stairs_andesite:half=top:facing=west humility-afm:outer_stairs_blackstone:half=top:facing=west humility-afm:outer_stairs_dark_prismarine:half=top:facing=west humility-afm:outer_stairs_diorite:half=top:facing=west humility-afm:outer_stairs_granite:half=top:facing=west humility-afm:outer_stairs_mossy_stone_brick:half=top:facing=west humility-afm:outer_stairs_polished_andesite:half=top:facing=west humility-afm:outer_stairs_polished_blackstone_brick:half=top:facing=west humility-afm:outer_stairs_polished_diorite:half=top:facing=west humility-afm:outer_stairs_polished_granite:half=top:facing=west humility-afm:outer_stairs_prismarine:half=top:facing=west humility-afm:outer_stairs_prismarine_bricks:half=top:facing=west humility-afm:outer_stairs_purpur:half=top:facing=west humility-afm:outer_stairs_stone:half=top:facing=west humility-afm:outer_stairs_stone_brick:half=top:facing=west humility-afm:outer_stairs_brick:half=top:facing=west humility-afm:outer_stairs_cobblestone:half=top:facing=west humility-afm:outer_stairs_mossy_cobblestone:half=top:facing=west humility-afm:outer_stairs_nether_brick:half=top:facing=west humility-afm:outer_stairs_polished_blackstone:half=top:facing=west humility-afm:outer_stairs_red_nether_brick:half=top:facing=west humility-afm:outer_stairs_smooth_quartz:half=top:facing=west humility-afm:outer_stairs_smooth_red_sandstone:half=top:facing=west humility-afm:outer_stairs_smooth_sandstone:half=top:facing=west humility-afm:outer_stairs_end_stone_brick:half=top:facing=west humility-afm:outer_stairs_cut_copper:half=top:facing=west humility-afm:outer_stairs_exposed_cut_copper:half=top:facing=west humility-afm:outer_stairs_oxidized_cut_copper:half=top:facing=west humility-afm:outer_stairs_weathered_cut_copper:half=top:facing=west humility-afm:outer_stairs_cobbled_deepslate:half=top:facing=west humility-afm:outer_stairs_deepslate_brick:half=top:facing=west humility-afm:outer_stairs_deepslate_tile:half=top:facing=west humility-afm:outer_stairs_polished_deepslate:half=top:facing=west -block.438=acacia_stairs:shape=outer_left:half=top:facing=south bamboo_stairs:shape=outer_left:half=top:facing=south bamboo_mosaic_stairs:shape=outer_left:half=top:facing=south birch_stairs:shape=outer_left:half=top:facing=south cherry_stairs:shape=outer_left:half=top:facing=south crimson_stairs:shape=outer_left:half=top:facing=south dark_oak_stairs:shape=outer_left:half=top:facing=south jungle_stairs:shape=outer_left:half=top:facing=south mangrove_stairs:shape=outer_left:half=top:facing=south oak_stairs:shape=outer_left:half=top:facing=south spruce_stairs:shape=outer_left:half=top:facing=south warped_stairs:shape=outer_left:half=top:facing=south andesite_stairs:shape=outer_left:half=top:facing=south blackstone_stairs:shape=outer_left:half=top:facing=south brick_stairs:shape=outer_left:half=top:facing=south cobbled_deepslate_stairs:shape=outer_left:half=top:facing=south cobblestone_stairs:shape=outer_left:half=top:facing=south cut_copper_stairs:shape=outer_left:half=top:facing=south dark_prismarine_stairs:shape=outer_left:half=top:facing=south deepslate_brick_stairs:shape=outer_left:half=top:facing=south deepslate_tile_stairs:shape=outer_left:half=top:facing=south diorite_stairs:shape=outer_left:half=top:facing=south end_stone_brick_stairs:shape=outer_left:half=top:facing=south exposed_cut_copper_stairs:shape=outer_left:half=top:facing=south granite_stairs:shape=outer_left:half=top:facing=south mossy_cobblestone_stairs:shape=outer_left:half=top:facing=south mossy_stone_brick_stairs:shape=outer_left:half=top:facing=south mud_brick_stairs:shape=outer_left:half=top:facing=south nether_brick_stairs:shape=outer_left:half=top:facing=south oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=south polished_andesite_stairs:shape=outer_left:half=top:facing=south polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=south polished_blackstone_stairs:shape=outer_left:half=top:facing=south polished_deepslate_stairs:shape=outer_left:half=top:facing=south polished_diorite_stairs:shape=outer_left:half=top:facing=south polished_granite_stairs:shape=outer_left:half=top:facing=south prismarine_brick_stairs:shape=outer_left:half=top:facing=south prismarine_stairs:shape=outer_left:half=top:facing=south purpur_stairs:shape=outer_left:half=top:facing=south quartz_stairs:shape=outer_left:half=top:facing=south red_nether_brick_stairs:shape=outer_left:half=top:facing=south red_sandstone_stairs:shape=outer_left:half=top:facing=south sandstone_stairs:shape=outer_left:half=top:facing=south smooth_quartz_stairs:shape=outer_left:half=top:facing=south smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=south smooth_sandstone_stairs:shape=outer_left:half=top:facing=south stone_brick_stairs:shape=outer_left:half=top:facing=south stone_stairs:shape=outer_left:half=top:facing=south waxed_cut_copper_stairs:shape=outer_left:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=south weathered_cut_copper_stairs:shape=outer_left:half=top:facing=south createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=south create:cut_andesite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=south create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=south create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_asurine_stairs:shape=outer_left:half=top:facing=south create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=south create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=south create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=south create:cut_calcite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=south create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=south create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_crimsite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=south create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=south create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_deepslate_stairs:shape=outer_left:half=top:facing=south create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=south create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=south create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=south create:cut_diorite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=south create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=south create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_dripstone_stairs:shape=outer_left:half=top:facing=south create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=south create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=south create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=south create:cut_granite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=south create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=south create:small_granite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_limestone_stairs:shape=outer_left:half=top:facing=south create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=south create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=south create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=south create:cut_ochrum_stairs:shape=outer_left:half=top:facing=south create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=south create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=south create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=south create:cut_scorchia_stairs:shape=outer_left:half=top:facing=south create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=south create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=south create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=south create:cut_scoria_stairs:shape=outer_left:half=top:facing=south create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=south create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=south create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=south create:cut_tuff_stairs:shape=outer_left:half=top:facing=south create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=south create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=south create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=south create:cut_veridium_stairs:shape=outer_left:half=top:facing=south create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=south create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=south create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=south create:copper_shingle_stairs:shape=outer_left:half=top:facing=south create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:copper_tile_stairs:shape=outer_left:half=top:facing=south create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=south create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=south create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=south acacia_stairs:shape=outer_right:half=top:facing=east bamboo_stairs:shape=outer_right:half=top:facing=east bamboo_mosaic_stairs:shape=outer_right:half=top:facing=east birch_stairs:shape=outer_right:half=top:facing=east cherry_stairs:shape=outer_right:half=top:facing=east crimson_stairs:shape=outer_right:half=top:facing=east dark_oak_stairs:shape=outer_right:half=top:facing=east jungle_stairs:shape=outer_right:half=top:facing=east mangrove_stairs:shape=outer_right:half=top:facing=east oak_stairs:shape=outer_right:half=top:facing=east spruce_stairs:shape=outer_right:half=top:facing=east warped_stairs:shape=outer_right:half=top:facing=east andesite_stairs:shape=outer_right:half=top:facing=east blackstone_stairs:shape=outer_right:half=top:facing=east brick_stairs:shape=outer_right:half=top:facing=east cobbled_deepslate_stairs:shape=outer_right:half=top:facing=east cobblestone_stairs:shape=outer_right:half=top:facing=east cut_copper_stairs:shape=outer_right:half=top:facing=east dark_prismarine_stairs:shape=outer_right:half=top:facing=east deepslate_brick_stairs:shape=outer_right:half=top:facing=east deepslate_tile_stairs:shape=outer_right:half=top:facing=east diorite_stairs:shape=outer_right:half=top:facing=east end_stone_brick_stairs:shape=outer_right:half=top:facing=east exposed_cut_copper_stairs:shape=outer_right:half=top:facing=east granite_stairs:shape=outer_right:half=top:facing=east mossy_cobblestone_stairs:shape=outer_right:half=top:facing=east mossy_stone_brick_stairs:shape=outer_right:half=top:facing=east mud_brick_stairs:shape=outer_right:half=top:facing=east nether_brick_stairs:shape=outer_right:half=top:facing=east oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=east polished_andesite_stairs:shape=outer_right:half=top:facing=east polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=east polished_blackstone_stairs:shape=outer_right:half=top:facing=east polished_deepslate_stairs:shape=outer_right:half=top:facing=east polished_diorite_stairs:shape=outer_right:half=top:facing=east polished_granite_stairs:shape=outer_right:half=top:facing=east prismarine_brick_stairs:shape=outer_right:half=top:facing=east prismarine_stairs:shape=outer_right:half=top:facing=east purpur_stairs:shape=outer_right:half=top:facing=east quartz_stairs:shape=outer_right:half=top:facing=east red_nether_brick_stairs:shape=outer_right:half=top:facing=east red_sandstone_stairs:shape=outer_right:half=top:facing=east sandstone_stairs:shape=outer_right:half=top:facing=east smooth_quartz_stairs:shape=outer_right:half=top:facing=east smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=east smooth_sandstone_stairs:shape=outer_right:half=top:facing=east stone_brick_stairs:shape=outer_right:half=top:facing=east stone_stairs:shape=outer_right:half=top:facing=east waxed_cut_copper_stairs:shape=outer_right:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=east weathered_cut_copper_stairs:shape=outer_right:half=top:facing=east createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=east create:cut_andesite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=east create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=east create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_asurine_stairs:shape=outer_right:half=top:facing=east create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=east create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=east create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=east create:cut_calcite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=east create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=east create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_crimsite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=east create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=east create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_deepslate_stairs:shape=outer_right:half=top:facing=east create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=east create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=east create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=east create:cut_diorite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=east create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=east create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_dripstone_stairs:shape=outer_right:half=top:facing=east create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=east create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=east create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=east create:cut_granite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=east create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=east create:small_granite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_limestone_stairs:shape=outer_right:half=top:facing=east create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=east create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=east create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=east create:cut_ochrum_stairs:shape=outer_right:half=top:facing=east create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=east create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=east create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=east create:cut_scorchia_stairs:shape=outer_right:half=top:facing=east create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=east create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=east create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=east create:cut_scoria_stairs:shape=outer_right:half=top:facing=east create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=east create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=east create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=east create:cut_tuff_stairs:shape=outer_right:half=top:facing=east create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=east create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=east create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=east create:cut_veridium_stairs:shape=outer_right:half=top:facing=east create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=east create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=east create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=east create:copper_shingle_stairs:shape=outer_right:half=top:facing=east create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:copper_tile_stairs:shape=outer_right:half=top:facing=east create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=east create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=east create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=east - -block.439=acacia_stairs:shape=outer_left:half=top:facing=west bamboo_stairs:shape=outer_left:half=top:facing=west bamboo_mosaic_stairs:shape=outer_left:half=top:facing=west birch_stairs:shape=outer_left:half=top:facing=west cherry_stairs:shape=outer_left:half=top:facing=west crimson_stairs:shape=outer_left:half=top:facing=west dark_oak_stairs:shape=outer_left:half=top:facing=west jungle_stairs:shape=outer_left:half=top:facing=west mangrove_stairs:shape=outer_left:half=top:facing=west oak_stairs:shape=outer_left:half=top:facing=west spruce_stairs:shape=outer_left:half=top:facing=west warped_stairs:shape=outer_left:half=top:facing=west andesite_stairs:shape=outer_left:half=top:facing=west blackstone_stairs:shape=outer_left:half=top:facing=west brick_stairs:shape=outer_left:half=top:facing=west cobbled_deepslate_stairs:shape=outer_left:half=top:facing=west cobblestone_stairs:shape=outer_left:half=top:facing=west cut_copper_stairs:shape=outer_left:half=top:facing=west dark_prismarine_stairs:shape=outer_left:half=top:facing=west deepslate_brick_stairs:shape=outer_left:half=top:facing=west deepslate_tile_stairs:shape=outer_left:half=top:facing=west diorite_stairs:shape=outer_left:half=top:facing=west end_stone_brick_stairs:shape=outer_left:half=top:facing=west exposed_cut_copper_stairs:shape=outer_left:half=top:facing=west granite_stairs:shape=outer_left:half=top:facing=west mossy_cobblestone_stairs:shape=outer_left:half=top:facing=west mossy_stone_brick_stairs:shape=outer_left:half=top:facing=west mud_brick_stairs:shape=outer_left:half=top:facing=west nether_brick_stairs:shape=outer_left:half=top:facing=west oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=west polished_andesite_stairs:shape=outer_left:half=top:facing=west polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=west polished_blackstone_stairs:shape=outer_left:half=top:facing=west polished_deepslate_stairs:shape=outer_left:half=top:facing=west polished_diorite_stairs:shape=outer_left:half=top:facing=west polished_granite_stairs:shape=outer_left:half=top:facing=west prismarine_brick_stairs:shape=outer_left:half=top:facing=west prismarine_stairs:shape=outer_left:half=top:facing=west purpur_stairs:shape=outer_left:half=top:facing=west quartz_stairs:shape=outer_left:half=top:facing=west red_nether_brick_stairs:shape=outer_left:half=top:facing=west red_sandstone_stairs:shape=outer_left:half=top:facing=west sandstone_stairs:shape=outer_left:half=top:facing=west smooth_quartz_stairs:shape=outer_left:half=top:facing=west smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=west smooth_sandstone_stairs:shape=outer_left:half=top:facing=west stone_brick_stairs:shape=outer_left:half=top:facing=west stone_stairs:shape=outer_left:half=top:facing=west waxed_cut_copper_stairs:shape=outer_left:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=west weathered_cut_copper_stairs:shape=outer_left:half=top:facing=west createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=west create:cut_andesite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=west create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=west create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_asurine_stairs:shape=outer_left:half=top:facing=west create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=west create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=west create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=west create:cut_calcite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=west create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=west create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_crimsite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=west create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=west create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_deepslate_stairs:shape=outer_left:half=top:facing=west create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=west create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=west create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=west create:cut_diorite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=west create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=west create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_dripstone_stairs:shape=outer_left:half=top:facing=west create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=west create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=west create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=west create:cut_granite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=west create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=west create:small_granite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_limestone_stairs:shape=outer_left:half=top:facing=west create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=west create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=west create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=west create:cut_ochrum_stairs:shape=outer_left:half=top:facing=west create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=west create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=west create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=west create:cut_scorchia_stairs:shape=outer_left:half=top:facing=west create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=west create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=west create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=west create:cut_scoria_stairs:shape=outer_left:half=top:facing=west create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=west create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=west create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=west create:cut_tuff_stairs:shape=outer_left:half=top:facing=west create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=west create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=west create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=west create:cut_veridium_stairs:shape=outer_left:half=top:facing=west create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=west create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=west create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=west create:copper_shingle_stairs:shape=outer_left:half=top:facing=west create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:copper_tile_stairs:shape=outer_left:half=top:facing=west create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=west create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=west create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=west acacia_stairs:shape=outer_right:half=top:facing=south bamboo_stairs:shape=outer_right:half=top:facing=south bamboo_mosaic_stairs:shape=outer_right:half=top:facing=south birch_stairs:shape=outer_right:half=top:facing=south cherry_stairs:shape=outer_right:half=top:facing=south crimson_stairs:shape=outer_right:half=top:facing=south dark_oak_stairs:shape=outer_right:half=top:facing=south jungle_stairs:shape=outer_right:half=top:facing=south mangrove_stairs:shape=outer_right:half=top:facing=south oak_stairs:shape=outer_right:half=top:facing=south spruce_stairs:shape=outer_right:half=top:facing=south warped_stairs:shape=outer_right:half=top:facing=south andesite_stairs:shape=outer_right:half=top:facing=south blackstone_stairs:shape=outer_right:half=top:facing=south brick_stairs:shape=outer_right:half=top:facing=south cobbled_deepslate_stairs:shape=outer_right:half=top:facing=south cobblestone_stairs:shape=outer_right:half=top:facing=south cut_copper_stairs:shape=outer_right:half=top:facing=south dark_prismarine_stairs:shape=outer_right:half=top:facing=south deepslate_brick_stairs:shape=outer_right:half=top:facing=south deepslate_tile_stairs:shape=outer_right:half=top:facing=south diorite_stairs:shape=outer_right:half=top:facing=south end_stone_brick_stairs:shape=outer_right:half=top:facing=south exposed_cut_copper_stairs:shape=outer_right:half=top:facing=south granite_stairs:shape=outer_right:half=top:facing=south mossy_cobblestone_stairs:shape=outer_right:half=top:facing=south mossy_stone_brick_stairs:shape=outer_right:half=top:facing=south mud_brick_stairs:shape=outer_right:half=top:facing=south nether_brick_stairs:shape=outer_right:half=top:facing=south oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=south polished_andesite_stairs:shape=outer_right:half=top:facing=south polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=south polished_blackstone_stairs:shape=outer_right:half=top:facing=south polished_deepslate_stairs:shape=outer_right:half=top:facing=south polished_diorite_stairs:shape=outer_right:half=top:facing=south polished_granite_stairs:shape=outer_right:half=top:facing=south prismarine_brick_stairs:shape=outer_right:half=top:facing=south prismarine_stairs:shape=outer_right:half=top:facing=south purpur_stairs:shape=outer_right:half=top:facing=south quartz_stairs:shape=outer_right:half=top:facing=south red_nether_brick_stairs:shape=outer_right:half=top:facing=south red_sandstone_stairs:shape=outer_right:half=top:facing=south sandstone_stairs:shape=outer_right:half=top:facing=south smooth_quartz_stairs:shape=outer_right:half=top:facing=south smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=south smooth_sandstone_stairs:shape=outer_right:half=top:facing=south stone_brick_stairs:shape=outer_right:half=top:facing=south stone_stairs:shape=outer_right:half=top:facing=south waxed_cut_copper_stairs:shape=outer_right:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=south weathered_cut_copper_stairs:shape=outer_right:half=top:facing=south createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=south create:cut_andesite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=south create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=south create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_asurine_stairs:shape=outer_right:half=top:facing=south create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=south create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=south create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=south create:cut_calcite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=south create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=south create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_crimsite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=south create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=south create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_deepslate_stairs:shape=outer_right:half=top:facing=south create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=south create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=south create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=south create:cut_diorite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=south create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=south create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_dripstone_stairs:shape=outer_right:half=top:facing=south create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=south create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=south create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=south create:cut_granite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=south create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=south create:small_granite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_limestone_stairs:shape=outer_right:half=top:facing=south create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=south create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=south create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=south create:cut_ochrum_stairs:shape=outer_right:half=top:facing=south create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=south create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=south create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=south create:cut_scorchia_stairs:shape=outer_right:half=top:facing=south create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=south create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=south create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=south create:cut_scoria_stairs:shape=outer_right:half=top:facing=south create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=south create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=south create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=south create:cut_tuff_stairs:shape=outer_right:half=top:facing=south create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=south create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=south create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=south create:cut_veridium_stairs:shape=outer_right:half=top:facing=south create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=south create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=south create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=south create:copper_shingle_stairs:shape=outer_right:half=top:facing=south create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:copper_tile_stairs:shape=outer_right:half=top:facing=south create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=south create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=south create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=south +block.438=acacia_stairs:shape=outer_left:half=top:facing=south bamboo_stairs:shape=outer_left:half=top:facing=south bamboo_mosaic_stairs:shape=outer_left:half=top:facing=south birch_stairs:shape=outer_left:half=top:facing=south cherry_stairs:shape=outer_left:half=top:facing=south crimson_stairs:shape=outer_left:half=top:facing=south dark_oak_stairs:shape=outer_left:half=top:facing=south jungle_stairs:shape=outer_left:half=top:facing=south mangrove_stairs:shape=outer_left:half=top:facing=south oak_stairs:shape=outer_left:half=top:facing=south spruce_stairs:shape=outer_left:half=top:facing=south warped_stairs:shape=outer_left:half=top:facing=south andesite_stairs:shape=outer_left:half=top:facing=south blackstone_stairs:shape=outer_left:half=top:facing=south brick_stairs:shape=outer_left:half=top:facing=south cobbled_deepslate_stairs:shape=outer_left:half=top:facing=south cobblestone_stairs:shape=outer_left:half=top:facing=south cut_copper_stairs:shape=outer_left:half=top:facing=south dark_prismarine_stairs:shape=outer_left:half=top:facing=south deepslate_brick_stairs:shape=outer_left:half=top:facing=south deepslate_tile_stairs:shape=outer_left:half=top:facing=south diorite_stairs:shape=outer_left:half=top:facing=south end_stone_brick_stairs:shape=outer_left:half=top:facing=south exposed_cut_copper_stairs:shape=outer_left:half=top:facing=south granite_stairs:shape=outer_left:half=top:facing=south mossy_cobblestone_stairs:shape=outer_left:half=top:facing=south mossy_stone_brick_stairs:shape=outer_left:half=top:facing=south mud_brick_stairs:shape=outer_left:half=top:facing=south nether_brick_stairs:shape=outer_left:half=top:facing=south oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=south polished_andesite_stairs:shape=outer_left:half=top:facing=south polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=south polished_blackstone_stairs:shape=outer_left:half=top:facing=south polished_deepslate_stairs:shape=outer_left:half=top:facing=south polished_diorite_stairs:shape=outer_left:half=top:facing=south polished_granite_stairs:shape=outer_left:half=top:facing=south prismarine_brick_stairs:shape=outer_left:half=top:facing=south prismarine_stairs:shape=outer_left:half=top:facing=south purpur_stairs:shape=outer_left:half=top:facing=south quartz_stairs:shape=outer_left:half=top:facing=south red_nether_brick_stairs:shape=outer_left:half=top:facing=south red_sandstone_stairs:shape=outer_left:half=top:facing=south sandstone_stairs:shape=outer_left:half=top:facing=south smooth_quartz_stairs:shape=outer_left:half=top:facing=south smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=south smooth_sandstone_stairs:shape=outer_left:half=top:facing=south stone_brick_stairs:shape=outer_left:half=top:facing=south stone_stairs:shape=outer_left:half=top:facing=south waxed_cut_copper_stairs:shape=outer_left:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=south weathered_cut_copper_stairs:shape=outer_left:half=top:facing=south createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=south createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=south create:cut_andesite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=south create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=south create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_asurine_stairs:shape=outer_left:half=top:facing=south create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=south create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=south create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=south create:cut_calcite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=south create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=south create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_crimsite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=south create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=south create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_deepslate_stairs:shape=outer_left:half=top:facing=south create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=south create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=south create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=south create:cut_diorite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=south create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=south create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_dripstone_stairs:shape=outer_left:half=top:facing=south create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=south create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=south create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=south create:cut_granite_stairs:shape=outer_left:half=top:facing=south create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=south create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=south create:small_granite_brick_stairs:shape=outer_left:half=top:facing=south create:cut_limestone_stairs:shape=outer_left:half=top:facing=south create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=south create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=south create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=south create:cut_ochrum_stairs:shape=outer_left:half=top:facing=south create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=south create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=south create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=south create:cut_scorchia_stairs:shape=outer_left:half=top:facing=south create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=south create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=south create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=south create:cut_scoria_stairs:shape=outer_left:half=top:facing=south create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=south create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=south create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=south create:cut_tuff_stairs:shape=outer_left:half=top:facing=south create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=south create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=south create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=south create:cut_veridium_stairs:shape=outer_left:half=top:facing=south create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=south create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=south create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=south create:copper_shingle_stairs:shape=outer_left:half=top:facing=south create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=south create:copper_tile_stairs:shape=outer_left:half=top:facing=south create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=south create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=south create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=south acacia_stairs:shape=outer_right:half=top:facing=east bamboo_stairs:shape=outer_right:half=top:facing=east bamboo_mosaic_stairs:shape=outer_right:half=top:facing=east birch_stairs:shape=outer_right:half=top:facing=east cherry_stairs:shape=outer_right:half=top:facing=east crimson_stairs:shape=outer_right:half=top:facing=east dark_oak_stairs:shape=outer_right:half=top:facing=east jungle_stairs:shape=outer_right:half=top:facing=east mangrove_stairs:shape=outer_right:half=top:facing=east oak_stairs:shape=outer_right:half=top:facing=east spruce_stairs:shape=outer_right:half=top:facing=east warped_stairs:shape=outer_right:half=top:facing=east andesite_stairs:shape=outer_right:half=top:facing=east blackstone_stairs:shape=outer_right:half=top:facing=east brick_stairs:shape=outer_right:half=top:facing=east cobbled_deepslate_stairs:shape=outer_right:half=top:facing=east cobblestone_stairs:shape=outer_right:half=top:facing=east cut_copper_stairs:shape=outer_right:half=top:facing=east dark_prismarine_stairs:shape=outer_right:half=top:facing=east deepslate_brick_stairs:shape=outer_right:half=top:facing=east deepslate_tile_stairs:shape=outer_right:half=top:facing=east diorite_stairs:shape=outer_right:half=top:facing=east end_stone_brick_stairs:shape=outer_right:half=top:facing=east exposed_cut_copper_stairs:shape=outer_right:half=top:facing=east granite_stairs:shape=outer_right:half=top:facing=east mossy_cobblestone_stairs:shape=outer_right:half=top:facing=east mossy_stone_brick_stairs:shape=outer_right:half=top:facing=east mud_brick_stairs:shape=outer_right:half=top:facing=east nether_brick_stairs:shape=outer_right:half=top:facing=east oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=east polished_andesite_stairs:shape=outer_right:half=top:facing=east polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=east polished_blackstone_stairs:shape=outer_right:half=top:facing=east polished_deepslate_stairs:shape=outer_right:half=top:facing=east polished_diorite_stairs:shape=outer_right:half=top:facing=east polished_granite_stairs:shape=outer_right:half=top:facing=east prismarine_brick_stairs:shape=outer_right:half=top:facing=east prismarine_stairs:shape=outer_right:half=top:facing=east purpur_stairs:shape=outer_right:half=top:facing=east quartz_stairs:shape=outer_right:half=top:facing=east red_nether_brick_stairs:shape=outer_right:half=top:facing=east red_sandstone_stairs:shape=outer_right:half=top:facing=east sandstone_stairs:shape=outer_right:half=top:facing=east smooth_quartz_stairs:shape=outer_right:half=top:facing=east smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=east smooth_sandstone_stairs:shape=outer_right:half=top:facing=east stone_brick_stairs:shape=outer_right:half=top:facing=east stone_stairs:shape=outer_right:half=top:facing=east waxed_cut_copper_stairs:shape=outer_right:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=east weathered_cut_copper_stairs:shape=outer_right:half=top:facing=east createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=east createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=east create:cut_andesite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=east create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=east create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_asurine_stairs:shape=outer_right:half=top:facing=east create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=east create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=east create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=east create:cut_calcite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=east create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=east create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_crimsite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=east create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=east create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_deepslate_stairs:shape=outer_right:half=top:facing=east create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=east create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=east create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=east create:cut_diorite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=east create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=east create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_dripstone_stairs:shape=outer_right:half=top:facing=east create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=east create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=east create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=east create:cut_granite_stairs:shape=outer_right:half=top:facing=east create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=east create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=east create:small_granite_brick_stairs:shape=outer_right:half=top:facing=east create:cut_limestone_stairs:shape=outer_right:half=top:facing=east create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=east create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=east create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=east create:cut_ochrum_stairs:shape=outer_right:half=top:facing=east create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=east create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=east create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=east create:cut_scorchia_stairs:shape=outer_right:half=top:facing=east create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=east create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=east create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=east create:cut_scoria_stairs:shape=outer_right:half=top:facing=east create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=east create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=east create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=east create:cut_tuff_stairs:shape=outer_right:half=top:facing=east create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=east create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=east create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=east create:cut_veridium_stairs:shape=outer_right:half=top:facing=east create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=east create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=east create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=east create:copper_shingle_stairs:shape=outer_right:half=top:facing=east create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=east create:copper_tile_stairs:shape=outer_right:half=top:facing=east create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=east create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=east create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=east \ + humility-afm:outer_stairs_acacia:half=top:facing=north humility-afm:outer_stairs_bamboo:half=top:facing=north humility-afm:outer_stairs_birch:half=top:facing=north humility-afm:outer_stairs_cherry:half=top:facing=north humility-afm:outer_stairs_crimson:half=top:facing=north humility-afm:outer_stairs_dark_oak:half=top:facing=north humility-afm:outer_stairs_jungle:half=top:facing=north humility-afm:outer_stairs_mangrove:half=top:facing=north humility-afm:outer_stairs_oak:half=top:facing=north humility-afm:outer_stairs_spruce:half=top:facing=north humility-afm:outer_stairs_warped:half=top:facing=north humility-afm:outer_stairs_anchor_tree:half=top:facing=north humility-afm:outer_stairs_mushroom:half=top:facing=north humility-afm:outer_stairs_mushroom_fir:half=top:facing=north humility-afm:outer_stairs_nether_sakura:half=top:facing=north humility-afm:outer_stairs_stalagnate:half=top:facing=north humility-afm:outer_stairs_wart:half=top:facing=north humility-afm:outer_stairs_willow:half=top:facing=north humility-afm:outer_stairs_mud_bricks:half=top:facing=north humility-afm:outer_stairs_quartz:half=top:facing=north humility-afm:outer_stairs_red_sandstone:half=top:facing=north humility-afm:outer_stairs_sandstone:half=top:facing=north humility-afm:outer_stairs_andesite:half=top:facing=north humility-afm:outer_stairs_blackstone:half=top:facing=north humility-afm:outer_stairs_dark_prismarine:half=top:facing=north humility-afm:outer_stairs_diorite:half=top:facing=north humility-afm:outer_stairs_granite:half=top:facing=north humility-afm:outer_stairs_mossy_stone_brick:half=top:facing=north humility-afm:outer_stairs_polished_andesite:half=top:facing=north humility-afm:outer_stairs_polished_blackstone_brick:half=top:facing=north humility-afm:outer_stairs_polished_diorite:half=top:facing=north humility-afm:outer_stairs_polished_granite:half=top:facing=north humility-afm:outer_stairs_prismarine:half=top:facing=north humility-afm:outer_stairs_prismarine_bricks:half=top:facing=north humility-afm:outer_stairs_purpur:half=top:facing=north humility-afm:outer_stairs_stone:half=top:facing=north humility-afm:outer_stairs_stone_brick:half=top:facing=north humility-afm:outer_stairs_brick:half=top:facing=north humility-afm:outer_stairs_cobblestone:half=top:facing=north humility-afm:outer_stairs_mossy_cobblestone:half=top:facing=north humility-afm:outer_stairs_nether_brick:half=top:facing=north humility-afm:outer_stairs_polished_blackstone:half=top:facing=north humility-afm:outer_stairs_red_nether_brick:half=top:facing=north humility-afm:outer_stairs_smooth_quartz:half=top:facing=north humility-afm:outer_stairs_smooth_red_sandstone:half=top:facing=north humility-afm:outer_stairs_smooth_sandstone:half=top:facing=north humility-afm:outer_stairs_end_stone_brick:half=top:facing=north humility-afm:outer_stairs_cut_copper:half=top:facing=north humility-afm:outer_stairs_exposed_cut_copper:half=top:facing=north humility-afm:outer_stairs_oxidized_cut_copper:half=top:facing=north humility-afm:outer_stairs_weathered_cut_copper:half=top:facing=north humility-afm:outer_stairs_cobbled_deepslate:half=top:facing=north humility-afm:outer_stairs_deepslate_brick:half=top:facing=north humility-afm:outer_stairs_deepslate_tile:half=top:facing=north humility-afm:outer_stairs_polished_deepslate:half=top:facing=north +block.439=acacia_stairs:shape=outer_left:half=top:facing=west bamboo_stairs:shape=outer_left:half=top:facing=west bamboo_mosaic_stairs:shape=outer_left:half=top:facing=west birch_stairs:shape=outer_left:half=top:facing=west cherry_stairs:shape=outer_left:half=top:facing=west crimson_stairs:shape=outer_left:half=top:facing=west dark_oak_stairs:shape=outer_left:half=top:facing=west jungle_stairs:shape=outer_left:half=top:facing=west mangrove_stairs:shape=outer_left:half=top:facing=west oak_stairs:shape=outer_left:half=top:facing=west spruce_stairs:shape=outer_left:half=top:facing=west warped_stairs:shape=outer_left:half=top:facing=west andesite_stairs:shape=outer_left:half=top:facing=west blackstone_stairs:shape=outer_left:half=top:facing=west brick_stairs:shape=outer_left:half=top:facing=west cobbled_deepslate_stairs:shape=outer_left:half=top:facing=west cobblestone_stairs:shape=outer_left:half=top:facing=west cut_copper_stairs:shape=outer_left:half=top:facing=west dark_prismarine_stairs:shape=outer_left:half=top:facing=west deepslate_brick_stairs:shape=outer_left:half=top:facing=west deepslate_tile_stairs:shape=outer_left:half=top:facing=west diorite_stairs:shape=outer_left:half=top:facing=west end_stone_brick_stairs:shape=outer_left:half=top:facing=west exposed_cut_copper_stairs:shape=outer_left:half=top:facing=west granite_stairs:shape=outer_left:half=top:facing=west mossy_cobblestone_stairs:shape=outer_left:half=top:facing=west mossy_stone_brick_stairs:shape=outer_left:half=top:facing=west mud_brick_stairs:shape=outer_left:half=top:facing=west nether_brick_stairs:shape=outer_left:half=top:facing=west oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=west polished_andesite_stairs:shape=outer_left:half=top:facing=west polished_blackstone_brick_stairs:shape=outer_left:half=top:facing=west polished_blackstone_stairs:shape=outer_left:half=top:facing=west polished_deepslate_stairs:shape=outer_left:half=top:facing=west polished_diorite_stairs:shape=outer_left:half=top:facing=west polished_granite_stairs:shape=outer_left:half=top:facing=west prismarine_brick_stairs:shape=outer_left:half=top:facing=west prismarine_stairs:shape=outer_left:half=top:facing=west purpur_stairs:shape=outer_left:half=top:facing=west quartz_stairs:shape=outer_left:half=top:facing=west red_nether_brick_stairs:shape=outer_left:half=top:facing=west red_sandstone_stairs:shape=outer_left:half=top:facing=west sandstone_stairs:shape=outer_left:half=top:facing=west smooth_quartz_stairs:shape=outer_left:half=top:facing=west smooth_red_sandstone_stairs:shape=outer_left:half=top:facing=west smooth_sandstone_stairs:shape=outer_left:half=top:facing=west stone_brick_stairs:shape=outer_left:half=top:facing=west stone_stairs:shape=outer_left:half=top:facing=west waxed_cut_copper_stairs:shape=outer_left:half=top:facing=west waxed_exposed_cut_copper_stairs:shape=outer_left:half=top:facing=west waxed_oxidized_cut_copper_stairs:shape=outer_left:half=top:facing=west waxed_weathered_cut_copper_stairs:shape=outer_left:half=top:facing=west weathered_cut_copper_stairs:shape=outer_left:half=top:facing=west createdeco:andesite_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:brass_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:cast_iron_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:copper_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:gold_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:iron_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:netherite_sheet_stairs:shape=outer_left:half=top:facing=west createdeco:zinc_sheet_stairs:shape=outer_left:half=top:facing=west create:cut_andesite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_andesite_stairs:shape=outer_left:half=top:facing=west create:cut_andesite_brick_stairs:shape=outer_left:half=top:facing=west create:small_andesite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_asurine_stairs:shape=outer_left:half=top:facing=west create:polished_cut_asurine_stairs:shape=outer_left:half=top:facing=west create:cut_asurine_brick_stairs:shape=outer_left:half=top:facing=west create:small_asurine_brick_stairs:shape=outer_left:half=top:facing=west create:cut_calcite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_calcite_stairs:shape=outer_left:half=top:facing=west create:cut_calcite_brick_stairs:shape=outer_left:half=top:facing=west create:small_calcite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_crimsite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_crimsite_stairs:shape=outer_left:half=top:facing=west create:cut_crimsite_brick_stairs:shape=outer_left:half=top:facing=west create:small_crimsite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_deepslate_stairs:shape=outer_left:half=top:facing=west create:polished_cut_deepslate_stairs:shape=outer_left:half=top:facing=west create:cut_deepslate_brick_stairs:shape=outer_left:half=top:facing=west create:small_deepslate_brick_stairs:shape=outer_left:half=top:facing=west create:cut_diorite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_diorite_stairs:shape=outer_left:half=top:facing=west create:cut_diorite_brick_stairs:shape=outer_left:half=top:facing=west create:small_diorite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_dripstone_stairs:shape=outer_left:half=top:facing=west create:polished_cut_dripstone_stairs:shape=outer_left:half=top:facing=west create:cut_dripstone_brick_stairs:shape=outer_left:half=top:facing=west create:small_dripstone_brick_stairs:shape=outer_left:half=top:facing=west create:cut_granite_stairs:shape=outer_left:half=top:facing=west create:polished_cut_granite_stairs:shape=outer_left:half=top:facing=west create:cut_granite_brick_stairs:shape=outer_left:half=top:facing=west create:small_granite_brick_stairs:shape=outer_left:half=top:facing=west create:cut_limestone_stairs:shape=outer_left:half=top:facing=west create:polished_cut_limestone_stairs:shape=outer_left:half=top:facing=west create:cut_limestone_brick_stairs:shape=outer_left:half=top:facing=west create:small_limestone_brick_stairs:shape=outer_left:half=top:facing=west create:cut_ochrum_stairs:shape=outer_left:half=top:facing=west create:polished_cut_ochrum_stairs:shape=outer_left:half=top:facing=west create:cut_ochrum_brick_stairs:shape=outer_left:half=top:facing=west create:small_ochrum_brick_stairs:shape=outer_left:half=top:facing=west create:cut_scorchia_stairs:shape=outer_left:half=top:facing=west create:polished_cut_scorchia_stairs:shape=outer_left:half=top:facing=west create:cut_scorchia_brick_stairs:shape=outer_left:half=top:facing=west create:small_scorchia_brick_stairs:shape=outer_left:half=top:facing=west create:cut_scoria_stairs:shape=outer_left:half=top:facing=west create:polished_cut_scoria_stairs:shape=outer_left:half=top:facing=west create:cut_scoria_brick_stairs:shape=outer_left:half=top:facing=west create:small_scoria_brick_stairs:shape=outer_left:half=top:facing=west create:cut_tuff_stairs:shape=outer_left:half=top:facing=west create:polished_cut_tuff_stairs:shape=outer_left:half=top:facing=west create:cut_tuff_brick_stairs:shape=outer_left:half=top:facing=west create:small_tuff_brick_stairs:shape=outer_left:half=top:facing=west create:cut_veridium_stairs:shape=outer_left:half=top:facing=west create:polished_cut_veridium_stairs:shape=outer_left:half=top:facing=west create:cut_veridium_brick_stairs:shape=outer_left:half=top:facing=west create:small_veridium_brick_stairs:shape=outer_left:half=top:facing=west create:copper_shingle_stairs:shape=outer_left:half=top:facing=west create:exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_exposed_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_weathered_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:waxed_oxidized_copper_shingle_stairs:shape=outer_left:half=top:facing=west create:copper_tile_stairs:shape=outer_left:half=top:facing=west create:exposed_copper_tile_stairs:shape=outer_left:half=top:facing=west create:weathered_copper_tile_stairs:shape=outer_left:half=top:facing=west create:oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_exposed_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_weathered_copper_tile_stairs:shape=outer_left:half=top:facing=west create:waxed_oxidized_copper_tile_stairs:shape=outer_left:half=top:facing=west acacia_stairs:shape=outer_right:half=top:facing=south bamboo_stairs:shape=outer_right:half=top:facing=south bamboo_mosaic_stairs:shape=outer_right:half=top:facing=south birch_stairs:shape=outer_right:half=top:facing=south cherry_stairs:shape=outer_right:half=top:facing=south crimson_stairs:shape=outer_right:half=top:facing=south dark_oak_stairs:shape=outer_right:half=top:facing=south jungle_stairs:shape=outer_right:half=top:facing=south mangrove_stairs:shape=outer_right:half=top:facing=south oak_stairs:shape=outer_right:half=top:facing=south spruce_stairs:shape=outer_right:half=top:facing=south warped_stairs:shape=outer_right:half=top:facing=south andesite_stairs:shape=outer_right:half=top:facing=south blackstone_stairs:shape=outer_right:half=top:facing=south brick_stairs:shape=outer_right:half=top:facing=south cobbled_deepslate_stairs:shape=outer_right:half=top:facing=south cobblestone_stairs:shape=outer_right:half=top:facing=south cut_copper_stairs:shape=outer_right:half=top:facing=south dark_prismarine_stairs:shape=outer_right:half=top:facing=south deepslate_brick_stairs:shape=outer_right:half=top:facing=south deepslate_tile_stairs:shape=outer_right:half=top:facing=south diorite_stairs:shape=outer_right:half=top:facing=south end_stone_brick_stairs:shape=outer_right:half=top:facing=south exposed_cut_copper_stairs:shape=outer_right:half=top:facing=south granite_stairs:shape=outer_right:half=top:facing=south mossy_cobblestone_stairs:shape=outer_right:half=top:facing=south mossy_stone_brick_stairs:shape=outer_right:half=top:facing=south mud_brick_stairs:shape=outer_right:half=top:facing=south nether_brick_stairs:shape=outer_right:half=top:facing=south oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=south polished_andesite_stairs:shape=outer_right:half=top:facing=south polished_blackstone_brick_stairs:shape=outer_right:half=top:facing=south polished_blackstone_stairs:shape=outer_right:half=top:facing=south polished_deepslate_stairs:shape=outer_right:half=top:facing=south polished_diorite_stairs:shape=outer_right:half=top:facing=south polished_granite_stairs:shape=outer_right:half=top:facing=south prismarine_brick_stairs:shape=outer_right:half=top:facing=south prismarine_stairs:shape=outer_right:half=top:facing=south purpur_stairs:shape=outer_right:half=top:facing=south quartz_stairs:shape=outer_right:half=top:facing=south red_nether_brick_stairs:shape=outer_right:half=top:facing=south red_sandstone_stairs:shape=outer_right:half=top:facing=south sandstone_stairs:shape=outer_right:half=top:facing=south smooth_quartz_stairs:shape=outer_right:half=top:facing=south smooth_red_sandstone_stairs:shape=outer_right:half=top:facing=south smooth_sandstone_stairs:shape=outer_right:half=top:facing=south stone_brick_stairs:shape=outer_right:half=top:facing=south stone_stairs:shape=outer_right:half=top:facing=south waxed_cut_copper_stairs:shape=outer_right:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=outer_right:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=outer_right:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=outer_right:half=top:facing=south weathered_cut_copper_stairs:shape=outer_right:half=top:facing=south createdeco:andesite_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:brass_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:copper_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:gold_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:iron_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:netherite_sheet_stairs:shape=outer_right:half=top:facing=south createdeco:zinc_sheet_stairs:shape=outer_right:half=top:facing=south create:cut_andesite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_andesite_stairs:shape=outer_right:half=top:facing=south create:cut_andesite_brick_stairs:shape=outer_right:half=top:facing=south create:small_andesite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_asurine_stairs:shape=outer_right:half=top:facing=south create:polished_cut_asurine_stairs:shape=outer_right:half=top:facing=south create:cut_asurine_brick_stairs:shape=outer_right:half=top:facing=south create:small_asurine_brick_stairs:shape=outer_right:half=top:facing=south create:cut_calcite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_calcite_stairs:shape=outer_right:half=top:facing=south create:cut_calcite_brick_stairs:shape=outer_right:half=top:facing=south create:small_calcite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_crimsite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_crimsite_stairs:shape=outer_right:half=top:facing=south create:cut_crimsite_brick_stairs:shape=outer_right:half=top:facing=south create:small_crimsite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_deepslate_stairs:shape=outer_right:half=top:facing=south create:polished_cut_deepslate_stairs:shape=outer_right:half=top:facing=south create:cut_deepslate_brick_stairs:shape=outer_right:half=top:facing=south create:small_deepslate_brick_stairs:shape=outer_right:half=top:facing=south create:cut_diorite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_diorite_stairs:shape=outer_right:half=top:facing=south create:cut_diorite_brick_stairs:shape=outer_right:half=top:facing=south create:small_diorite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_dripstone_stairs:shape=outer_right:half=top:facing=south create:polished_cut_dripstone_stairs:shape=outer_right:half=top:facing=south create:cut_dripstone_brick_stairs:shape=outer_right:half=top:facing=south create:small_dripstone_brick_stairs:shape=outer_right:half=top:facing=south create:cut_granite_stairs:shape=outer_right:half=top:facing=south create:polished_cut_granite_stairs:shape=outer_right:half=top:facing=south create:cut_granite_brick_stairs:shape=outer_right:half=top:facing=south create:small_granite_brick_stairs:shape=outer_right:half=top:facing=south create:cut_limestone_stairs:shape=outer_right:half=top:facing=south create:polished_cut_limestone_stairs:shape=outer_right:half=top:facing=south create:cut_limestone_brick_stairs:shape=outer_right:half=top:facing=south create:small_limestone_brick_stairs:shape=outer_right:half=top:facing=south create:cut_ochrum_stairs:shape=outer_right:half=top:facing=south create:polished_cut_ochrum_stairs:shape=outer_right:half=top:facing=south create:cut_ochrum_brick_stairs:shape=outer_right:half=top:facing=south create:small_ochrum_brick_stairs:shape=outer_right:half=top:facing=south create:cut_scorchia_stairs:shape=outer_right:half=top:facing=south create:polished_cut_scorchia_stairs:shape=outer_right:half=top:facing=south create:cut_scorchia_brick_stairs:shape=outer_right:half=top:facing=south create:small_scorchia_brick_stairs:shape=outer_right:half=top:facing=south create:cut_scoria_stairs:shape=outer_right:half=top:facing=south create:polished_cut_scoria_stairs:shape=outer_right:half=top:facing=south create:cut_scoria_brick_stairs:shape=outer_right:half=top:facing=south create:small_scoria_brick_stairs:shape=outer_right:half=top:facing=south create:cut_tuff_stairs:shape=outer_right:half=top:facing=south create:polished_cut_tuff_stairs:shape=outer_right:half=top:facing=south create:cut_tuff_brick_stairs:shape=outer_right:half=top:facing=south create:small_tuff_brick_stairs:shape=outer_right:half=top:facing=south create:cut_veridium_stairs:shape=outer_right:half=top:facing=south create:polished_cut_veridium_stairs:shape=outer_right:half=top:facing=south create:cut_veridium_brick_stairs:shape=outer_right:half=top:facing=south create:small_veridium_brick_stairs:shape=outer_right:half=top:facing=south create:copper_shingle_stairs:shape=outer_right:half=top:facing=south create:exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=outer_right:half=top:facing=south create:copper_tile_stairs:shape=outer_right:half=top:facing=south create:exposed_copper_tile_stairs:shape=outer_right:half=top:facing=south create:weathered_copper_tile_stairs:shape=outer_right:half=top:facing=south create:oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=outer_right:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=outer_right:half=top:facing=south \ + humility-afm:outer_stairs_acacia:half=top:facing=east humility-afm:outer_stairs_bamboo:half=top:facing=east humility-afm:outer_stairs_birch:half=top:facing=east humility-afm:outer_stairs_cherry:half=top:facing=east humility-afm:outer_stairs_crimson:half=top:facing=east humility-afm:outer_stairs_dark_oak:half=top:facing=east humility-afm:outer_stairs_jungle:half=top:facing=east humility-afm:outer_stairs_mangrove:half=top:facing=east humility-afm:outer_stairs_oak:half=top:facing=east humility-afm:outer_stairs_spruce:half=top:facing=east humility-afm:outer_stairs_warped:half=top:facing=east humility-afm:outer_stairs_anchor_tree:half=top:facing=east humility-afm:outer_stairs_mushroom:half=top:facing=east humility-afm:outer_stairs_mushroom_fir:half=top:facing=east humility-afm:outer_stairs_nether_sakura:half=top:facing=east humility-afm:outer_stairs_stalagnate:half=top:facing=east humility-afm:outer_stairs_wart:half=top:facing=east humility-afm:outer_stairs_willow:half=top:facing=east humility-afm:outer_stairs_mud_bricks:half=top:facing=east humility-afm:outer_stairs_quartz:half=top:facing=east humility-afm:outer_stairs_red_sandstone:half=top:facing=east humility-afm:outer_stairs_sandstone:half=top:facing=east humility-afm:outer_stairs_andesite:half=top:facing=east humility-afm:outer_stairs_blackstone:half=top:facing=east humility-afm:outer_stairs_dark_prismarine:half=top:facing=east humility-afm:outer_stairs_diorite:half=top:facing=east humility-afm:outer_stairs_granite:half=top:facing=east humility-afm:outer_stairs_mossy_stone_brick:half=top:facing=east humility-afm:outer_stairs_polished_andesite:half=top:facing=east humility-afm:outer_stairs_polished_blackstone_brick:half=top:facing=east humility-afm:outer_stairs_polished_diorite:half=top:facing=east humility-afm:outer_stairs_polished_granite:half=top:facing=east humility-afm:outer_stairs_prismarine:half=top:facing=east humility-afm:outer_stairs_prismarine_bricks:half=top:facing=east humility-afm:outer_stairs_purpur:half=top:facing=east humility-afm:outer_stairs_stone:half=top:facing=east humility-afm:outer_stairs_stone_brick:half=top:facing=east humility-afm:outer_stairs_brick:half=top:facing=east humility-afm:outer_stairs_cobblestone:half=top:facing=east humility-afm:outer_stairs_mossy_cobblestone:half=top:facing=east humility-afm:outer_stairs_nether_brick:half=top:facing=east humility-afm:outer_stairs_polished_blackstone:half=top:facing=east humility-afm:outer_stairs_red_nether_brick:half=top:facing=east humility-afm:outer_stairs_smooth_quartz:half=top:facing=east humility-afm:outer_stairs_smooth_red_sandstone:half=top:facing=east humility-afm:outer_stairs_smooth_sandstone:half=top:facing=east humility-afm:outer_stairs_end_stone_brick:half=top:facing=east humility-afm:outer_stairs_cut_copper:half=top:facing=east humility-afm:outer_stairs_exposed_cut_copper:half=top:facing=east humility-afm:outer_stairs_oxidized_cut_copper:half=top:facing=east humility-afm:outer_stairs_weathered_cut_copper:half=top:facing=east humility-afm:outer_stairs_cobbled_deepslate:half=top:facing=east humility-afm:outer_stairs_deepslate_brick:half=top:facing=east humility-afm:outer_stairs_deepslate_tile:half=top:facing=east humility-afm:outer_stairs_polished_deepslate:half=top:facing=east From 266b0dd14d1c1fc69968bbfc19b2b217d53c6247 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:02:51 +0100 Subject: [PATCH 071/101] Added support for `Macaw's Holidays` --- shaders/block.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shaders/block.properties b/shaders/block.properties index 9885b3c..8c64af5 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -100,6 +100,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff \ garnished:sorrowful_lichen garnished:anniversary_cake \ herbalbrews:hibiscus_tea_block \ + mcwholidays:snowy_pine_bottom mcwholidays:snowy_pine_middle mcwholidays:snowy_pine_top \ natures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:red_moss_carpet \ nethervinery:crimson_grape_bush nethervinery:warped_grape_bush \ oceansdelight:guardian_soup \ @@ -116,6 +117,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ fd:birthday_cake \ herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ + mcwholidays:snow_covered_pine_bottom mcwholidays:snow_covered_pine_middle mcwholidays:snow_covered_pine_top mcwholidays:snowy_grass mcwholidays:snowy_tall_grass mcwholidays:snowy_fern mcwholidays:snowy_tall_fern mcwholidays:snowy_oak_leaves mcwholidays:snowy_oak_leaves_carpet mcwholidays:snowy_spruce_leaves mcwholidays:snowy_spruce_leaves_carpet mcwholidays:snowman_bottom mcwholidays:snowman mcwholidays:snowman_with_pan mcwholidays:snowman_with_santa_hat mcwholidays:snowman_grinch mcwholidays:snowman_ear_muffs mcwholidays:snowman_with_ushanka mcwholidays:snowman_with_top_hat \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ savethehotbar:sack savethehotbar:skeleton_head_grave savethehotbar:zombie_head_grave From 4c2709a281166ba415bff50ca2558919a0bdd4fc Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:58:22 +0100 Subject: [PATCH 072/101] Added support to `The Sky Lands` and `Let's Do Meadow`, support by `ludo_silver` --- shaders/block.properties | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 8c64af5..da7325b 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -11,12 +11,16 @@ block.13=minecraft:small_dripleaf:half=lower minecraft:pitcher_plant:half=lower biomesoplenty:tall_lavender:half=lower biomesoplenty:eyebulb:half=lower biomesoplenty:blue_hydrangea:half=lower \ conquest:large_fern_1:half=lower conquest:large_fern_2:half=lower conquest:large_fern_3:half=lower conquest:thick_fern:half=lower conquest:tall_grass:half=lower conquest:large_fern:half=lower conquest:sunflower:half=lower conquest:tall_lilac:half=lower conquest:peony:half=lower conquest:rose_bush:half=lower conquest:tall_seagrass:half=lower \ farmersdelight:wild_rice:half=lower \ + flying_stuff:golden_fern:half=lower flying_stuff:smoke_flower_plant:half=lower flying_stuff:lavic_mushrooms:half=lower flying_stuff:smoke_flower_plant_grow_stage:half=lower \ + meadow:eriophorum_tall:half=lower meadow:small_fir:half=lower \ natures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper minecraft:tall_grass:half=upper minecraft:sunflower:half=upper minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:tall_seagrass:half=upper \ biomesoplenty:tall_lavender:half=upper biomesoplenty:eyebulb:half=upper biomesoplenty:blue_hydrangea:half=upper \ conquest:large_fern_1:half=upper conquest:large_fern_2:half=upper conquest:large_fern_3:half=upper conquest:thick_fern:half=upper conquest:tall_grass:half=upper conquest:large_fern:half=upper conquest:sunflower:half=upper conquest:tall_lilac:half=upper conquest:peony:half=upper conquest:rose_bush:half=upper conquest:tall_seagrass:half=upper \ farmersdelight:wild_rice:half=upper \ + flying_stuff:golden_fern:half=upper flying_stuff:smoke_flower_plant:half=upper flying_stuff:lavic_mushrooms:half=upper flying_stuff:smoke_flower_plant_grow_stage:half=upper \ + meadow:eriophorum_tall:half=upper meadow:small_fir:half=upper \ natures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper @@ -76,7 +80,9 @@ block.54=minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. block.55=minecraft:fern \ biomesoplenty:bush \ - conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom + conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:angelica conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom \ + flying_stuff:blow_flower flying_stuff:fiery_short_grass flying_stuff:fiery_grass flying_stuff:small_arid_bush flying_stuff:metallic_shorter_grass flying_stuff:firey_tree_sapling flying_stuff:abyss_grass flying_stuff:arid_grass flying_stuff:fiery_tree_sapling flying_stuff:lavic_tree_sapling flying_stuff:short_lavic_grass flying_stuff:warmth_radish_plant \ + meadow:eriophorum meadow:pine_sapling meadow:alpine_poppy meadow:delphinium meadow:saxifrage meadow:enzian meadow:fire_lily ## air waving ## add a newline to organize for modded blocks @@ -84,7 +90,9 @@ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:che beachparty:palm_leaves \ biomesoplenty:redwood_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:cypress_leaves biomesoplenty:snowblossom_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:fir_leaves biomesoplenty:pine_leaves biomesoplenty:red_maple_leaves biomesoplenty:orange_maple_leaves biomesoplenty:yellow_maple_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:empyreal_leaves \ conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ + flying_stuff:fiery_leaves flying_stuff:lavic_fungus_block \ garnished:walnut_leaves garnished:almond_leaves garnished:pecan_leaves garnished:pistachio_leaves garnished:macadamia_leaves garnished:peanut_leaves garnished:hazelnut_leaves garnished:chestnut_leaves garnished:nut_leaves garnished:unassigned_nut_leaves garnished:cashew_leaves \ + meadow:alpine_birch_leaves_hanging meadow:pine_leaves meadow:pine_leaves_2 \ natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ vinery:dark_cherry_leaves vinery:apple_leaves \ westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves @@ -98,6 +106,7 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ biomesoplenty:high_grass_plant biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble biomesoplenty:spanish_moss biomesoplenty:willow_vine \ fd:wallpapers fd:wallpaper_1 fd:wallposterfacesf fd:wallposterfacesc fd:wallposterfacesb fd:ffdwallposterfaces_1 fd:ffdwallposterfaces_2 fd:ffdwallposterfaces_3 fd:fnaf_2postertoychica fd:fnaf_2postertoybonnie fd:fnaf_2postertoyfreddy fd:fnaf_2celebrateposter fd:fnaf_2posterfourfaces fd:paperpalclassic fd:paperpalfreddy fd:paperpalbonnie fd:switchon fd:switchoff \ + flying_stuff:glaciated_leaves flying_stuff:ice_spikes \ garnished:sorrowful_lichen garnished:anniversary_cake \ herbalbrews:hibiscus_tea_block \ mcwholidays:snowy_pine_bottom mcwholidays:snowy_pine_middle mcwholidays:snowy_pine_top \ @@ -116,6 +125,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ farmersdelight:brown_mushroom_colony farmersdelight:red_mushroom_colony farmersdelight:rice_roll_medley_block farmersdelight:shepherds_pie_block farmersdelight:honey_glazed_ham_block farmersdelight:stuffed_pumpkin_block farmersdelight:roast_chicken_block \ fd:birthday_cake \ + flying_stuff:sky_cactus flying_stuff:sky_cactus_branch flying_stuff:sky_cactus_top flying_stuff:pale_celestium_antenna:lit=false flying_stuff:float_grape_plant flying_stuff:small_sky_cactus flying_stuff:tall_glaciated_grass flying_stuff:glaciated_tree_sapling flying_stuff:short_glaciated_grass flying_stuff:glaciated_fern \ herbalbrews:milk_coffee_block herbalbrews:tea_leaf_crate herbalbrews:green_tea_leaf_block herbalbrews:dried_green_tea_leaf_block herbalbrews:dried_out_green_tea_leaf_block herbalbrews:mixed_tea_leaf_block herbalbrews:oolong_tea_leaf_block herbalbrews:black_tea_leaf_block \ mcwholidays:snow_covered_pine_bottom mcwholidays:snow_covered_pine_middle mcwholidays:snow_covered_pine_top mcwholidays:snowy_grass mcwholidays:snowy_tall_grass mcwholidays:snowy_fern mcwholidays:snowy_tall_fern mcwholidays:snowy_oak_leaves mcwholidays:snowy_oak_leaves_carpet mcwholidays:snowy_spruce_leaves mcwholidays:snowy_spruce_leaves_carpet mcwholidays:snowman_bottom mcwholidays:snowman mcwholidays:snowman_with_pan mcwholidays:snowman_with_santa_hat mcwholidays:snowman_grinch mcwholidays:snowman_ear_muffs mcwholidays:snowman_with_ushanka mcwholidays:snowman_with_top_hat \ natures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \ @@ -123,6 +133,7 @@ block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_ame ## weak sss block.82=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ + meadow:warped_wool meadow:flecked_wool meadow:highland_wool meadow:inky_wool meadow:patched_wool meadow:rocky_wool meadow:umbra_wool \ westerosblocks:clothesline westerosblocks:smoke westerosblocks:brown_mushroom_1 westerosblocks:brown_mushroom_2 westerosblocks:brown_mushroom_3 westerosblocks:brown_mushroom_4 westerosblocks:brown_mushroom_5 westerosblocks:brown_mushroom_6 westerosblocks:brown_mushroom_7 westerosblocks:brown_mushroom_8 westerosblocks:brown_mushroom_9 westerosblocks:brown_mushroom_10 westerosblocks:brown_mushroom_11 westerosblocks:brown_mushroom_12 westerosblocks:brown_mushroom_13 westerosblocks:red_mushroom_1 westerosblocks:red_mushroom_2 westerosblocks:red_mushroom_3 westerosblocks:red_mushroom_4 westerosblocks:red_mushroom_5 westerosblocks:red_mushroom_6 westerosblocks:red_mushroom_7 westerosblocks:red_mushroom_8 westerosblocks:red_mushroom_9 westerosblocks:white_wool_slab westerosblocks:orange_wool_slab westerosblocks:light_brown_wool_slab westerosblocks:light_blue_wool_slab westerosblocks:yellow_wool_slab westerosblocks:dirty_white_wool_slab westerosblocks:pink_wool_slab westerosblocks:grey_wool_slab westerosblocks:light_grey_wool_slab westerosblocks:cyan_wool_slab westerosblocks:purple_wool_slab westerosblocks:blue_wool_slab westerosblocks:brown_wool_slab westerosblocks:green_wool_slab westerosblocks:red_wool_slab westerosblocks:black_wool_slab westerosblocks:white_wool_carpet westerosblocks:orange_wool_carpet westerosblocks:light_brown_wool_carpet westerosblocks:light_blue_wool_carpet westerosblocks:yellow_wool_carpet westerosblocks:dirty_white_wool_carpet westerosblocks:pink_wool_carpet westerosblocks:grey_wool_carpet westerosblocks:light_grey_wool_carpet westerosblocks:cyan_wool_carpet westerosblocks:purple_wool_carpet westerosblocks:blue_wool_carpet westerosblocks:brown_wool_carpet westerosblocks:green_wool_carpet westerosblocks:red_wool_carpet westerosblocks:black_wool_carpet westerosblocks:thatch_light_fur_carpet westerosblocks:thatch_dark_fur_carpet ## weak sss @@ -326,9 +337,11 @@ block.159=purple_candle:candles=2:lit=true \ supplementaries:candle_holder_purple:candles=2:lit=true block.160=purple_candle:candles=3:lit=true \ + flying_stuff:amber_celestium_spike:lit=true flying_stuff:amber_celestium_antenna:lit=true \ supplementaries:candle_holder_purple:candles=3:lit=true block.161=purple_candle:candles=4:lit=true \ + flying_stuff:amber_celestium_block:lit=true \ supplementaries:candle_holder_purple:candles=4:lit=true block.162=red_candle:candles=1:lit=true \ @@ -348,13 +361,16 @@ block.166=white_candle:candles=1:lit=true \ supplementaries:candle_holder_white:candles=1:lit=true block.167=white_candle:candles=2:lit=true \ + flying_stuff:inky_celestium_antenna:lit=true \ humility-afm:candlestick_copper_candle_white:lit=true humility-afm:candlestick_exposed_copper_candle_white:lit=true humility-afm:candlestick_gold_candle_white:lit=true humility-afm:candlestick_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_copper_candle_white:lit=true humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=true humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=true humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=true humility-afm:candlestick_weathered_copper_candle_white:lit=true \ supplementaries:candle_holder_white:candles=2:lit=true block.168=white_candle:candles=3:lit=true \ + flying_stuff:pale_celestium_spike:lit=true flying_stuff:pale_celestium_antenna:lit=true \ supplementaries:candle_holder_white:candles=3:lit=true block.169=white_candle:candles=4:lit=true \ + flying_stuff:pale_celestium_block:lit=true \ supplementaries:candle_holder_white:candles=4:lit=true block.170=yellow_candle:candles=1:lit=true \ @@ -419,7 +435,8 @@ block.193=verdant_froglight block.194=furnace:lit=true blast_furnace:lit=true smoker:lit=true -block.195=glow_lichen +block.195=glow_lichen \ + flying_stuff:celestium_spike flying_stuff:celestium_antenna block.196=glowstone \ mcwlights:glowstone_slab @@ -432,6 +449,7 @@ block.198=lantern \ mcwlights:striped_lantern mcwlights:covered_lantern mcwlights:chain_lantern mcwlights:tavern_lantern mcwlights:festive_lantern mcwlights:cross_lantern mcwlights:bell_lantern mcwlights:wall_lantern mcwlights:striped_wall_lantern mcwlights:covered_wall_lantern mcwlights:chain_wall_lantern mcwlights:tavern_wall_lantern mcwlights:festive_wall_lantern mcwlights:cross_wall_lantern mcwlights:bell_wall_lantern mcwlights:classic_street_lamp:lit=true:part=top mcwlights:classic_street_lamp:lit=true:part=base mcwlights:double_street_lamp:lit=true:part=top mcwlights:double_street_lamp:lit=true:part=base block.199=lava \ + flying_stuff:molten_metal:lit=true \ mcwlights:lava_lamp:lit=true block.200=light:level=1 @@ -520,6 +538,7 @@ block.240=sea_pickle:waterlogged=true:pickles=3 block.241=sea_pickle:waterlogged=true:pickles=4 block.242=sea_lantern \ + flying_stuff:celestium_block \ humility-afm:jack_o_lantern_soul \ mcwlights:sea_lantern_slab From 16e4853ddaadccbf950f199de0a5539618466b88 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Wed, 13 Nov 2024 17:03:25 +0100 Subject: [PATCH 073/101] Update CREDITS.txt --- CREDITS.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CREDITS.txt b/CREDITS.txt index 297f383..c09ceb9 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -32,3 +32,11 @@ Credit to the people who inspired many changes and ideas, that you NEED to know EminGt / https://github.com/EminGT Null / https://github.com/Null-MC L4mbads / l4mbads (discord) | https://www.youtube.com/channel/UC-5tMMYBNrGJfp1SMjuAf2w + + + +Temporal credits entry to people who added more mod support to Bliss: + + MikiP98 / https://github.com/MikiP98 | Miki-Liki (Modrinth) + Benjamin Rühl / https://github.com/benruehl + ludo_silver From d83aae914f8798aa65401a9d98809728df607f9e Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 14:04:51 +0100 Subject: [PATCH 074/101] Added `Boe's Earth` mod support --- shaders/block.properties | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index da7325b..ce8a49d 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -86,8 +86,11 @@ block.55=minecraft:fern \ ## air waving ## add a newline to organize for modded blocks +#ifdef BOES_EARTH_BLOCKSTATES +block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves snow:is_on_leaves=true \ +#else block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ - beachparty:palm_leaves \ +#endif beachparty:palm_leaves \ biomesoplenty:redwood_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:cypress_leaves biomesoplenty:snowblossom_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:fir_leaves biomesoplenty:pine_leaves biomesoplenty:red_maple_leaves biomesoplenty:orange_maple_leaves biomesoplenty:yellow_maple_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:empyreal_leaves \ conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ flying_stuff:fiery_leaves flying_stuff:lavic_fungus_block \ @@ -117,8 +120,11 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass ## weak sss +#ifdef BOES_EARTH_BLOCKSTATES +block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5:is_on_leaves=false snow:layers=6:is_on_leaves=false snow:layers=7:is_on_leaves=false snow:layers=8:is_on_leaves=false minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ +#else block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ - aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ +#endif aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ beachparty:seashell_block beachparty:beach_parasol \ biomesoplenty:toadstool \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ @@ -711,7 +717,11 @@ block.407=acacia_slab:type=top bamboo_slab:type=top bamboo_mosaic_slab:type=top block.408=acacia_slab:type=bottom bamboo_slab:type=bottom bamboo_mosaic_slab:type=bottom birch_slab:type=bottom cherry_slab:type=bottom crimson_slab:type=bottom dark_oak_slab:type=bottom jungle_slab:type=bottom mangrove_slab:type=bottom oak_slab:type=bottom spruce_slab:type=bottom warped_slab:type=bottom andesite_slab:type=bottom blackstone_slab:type=bottom brick_slab:type=bottom cobbled_deepslate_slab:type=bottom cobblestone_slab:type=bottom cut_copper_slab:type=bottom cut_red_sandstone_slab:type=bottom cut_sandstone_slab:type=bottom dark_prismarine_slab:type=bottom deepslate_brick_slab:type=bottom deepslate_tile_slab:type=bottom diorite_slab:type=bottom end_stone_brick_slab:type=bottom exposed_cut_copper_slab:type=bottom granite_slab:type=bottom mossy_cobblestone_slab:type=bottom mossy_stone_brick_slab:type=bottom mud_brick_slab:type=bottom nether_brick_slab:type=bottom oxidized_cut_copper_slab:type=bottom petrified_oak_slab:type=bottom polished_andesite_slab:type=bottom polished_blackstone_brick_slab:type=bottom polished_blackstone_slab:type=bottom polished_deepslate_slab:type=bottom polished_diorite_slab:type=bottom polished_granite_slab:type=bottom prismarine_brick_slab:type=bottom prismarine_slab:type=bottom purpur_slab:type=bottom quartz_slab:type=bottom red_nether_brick_slab:type=bottom red_sandstone_slab:type=bottom sandstone_slab:type=bottom smooth_quartz_slab:type=bottom smooth_red_sandstone_slab:type=bottom smooth_sandstone_slab:type=bottom smooth_stone_slab:type=bottom stone_brick_slab:type=bottom stone_slab:type=bottom waxed_cut_copper_slab:type=bottom waxed_exposed_cut_copper_slab:type=bottom waxed_oxidized_cut_copper_slab:type=bottom waxed_weathered_cut_copper_slab:type=bottom weathered_cut_copper_slab:type=bottom daylight_detector +#ifdef BOES_EARTH_BLOCKSTATES +block.409=snow:layers=1:is_on_leaves=false snow:layers=2:is_on_leaves=false snow:layers=3:is_on_leaves=false snow:layers=4:is_on_leaves=false +#else block.409=snow:layers=1 snow:layers=2 snow:layers=3 snow:layers=4 +#endif block.410=acacia_trapdoor:half=bottom:open=false bamboo_trapdoor:half=bottom:open=false birch_trapdoor:half=bottom:open=false cherry_trapdoor:half=bottom:open=false crimson_trapdoor:half=bottom:open=false dark_oak_trapdoor:half=bottom:open=false iron_trapdoor:half=bottom:open=false jungle_trapdoor:half=bottom:open=false mangrove_trapdoor:half=bottom:open=false oak_trapdoor:half=bottom:open=false spruce_trapdoor:half=bottom:open=false warped_trapdoor:half=bottom:open=false copper_trapdoor:half=bottom:open=false exposed_copper_trapdoor:half=bottom:open=false weathered_copper_trapdoor:half=bottom:open=false oxidized_copper_trapdoor:half=bottom:open=false waxed_copper_trapdoor:half=bottom:open=false waxed_exposed_copper_trapdoor:half=bottom:open=false waxed_weathered_copper_trapdoor:half=bottom:open=false waxed_oxidized_copper_trapdoor:half=bottom:open=false From e81bb7eedc3eb210c060a126a01dc5de6b128b52 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 14:07:43 +0100 Subject: [PATCH 075/101] Added `(discord)` next to `ludo_silver`'s nick --- CREDITS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CREDITS.txt b/CREDITS.txt index c09ceb9..4de9660 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -39,4 +39,4 @@ Temporal credits entry to people who added more mod support to Bliss: MikiP98 / https://github.com/MikiP98 | Miki-Liki (Modrinth) Benjamin Rühl / https://github.com/benruehl - ludo_silver + ludo_silver (discord) From 4869877f770434bcf79509ebf6ddb87af7393d4d Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 17:54:18 -0500 Subject: [PATCH 076/101] intial changes for commit #495 --- shaders/dimensions/DH_generic.fsh | 50 + shaders/dimensions/DH_generic.vsh | 52 + shaders/dimensions/DH_solid.fsh | 57 +- shaders/dimensions/DH_solid.vsh | 38 +- shaders/dimensions/DH_translucent.fsh | 65 +- shaders/dimensions/DH_translucent.vsh | 28 +- shaders/dimensions/all_particles.fsh | 37 +- shaders/dimensions/all_particles.vsh | 14 +- shaders/dimensions/all_solid.fsh | 97 +- shaders/dimensions/all_solid.vsh | 18 +- shaders/dimensions/all_translucent.fsh | 358 +++---- shaders/dimensions/all_translucent.vsh | 17 +- shaders/dimensions/all_vanilla_emissives.fsh | 8 +- shaders/dimensions/composite.fsh | 218 +++-- shaders/dimensions/composite.vsh | 6 + shaders/dimensions/composite1.fsh | 770 ++++++++++----- shaders/dimensions/composite1.vsh | 15 +- shaders/dimensions/composite10.fsh | 2 +- shaders/dimensions/composite11.fsh | 129 ++- shaders/dimensions/composite12.fsh | 37 +- shaders/dimensions/composite2.fsh | 364 ++++--- shaders/dimensions/composite2.vsh | 22 +- shaders/dimensions/composite3.fsh | 404 ++++++-- shaders/dimensions/composite3.vsh | 2 +- shaders/dimensions/composite5.fsh | 80 +- shaders/dimensions/deferred.fsh | 99 +- shaders/dimensions/deferred.vsh | 65 +- shaders/dimensions/deferred2.fsh | 12 +- shaders/dimensions/deferred2.vsh | 14 +- shaders/dimensions/final.fsh | 79 +- .../dimensions/fogBehindTranslucent_pass.fsh | 202 +++- .../dimensions/fogBehindTranslucent_pass.vsh | 19 +- shaders/lang/en_us.lang | 12 +- shaders/lang/pt_br.lang | 4 +- shaders/lang/ru_RU.lang | 4 +- shaders/lang/zh_cn.lang | 4 +- shaders/lib/ROBOBO_sky.glsl | 8 +- shaders/lib/Shadows.glsl | 15 +- shaders/lib/TAA_jitter.glsl | 71 +- shaders/lib/climate_settings.glsl | 7 +- shaders/lib/color_transforms.glsl | 12 +- shaders/lib/diffuse_lighting.glsl | 31 +- shaders/lib/end_fog.glsl | 37 +- shaders/lib/indirect_lighting_effects.glsl | 179 ++-- shaders/lib/lpv_render.glsl | 13 +- shaders/lib/nether_fog.glsl | 10 +- shaders/lib/overworld_fog.glsl | 352 +------ shaders/lib/settings.glsl | 96 +- shaders/lib/sky_gradient.glsl | 64 +- shaders/lib/specular.glsl | 504 +++++++--- shaders/lib/volumetricClouds.glsl | 922 +++++++----------- shaders/shaders.properties | 63 +- shaders/world0/dh_generic.fsh | 5 + shaders/world0/dh_generic.vsh | 5 + shaders/world0/shadow.fsh | 11 +- shaders/world0/shadow.vsh | 17 +- 56 files changed, 3550 insertions(+), 2274 deletions(-) create mode 100644 shaders/dimensions/DH_generic.fsh create mode 100644 shaders/dimensions/DH_generic.vsh create mode 100644 shaders/world0/dh_generic.fsh create mode 100644 shaders/world0/dh_generic.vsh diff --git a/shaders/dimensions/DH_generic.fsh b/shaders/dimensions/DH_generic.fsh new file mode 100644 index 0000000..c737d31 --- /dev/null +++ b/shaders/dimensions/DH_generic.fsh @@ -0,0 +1,50 @@ +#include "/lib/settings.glsl" + +varying vec4 pos; +varying vec4 gcolor; + +uniform vec2 texelSize; +uniform vec3 cameraPosition; +uniform sampler2D depthtex1; + +uniform mat4 gbufferModelViewInverse; +uniform float far; +uniform int frameCounter; + +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +float interleaved_gradientNoise_temporal(){ + #ifdef TAA + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); + #else + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); + #endif +} +/* RENDERTARGETS:2 */ +void main() { +if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) { + + vec3 viewPos = pos.xyz; + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; + + float falloff = exp(-10.0 * (1.0-clamp(1.0 - playerPos.y/5000.0,0.0,1.0))); + + + #ifdef DH_OVERDRAW_PREVENTION + #if OVERDRAW_MAX_DISTANCE == 0 + float maxOverdrawDistance = far; + #else + float maxOverdrawDistance = OVERDRAW_MAX_DISTANCE; + #endif + + if(length(playerPos) < clamp(far-16*4, 16, maxOverdrawDistance) || texture2D(depthtex1, gl_FragCoord.xy*texelSize).x < 1.0){ discard; return;} + #endif + + + vec3 Albedo = toLinear(gcolor.rgb) ; + + gl_FragData[0] = vec4(Albedo * Emissive_Brightness * 0.1, gcolor.a); +} +} \ No newline at end of file diff --git a/shaders/dimensions/DH_generic.vsh b/shaders/dimensions/DH_generic.vsh new file mode 100644 index 0000000..1c1d4f2 --- /dev/null +++ b/shaders/dimensions/DH_generic.vsh @@ -0,0 +1,52 @@ +#include "/lib/settings.glsl" +#include "/lib/res_params.glsl" + +varying vec4 pos; +varying vec4 gcolor; + +uniform vec2 texelSize; +uniform int framemod8; + +#if DOF_QUALITY == 5 + uniform int hideGUI; + uniform int frameCounter; + uniform float aspectRatio; + uniform float screenBrightness; + uniform float far; + #include "/lib/bokeh.glsl" +#endif + +#include "/lib/TAA_jitter.glsl" + + +void main() { + gl_Position = ftransform(); + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + + pos = gl_ModelViewMatrix * gl_Vertex; + gcolor = gl_Color; + + #if DOF_QUALITY == 5 + vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); + jitter = rotate(radians(float(frameCounter))) * jitter; + jitter.y *= aspectRatio; + jitter.x *= DOF_ANAMORPHIC_RATIO; + + #if MANUAL_FOCUS == -2 + float focusMul = 0; + #elif MANUAL_FOCUS == -1 + float focusMul = gl_Position.z + (far / 3.0) - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); + #else + float focusMul = gl_Position.z + (far / 3.0) - MANUAL_FOCUS; + #endif + + vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; + gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0); + #endif +} \ No newline at end of file diff --git a/shaders/dimensions/DH_solid.fsh b/shaders/dimensions/DH_solid.fsh index ad1136c..5aeba68 100644 --- a/shaders/dimensions/DH_solid.fsh +++ b/shaders/dimensions/DH_solid.fsh @@ -2,6 +2,7 @@ varying vec4 pos; +varying vec4 localPos; varying vec4 gcolor; varying vec2 lightmapCoords; varying vec4 normals_and_materials; @@ -10,6 +11,7 @@ flat varying float EMISSIVE; flat varying int dh_material_id; uniform float far; +uniform float nightVision; // uniform int hideGUI; uniform mat4 gbufferModelView; uniform mat4 gbufferModelViewInverse; @@ -53,6 +55,7 @@ float encodeVec2(float x,float y){ uniform mat4 gbufferProjection; uniform mat4 gbufferProjectionInverse; +uniform vec3 cameraPosition; vec3 toScreenSpace(vec3 p) { vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); @@ -95,7 +98,48 @@ float densityAtPos(in vec3 pos){ return mix(xy.r,xy.g, f.y); } -uniform vec3 cameraPosition; + +// https://gitlab.com/jeseibel/distant-horizons-core/-/blob/main/core/src/main/resources/shaders/flat_shaded.frag?ref_type=heads +// Property of Distant Horizons [mod] + +const int noiseSteps = 4; +const float noiseIntensity = 10.0; +const int noiseDropoff = 1024; + +float rand(float co) { return fract(sin(co*(91.3458)) * 47453.5453); } +float rand(vec2 co) { return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); } +float rand(vec3 co) { return rand(co.xy + rand(co.z)); } + +vec3 quantize(const in vec3 val, const in int stepSize) { + return floor(val * stepSize) / stepSize; +} + +vec4 applyNoise(in vec4 fragColor, const in vec3 viewPos, const in float viewDist) { + // vec3 vertexNormal = normalize(cross(dFdy(vPos.xyz), dFdx(vPos.xyz))); + // // This bit of code is required to fix the vertex position problem cus of floats in the verted world position varuable + // vec3 fixedVPos = vPos.xyz + vertexNormal * 0.001; + + float noiseAmplification = noiseIntensity * 0.01; + float lum = (fragColor.r + fragColor.g + fragColor.b) / 3.0; + noiseAmplification = (1.0 - pow(lum * 2.0 - 1.0, 2.0)) * noiseAmplification; // Lessen the effect on depending on how dark the object is, equasion for this is -(2x-1)^{2}+1 + noiseAmplification *= fragColor.a; // The effect would lessen on transparent objects + + // Random value for each position + float randomValue = rand(quantize(viewPos, noiseSteps)) + * 2.0 * noiseAmplification - noiseAmplification; + + // Modifies the color + // A value of 0 on the randomValue will result in the original color, while a value of 1 will result in a fully bright color + vec3 newCol = fragColor.rgb + (1.0 - fragColor.rgb) * randomValue; + newCol = clamp(newCol, 0.0, 1.0); + + if (noiseDropoff != 0) { + float distF = min(viewDist / noiseDropoff, 1.0); + newCol = mix(newCol, fragColor.rgb, distF); // The further away it gets, the less noise gets applied + } + + return vec4(newCol,1.0); +} /* RENDERTARGETS:1,7,8 */ void main() { @@ -107,7 +151,7 @@ void main() { float maxOverdrawDistance = OVERDRAW_MAX_DISTANCE; #endif - if(clamp(1.0-length(pos.xyz)/clamp(far - 32.0,32.0,maxOverdrawDistance),0.0,1.0) > 0.0 ){ + if(clamp(1.0-length(localPos.xyz)/clamp(far - 32.0,32.0,maxOverdrawDistance),0.0,1.0) > 0.0 ){ discard; return; } @@ -120,11 +164,14 @@ void main() { // PackLightmaps.y *= 1.05; PackLightmaps = min(max(PackLightmaps,0.0)*1.05,1.0); - vec4 data1 = clamp( encode(normals, PackLightmaps), 0.0, 1.0); + vec4 data1 = clamp( encode(viewToWorld(normals), PackLightmaps), 0.0, 1.0); // alpha is material masks, set it to 0.65 to make a DH LODs mask. - vec4 Albedo = vec4(gcolor.rgb, 1.0); - + #ifdef DH_NOISE_TEXTURE + vec4 Albedo = applyNoise(gcolor, localPos.rgb+cameraPosition, length(localPos.xyz)); + #else + vec4 Albedo = vec4(gcolor.rgb, 1.0); + #endif // vec3 worldPos = mat3(gbufferModelViewInverse)*pos.xyz + cameraPosition; // worldPos = (worldPos*vec3(1.0,1./48.,1.0)/4) ; // worldPos = floor(worldPos * 4.0 + 0.001) / 32.0; diff --git a/shaders/dimensions/DH_solid.vsh b/shaders/dimensions/DH_solid.vsh index bab0fb9..38e1e37 100644 --- a/shaders/dimensions/DH_solid.vsh +++ b/shaders/dimensions/DH_solid.vsh @@ -2,12 +2,14 @@ #include "/lib/res_params.glsl" varying vec4 pos; +varying vec4 localPos; varying vec4 gcolor; varying vec2 lightmapCoords; varying vec4 normals_and_materials; flat varying float SSSAMOUNT; flat varying float EMISSIVE; flat varying int dh_material_id; +uniform float nightVision; uniform vec2 texelSize; uniform int framemod8; @@ -25,9 +27,9 @@ uniform float far; -/* uniform mat4 gbufferModelViewInverse; uniform mat4 gbufferModelView; + uniform float far; uniform mat4 dhProjection; uniform vec3 cameraPosition; @@ -37,38 +39,45 @@ uniform vec3 cameraPosition; vec4 toClipSpace3(vec3 viewSpacePosition) { return vec4(projMAD(dhProjection, viewSpacePosition),-viewSpacePosition.z); } -*/ #define SEASONS_VSH #define DH_SEASONS #include "/lib/climate_settings.glsl" void main() { - gl_Position = ftransform(); - /* - vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; + // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + // vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; + // #ifdef PLANET_CURVATURE + // float curvature = length(worldpos) / (16*8); + // worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + // #endif + // position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; - float cellSize = 32*2; - vec3 modulusWorldPos = vec3(worldpos.x,worldpos.y,worldpos.z) + fract(cameraPosition/cellSize)*cellSize - cellSize*0.5; + // gl_Position = toClipSpace3(position); + + vec4 vPos = gl_Vertex; + + vec3 cameraOffset = fract(cameraPosition); + vPos.xyz = floor(vPos.xyz + cameraOffset + 0.5) - cameraOffset; + + vec4 viewPos = gl_ModelViewMatrix * vPos; + localPos = gbufferModelViewInverse * viewPos; + gl_Position = dhProjection * viewPos; - worldpos.y -= (clamp(1.0-length(modulusWorldPos)/max(far-32,0.0),0.0,1.0)) * 50.0; - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; - gl_Position = toClipSpace3(position); - */ #ifdef TAA_UPSCALING gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; #endif + #ifdef TAA gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; #endif - lightmapCoords = gl_MultiTexCoord1.xy; // is this even correct? lol' + lightmapCoords = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy; gcolor = gl_Color; - pos = gl_ModelViewMatrix * gl_Vertex; + EMISSIVE = 0.0; if(dhMaterialId == DH_BLOCK_ILLUMINATED || gl_MultiTexCoord1.x >= 0.95) EMISSIVE = 0.5; @@ -85,7 +94,6 @@ void main() { normals_and_materials = vec4(normalize(gl_NormalMatrix * gl_Normal), MATERIALS); dh_material_id = dhMaterialId; - #if defined Seasons && defined OVERWORLD_SHADER YearCycleColor(gcolor.rgb, gl_Color.rgb, dhMaterialId == DH_BLOCK_LEAVES, dhMaterialId == DH_BLOCK_GRASS); #endif diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 950b54a..0f9533f 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -117,10 +117,22 @@ uniform int isEyeInWater; uniform float rainStrength; #ifdef OVERWORLD_SHADER + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif +#ifndef OVERWORLD_SHADER +#undef WATER_SUN_SPECULAR +#endif float GGX(vec3 n, vec3 v, vec3 l, float r, float f0) { r = max(pow(r,2.5), 0.0001); @@ -200,16 +212,30 @@ vec3 rayTrace(vec3 dir, vec3 position,float dither, float fresnel, bool inwater) return vec3(1.1); } + +float interleaved_gradientNoise_temporal(){ + #ifdef TAA + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); + #else + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); + #endif +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} float R2_dither(){ - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += + (frameCounter%40000) * 2.0; + #endif + vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } -float interleaved_gradientNoise(){ - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; - float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715) ) ); - return noise ; -} + vec3 viewToWorld(vec3 viewPos) { vec4 pos; pos.xyz = viewPos; @@ -246,6 +272,10 @@ vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ return normalize(bump*tbnMatrix); } +#define FORWARD_SPECULAR +#define FORWARD_ENVIORNMENT_REFLECTION +#define FORWARD_BACKGROUND_REFLECTION +#define FORWARD_ROUGH_REFLECTION /* RENDERTARGETS:2,7 */ void main() { @@ -310,7 +340,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/80.0; + vec3 DirectLightColor = lightCol.rgb/2400.0; float NdotL = clamp(dot(normals, normalize(WsunVec2)),0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); @@ -342,13 +372,14 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) Shadows = shadow2D(shadow, projectedShadowPosition + vec3(0.0,0.0, smallbias)).x; } #endif - #ifdef CLOUDS_SHADOWS - Shadows *= pow(GetCloudShadow(playerPos),3); - #endif + + #ifdef CLOUDS_SHADOWS + Shadows *= GetCloudShadow(playerPos + cameraPosition, WsunVec); + #endif Direct_lighting = DirectLightColor * NdotL * Shadows; - vec3 AmbientLightColor = averageSkyCol_Clouds/30.0; + vec3 AmbientLightColor = averageSkyCol_Clouds/900.0; vec3 ambientcoefs = normals_and_materials.xyz / dot(abs(normals_and_materials.xyz), vec3(1.0)); float SkylightDir = ambientcoefs.y*1.5; @@ -366,7 +397,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo; // specular - #ifdef WATER_REFLECTIONS + #ifdef FORWARD_SPECULAR vec3 Reflections_Final = vec3(0.0); vec4 Reflections = vec4(0.0); vec3 BackgroundReflection = FinalColor; @@ -386,8 +417,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifdef SNELLS_WINDOW if(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0); #endif - #if defined SCREENSPACE_REFLECTIONS && defined DH_SCREENSPACE_REFLECTIONS - vec3 rtPos = rayTrace(reflectedVector, viewPos, interleaved_gradientNoise(), fresnel, false); + #if defined FORWARD_ENVIORNMENT_REFLECTION && defined DH_SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector, viewPos, interleaved_gradientNoise_temporal(), fresnel, false); if (rtPos.z < 1.){ vec3 previousPosition = mat3(gbufferModelViewInverse) * DH_toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; @@ -398,11 +429,11 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) } } #endif - #ifdef WATER_BACKGROUND_SPECULAR - BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 30.0; + #ifdef FORWARD_BACKGROUND_REFLECTION + BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 1200.0; #endif #ifdef WATER_SUN_SPECULAR - SunReflection = Direct_lighting * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); + SunReflection = (DirectLightColor * Shadows) * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); #endif Reflections_Final = mix(BackgroundReflection, Reflections.rgb, Reflections.a) * fresnel; diff --git a/shaders/dimensions/DH_translucent.vsh b/shaders/dimensions/DH_translucent.vsh index 458b070..4d9372f 100644 --- a/shaders/dimensions/DH_translucent.vsh +++ b/shaders/dimensions/DH_translucent.vsh @@ -14,7 +14,7 @@ flat varying vec3 averageSkyCol_Clouds; flat varying vec4 lightCol; #ifdef OVERWORLD_SHADER - #if defined Daily_Weather + #ifdef Daily_Weather flat varying vec4 dailyWeatherParams0; flat varying vec4 dailyWeatherParams1; #endif @@ -56,11 +56,26 @@ vec4 toClipSpace3(vec3 viewSpacePosition) { } void main() { - gl_Position = ftransform(); + gl_Position = dhProjection * gl_ModelViewMatrix * gl_Vertex; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; + + // worldpos.y -= length(worldpos)/(16*2); + + #ifdef PLANET_CURVATURE + float curvature = length(worldpos) / (16*8); + worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + #endif + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + + gl_Position = toClipSpace3(position); pos = gl_ModelViewMatrix * gl_Vertex; + + // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + isWater = 0; @@ -68,13 +83,13 @@ void main() { isWater = 1; // offset water to not look like a full cube - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz ; - worldpos.y -= 1.8/16.0; - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + // vec3 worldpos = mat3(gbufferModelViewInverse) * position;// + gbufferModelViewInverse[3].xyz ; + // worldpos.y -= 1.8/16.0; + // position = mat3(gbufferModelView) * worldpos;// + gbufferModelView[3].xyz; } - gl_Position = toClipSpace3(position); + // gl_Position = toClipSpace3(position); normals_and_materials = vec4(normalize(gl_Normal), 1.0); @@ -83,7 +98,6 @@ void main() { - lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 2a497d7..2bc5656 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -62,17 +62,25 @@ uniform vec2 texelSize; uniform ivec2 eyeBrightnessSmooth; uniform float rainStrength; +uniform float nightVision; + flat varying float HELD_ITEM_BRIGHTNESS; -#ifndef OVERWORLD_SHADER - uniform float nightVision; -#endif + #include "/lib/util.glsl" #ifdef OVERWORLD_SHADER - + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + #define CLOUDSHADOWSONLY + #include "/lib/volumetricClouds.glsl" #endif @@ -223,8 +231,8 @@ vec3 toClipSpace3(vec3 viewSpacePosition) { } flat varying vec3 WsunVec2; -const float mincoord = 1.0/4096.0; -const float maxcoord = 1.0-mincoord; + const float mincoord = 1.0/4096.0; + const float maxcoord = 1.0-mincoord; uniform sampler2D normals; varying vec4 tangent; @@ -373,7 +381,12 @@ void main() { #else vec3 playerCamPos = cameraPosition; #endif - lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); + // lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); + if(HELD_ITEM_BRIGHTNESS > 0.0){ + float pointLight = clamp(1.0-length((feetPlayerPos+cameraPosition)-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0); + lightmap.x = mix(lightmap.x, HELD_ITEM_BRIGHTNESS, pointLight*pointLight); + } + #endif #ifdef WEATHER @@ -402,7 +415,7 @@ void main() { if(lightmap.x >= 0.9) Torch_Color *= LIT_PARTICLE_BRIGHTNESS; #ifdef OVERWORLD_SHADER - directLightColor = lightCol.rgb/80.0; + directLightColor = lightCol.rgb/2400.0; float Shadows = 1.0; vec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; @@ -417,7 +430,7 @@ void main() { Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); #ifdef CLOUDS_SHADOWS - Shadows *= GetCloudShadow(feetPlayerPos); + Shadows *= GetCloudShadow(feetPlayerPos+cameraPosition, WsunVec); #endif Direct_lighting = directLightColor * Shadows; @@ -426,7 +439,7 @@ void main() { Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; #endif - AmbientLightColor = averageSkyCol_Clouds / 30.0; + AmbientLightColor = averageSkyCol_Clouds / 900.0; #ifdef IS_IRIS AmbientLightColor *= 2.5; @@ -438,11 +451,11 @@ void main() { #endif #ifdef NETHER_SHADER - Indirect_lighting = skyCloudsFromTexLOD2(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 30.0; + Indirect_lighting = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0; #endif #ifdef END_SHADER - Indirect_lighting = vec3(0.3,0.6,1.0) * 0.5; + Indirect_lighting = vec3(0.3,0.6,1.0) * 0.1; #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING diff --git a/shaders/dimensions/all_particles.vsh b/shaders/dimensions/all_particles.vsh index 20114e5..115f358 100644 --- a/shaders/dimensions/all_particles.vsh +++ b/shaders/dimensions/all_particles.vsh @@ -23,10 +23,12 @@ flat varying float exposure; flat varying vec3 averageSkyCol_Clouds; flat varying vec4 lightCol; flat varying vec3 WsunVec; - #if defined Daily_Weather + + #ifdef Daily_Weather flat varying vec4 dailyWeatherParams0; flat varying vec4 dailyWeatherParams1; #endif + #endif @@ -106,12 +108,12 @@ void main() { vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; - bool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.94; + bool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.99; if(!istopv){ - worldpos.xyz -= cameraPosition; + worldpos.xyz -= cameraPosition - vec3(2.0,0.0,2.0) * min(max(eyeBrightnessSmooth.y/240.0-0.95,0.0)*11.0,1.0); }else{ - worldpos.xyz -= cameraPosition + vec3(2.0,0.0,2.0); + worldpos.xyz -= cameraPosition ; } position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; @@ -140,8 +142,8 @@ void main() { WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); #if defined Daily_Weather - dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0) / 2.0, 0.0); - dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0) / 2.0, 0.0); + dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); #endif #endif diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index 5fcaa59..096f728 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -94,25 +94,40 @@ flat varying int SIGN; flat varying float HELD_ITEM_BRIGHTNESS; uniform float noPuddleAreas; - +uniform float nightVision; // float interleaved_gradientNoise(){ // return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); // } + float interleaved_gradientNoise_temporal(){ - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); + #ifdef TAA + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); + #else + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); + #endif } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } -float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); -} float R2_dither(){ + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += + (frameCounter%40000) * 2.0; + #endif + vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; + return fract(alpha.x * coord.x + alpha.y * coord.y ) ; +} +float blueNoise(){ + #ifdef TAA + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #else + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); + #endif } mat3 inverseMatrix(mat3 m) { @@ -311,7 +326,8 @@ void main() { vec2 tempOffset = offsets[framemod8]; vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); - vec3 worldpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + vec3 playerpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 worldpos = playerpos + cameraPosition; float torchlightmap = lmtexcoord.z; @@ -322,8 +338,11 @@ void main() { vec3 playerCamPos = cameraPosition; #endif - if(HELD_ITEM_BRIGHTNESS > 0.0) torchlightmap = max(torchlightmap, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(worldpos-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); - + // if(HELD_ITEM_BRIGHTNESS > 0.0) torchlightmap = max(torchlightmap, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(worldpos-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); + if(HELD_ITEM_BRIGHTNESS > 0.0){ + float pointLight = clamp(1.0-length(worldpos-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0); + torchlightmap = mix(torchlightmap, HELD_ITEM_BRIGHTNESS, pointLight*pointLight); + } #ifdef HAND torchlightmap *= 0.9; #endif @@ -331,17 +350,17 @@ void main() { float lightmap = clamp( (lmtexcoord.w-0.9) * 10.0,0.,1.); - float rainfall = 0.0; - float Puddle_shape = 0.0; + // float rainfall = 1.0; + // float Puddle_shape = 0.0; - #if defined Puddles && defined WORLD && !defined ENTITIES && !defined HAND - rainfall = rainStrength * noPuddleAreas * lightmap; + // #if defined Puddles && defined WORLD && !defined ENTITIES && !defined HAND + // // rainfall = rainStrength * noPuddleAreas * lightmap; - Puddle_shape = clamp(lightmap - exp(-15.0 * pow(texture2D(noisetex, worldpos.xz * (0.020 * Puddle_Size) ).b,5.0)),0.0,1.0); - Puddle_shape *= clamp( viewToWorld(normal).y*0.5+0.5,0.0,1.0); - Puddle_shape *= rainStrength * noPuddleAreas ; + // // Puddle_shape = clamp(lightmap - exp(-15.0 * pow(texture2D(noisetex, worldpos.xz * (0.020 * Puddle_Size) ).b,5.0)),0.0,1.0); + // // Puddle_shape *= clamp( viewToWorld(normal).y*0.5+0.5,0.0,1.0); + // // Puddle_shape *= rainStrength * noPuddleAreas ; - #endif + // #endif vec2 adjustedTexCoord = lmtexcoord.xy; @@ -351,31 +370,38 @@ void main() { adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; // vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); vec3 viewVector = normalize(tbnMatrix*fragpos); - float dist = length(fragpos); + float dist = length(playerpos); + + float falloff = min(max(1.0-dist/MAX_OCCLUSION_DISTANCE,0.0) * 2.0,1.0); + + falloff = pow(1.0-pow(1.0-falloff,1.0),2.0); + + // falloff = 1; float maxdist = MAX_OCCLUSION_DISTANCE; if(!ifPOM) maxdist = 0.0; gl_FragDepth = gl_FragCoord.z; - if (dist < maxdist) { + if (falloff > 0.0) { float depthmap = readNormal(vtexcoord.st).a; float used_POM_DEPTH = 1.0; + float pomdepth = POM_DEPTH*falloff; if ( viewVector.z < 0.0 && depthmap < 0.9999 && depthmap > 0.00001) { float noise = blueNoise(); #ifdef Adaptive_Step_length - vec3 interval = (viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS * POM_DEPTH) * clamp(1.0-pow(depthmap,2),0.1,1.0); + vec3 interval = (viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS * pomdepth) * clamp(1.0-pow(depthmap,2),0.1,1.0); used_POM_DEPTH = 1.0; #else - vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*POM_DEPTH; + vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*pomdepth; #endif vec3 coord = vec3(vtexcoord.st , 1.0); coord += interval * noise * used_POM_DEPTH; float sumVec = noise; - for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH * readNormal(coord.st).a ) < coord.p && coord.p >= 0.0; ++loopCount) { + for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - pomdepth + pomdepth * readNormal(coord.st).a ) < coord.p && coord.p >= 0.0; ++loopCount) { coord = coord + interval * used_POM_DEPTH; sumVec += used_POM_DEPTH; } @@ -403,7 +429,7 @@ void main() { //////////////////////////////// //////////////////////////////// float textureLOD = bias(); vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color; - + // Albedo.rgb = vec3(1.0) * min(max(exp(-15.0 * pow(1.0-luma(Albedo.rgb),3.0)) - 0.2,0.0)*5.0,1.0); #if defined HAND if (Albedo.a < 0.1) discard; #endif @@ -483,7 +509,7 @@ void main() { NormalTex.xy = NormalTex.xy * 2.0-1.0; NormalTex.z = sqrt(max(1.0 - dot(NormalTex.xy, NormalTex.xy), 0.0)); - normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0-Puddle_shape); + normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0); #endif //////////////////////////////// //////////////////////////////// @@ -493,8 +519,8 @@ void main() { #ifdef WORLD vec4 SpecularTex = texture2D_POMSwitch(specular, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM,textureLOD); - SpecularTex.r = max(SpecularTex.r, rainfall); - SpecularTex.g = max(SpecularTex.g, max(Puddle_shape*0.02,0.02)); + // SpecularTex.r = max(SpecularTex.r, rainfall); + // SpecularTex.g = max(SpecularTex.g, max(Puddle_shape*0.02,0.02)); gl_FragData[1].rg = SpecularTex.rg; @@ -543,24 +569,23 @@ void main() { //////////////////////////////// //////////////////////////////// #ifdef WORLD - #ifdef Puddles - float porosity = 0.4; + // #ifdef Puddles + // float porosity = 0.4; - #ifdef Porosity - porosity = SpecularTex.z >= 64.5/255.0 ? 0.0 : (SpecularTex.z*255.0/64.0)*0.65; - #endif + // #ifdef Porosity + // porosity = SpecularTex.z >= 64.5/255.0 ? 0.0 : (SpecularTex.z*255.0/64.0)*0.65; + // #endif - if(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity); - #endif + // // if(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity); + // #endif // apply noise to lightmaps to reduce banding. vec2 PackLightmaps = vec2(torchlightmap, lmtexcoord.w); - vec4 data1 = clamp( encode(viewToWorld(normal), PackLightmaps), 0.0, 1.0); - + gl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x), encodeVec2(Albedo.y,data1.y), encodeVec2(Albedo.z,data1.z), encodeVec2(data1.w,Albedo.w)); - gl_FragData[2] = vec4(FlatNormals * 0.5 + 0.5, VanillaAO); + gl_FragData[2] = vec4(viewToWorld(FlatNormals) * 0.5 + 0.5, VanillaAO); #endif } \ No newline at end of file diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 89abca9..32f8074 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -83,7 +83,7 @@ flat varying int SIGN; // in vec3 at_velocity; // out vec3 velocity; - +uniform float nightVision; uniform mat4 gbufferModelView; uniform mat4 gbufferModelViewInverse; @@ -198,6 +198,8 @@ void main() { VanillaAO = 1.0 - clamp(color.a,0,1); if (color.a < 0.3) color.a = 1.0; // fix vanilla ao on some custom block models. + + /////// ----- RANDOM STUFF ----- /////// // gl_TextureMatrix[0] for animated things like charged creepers @@ -241,6 +243,7 @@ void main() { NameTags = 0; #ifdef ENTITIES + // disallow POM to work on item frames. if(entityId == ENTITY_ITEM_FRAME) SIGN = 1; @@ -297,7 +300,7 @@ void main() { mc_Entity.x == BLOCK_AMETHYST_BUD_MEDIUM || mc_Entity.x == BLOCK_AMETHYST_BUD_LARGE || mc_Entity.x == BLOCK_AMETHYST_CLUSTER || mc_Entity.x == BLOCK_BAMBOO || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_VINE ) { - SSSAMOUNT = 0.75; + SSSAMOUNT = 0.0; } // low #ifdef MISC_BLOCK_SSS @@ -328,6 +331,7 @@ void main() { #endif + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; #ifdef WAVY_PLANTS // also use normal, so up/down facing geometry does not get detatched from its model parts. @@ -346,18 +350,24 @@ void main() { ) && abs(position.z) < 64.0 ){ - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; vec3 UnalteredWorldpos = worldpos; // apply displacement for waving plant blocks worldpos += calcMovePlants(worldpos + cameraPosition) * max(lmtexcoord.w,0.5); + // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly if(mc_Entity.x == BLOCK_AIR_WAVING) worldpos = UnalteredWorldpos + calcMoveLeaves(worldpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w; - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; } #endif + + #ifdef PLANET_CURVATURE + float curvature = length(worldpos) / (16*8); + worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + #endif + + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; gl_Position = toClipSpace3(position); #endif diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index 8d7910a..b987a77 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -36,7 +36,6 @@ uniform vec4 entityColor; flat varying float HELD_ITEM_BRIGHTNESS; -const bool colortex4MipmapEnabled = true; uniform sampler2D noisetex; uniform sampler2D depthtex1; uniform sampler2D depthtex0; @@ -84,11 +83,15 @@ uniform float rainStrength; uniform float skyIntensityNight; uniform float skyIntensity; uniform ivec2 eyeBrightnessSmooth; +uniform float nightVision; + uniform int frameCounter; uniform float frameTimeCounter; uniform vec2 texelSize; uniform int framemod8; +uniform float viewWidth; +uniform float viewHeight; uniform mat4 gbufferPreviousModelView; uniform vec3 previousCameraPosition; @@ -110,11 +113,18 @@ uniform vec3 nsunColor; #ifdef OVERWORLD_SHADER flat varying float Flashing; #include "/lib/lightning_stuff.glsl" - + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" -#else - uniform float nightVision; + #endif #ifdef END_SHADER @@ -132,14 +142,12 @@ uniform vec3 nsunColor; #include "/lib/diffuse_lighting.glsl" -float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); -} -vec4 blueNoise(vec2 coord){ - return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; -} float interleaved_gradientNoise_temporal(){ - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); + #ifdef TAA + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); + #else + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); + #endif } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; @@ -147,20 +155,27 @@ float interleaved_gradientNoise(){ return noise; } float R2_dither(){ - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += + (frameCounter%40000) * 2.0; + #endif + vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } +float blueNoise(){ + #ifdef TAA + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #else + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); + #endif +} + #include "/lib/TAA_jitter.glsl" - - - - - - #define PW_DEPTH 1.5 //[0.5 1.0 1.5 2.0 2.5 3.0] #define PW_POINTS 2 //[2 4 6 8 16 32] @@ -239,91 +254,10 @@ float encodeVec2(float x,float y){ } -float invLinZ (float lindepth){ - return -((2.0*near/lindepth)-far-near)/(far-near); -} float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } -vec3 rayTrace(vec3 dir, vec3 position,float dither, float fresnel, bool inwater, inout float reflectLength){ - - float quality = mix(15,SSR_STEPS,fresnel); - - // quality = SSR_STEPS; - - vec3 clipPosition = toClipSpace3(position); - float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? - (-near -position.z) / dir.z : far*sqrt(3.); - vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space - direction.xy = normalize(direction.xy); - - //get at which length the ray intersects with the edge of the screen - vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; - float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); - - - vec3 stepv = direction * mult / quality * vec3(RENDER_SCALE,1.0); - - - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; - float minZ = clipPosition.z; - float maxZ = spos.z+stepv.z*0.5; - - spos.xy += offsets[framemod8]*texelSize*0.5/RENDER_SCALE; - - float dist = 1.0 + clamp(position.z*position.z/50.0,0,2); // shrink sample size as distance increases - for (int i = 0; i <= int(quality); i++) { - - // decode depth buffer - // float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0); - - float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4.0),0).a/65000.0); - sp = invLinZ(sp); - - if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)) return vec3(spos.xy/RENDER_SCALE,sp); - - - - - spos += stepv; - //small bias - if(inwater) { - minZ = maxZ-0.00035/ld(spos.z); - }else{ - minZ = maxZ-0.0001/max(ld(spos.z), (0.0 + position.z*position.z*0.001)); - } - maxZ += stepv.z; - - - reflectLength += 1.0 / quality; // for shit - } - - return vec3(1.1); -} - -float GGX(vec3 n, vec3 v, vec3 l, float r, float f0) { - r = max(pow(r,2.5), 0.0001); - - vec3 h = l + v; - float hn = inversesqrt(dot(h, h)); - - float dotLH = clamp(dot(h,l)*hn,0.,1.); - float dotNH = clamp(dot(h,n)*hn,0.,1.) ; - float dotNL = clamp(dot(n,l),0.,1.); - float dotNHsq = dotNH*dotNH; - - float denom = dotNHsq * r - dotNHsq + 1.; - float D = r / (3.141592653589793 * denom * denom); - - float F = f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH); - float k2 = .25 * r; - - return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); -} - - - uniform float dhFarPlane; #include "/lib/DistantHorizons_projections.glsl" @@ -426,12 +360,19 @@ void Emission( float Emission, float exposure ){ - float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); - if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * Emissive_Brightness * autoBrightnessAdjust * 0.1, pow(Emission, Emissive_Curve)); // old method.... idk why + // float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); // old method.... idk why } uniform vec3 eyePosition; +#define FORWARD_SPECULAR +#define FORWARD_ENVIORNMENT_REFLECTION +#define FORWARD_BACKGROUND_REFLECTION +#define FORWARD_ROUGH_REFLECTION + +#include "/lib/specular.glsl" + //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -486,7 +427,9 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) gl_FragData[0] = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) * color; float UnchangedAlpha = gl_FragData[0].a; - + + // gl_FragData[0].a = pow(gl_FragData[0].a,3); + #ifdef WhiteWorld gl_FragData[0].rgb = vec3(0.5); gl_FragData[0].a = 1.0; @@ -532,8 +475,6 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 worldSpaceNormal = viewToWorld(normal).xyz; vec2 TangentNormal = vec2(0); // for refractions - - vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, tangent.y, tangent2.y, normal.y, @@ -541,17 +482,14 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 NormalTex = vec3(texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).xy,0.0); NormalTex.xy = NormalTex.xy*2.0-1.0; - NormalTex.z = clamp(sqrt(1.0 - dot(NormalTex.xy, NormalTex.xy)),0.0,1.0) ; - - // tangent space normals for refraction - TangentNormal = NormalTex.xy*0.5+0.5; - + NormalTex.z = clamp(sqrt(1.0 - dot(NormalTex.xy, NormalTex.xy)),0.0,1.0); + #ifndef HAND if (isWater){ vec3 posxz = (mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz) + cameraPosition; // make the waves flow in the direction the water faces, except for perfectly up facing parts. - if(abs(worldSpaceNormal.y) < 0.9995) posxz.xz -= (posxz.y + frameTimeCounter*3 * WATER_WAVE_SPEED) * normalize(worldSpaceNormal.xz) ; + if(abs(worldSpaceNormal.y) < 0.9995) posxz.xz -= posxz.y + normalize(worldSpaceNormal.xz*10.0) * frameTimeCounter * 3.0 * WATER_WAVE_SPEED; posxz.xyz = getParallaxDisplacement(posxz); vec3 bump = normalize(getWaveNormal(posxz, false)); @@ -560,22 +498,24 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); NormalTex.xyz = bump; - - // tangent space normals for refraction - TangentNormal = (bump.xy/3.0)*0.5+0.5; } #endif + // tangent space normals for refraction + TangentNormal = NormalTex.xy; + normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0); - gl_FragData[2] = vec4(encodeVec2(TangentNormal), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), 1.0); + // TangentNormal = clamp(TangentNormal + (blueNoise()*2.0-1.0)*0.005,-1.0,1.0); + + gl_FragData[2] = vec4(encodeVec2(TangentNormal*0.5+0.5), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), 1.0); //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECULARS ///////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// - vec3 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rga; + vec3 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rga; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// DIFFUSE LIGHTING ////////////////////////////// //////////////////////////////////////////////////////////////////////////////// @@ -594,7 +534,12 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #else vec3 playerCamPos = cameraPosition; #endif - lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS*clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); + + if(HELD_ITEM_BRIGHTNESS > 0.0){ + float pointLight = clamp(1.0-length((feetPlayerPos+cameraPosition)-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0); + lightmap.x = mix(lightmap.x , HELD_ITEM_BRIGHTNESS, pointLight*pointLight); + } + #endif vec3 Indirect_lighting = vec3(0.0); @@ -604,7 +549,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/80.0; + vec3 DirectLightColor = lightCol.rgb/2400.0; float NdotL = clamp(dot(normal, normalize(WsunVec*mat3(gbufferModelViewInverse))),0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); float Shadows = 1.0; @@ -619,11 +564,13 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); - Shadows *= pow(GetCloudShadow(feetPlayerPos),3); + #ifdef CLOUDS_SHADOWS + Shadows *= GetCloudShadow(feetPlayerPos+cameraPosition, WsunVec); + #endif Direct_lighting = DirectLightColor * NdotL * Shadows; - vec3 AmbientLightColor = averageSkyCol_Clouds/30.0; + vec3 AmbientLightColor = averageSkyCol_Clouds/900.0; vec3 ambientcoefs = worldSpaceNormal / dot(abs(worldSpaceNormal), vec3(1.0)); float SkylightDir = ambientcoefs.y*1.5; @@ -635,26 +582,41 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #endif #ifdef NETHER_SHADER - Indirect_lighting = skyCloudsFromTexLOD2(worldSpaceNormal, colortex4, 6).rgb / 30.0 ; + Indirect_lighting = volumetricsFromTex(normalize(worldSpaceNormal), colortex4, 0).rgb / 1200.0 / 1.5; #endif #ifdef END_SHADER + // float vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0); + // vec3 lightPos = LightSourcePosition(feetPlayerPos+cameraPosition, cameraPosition,vortexBounds); + + + // float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; + // vec3 lightColors = LightSourceColors(vortexBounds, lightningflash); + + // float NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); + + // NdotL *= NdotL; + + // Direct_lighting = lightColors * endFogPhase(lightPos) * NdotL; + float vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0); vec3 lightPos = LightSourcePosition(feetPlayerPos+cameraPosition, cameraPosition,vortexBounds); - float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; vec3 lightColors = LightSourceColors(vortexBounds, lightningflash); - - float NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); - NdotL *= NdotL; + float end_NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); + end_NdotL *= end_NdotL; - Direct_lighting = lightColors * endFogPhase(lightPos) * NdotL; + float fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos); + float endPhase = endFogPhase(lightPos); - vec3 AmbientLightColor = vec3(0.3,0.6,1.0) * 0.5; + Direct_lighting += lightColors * endPhase * end_NdotL * fogShadow; + + vec3 AmbientLightColor = vec3(0.3,0.6,1.0) ; Indirect_lighting = AmbientLightColor + 0.7 * AmbientLightColor * dot(worldSpaceNormal, normalize(feetPlayerPos)); + Indirect_lighting *= 0.1; #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING @@ -680,136 +642,66 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo; + #if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3 + Emission(FinalColor, Albedo, SpecularTex.b, exposure); + #endif + //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECULAR LIGHTING ///////////////////////////// //////////////////////////////////////////////////////////////////////////////// #ifdef DAMAGE_BLOCK_EFFECT - #undef WATER_REFLECTIONS + #undef FORWARD_SPECULAR #endif - #ifndef OVERWORLD_SHADER - #undef WATER_SUN_SPECULAR - #endif + #ifdef FORWARD_SPECULAR - #ifdef WATER_REFLECTIONS - // vec2 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rg; + float harcodedF0 = 0.02; // if nothing is chosen, no smoothness and no reflectance vec2 specularValues = vec2(1.0, 0.0); - + // hardcode specular values for select blocks like glass, water, and slime - if(isReflective) specularValues = vec2(1.0, 0.02); + if(isReflective) specularValues = vec2(1.0, harcodedF0); // detect if the specular texture is used, if it is, overwrite hardcoded values if(SpecularTex.r > 0.0 && SpecularTex.g <= 1.0) specularValues = SpecularTex.rg; - float roughness = pow(1.0-specularValues.r,2.0); - float f0 = isReflective ? max(specularValues.g, 0.02) : specularValues.g; + float f0 = isReflective ? max(specularValues.g, harcodedF0) : specularValues.g; #ifdef HAND - f0 = max(specularValues.g, 0.02); + f0 = max(specularValues.g, harcodedF0); #endif - - // f0 = SpecularTex.g; - // roughness = pow(1.0-specularValues.r,2.0); - // f0 = 0.9; - // roughness = 0.0; - - vec3 Metals = f0 > 229.5/255.0 ? normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3) : vec3(1.0); - - // make sure zero alpha is not forced to be full alpha by fresnel on items with funny normal padding + + float roughness = specularValues.r; + if(UnchangedAlpha <= 0.0 && !isReflective) f0 = 0.0; - + if (f0 > 0.0){ + if(isReflective) f0 = max(f0, harcodedF0); + + float reflectance = 0.0; - if(isReflective) f0 = max(f0, 0.02); - - vec3 Reflections_Final = vec3(0.0); - vec4 Reflections = vec4(0.0); - vec3 BackgroundReflection = FinalColor; - vec3 SunReflection = vec3(0.0); - float indoors = pow(1.0-pow(1.0-min(max(lightmap.y-0.6,0.0)*3.0,1.0),0.5),2.0); - - vec3 reflectedVector = reflect(normalize(viewPos), normal); - float normalDotEye = dot(normal, normalize(viewPos)); - - float fresnel = pow(clamp(1.0 + normalDotEye, 0.0, 1.0),5.0); - - /* - int seed = (frameCounter%40000) + frameCounter*2; - float noise = fract(R2_samples(seed).y + (1-blueNoise())); - mat3 Basis = CoordBase(viewToWorld(normal)); - vec3 ViewDir = -normalize(feetPlayerPos)*Basis; - vec3 SamplePoints = SampleVNDFGGX(ViewDir, vec2(roughness), noise); - vec3 Ln = reflect(-ViewDir, SamplePoints); - vec3 L = Basis * Ln; - fresnel = pow(clamp(1.0 + dot(-Ln, SamplePoints),0.0,1.0), 5.0); - */ - - #ifdef SNELLS_WINDOW - // snells window looking thing - if(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0); + #if !defined OVERWORLD_SHADER + + vec3 WsunVec = vec3(0.0); + vec3 DirectLightColor = WsunVec; + float Shadows = 0.0; #endif - fresnel = mix(f0, 1.0, fresnel); - - // Sun, Sky, and screen-space reflections - #ifdef OVERWORLD_SHADER - #ifdef WATER_SUN_SPECULAR - SunReflection = Direct_lighting * GGX(normal, -normalize(viewPos), WsunVec*mat3(gbufferModelViewInverse), max(roughness,0.035), f0) * Metals; - #endif - #ifdef WATER_BACKGROUND_SPECULAR - if(isEyeInWater == 0 && !isReflectiveEntity) BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 30.0 * Metals; - #endif - - if(isEyeInWater == 1 && isWater) BackgroundReflection.rgb = exp(-8.0 * vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B)) * clamp(WsunVec.y*lightCol.a,0,1); - #else - #ifdef WATER_BACKGROUND_SPECULAR - if(isEyeInWater == 0) BackgroundReflection = skyCloudsFromTexLOD2(mat3(gbufferModelViewInverse) * reflectedVector, colortex4, 0).rgb / 30.0 * Metals; - #endif - #endif - - #ifdef SCREENSPACE_REFLECTIONS - float reflectLength = 0.0; - vec3 rtPos = rayTrace(reflectedVector, viewPos.xyz, interleaved_gradientNoise_temporal(), fresnel, isEyeInWater == 1,reflectLength); - if (rtPos.z < 1.0){ - vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; - previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; - previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; - if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { - Reflections.a = 1.0; - Reflections.rgb = texture2D(colortex5, previousPosition.xy).rgb * Metals; - } - } - #endif - - float visibilityFactor = clamp(exp2((pow(roughness,3.0) / f0) * -4),0,1); - - Reflections_Final = mix(mix(FinalColor, BackgroundReflection, indoors), Reflections.rgb, Reflections.a) * fresnel * visibilityFactor; - Reflections_Final += SunReflection; - - //correct alpha channel with fresnel - float alpha0 = gl_FragData[0].a; - - gl_FragData[0].a = -gl_FragData[0].a * fresnel + gl_FragData[0].a + fresnel; - - // prevent reflections from being darkened by buffer blending - gl_FragData[0].rgb = clamp(FinalColor / gl_FragData[0].a*alpha0*(1.0-fresnel) * 0.1 + Reflections_Final / gl_FragData[0].a * 0.1,0.0,65100.0); - - if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.0); - - } else { - gl_FragData[0].rgb = FinalColor*0.1; + vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), WsunVec, vec3(blueNoise(), vec2(interleaved_gradientNoise_temporal())), viewToWorld(normal), roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * Shadows, lightmap.y, false, reflectance); + + gl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * reflectance; + + // invert the alpha blending darkening on the color so you can interpolate between diffuse and specular and keep buffer blending + gl_FragData[0].rgb = clamp(specularReflections / gl_FragData[0].a * 0.1,0.0,65000.0); + + }else{ + gl_FragData[0].rgb = clamp(FinalColor * 0.1,0.0,65000.0); } - #else gl_FragData[0].rgb = FinalColor*0.1; #endif - - #if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3 - Emission(gl_FragData[0].rgb, Albedo, SpecularTex.b, exposure); - #endif #if defined DISTANT_HORIZONS && defined DH_OVERDRAW_PREVENTION && !defined HAND bool WATER = texture2D(colortex7, gl_FragCoord.xy*texelSize).a > 0.0 && length(feetPlayerPos) > far-16*4 && texture2D(depthtex1, gl_FragCoord.xy*texelSize).x >= 1.0; @@ -824,16 +716,20 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) if(gl_FragCoord.x*texelSize.x < 0.47) gl_FragData[0] = vec4(0.0); #endif #if DEBUG_VIEW == debug_NORMALS - gl_FragData[0].rgb = normalize(normal.xyz) * 0.1; + gl_FragData[0].rgb = viewToWorld(normalize(normal.xyz)) * 0.1; + gl_FragData[0].a = 1; #endif #if DEBUG_VIEW == debug_INDIRECT - gl_FragData[0].rgb = Indirect_lighting* 0.1; + gl_FragData[0].rgb = Indirect_lighting * 0.1; #endif #if DEBUG_VIEW == debug_DIRECT gl_FragData[0].rgb = Direct_lighting * 0.1; #endif - gl_FragData[3].a = clamp(lightmap.y,0.0,1.0); + // gl_FragData[3].a = clamp(lightmap.y,0.0,1.0); + + gl_FragData[3] = vec4(encodeVec2(lightmap.x, lightmap.y), 1, 1, 1); + } } \ No newline at end of file diff --git a/shaders/dimensions/all_translucent.vsh b/shaders/dimensions/all_translucent.vsh index db0fdf6..fb10c20 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -25,10 +25,11 @@ flat varying float exposure; flat varying vec4 lightCol; flat varying vec3 WsunVec; - #if defined Daily_Weather + #ifdef Daily_Weather flat varying vec4 dailyWeatherParams0; flat varying vec4 dailyWeatherParams1; #endif + #endif varying vec4 normalMat; @@ -132,6 +133,15 @@ void main() { position = mat3(gbufferModelView) * (displacedPos - cameraPosition) + gbufferModelView[3].xyz; } #endif + + // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; + #ifdef PLANET_CURVATURE + float curvature = length(worldpos) / (16*8); + worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + #endif + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + gl_Position = toClipSpace3(position); HELD_ITEM_BRIGHTNESS = 0.0; @@ -149,7 +159,6 @@ void main() { // water mask if(mc_Entity.x == 8.0) { mat = 1.0; - gl_Position.z -= 1e-4; } // translucent entities @@ -193,8 +202,8 @@ void main() { // WsunVec = normalize(LightDir); #if defined Daily_Weather - dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); #endif #endif diff --git a/shaders/dimensions/all_vanilla_emissives.fsh b/shaders/dimensions/all_vanilla_emissives.fsh index e3f4828..925a79c 100644 --- a/shaders/dimensions/all_vanilla_emissives.fsh +++ b/shaders/dimensions/all_vanilla_emissives.fsh @@ -69,20 +69,20 @@ void main() { minimumBrightness = 10.0; #endif - float autoBrightnessAdjust = mix(minimumBrightness, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + // float autoBrightnessAdjust = mix(minimumBrightness, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); #ifdef DISABLE_VANILLA_EMISSIVES vec3 emissiveColor = vec3(0.0); Albedo.a = 0.0; #else - vec3 emissiveColor = Albedo.rgb * color.a * autoBrightnessAdjust; + vec3 emissiveColor = Albedo.rgb * color.a ;//* autoBrightnessAdjust; #endif gl_FragData[0] = vec4(emissiveColor*0.1, Albedo.a * sqrt(color.a)); #endif #ifdef ENCHANT_GLINT - float autoBrightnessAdjust = mix(0.1, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + // float autoBrightnessAdjust = mix(0.1, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); Albedo.rgb = clamp(Albedo.rgb ,0.0,1.0); // for safety @@ -90,7 +90,7 @@ void main() { vec3 GlintColor = vec3(0.0); Albedo.a = 0.0; #else - vec3 GlintColor = Albedo.rgb * autoBrightnessAdjust * Emissive_Brightness; + vec3 GlintColor = Albedo.rgb * Emissive_Brightness; #endif diff --git a/shaders/dimensions/composite.fsh b/shaders/dimensions/composite.fsh index ebe5d79..87e83b7 100644 --- a/shaders/dimensions/composite.fsh +++ b/shaders/dimensions/composite.fsh @@ -21,11 +21,14 @@ uniform sampler2D depthtex1; uniform sampler2D colortex1; uniform sampler2D colortex3; // Noise uniform sampler2D colortex6; // Noise +uniform sampler2D colortex7; // Noise uniform sampler2D colortex8; // Noise uniform sampler2D colortex14; // Noise +uniform sampler2D colortex10; // Noise uniform sampler2D colortex12; // Noise +uniform sampler2D colortex13; // Noise uniform sampler2D colortex15; // Noise - +uniform int isEyeInWater; uniform sampler2D shadow; #ifdef TRANSLUCENT_COLORED_SHADOWS @@ -121,30 +124,39 @@ vec2 decodeVec2(float a){ } - float interleaved_gradientNoise_temporal(){ - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); + vec2 coord = gl_FragCoord.xy; + + #ifdef TAA + coord += (frameCounter*9)%40000; + #endif + + return fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } - float R2_dither(){ - #ifdef TAA - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; - #else - vec2 coord = gl_FragCoord.xy; + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += (frameCounter*2)%40000; #endif + vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #ifdef TAA + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #else + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); + #endif } vec4 blueNoise(vec2 coord){ - return texelFetch2D(colortex6, ivec2(coord )%512 , 0); + return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } vec2 R2_samples(int n){ vec2 alpha = vec2(0.75487765, 0.56984026); @@ -236,63 +248,53 @@ float convertHandDepth_2(in float depth, bool hand) { ndcDepth /= MC_HAND_DEPTH; return ndcDepth * 0.5 + 0.5; } + vec2 SSAO( vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise ){ - // if(hand) return vec2(1.0,0.0); int samples = 7; float occlusion = 0.0; float sss = 0.0; + vec3 normalizedNormals = normalize(normal); + vec2 jitterOffsets = TAA_Offset*texelSize*0.5 * RENDER_SCALE - texelSize*0.5; - float dist = 1.0 + clamp(viewPos.z*viewPos.z/50.0,0,5); // shrink sample size as distance increases - float mulfov2 = gbufferProjection[1][1]/(3 * dist); - float maxR2 = viewPos.z*viewPos.z*mulfov2*2.0 * 5.0 / mix(4.0, 50.0, clamp(viewPos.z*viewPos.z - 0.1,0,1)); - - #ifdef Ambient_SSS - float maxR2_2 = viewPos.z;//*viewPos.z*mulfov2*2.*2./4.0; - - float dist3 = clamp(1-exp( viewPos.z*viewPos.z / -50),0,1); - // if(leaves) maxR2_2 = 0.1; - // if(leaves) maxR2_2 = mix(10, maxR2_2, dist3); - #endif - - vec2 acc = -(TAA_Offset*(texelSize/2.0))*RENDER_SCALE ; + // scale the offset radius down as distance increases. + float linearViewDistance = length(viewPos); + float distanceScale = hand ? 30.0 : mix(40.0, 10.0, pow(clamp(1.0 - linearViewDistance/50.0,0.0,1.0),2.0)); + float depthCancelation = (linearViewDistance*linearViewDistance) / distanceScale * 0.5; - // vec2 BLUENOISE = blueNoise(gl_FragCoord.xy).rg; - - int n = 0; - float leaf = leaves ? -0.5 : 0.0; + int n = 0; for (int i = 0; i < samples; i++) { - // vec2 sampleOffset = (SpiralSample(i, 7, 8 , noise)) * mulfov2 * clamp(0.05 + i*0.095, 0.0,0.3) ; - vec2 sampleOffset = CleanSample(i, samples - 1, noise) * mulfov2 * 0.3 ; + vec2 offsets = CleanSample(i, samples - 1, noise) / distanceScale; - ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)*RENDER_SCALE); + ivec2 offsetUV = ivec2(gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE); + + if (offsetUV.x >= 0 && offsetUV.y >= 0 && offsetUV.x < viewWidth*RENDER_SCALE.x && offsetUV.y < viewHeight*RENDER_SCALE.y ) { + + float sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, offsetUV, 0).x, hand); - if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth*RENDER_SCALE.x && offset.y < viewHeight*RENDER_SCALE.y ) { #ifdef DISTANT_HORIZONS - float dhdepth = texelFetch2D(dhDepthTex1, offset,0).x; + float sampleDHDepth = texelFetch2D(dhDepthTex1, offsetUV, 0).x; + vec3 offsetViewPos = toScreenSpace_DH((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth, sampleDHDepth); #else - float dhdepth = 0.0; + vec3 offsetViewPos = toScreenSpace(vec3((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth)); #endif - vec3 t0 = toScreenSpace_DH((offset*texelSize+acc+0.5*texelSize) * (1.0/RENDER_SCALE), convertHandDepth_2(texelFetch2D(depthtex1, offset,0).x, hand), dhdepth); - - vec3 vec = (t0.xyz - viewPos); - float dsquared = dot(vec, vec); + vec3 viewPosDiff = offsetViewPos - viewPos; + float viewPosDiffSquared = dot(viewPosDiff, viewPosDiff); - if (dsquared > 1e-5){ - - if( dsquared < maxR2){ - float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal)),0.,1.); - occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); + if (viewPosDiffSquared > 1e-5){ + if(viewPosDiffSquared < depthCancelation){ + float NdotV = clamp(dot(viewPosDiff*inversesqrt(viewPosDiffSquared), normalizedNormals),0.0,1.0); + occlusion += NdotV * clamp(1.0-(viewPosDiffSquared/depthCancelation),0.0,1.0); } - + #ifdef Ambient_SSS - sss += clamp(leaf - dot(vec, normalize(normal)),0.0,1.0); + sss += clamp(0.0 - dot(viewPosDiff, normalizedNormals),0.0,1.0) * exp(-10.0 * occlusion); #endif n += 1; @@ -302,6 +304,52 @@ vec2 SSAO( return max(1.0 - vec2(occlusion*AO_Strength, sss)/n, 0.0); } +float ScreenSpace_SSS( + vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise +){ + int samples = 7; + float occlusion = 0.0; + float sss = 0.0; + + vec3 normalizedNormals = normalize(normal); + vec2 jitterOffsets = TAA_Offset*texelSize*0.5 * RENDER_SCALE - texelSize*0.5; + + // scale the offset radius down as distance increases. + float linearViewDistance = length(viewPos); + float distanceScale = hand ? 30.0 : mix(40.0, 10.0, pow(clamp(1.0 - linearViewDistance/50.0,0.0,1.0),2.0)); + + float leaf = leaves ? -0.5 : 0.0; + + int n = 0; + for (int i = 0; i < samples; i++) { + + vec2 offsets = CleanSample(i, samples - 1, noise) / distanceScale; + + ivec2 offsetUV = ivec2(gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE); + + if (offsetUV.x >= 0 && offsetUV.y >= 0 && offsetUV.x < viewWidth*RENDER_SCALE.x && offsetUV.y < viewHeight*RENDER_SCALE.y ) { + + float sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, offsetUV, 0).x, hand); + + #ifdef DISTANT_HORIZONS + float sampleDHDepth = texelFetch2D(dhDepthTex1, offsetUV, 0).x; + vec3 offsetViewPos = toScreenSpace_DH((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth, sampleDHDepth); + #else + vec3 offsetViewPos = toScreenSpace(vec3((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth)); + #endif + + vec3 viewPosDiff = offsetViewPos - viewPos; + float viewPosDiffSquared = dot(viewPosDiff, viewPosDiff); + + if (viewPosDiffSquared > 1e-5){ + sss += clamp(leaf - dot(viewPosDiff, normalizedNormals),0.0,1.0); + n += 1; + } + } + } + return max(1.0 - sss/n, 0.0); +} + vec4 encode (vec3 n, vec2 lightmaps){ n.xy = n.xy / dot(abs(n), vec3(1.0)); n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; @@ -366,14 +414,59 @@ float sampleDepth(sampler2D depthTex, vec2 texcoord, bool hand){ return convertHandDepth_2(texture2D(depthTex, texcoord).r, hand); } +flat varying vec3 zMults; + +vec4 BilateralUpscale_VLFOG(sampler2D tex, sampler2D depth, vec2 coord, float referenceDepth){ + ivec2 scaling = ivec2(1.0/VL_RENDER_RESOLUTION); + ivec2 posDepth = ivec2(coord*VL_RENDER_RESOLUTION) * scaling; + ivec2 posColor = ivec2(coord*VL_RENDER_RESOLUTION); + ivec2 pos = ivec2(gl_FragCoord.xy*texelSize + 1); + + ivec2 getRadius[5] = ivec2[]( + ivec2(-1,-1), + ivec2( 1, 1), + ivec2(-1, 1), + ivec2( 1,-1), + ivec2( 0, 0) + ); + + #ifdef DISTANT_HORIZONS + float diffThreshold = 0.01; + #else + float diffThreshold = zMults.x; + #endif + + vec4 RESULT = vec4(0.0); + float SUM = 0.0; + + for (int i = 0; i < 4; i++) { + + ivec2 radius = getRadius[i]; + + #ifdef DISTANT_HORIZONS + float offsetDepth = sqrt(texelFetch2D(depth, posDepth + radius * scaling + pos * scaling,0).a/65000.0); + #else + float offsetDepth = ld(texelFetch2D(depth, posDepth + radius * scaling + pos * scaling, 0).r); + #endif + + float EDGES = abs(offsetDepth - referenceDepth) < diffThreshold ? 1.0 : 1e-5; + + RESULT += texelFetch2D(tex, posColor + radius + pos, 0) * EDGES; + + SUM += EDGES; + } + + return RESULT / SUM; +} -/* RENDERTARGETS:3,14,12*/ +#include "/lib/sky_gradient.glsl" + +/* RENDERTARGETS:3,14,12,10*/ void main() { float noise = R2_dither(); - vec2 texcoord = gl_FragCoord.xy*texelSize; float z = texture2D(depthtex1,texcoord).x; @@ -389,7 +482,7 @@ void main() { vec4 SHADOWDATA = vec4(0.0); - vec4 data = texture2D(colortex1,texcoord); + vec4 data = texelFetch2D(colortex1,ivec2(gl_FragCoord.xy),0); vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); vec3 normal = mat3(gbufferModelViewInverse) * clamp(worldToView( decode(dataUnpacked0.yw) ),-1.,1.); @@ -437,13 +530,11 @@ void main() { gl_FragData[2] = vec4(vec3(0.0), 65000.0); - vec3 FlatNormals = texture2D(colortex15,texcoord).rgb * 2.0 - 1.0; - - if(z >= 1.0){ - FlatNormals = normal; - } + vec3 FlatNormals = normalize(texture2D(colortex15,texcoord).rgb * 2.0 - 1.0); + if(z >= 1.0) FlatNormals = normal; - vec2 SSAO_SSS = SSAO(viewPos, FlatNormals, hand, isLeaf, noise); + + vec2 SSAO_SSS = SSAO(viewPos, worldToView(FlatNormals), hand, isLeaf, noise); if(swappedDepth >= 1.0) SSAO_SSS = vec2(1.0,0.0); @@ -453,6 +544,21 @@ void main() { #endif + + /*------------- VOLUMETRICS BEHIND TRANSLUCENTS PASS-THROUGH -------------*/ + // colortex10 is the history buffer used in reprojection of volumetrics, i can just hijack that. + gl_FragData[3] = texture2D(colortex10, texcoord); + + // if(texture2D(colortex7,texcoord).a > 0.0) { + // vec4 VL = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); + + // // gl_FragData[3].rgb += VL.rgb * gl_FragData[3].a; + // // gl_FragData[3].a *= VL.a; + // } + + + + #ifdef OVERWORLD_SHADER float SpecularTex = texture2D(colortex8,texcoord).z; float LabSSS = clamp((-64.0 + SpecularTex * 255.0) / 191.0 ,0.0,1.0); @@ -463,9 +569,7 @@ void main() { float minshadowfilt = Min_Shadow_Filter_Radius; float maxshadowfilt = Max_Shadow_Filter_Radius; - // if(lightmap.y < 0.1 && !entities){ - // maxshadowfilt = mix(minshadowfilt, maxshadowfilt, vanillAO); - // } + if(lightmap.y < 0.1) maxshadowfilt = min(maxshadowfilt, minshadowfilt); #ifdef BASIC_SHADOW_FILTER if (LabSSS > 0.0 && NdotL < 0.001){ diff --git a/shaders/dimensions/composite.vsh b/shaders/dimensions/composite.vsh index 785dc42..524b7ba 100644 --- a/shaders/dimensions/composite.vsh +++ b/shaders/dimensions/composite.vsh @@ -12,6 +12,10 @@ uniform vec3 sunPosition; uniform mat4 gbufferModelViewInverse; +flat varying vec3 zMults; + +uniform float far; +uniform float near; #include "/lib/util.glsl" #include "/lib/res_params.glsl" @@ -26,6 +30,8 @@ void main() { WsunVec = (float(sunElevation > 1e-5)*2-1.)*normalize(mat3(gbufferModelViewInverse) * sunPosition); + zMults = vec3(1.0/(far * near),far+near,far-near); + #ifdef TAA TAA_Offset = offsets[framemod8]; #else diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 3bbc665..e87d11b 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -17,6 +17,7 @@ #define projMAD_old(m, v) (diagonal3_old(m) * (v) + (m)[3].xyz) const bool colortex5MipmapEnabled = true; +uniform float nightVision; #ifdef OVERWORLD_SHADER const bool shadowHardwareFiltering = true; @@ -39,18 +40,16 @@ const bool colortex5MipmapEnabled = true; #endif #ifdef NETHER_SHADER - uniform float nightVision; const bool colortex4MipmapEnabled = true; uniform vec3 lightningEffect; - // #define LIGHTSOURCE_REFLECTION + #undef LIGHTSOURCE_REFLECTION #endif #ifdef END_SHADER - uniform float nightVision; uniform vec3 lightningEffect; flat varying float Flashing; - // #define LIGHTSOURCE_REFLECTION + #undef LIGHTSOURCE_REFLECTION #endif uniform int hideGUI; @@ -88,18 +87,18 @@ uniform sampler2D colortex15; // flat normals(rgb), vanillaAO(alpha) #endif -uniform mat4 shadowModelView; -uniform mat4 shadowModelViewInverse; -uniform mat4 shadowProjection; -uniform mat4 shadowProjectionInverse; -uniform mat4 gbufferProjection; -uniform mat4 gbufferProjectionInverse; -uniform mat4 gbufferModelView; -uniform mat4 gbufferModelViewInverse; -uniform mat4 gbufferPreviousProjection; +// uniform mat4 shadowModelView; +// uniform mat4 shadowModelViewInverse; +// uniform mat4 shadowProjection; +// uniform mat4 shadowProjectionInverse; +// uniform mat4 gbufferProjection; +// uniform mat4 gbufferProjectionInverse; +// uniform mat4 gbufferModelView; +// uniform mat4 gbufferModelViewInverse; +// uniform mat4 gbufferPreviousProjection; uniform mat4 gbufferPreviousModelView; -uniform vec3 cameraPosition; +// uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; // uniform float far; @@ -149,12 +148,14 @@ float convertHandDepth_2(in float depth, bool hand) { return ndcDepth * 0.5 + 0.5; } -vec3 toScreenSpace(vec3 p) { - vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); - vec3 feetPlayerPos = p * 2. - 1.; - vec4 viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; - return viewPos.xyz / viewPos.w; -} +#include "/lib/projections.glsl" + +// vec3 toScreenSpace(vec3 p) { +// vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); +// vec3 feetPlayerPos = p * 2. - 1.; +// vec4 viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; +// return viewPos.xyz / viewPos.w; +// } @@ -168,7 +169,15 @@ vec3 toScreenSpace(vec3 p) { #include "/lib/stars.glsl" #ifdef OVERWORLD_SHADER - + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #define CLOUDS_INTERSECT_TERRAIN @@ -204,6 +213,13 @@ vec2 decodeVec2(float a){ #include "/lib/end_fog.glsl" + + +#define DEFERRED_SPECULAR +#define DEFERRED_ENVIORNMENT_REFLECTION +#define DEFERRED_BACKGROUND_REFLECTION +#define DEFERRED_ROUGH_REFLECTION + #include "/lib/specular.glsl" @@ -275,33 +291,60 @@ vec3 BilateralFiltering(sampler2D tex, sampler2D depth,vec2 coord,float frDepth, return vec3(sampled.x,sampled.yz/sampled.w); } + +float interleaved_gradientNoise_temporal(){ + #ifdef TAA + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); + #else + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); + #endif +} float interleaved_gradientNoise(){ - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; - float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715) ) ); - return noise ; + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; } float R2_dither(){ - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += (frameCounter%40000) * 2.0; + #endif + + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * coord.x + alpha.y * coord.y ) ; +} +float R2_dither2(){ + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += (frameCounter*8)%40000; + #endif + vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #ifdef TAA + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #else + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); + #endif } vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } -vec3 toShadowSpaceProjected(vec3 feetPlayerPos){ +// vec3 toShadowSpaceProjected(vec3 feetPlayerPos){ - mat4 DH_shadowProjection = DH_shadowProjectionTweak(shadowProjection); +// mat4 DH_shadowProjection = DH_shadowProjectionTweak(shadowProjection); - feetPlayerPos = mat3(gbufferModelViewInverse) * feetPlayerPos + gbufferModelViewInverse[3].xyz; - feetPlayerPos = mat3(shadowModelView) * feetPlayerPos + shadowModelView[3].xyz; - feetPlayerPos = diagonal3_old(DH_shadowProjection) * feetPlayerPos + DH_shadowProjection[3].xyz; +// feetPlayerPos = mat3(gbufferModelViewInverse) * feetPlayerPos + gbufferModelViewInverse[3].xyz; +// feetPlayerPos = mat3(shadowModelView) * feetPlayerPos + shadowModelView[3].xyz; +// feetPlayerPos = diagonal3_old(DH_shadowProjection) * feetPlayerPos + DH_shadowProjection[3].xyz; - return feetPlayerPos; -} +// return feetPlayerPos; +// } vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot,float r0) { @@ -341,7 +384,7 @@ vec2 CleanSample( // for every sample, the sample position must change its distance from the origin. // otherwise, you will just have a circle. - float spiralShape = pow(variedSamples / (totalSamples + variance),0.5); + float spiralShape = sqrt(variedSamples / (totalSamples + variance)); float shape = 2.26; // this is very important. 2.26 is very specific float theta = variedSamples * (PI * shape); @@ -388,7 +431,7 @@ vec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, boo _far = dhFarPlane; } - vec3 worldpos = mat3(gbufferModelViewInverse) * viewPos; + vec3 worldpos = mat3(gbufferModelViewInverse) * viewPos ; float dist = 1.0 + length(worldpos)/(_far/2.0); // step length as distance increases vec3 clipPosition = toClipSpace3_DH(viewPos, depthCheck); @@ -441,8 +484,8 @@ void Emission( float Emission, float exposure ){ - float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); - if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * Emissive_Brightness * autoBrightnessAdjust, pow(Emission, Emissive_Curve)); // old method.... idk why + // float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); // old method.... idk why // if( Emission < 254.5/255.0 ) Lighting += (Albedo * Emissive_Brightness) * pow(Emission, Emissive_Curve); } @@ -545,6 +588,10 @@ void BilateralUpscale_REUSE_Z(sampler2D tex1, sampler2D tex2, sampler2D depth, v ivec2( 1,-1), ivec2( 1, 1), ivec2(-1, 1) + // ivec2( 0, 1), + // ivec2( 0,-1), + // ivec2(-1, 0), + // ivec2( 1, 0) ); #ifdef DISTANT_HORIZONS @@ -696,6 +743,59 @@ float ComputeShadowMap(in vec3 projectedShadowPosition, float distortFactor, flo // return mix(1.0, shadowmap / samples, maxDistFade); } + + +vec3 ComputeShadowMap_COLOR(in vec3 projectedShadowPosition, float distortFactor, float noise, float shadowBlockerDepth, float NdotL, float maxDistFade, vec3 directLightColor, inout float FUNNYSHADOW, inout vec3 tintedSunlight, bool isSSS){ + + // if(maxDistFade <= 0.0) return 1.0; + float backface = NdotL <= 0.0 ? 1.0 : 0.0; + + vec3 shadowColor = vec3(0.0); + vec3 translucentTint = vec3(0.0); + + #ifdef BASIC_SHADOW_FILTER + int samples = SHADOW_FILTER_SAMPLE_COUNT; + float rdMul = (shadowBlockerDepth*distortFactor*d0*k/shadowMapResolution) * 0.3; + + for(int i = 0; i < samples; i++){ + vec2 offsetS = CleanSample(i, samples - 1, noise) * rdMul; + projectedShadowPosition.xy += offsetS; + #else + int samples = 1; + #endif + + #ifdef TRANSLUCENT_COLORED_SHADOWS + float opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x; + float opaqueShadowT = shadow2D(shadowtex1, projectedShadowPosition).x; + vec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy); + + float shadowAlpha = pow(1.0-pow(1.0-translucentShadow.a,2.0),5.0); + translucentShadow.rgb = normalize(translucentShadow.rgb*translucentShadow.rgb + 0.0001) * (1.0-shadowAlpha); + + // translucentTint += mix(translucentShadow.rgb * mix(opaqueShadowT, 1.0, backface), vec3(1.0), max(opaqueShadow, backface * (shadowAlpha < 1.0 ? 0.0 : 1.0))); + + shadowColor += directLightColor * mix(translucentShadow.rgb * opaqueShadowT, vec3(1.0), opaqueShadow); + + translucentTint += mix(translucentShadow.rgb, vec3(1.0), max(opaqueShadow, backface * (shadowAlpha < 1.0 ? 0.0 : 1.0))); + FUNNYSHADOW += ((1.0-shadowAlpha) * opaqueShadowT)/samples; + #else + shadowColor += directLightColor * shadow2D(shadow, projectedShadowPosition).x; + #endif + + #ifdef BASIC_SHADOW_FILTER + } + #endif + + // #ifdef TRANSLUCENT_COLORED_SHADOWS + // directLightColor *= mix(vec3(1.0), translucentTint.rgb / samples, maxDistFade); + tintedSunlight *= translucentTint.rgb / samples; + // #endif + + return mix(directLightColor, shadowColor.rgb / samples, maxDistFade); + // return 1.0; + // return mix(1.0, shadow / samples, maxDistFade); +} + #endif float CustomPhase(float LightPos){ @@ -709,57 +809,162 @@ float CustomPhase(float LightPos){ vec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, float lightPos, float shadows, float distantSSS){ - Scattering *= sss_density_multiplier; + // Scattering *= sss_density_multiplier; - float density = 0.0001 + Density*2.0; + // float density = 0.0001 + Density*2.0; - float scatterDepth = max(1.0 - Scattering/density,0.0); - scatterDepth = exp((1.0-scatterDepth) * -7.0); + // float scatterDepth = max(1.0 - Scattering/density,0.0); + // scatterDepth = exp((1.0-scatterDepth) * -7.0); + + // scatterDepth = mix(exp(Scattering * -10.0), scatterDepth, distantSSS); + + // // this is for SSS when there is no shadow blocker depth + // #if defined BASIC_SHADOW_FILTER && defined Variable_Penumbra_Shadows + // scatterDepth = max(scatterDepth, pow(shadows, 0.5 + (1.0-Density) * 2.0) ); + // #else + // scatterDepth = exp(-7.0 * pow(1.0-shadows,3.0))*min(2.0-sss_density_multiplier,1.0); + // #endif + + // // PBR at its finest :clueless: + // vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(20.0 - 19*scatterDepth) * sss_absorbance_multiplier); + + // vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); + + // scatter *= 1.0 + CustomPhase(lightPos)*6.0; // ~10x brighter at the peak + + // return scatter; + + + // Scattering *= sss_density_multiplier; + + float density = 1e-6 + Density * 2.0; + + // float scatterDepth = Scattering;//max(1.0 - Scattering/density,0.0); + + float scatterDepth = max(1.0 - Scattering/density, 0.0); + scatterDepth *= exp(-7.0 * (1.0-scatterDepth)); + + vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(20.0 - 19*scatterDepth) * sss_absorbance_multiplier); scatterDepth = mix(exp(Scattering * -10.0), scatterDepth, distantSSS); - // this is for SSS when there is no shadow blocker depth - #if defined BASIC_SHADOW_FILTER && defined Variable_Penumbra_Shadows - scatterDepth = max(scatterDepth, pow(shadows, 0.5 + (1.0-Density) * 2.0) ); - #else - scatterDepth = exp(-7.0 * pow(1.0-shadows,3.0))*min(2.0-sss_density_multiplier,1.0); - #endif - - // PBR at its finest :clueless: - vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(20.0 - 19*scatterDepth) * sss_absorbance_multiplier); + vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve);// * vec3(1.0); + - vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); - scatter *= 1.0 + CustomPhase(lightPos)*6.0; // ~10x brighter at the peak - return scatter; + return scatter; } vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){ - Scattering *= sss_density_multiplier; + // Scattering *= sss_density_multiplier; float scatterDepth = 1.0 - pow(Scattering, 0.5 + Density * 2.5); + // float scatterDepth = 1.0 - Scattering; // PBR at its finest :clueless: - vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(15.0 - 10.0*scatterDepth) * sss_absorbance_multiplier * 0.01); + // vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -20.0 * sss_absorbance_multiplier); + + // vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.0,1.2), 0.0) * -20.0); + vec3 absorbColor = vec3(1.0) * exp(-(15.0 - 10.0*scatterDepth) * sss_absorbance_multiplier * 0.01); vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); return scatter; } + + +vec3 blurredAlbedo( float noise, float lineardistance){ + + int samples = 7; + vec3 blurredColor = vec3(0.0); + + for (int i = 0; i < samples; i++) { + + vec2 offsets = CleanSample(i, samples - 1, noise)*0.02 / lineardistance; + + ivec2 offsetUV = ivec2(gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE); + + vec3 SAMPLE = texelFetch2D(colortex1, offsetUV, 0).xyz; + + blurredColor += toLinear(vec3(decodeVec2(SAMPLE.x).x, decodeVec2(SAMPLE.y).x, decodeVec2(SAMPLE.z).x)); + + } + + return blurredColor/samples; +} +uniform float wetnessAmount; +uniform float wetness; + +void applyPuddles( + in vec3 worldPos, in vec3 flatNormals, in float lightmap, in bool isWater, inout vec3 albedo, inout vec3 normals, inout float roughness, inout float f0 +){ + + float halfWet = min(wetnessAmount,1.0); + float fullWet = clamp(wetnessAmount - 2.0,0.0,1.0); + // halfWet = 1.0; + // fullWet = 0.0; + float noise = texture2D(noisetex, worldPos.xz * 0.02).b; + + float puddles = max(halfWet - noise,0.0); + puddles = clamp(halfWet - exp(-20.0 * puddles*puddles*puddles*puddles*puddles),0.0,1.0); + // puddles *= halfWet; + + float lightmapMax = min(max(lightmap - 0.9,0.0) * 10.0,1.0); + float lightmapMin = min(max(lightmap - 0.8,0.0) * 5.0,1.0); + lightmap = clamp(lightmapMax + noise*lightmapMin*2.0,0.0,1.0); + + lightmap = pow(1.0-pow(1.0-lightmap,3.0),2.0); + + float wetnessStages = mix(puddles, 1.0, fullWet) * lightmap; + + // if(isWater || (!isWater && isEyeInWater == 1)) wetnessStages = 1.0; + + normals = mix(normals, flatNormals, puddles * lightmap * clamp(flatNormals.y,0.0,1.0)); + roughness = mix(roughness, 1.0, wetnessStages); + + if(f0 < 229.5/255.0 ) albedo = pow(albedo * (1.0 - 0.08*wetnessStages), vec3(1.0 + 0.7*wetnessStages)); + +} + +vec2 smoothfilterUV(in vec2 uv) +{ + vec2 textureResolution = vec2(viewWidth,viewHeight); + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + #ifndef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + #endif + #ifdef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); + #endif + + uv = (uv - 0.5)/textureResolution; + + return uv; +} + void main() { vec3 DEBUG = vec3(1.0); ////// --------------- SETUP STUFF --------------- ////// - vec2 texcoord = gl_FragCoord.xy*texelSize; + vec2 texcoord = (gl_FragCoord.xy*texelSize); - vec2 bnoise = blueNoise(gl_FragCoord.xy).rg; - int seed = (frameCounter%40000) + frameCounter*2; - float noise = fract(R2_samples(seed).y + bnoise.y); float noise_2 = R2_dither(); + vec2 bnoise = blueNoise(gl_FragCoord.xy ).rg; + // #ifdef TAA + int seed = (frameCounter*5)%40000; + vec2 r2_sequence = R2_samples(seed).xy; + vec2 BN = fract(r2_sequence + bnoise); + float noise = BN.y; + // #else + // float noise = fract(R2_samples(3).y + bnoise.y); + // #endif float z0 = texture2D(depthtex0,texcoord).x; float z = texture2D(depthtex1,texcoord).x; @@ -796,7 +1001,7 @@ void main() { ////// --------------- UNPACK OPAQUE GBUFFERS --------------- ////// - vec4 data = texture2D(colortex1,texcoord); + vec4 data = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy), 0); vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); // albedo, masks vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); // normals, lightmaps @@ -805,7 +1010,7 @@ void main() { vec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x)); vec3 normal = decode(dataUnpacked0.yw); vec2 lightmap = dataUnpacked1.yz; - + lightmap.xy = min(max(lightmap.xy - 0.05,0.0)*1.06,1.0); // small offset to hide flickering from precision error in the encoding/decoding on values close to 1.0 or 0.0 #if !defined OVERWORLD_SHADER @@ -818,11 +1023,11 @@ void main() { ////// --------------- UNPACK MISC --------------- ////// - vec4 SpecularTex = texture2D(colortex8,texcoord); + vec4 SpecularTex = texelFetch2D(colortex8, ivec2(gl_FragCoord.xy), 0); float LabSSS = clamp((-65.0 + SpecularTex.z * 255.0) / 190.0 ,0.0,1.0); vec4 normalAndAO = texture2D(colortex15,texcoord); - vec3 FlatNormals = normalAndAO.rgb * 2.0 - 1.0; + vec3 FlatNormals = normalize(normalAndAO.rgb * 2.0 - 1.0); vec3 slopednormal = normal; float vanilla_AO = z < 1.0 ? clamp(normalAndAO.a,0,1) : 0.0; @@ -830,7 +1035,6 @@ void main() { if(isDHrange){ FlatNormals = normal; - normal = viewToWorld(normal); slopednormal = normal; } @@ -868,9 +1072,9 @@ void main() { } #ifdef DISTANT_HORIZONS - vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z, DH_depth1); + vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z, DH_depth1); #else - vec3 viewPos = toScreenSpace(vec3(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5,z)); + vec3 viewPos = toScreenSpace(vec3(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z)); #endif vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos; @@ -884,38 +1088,48 @@ void main() { #endif ////// --------------- COLORS --------------- ////// - float dirtAmount = Dirt_Amount + 0.01; + + float dirtAmount = Dirt_Amount; + // float dirtAmount = Dirt_Amount + 0.01; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); - vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + vec3 totEpsilon = dirtEpsilon * dirtAmount + waterEpsilon; + // vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; vec3 Absorbtion = vec3(1.0); vec3 AmbientLightColor = vec3(0.0); vec3 MinimumLightColor = vec3(1.0); vec3 Indirect_lighting = vec3(0.0); vec3 Indirect_SSS = vec3(0.0); + vec2 SSAO_SSS = vec2(1.0); vec3 DirectLightColor = vec3(0.0); vec3 Direct_lighting = vec3(0.0); vec3 Direct_SSS = vec3(0.0); float cloudShadow = 1.0; float Shadows = 1.0; + + vec3 shadowColor = vec3(1.0); + vec3 SSSColor = vec3(1.0); + vec3 filteredShadow = vec3(Min_Shadow_Filter_Radius,1.0,0.0); + float NdotL = 1.0; float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0); #ifdef OVERWORLD_SHADER - DirectLightColor = lightCol.rgb / 80.0; - AmbientLightColor = averageSkyCol_Clouds / 30.0; + DirectLightColor = lightCol.rgb / 2400.0;//mix(900.0, 2400.0, lightmap.y); + AmbientLightColor = averageSkyCol_Clouds / 900.0; + shadowColor = DirectLightColor; - #ifdef PER_BIOME_ENVIRONMENT - // BiomeSunlightColor(DirectLightColor); - vec3 biomeDirect = DirectLightColor; - vec3 biomeIndirect = AmbientLightColor; - float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); + // #ifdef PER_BIOME_ENVIRONMENT + // // BiomeSunlightColor(DirectLightColor); + // vec3 biomeDirect = DirectLightColor; + // vec3 biomeIndirect = AmbientLightColor; + // float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); - float maxDistance = inBiome * min(max(1.0 - length(feetPlayerPos)/(32*8),0.0)*2.0,1.0); - DirectLightColor = mix(DirectLightColor, biomeDirect, maxDistance); - #endif + // float maxDistance = inBiome * min(max(1.0 - length(feetPlayerPos)/(32*8),0.0)*2.0,1.0); + // DirectLightColor = mix(DirectLightColor, biomeDirect, maxDistance); + // #endif bool inShadowmapBounds = false; #endif @@ -925,91 +1139,93 @@ void main() { //////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// START DRAW //////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// - if (swappedDepth >= 1.0) { - vec3 Background = vec3(0.0); + + - #ifdef OVERWORLD_SHADER + //////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////// UNDER WATER SHADING //////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////// - float atmosphereGround = 1.0 - exp2(-50.0 * pow(clamp(feetPlayerPos_normalized.y+0.025,0.0,1.0),2.0) ); // darken the ground in the sky. - - #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 3 - // vec3 orbitstar = vec3(feetPlayerPos_normalized.x,abs(feetPlayerPos_normalized.y),feetPlayerPos_normalized.z); orbitstar.x -= WsunVec.x*0.2; - vec3 orbitstar = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE,1.0))); - float radiance = 2.39996 - (worldTime + worldDay*24000.0) / 24000.0; - // float radiance = 2.39996 + frameTimeCounter; - mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); - - orbitstar.xy *= rotationMatrix; - - Background += stars(orbitstar) * 10.0 * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0); - - #if !defined ambientLight_only && (RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0) - Background += drawSun(dot(lightCol.a * WsunVec, feetPlayerPos_normalized),0, DirectLightColor,vec3(0.0)); - Background += drawMoon(feetPlayerPos_normalized, lightCol.a * WsunVec, DirectLightColor*20, Background); - #endif - - Background *= atmosphereGround; - #endif - - vec3 Sky = skyFromTex(feetPlayerPos_normalized, colortex4)/30.0 * Sky_Brightness; - Background += Sky; - - #endif - - #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3 - vec3 resourcePackskyBox = toLinear(texture2D(colortex10, texcoord).rgb * 5.0) * 15.0 * clamp(unsigned_WsunVec.y*2.0,0.1,1.0); - - #ifdef SKY_GROUND - resourcePackskyBox *= atmosphereGround; - #endif - - Background += resourcePackskyBox; - #endif - - #if defined OVERWORLD_SHADER && defined VOLUMETRIC_CLOUDS && !defined CLOUDS_INTERSECT_TERRAIN - vec4 Clouds = texture2D_bicubic_offset(colortex0, texcoord*CLOUDS_QUALITY, noise, RENDER_SCALE.x); - Background = Background * Clouds.a + Clouds.rgb; - #endif - - gl_FragData[0].rgb = clamp(fp10Dither(Background, triangularize(noise_2)), 0.0, 65000.); - - } else { + if ((isEyeInWater == 0 && isWater) || (isEyeInWater == 1 && !isWater)){ + feetPlayerPos += gbufferModelViewInverse[3].xyz; + + #ifdef DISTANT_HORIZONS + vec3 playerPos0 = mat3(gbufferModelViewInverse) * toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z0, DH_depth0) + gbufferModelViewInverse[3].xyz; + #else + vec3 playerPos0 = mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0)) + gbufferModelViewInverse[3].xyz; + #endif + float Vdiff = distance(feetPlayerPos, playerPos0); + float estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y);// assuming water plane + + float viewerWaterDepth = Vdiff * (1.0 - clamp(exp(-Vdiff),0.0,1.0)); + + // force the absorbance to start way closer to the water surface in low light areas, so the water is visible in caves and such. + #if MINIMUM_WATER_ABSORBANCE > -1 + float minimumAbsorbance = MINIMUM_WATER_ABSORBANCE*0.1; + #else + float minimumAbsorbance = (1.0 - lightLeakFix)*0.75; + #endif + + viewerWaterDepth += max(estimatedDepth - 1.0, minimumAbsorbance); + + Absorbtion = exp( -2.0 * totEpsilon * viewerWaterDepth); + + // brighten up the fully absorbed parts of water when night vision activates. + // if( nightVision > 0.0 ) Absorbtion += exp( -50.0 * totEpsilon) * 50.0 * 7.0 * nightVision; + if( nightVision > 0.0 ) Absorbtion += exp( -30.0 * totEpsilon) * 10.0 * nightVision * 10.0; + + if (isEyeInWater == 1){ + estimatedDepth = 1.0; + viewerWaterDepth = max(0.9-lightmap.y,0.0)*3.0; + Absorbtion = exp( -2.0 * totEpsilon * viewerWaterDepth); + + DirectLightColor *= Absorbtion; + } + + // apply caustics to the lighting, and make sure they dont look weird + DirectLightColor *= mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS + 0.25, clamp(estimatedDepth,0,1)); + } + + + if (swappedDepth < 1.0) { + + // idk why this do + feetPlayerPos += gbufferModelViewInverse[3].xyz; //////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// FILTER STUFF ////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// - - vec3 filteredShadow = vec3(1.412,1.0,0.0); - vec2 SSAO_SSS = vec2(1.0); - + #if defined DISTANT_HORIZONS && defined DH_AMBIENT_OCCLUSION BilateralUpscale_REUSE_Z(colortex3, colortex14, colortex12, gl_FragCoord.xy-1.5, DH_mixedLinearZ, SSAO_SSS, filteredShadow, hand); #else BilateralUpscale_REUSE_Z(colortex3, colortex14, depthtex0, gl_FragCoord.xy-1.5, ld(z0), SSAO_SSS, filteredShadow, hand); #endif - + float ShadowBlockerDepth = filteredShadow.y; - //////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// MAJOR LIGHTSOURCE STUFF //////////////////////// //////////////////////////////////////////////////////////////////////////////////// #ifdef OVERWORLD_SHADER - float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0); + + float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 5.0,1.0); float LightningPhase = 0.0; vec3 LightningFlashLighting = Iris_Lightningflash(feetPlayerPos, lightningBoltPosition.xyz, slopednormal, LightningPhase) * pow(lightmap.y,10); NdotL = clamp((-15 + dot(slopednormal, WsunVec)*255.0) / 240.0 ,0.0,1.0); + // NdotL = 1; - float flatNormNdotL = clamp((-15 + dot(viewToWorld(FlatNormals), WsunVec)*255.0) / 240.0 ,0.0,1.0); + float flatNormNdotL = clamp((-15 + dot((FlatNormals), WsunVec)*255.0) / 240.0 ,0.0,1.0); + //////////////////////////////// SHADOWMAP //////////////////////////////// // setup shadow projection vec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; - if(!hand) GriAndEminShadowFix(shadowPlayerPos, viewToWorld(FlatNormals), vanilla_AO, lightmap.y); + if(!hand) GriAndEminShadowFix(shadowPlayerPos, FlatNormals, vanilla_AO, lightmap.y); vec3 projectedShadowPosition = mat3(shadowModelView) * shadowPlayerPos + shadowModelView[3].xyz; projectedShadowPosition = diagonal3_old(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; @@ -1032,6 +1248,9 @@ void main() { float shadowMapFalloff2 = shadowmapFade; #endif + // shadowMapFalloff = 1.0; + // shadowMapFalloff2 = 1.0; + // un-distort #ifdef DISTORT_SHADOWMAP float distortFactor = calcDistort(projectedShadowPosition.xy); @@ -1039,48 +1258,66 @@ void main() { #else float distortFactor = 1.0; #endif - + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5) ; float ShadowAlpha = 0.0; // this is for subsurface scattering later. - Shadows = ComputeShadowMap(projectedShadowPosition, distortFactor, noise_2, filteredShadow.x, flatNormNdotL, shadowMapFalloff, DirectLightColor, ShadowAlpha, LabSSS > 0.0); + vec3 tintedSunlight = DirectLightColor; // this is for subsurface scattering later. + + shadowColor = ComputeShadowMap_COLOR(projectedShadowPosition, distortFactor, noise_2, filteredShadow.x, flatNormNdotL, shadowMapFalloff, DirectLightColor, ShadowAlpha, tintedSunlight, LabSSS > 0.0); + // transition to fallback lightmap shadow mask. - Shadows = mix(isWater ? lightLeakFix : LM_shadowMapFallback, Shadows, shadowMapFalloff); + shadowColor *= mix(isWater ? lightLeakFix : LM_shadowMapFallback, 1.0, shadowMapFalloff2); - #ifdef OLD_LIGHTLEAK_FIX - if (isEyeInWater == 0) Shadows *= lightLeakFix; // light leak fix + // #ifdef OLD_LIGHTLEAK_FIX + // if (isEyeInWater == 0) Shadows *= lightLeakFix; // light leak fix + // #endif + + //////////////////////////////// SUN SSS //////////////////////////////// + #if SSS_TYPE != 0 + + float sunSSS_density = LabSSS; + float SSS_shadow = ShadowAlpha; + + #ifdef DISTANT_HORIZONS + shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / min(shadowDistance, max(far-32.0,32.0)),0.0)*5.0,1.0)); + #endif + + #ifndef RENDER_ENTITY_SHADOWS + if(entities) sunSSS_density = 0.0; + #endif + + #ifdef SCREENSPACE_CONTACT_SHADOWS + vec2 SS_directLight = SSRT_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, normalize(WsunVec*mat3(gbufferModelViewInverse)), interleaved_gradientNoise_temporal(), sunSSS_density > 0.0 && shadowMapFalloff2 < 1.0, hand); + + // combine shadowmap with a minumum shadow determined by the screenspace shadows. + shadowColor *= SS_directLight.r; + + // combine shadowmap blocker depth with a minumum determined by the screenspace shadows, starting after the shadowmap ends + ShadowBlockerDepth = mix(SS_directLight.g, ShadowBlockerDepth, shadowMapFalloff2); + #endif + #ifdef TRANSLUCENT_COLORED_SHADOWS + SSSColor = tintedSunlight; + #else + SSSColor = DirectLightColor; + #endif + + SSSColor *= SubsurfaceScattering_sun(albedo, ShadowBlockerDepth, sunSSS_density, clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), SSS_shadow, shadowMapFalloff2); + + if(isEyeInWater != 1)SSSColor *= lightLeakFix; + + #ifndef SCREENSPACE_CONTACT_SHADOWS + SSSColor = mix(vec3(0.0), SSSColor, shadowMapFalloff2); + #endif + + #ifdef CLOUDS_SHADOWS + float cloudShadows = GetCloudShadow(feetPlayerPos.xyz + cameraPosition, WsunVec); + shadowColor *= cloudShadows; + SSSColor *= cloudShadow*cloudShadows; + #endif #endif #endif - - //////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////// UNDER WATER SHADING //////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////// - - if ((isEyeInWater == 0 && isWater) || (isEyeInWater == 1 && !isWater)){ - #ifdef DISTANT_HORIZONS - vec3 viewPos0 = toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z0, DH_depth0); - #else - vec3 viewPos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0)); - #endif - - float Vdiff = distance(viewPos, viewPos0)*mix(5.0,2.0,clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0)); - float estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y); //assuming water plane - - // make it such that the estimated depth flips to be correct when entering water. - if (isEyeInWater == 1){ - estimatedDepth = 40.0 * pow(max(1.0-lightmap.y,0.0),2.0); - MinimumLightColor = vec3(10.0); - } - - float depthfalloff = 1.0 - clamp(exp(-0.1*estimatedDepth),0.0,1.0); - - float estimatedSunDepth = Vdiff; //assuming water plane - Absorbtion = mix(exp(-2.0 * totEpsilon * estimatedDepth), exp(-8.0 * totEpsilon), depthfalloff); - - // apply caustics to the lighting, and make sure they dont look weird - DirectLightColor *= mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS + 0.25, clamp(estimatedDepth,0,1)); - } #ifdef END_SHADER float vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0); @@ -1092,11 +1329,10 @@ void main() { float end_NdotL = clamp(dot(slopednormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); end_NdotL *= end_NdotL; - float fogShadow = GetCloudShadow(feetPlayerPos+cameraPosition, lightPos); + float fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos); float endPhase = endFogPhase(lightPos); Direct_lighting += lightColors * endPhase * end_NdotL * fogShadow; - AmbientLightColor += lightColors * (endPhase*endPhase) * (1.0-exp(vec3(0.6,2.0,2) * -(endPhase*0.1))) ; #endif @@ -1111,7 +1347,7 @@ void main() { float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y*1.5; if(isGrass) SkylightDir = 1.5; - skylight = max(pow(viewToWorld(FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); + skylight = max(pow((FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); #if indirect_effect == 1 skylight = min(skylight, mix(0.95, 2.5, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) )); @@ -1127,27 +1363,30 @@ void main() { #endif #ifdef NETHER_SHADER - Indirect_lighting = skyCloudsFromTexLOD2(normal, colortex4, 6).rgb / 30.0; - vec3 up = skyCloudsFromTexLOD2(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 30.0; + Indirect_lighting = volumetricsFromTex(normalize(normal), colortex4, 6).rgb / 1200.0; + vec3 up = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0; #if indirect_effect == 1 Indirect_lighting = mix(up, Indirect_lighting, clamp(pow(1.0-pow(1.0-SSAO_SSS.x, 0.5),2.0),0.0,1.0)); #endif - AmbientLightColor = Indirect_lighting / 5.0; + AmbientLightColor = Indirect_lighting; #endif #ifdef END_SHADER - Indirect_lighting = vec3(0.3,0.6,1.0) * 0.5; + Indirect_lighting = vec3(0.3,0.6,1.0); Indirect_lighting = Indirect_lighting + 0.7*mix(-Indirect_lighting, Indirect_lighting * dot(slopednormal, feetPlayerPos_normalized), clamp(pow(1.0-pow(1.0-SSAO_SSS.x, 0.5),2.0),0.0,1.0)); + Indirect_lighting *= 0.1; + + Indirect_lighting += lightColors * (endPhase*endPhase) * (1.0-exp(vec3(0.6,2.0,2.0) * -(endPhase*0.01))) /1000.0; #endif #ifdef IS_LPV_ENABLED vec3 normalOffset = vec3(0.0); if (any(greaterThan(abs(FlatNormals), vec3(1.0e-6)))) - normalOffset = 0.5*viewToWorld(FlatNormals); + normalOffset = 0.5*(FlatNormals); #if LPV_NORMAL_STRENGTH > 0 vec3 texNormalOffset = -normalOffset + slopednormal; @@ -1158,7 +1397,6 @@ void main() { #else const vec3 lpvPos = vec3(0.0); #endif - vec3 blockLightColor = doBlockLightLighting( vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, exposure, feetPlayerPos, lpvPos); Indirect_lighting += blockLightColor; @@ -1202,9 +1440,7 @@ void main() { if(!hand) Indirect_lighting = ApplySSRT(Indirect_lighting, blockLightColor, MinimumLightColor, viewPos, normal, vec3(bnoise, noise_2), lightmap.y, isGrass, isDHrange); #endif - #if defined END_SHADER - Direct_lighting *= AO; - #endif + //////////////////////////////////////////////////////////////////////////////// ///////////////////////// SUB SURFACE SCATTERING //////////////////////////// @@ -1213,11 +1449,10 @@ void main() { ///////////////////////////// SKY SSS ///////////////////////////// #if defined Ambient_SSS && defined OVERWORLD_SHADER && indirect_effect == 1 if (!hand){ - vec3 ambientColor = (AmbientLightColor*2.5) * ambient_brightness; // x2.5 to match the brightness of upfacing skylight + vec3 ambientColor = AmbientLightColor * mix(0.2,2.5,lightmap.y*lightmap.y) * ambient_brightness; // x2.5 to match the brightness of upfacing skylight Indirect_SSS = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS); - Indirect_SSS *= lightmap.y*lightmap.y*lightmap.y; - Indirect_SSS *= AO; + Indirect_SSS *= lightmap.y*lightmap.y;//*lightmap.y; // apply to ambient light. Indirect_lighting = max(Indirect_lighting, Indirect_SSS * ambientColor * ambientsss_brightness); @@ -1228,49 +1463,6 @@ void main() { } #endif - //////////////////////////////// SUN SSS //////////////////////////////// - #if SSS_TYPE != 0 && defined OVERWORLD_SHADER - - float sunSSS_density = LabSSS; - float SSS_shadow = ShadowAlpha * Shadows; - - #ifdef DISTANT_HORIZONS - shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / min(shadowDistance, max(far-32.0,32.0)),0.0)*5.0,1.0)); - #endif - - #ifndef RENDER_ENTITY_SHADOWS - if(entities) sunSSS_density = 0.0; - #endif - - #ifdef SCREENSPACE_CONTACT_SHADOWS - vec2 SS_directLight = SSRT_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, normalize(WsunVec*mat3(gbufferModelViewInverse)), interleaved_gradientNoise(), sunSSS_density > 0.0 && shadowMapFalloff2 < 1.0, hand); - - // combine shadowmap with a minumum shadow determined by the screenspace shadows. - Shadows = min(Shadows, SS_directLight.r); - // Shadows = SS_directLight.r; - - // combine shadowmap blocker depth with a minumum determined by the screenspace shadows, starting after the shadowmap ends - ShadowBlockerDepth = mix(SS_directLight.g, ShadowBlockerDepth, shadowMapFalloff2); - // ShadowBlockerDepth = max( SS_directLight.g,0.0); - #endif - - - Direct_SSS = SubsurfaceScattering_sun(albedo, ShadowBlockerDepth, sunSSS_density, clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), SSS_shadow, shadowMapFalloff2); - - Direct_SSS *= lightLeakFix; - - #ifndef SCREENSPACE_CONTACT_SHADOWS - Direct_SSS = mix(vec3(0.0), Direct_SSS, shadowMapFalloff2); - #endif - - #ifdef CLOUDS_SHADOWS - cloudShadow = GetCloudShadow(feetPlayerPos); - Shadows *= cloudShadow; - Direct_SSS *= cloudShadow; - #endif - - #endif - ///////////////////////////////////////////////////////////////////////// ///////////////////////////// FINALIZE ///////////////////////////// ///////////////////////////////////////////////////////////////////////// @@ -1280,35 +1472,104 @@ void main() { albedo = vec3(1); NdotL = 0; #endif + #if defined END_SHADER + Direct_lighting *= AO; + #endif + #ifdef OVERWORLD_SHADER + // Direct_lighting = max(shadowColor*NdotL, SSSColor); + #ifdef AO_in_sunlight + Direct_lighting = shadowColor*NdotL*(AO*0.7+0.3) + SSSColor; + #else + Direct_lighting = shadowColor*NdotL + SSSColor; + #endif + #endif + + #if defined OVERWORLD_SHADER && defined DEFERRED_SPECULAR + if(!hand && !entities) applyPuddles(feetPlayerPos + cameraPosition, FlatNormals, lightmap.y, isWater, albedo, normal, SpecularTex.r, SpecularTex.g); + #endif + + vec3 FINAL_COLOR = (Indirect_lighting + Direct_lighting) * albedo; + + Emission(FINAL_COLOR, albedo, SpecularTex.a, exposure); + + if(lightningBolt) FINAL_COLOR = vec3(77.0, 153.0, 255.0); + + #if defined DEFERRED_SPECULAR + vec3 specularNoises = vec3(BN.xy, blueNoise()); + // DoSpecularReflections(FINAL_COLOR, viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, normal, SpecularTex.r, SpecularTex.g, albedo, shadowColor, lightmap.y, hand); + + FINAL_COLOR = specularReflections(viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, normal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, shadowColor, lightmap.y, hand, isWater || (!isWater && isEyeInWater == 1)); + #endif + + + gl_FragData[0].rgb = FINAL_COLOR; + // gl_FragData[0].rgb = vec3(1) * Absorbtion; + + + + + }else{ + vec3 Background = vec3(0.0); #ifdef OVERWORLD_SHADER - Direct_lighting = max(DirectLightColor * NdotL * Shadows, DirectLightColor * Direct_SSS); + + float atmosphereGround = 1.0 - exp2(-50.0 * pow(clamp(feetPlayerPos_normalized.y+0.025,0.0,1.0),2.0) ); // darken the ground in the sky. + + #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 3 + // vec3 orbitstar = vec3(feetPlayerPos_normalized.x,abs(feetPlayerPos_normalized.y),feetPlayerPos_normalized.z); orbitstar.x -= WsunVec.x*0.2; + vec3 orbitstar = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE,1.0))); + // float radiance = 2.39996 - (worldTime + worldDay*24000.0) / 24000.0; + float radiance = 2.39996 ; + // float radiance = 2.39996 + frameTimeCounter; + mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); + + orbitstar.xy *= rotationMatrix; + + Background += stars(orbitstar) * 10.0 * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0); + + #if !defined ambientLight_only && (RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0) + Background += drawSun(dot(lightCol.a * WsunVec, feetPlayerPos_normalized),0, DirectLightColor,vec3(0.0)); + Background += drawMoon(feetPlayerPos_normalized, lightCol.a * WsunVec, DirectLightColor, Background); + #endif + + Background *= atmosphereGround; + #endif + + vec3 Sky = skyFromTex(feetPlayerPos_normalized, colortex4)/1200.0 * Sky_Brightness; + Background += Sky; + #endif - gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * albedo; + // #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3 + // vec3 resourcePackskyBox = toLinear(texture2D(colortex10, texcoord).rgb * 5.0) * 15.0 * clamp(unsigned_WsunVec.y*2.0,0.1,1.0); - #ifdef Specular_Reflections - vec2 specularNoises = vec2(noise, R2_dither()); - DoSpecularReflections(gl_FragData[0].rgb, viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, normal, SpecularTex.r, SpecularTex.g, albedo, DirectLightColor*Shadows*NdotL, lightmap.y, hand); + // #ifdef SKY_GROUND + // resourcePackskyBox *= atmosphereGround; + // #endif + + // Background += resourcePackskyBox; + // #endif + + #if defined OVERWORLD_SHADER && defined VOLUMETRIC_CLOUDS && !defined CLOUDS_INTERSECT_TERRAIN + vec4 Clouds = texture2D_bicubic_offset(colortex0, texcoord*CLOUDS_QUALITY, noise, RENDER_SCALE.x); + Background = Background * Clouds.a + Clouds.rgb; #endif - - Emission(gl_FragData[0].rgb, albedo, SpecularTex.a, exposure); - - if(lightningBolt) gl_FragData[0].rgb = vec3(77.0, 153.0, 255.0); - gl_FragData[0].rgb *= Absorbtion; + gl_FragData[0].rgb = clamp(fp10Dither(Background, triangularize(noise_2)), 0.0, 65000.); } - if(translucentMasks > 0.0){ - #ifdef DISTANT_HORIZONS - vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, colortex12, gl_FragCoord.xy - 1.5, sqrt(texture2D(colortex12,texcoord).a/65000.0)); - #else - vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); - #endif + + if(translucentMasks > 0.0 && isEyeInWater != 1){ + + // water absorbtion will impact ALL light coming up from terrain underwater. + gl_FragData[0].rgb *= Absorbtion; + + vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); gl_FragData[0].rgb = gl_FragData[0].rgb * vlBehingTranslucents.a + vlBehingTranslucents.rgb; - } + } + ////// DEBUG VIEW STUFF #if DEBUG_VIEW == debug_SHADOWMAP gl_FragData[0].rgb = vec3(0.5) + vec3(1.0) * Shadows * 30.0; @@ -1326,24 +1587,29 @@ void main() { gl_FragData[0].rgb = Indirect_lighting; #endif #if DEBUG_VIEW == debug_DIRECT - if(swappedDepth >= 1.0) Direct_lighting = vec3(15.0); - gl_FragData[0].rgb = Direct_lighting + 0.5; + if(swappedDepth >= 1.0) Direct_lighting = vec3(1.0); + gl_FragData[0].rgb = Direct_lighting; #endif #if DEBUG_VIEW == debug_VIEW_POSITION gl_FragData[0].rgb = viewPos * 0.001; #endif #if DEBUG_VIEW == debug_FILTERED_STUFF - // if(hideGUI == 1) gl_FragData[0].rgb = vec3(1) * (1.0 - SSAO_SSS.y); - // if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * (1.0 - SSAO_SSS.x); - if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * exp(-10*filteredShadow.y);//exp(-7*(1-clamp(1.0 - filteredShadow.x,0.0,1.0))); + + // gl_FragData[0].rgb = texture2D(colortex14, texcoord).xyz; + if(hideGUI == 1) gl_FragData[0].rgb = vec3(1) * (1.0 - SSAO_SSS.y); + if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * pow(SSAO_SSS.x,6.0); + if(swappedDepth >= 1.0) gl_FragData[0].rgb = vec3(0.5); + // if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * exp(-10*filteredShadow.y);//exp(-7*(1-clamp(1.0 - filteredShadow.x,0.0,1.0))); #endif // gl_FragData[0].rgb = albedo*30; // gl_FragData[0].rgb = vec3(1) * Shadows; // if(swappedDepth >= 1.0) gl_FragData[0].rgb = vec3(0.1); + // gl_FragData[0].rgb = vec3(1) * ld(texture2D(depthtex1, texcoord).r); - // if(texcoord.x > 0.5 )gl_FragData[0].rgb = vec3(1) * ld(texture2D(depthtex0, texcoord).r); + // if(texcoord.x > 0.5 ) + + // gl_FragData[0].rgb = vec3(1) * filteredShadow.y; + // if(swappedDepth >= 1.0) gl_FragData[0].rgb += vec3(0.5); - - - /* DRAWBUFFERS:3 */ + /* RENDERTARGETS:3 */ } \ No newline at end of file diff --git a/shaders/dimensions/composite1.vsh b/shaders/dimensions/composite1.vsh index 39df506..a77e3e9 100644 --- a/shaders/dimensions/composite1.vsh +++ b/shaders/dimensions/composite1.vsh @@ -5,10 +5,11 @@ flat varying float Flashing; #endif -#if defined Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; -#endif + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #endif + flat varying vec3 WsunVec; flat varying vec3 unsigned_WsunVec; @@ -53,14 +54,14 @@ void main() { averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; - WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) * sunPosition); unsigned_WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); + WsunVec = lightCol.a*unsigned_WsunVec; exposure = texelFetch2D(colortex4,ivec2(10,37),0).r; #if defined Daily_Weather - dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); #endif #ifdef TAA diff --git a/shaders/dimensions/composite10.fsh b/shaders/dimensions/composite10.fsh index 8e5c48b..8f1de2b 100644 --- a/shaders/dimensions/composite10.fsh +++ b/shaders/dimensions/composite10.fsh @@ -106,7 +106,7 @@ vec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize; bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb * weights[5]; //1/128 res bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb * weights[6]; //1/256 res - gl_FragData[0].rgb = bloom * 3.0; + gl_FragData[0].rgb = bloom * 2.0; #endif gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); diff --git a/shaders/dimensions/composite11.fsh b/shaders/dimensions/composite11.fsh index 5c98b4d..2e5ed7c 100644 --- a/shaders/dimensions/composite11.fsh +++ b/shaders/dimensions/composite11.fsh @@ -14,7 +14,7 @@ uniform sampler2D colortex3; // uniform sampler2D colortex6; uniform sampler2D colortex7; // uniform sampler2D colortex8; // specular -// uniform sampler2D colortex9; // specular +uniform sampler2D colortex9; // specular uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D noisetex; @@ -72,12 +72,6 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo return (near * far) / (depth * (near - far) + far); } - - - - - - float bloomWeight(){ float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 ); @@ -91,9 +85,102 @@ float bloomWeight(){ return result; } - +vec3 invTonemap(vec3 col){ + return col/(1-luma(col)); +} #define linear_to_srgb(x) (pow(x, vec3(1.0/2.2))) +uniform sampler2D colortex6; + + +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} + +// vec3 lenseFlare(vec2 UV){ +// float noise = blueNoise(); + +// float vignetteLength = 0.2; +// float vignette = 0.5+length(texcoord-0.5);//min(max(length(texcoord-0.5) - vignetteLength,0.0) / (1.0/(1.0-vignetteLength)),1.0); + +// float aberrationStrength = vignette;//clamp(CHROMATIC_ABERRATION_STRENGTH * 0.01 * (1.0 - vignette),0.0,0.9) * vignette * 0.75; + +// vec2 centeredUV = texcoord - 0.5; + +// vec3 color = vec3(0.0); +// color = texture2D(colortex7, texcoord).rgb; + +// vec2 distortedUV = (centeredUV - (centeredUV ) * aberrationStrength) + 0.5; + +// color += texture2D(colortex7, distortedUV).rgb; +// // color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r; +// // color.g = texture2D(colortex7, texcoord).g; +// // color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b; + +// return color; +// } + void main() { /* DRAWBUFFERS:7 */ float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); @@ -132,16 +219,21 @@ void main() { vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + vec2 resScale = vec2(1920.,1080.)/clampedRes; + vec2 bloomTileUV = (((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.); - #ifdef OLD_BLOOM - vec3 bloom = texture2D(colortex3, texcoord/clampedRes*vec2(1920.,1080.)*BLOOM_QUALITY ).rgb / 2.0 / 7.0; - float lightScat = clamp((BLOOM_STRENGTH+3) * 0.05 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette; - #else - vec3 bloom = texture2D(colortex3, texcoord/clampedRes*vec2(1920.,1080.)*BLOOM_QUALITY ).rgb / 3.0 / bloomWeight(); - float lightScat = clamp(BLOOM_STRENGTH * 0.5 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette; - #endif + vec3 bloomTile0 = texture2D_bicubic(colortex3, bloomTileUV/2.).rgb; //1/4 res + vec3 bloomTile1 = texture2D_bicubic(colortex6, bloomTileUV/4.).rgb; //1/8 res + vec3 bloomTile2 = texture2D_bicubic(colortex6, bloomTileUV/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res + vec3 bloomTile3 = texture2D_bicubic(colortex6, bloomTileUV/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res + vec3 bloomTile4 = texture2D_bicubic(colortex6, bloomTileUV/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res + vec3 bloomTile5 = texture2D_bicubic(colortex6, bloomTileUV/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res + vec3 bloomTile6 = texture2D_bicubic(colortex6, bloomTileUV/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res + + float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 ); + vec3 bloom = (bloomTile0*weights[0] + bloomTile1*weights[1] + bloomTile2*weights[2] + bloomTile3*weights[3] + bloomTile4*weights[4] + bloomTile5*weights[5] + bloomTile6*weights[6]) / bloomWeight(); + vec3 fogBloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0; - float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r; #ifdef AUTO_EXPOSURE float purkinje = clamp(exposure.a*exposure.a,0.0,1.0) * clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*Purkinje_strength,0,1); @@ -149,9 +241,12 @@ void main() { float purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*Purkinje_strength,0,1); #endif + float lightScat = clamp(BLOOM_STRENGTH * 0.3,0.0,1.0) * vignette; + float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r; + VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength) * (1.0-purkinje*0.3),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); - col = (mix(col, bloom, VL_abs) + bloom * lightScat) * exposure.rgb; + col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb; float lum = dot(col, vec3(0.15,0.3,0.55)); float lum2 = dot(col, vec3(0.85,0.7,0.45)); diff --git a/shaders/dimensions/composite12.fsh b/shaders/dimensions/composite12.fsh index 06a6e0a..e163cf2 100644 --- a/shaders/dimensions/composite12.fsh +++ b/shaders/dimensions/composite12.fsh @@ -13,6 +13,7 @@ uniform float viewWidth; uniform float aspectRatio; uniform float frameTimeCounter; +uniform int frameCounter; uniform int hideGUI; @@ -134,11 +135,41 @@ vec3 saturationAndCrosstalk(vec3 color){ return color; } +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} + +vec3 chromaticAberration(vec2 UV){ + float noise = blueNoise() - 0.5; + + vec2 centeredUV = (texcoord - 0.5); + // not stretched by aspect ratio; circular by choice :) it makes most the abberation on the left/right of the screen. + float vignette = 1.0 - clamp(1.0 - length(centeredUV * vec2(aspectRatio,1.0)) / 200.0,0.0,1.0); + + float aberrationStrength = CHROMATIC_ABERRATION_STRENGTH * vignette; + + vec3 color = vec3(0.0); + color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r; + color.g = texture2D(colortex7, texcoord).g; + color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b; + + return color; +} + void main() { /* DRAWBUFFERS:7 */ - - vec3 color = texture2D(colortex7,texcoord).rgb; + + #ifdef CHROMATIC_ABERRATION + vec3 color = chromaticAberration(texcoord); + #else + vec3 color = texture2D(colortex7,texcoord).rgb; + #endif #ifdef CONTRAST_ADAPTATIVE_SHARPENING color = contrastAdaptiveSharpening(color, texcoord); @@ -153,6 +184,6 @@ void main() { #ifdef COLOR_GRADING_ENABLED color = colorGrading(color); #endif - + gl_FragData[0].rgb = clamp(int8Dither(color, texcoord),0.0,1.0); } diff --git a/shaders/dimensions/composite2.fsh b/shaders/dimensions/composite2.fsh index 0fad316..c3c866d 100644 --- a/shaders/dimensions/composite2.fsh +++ b/shaders/dimensions/composite2.fsh @@ -22,6 +22,7 @@ uniform sampler2D colortex3; // uniform sampler2D colortex4; uniform sampler2D colortex6; uniform sampler2D colortex7; +uniform sampler2D colortex10; flat varying vec3 WsunVec; uniform vec3 sunVec; @@ -32,12 +33,21 @@ uniform float near; uniform float dhFarPlane; uniform float dhNearPlane; +// uniform mat4 gbufferModelViewInverse; +// uniform mat4 gbufferModelView; +uniform mat4 gbufferPreviousModelView; +// uniform mat4 gbufferProjectionInverse; +// uniform mat4 gbufferProjection; +// uniform mat4 gbufferPreviousProjection; +// uniform vec3 cameraPosition; +uniform vec3 previousCameraPosition; + uniform int frameCounter; uniform float frameTimeCounter; // varying vec2 texcoord; uniform vec2 texelSize; -// flat varying vec2 TAA_Offset; +flat varying vec2 TAA_Offset; uniform int isEyeInWater; uniform float rainStrength; @@ -110,17 +120,17 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z; if(LpvFadeF > 0.0){ + // if(length(lpvSample.xyz) > 1e-5){ - vec4 lpvSample = SampleLpvLinear(lpvPos); + vec3 lighting = SampleLpvLinear(lpvPos).rgb * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0); + // float density = exp(-5.0 * clamp( 1.0 - length(lpvSample.xyz) / 16.0,0.0,1.0)) * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0) * LpvFadeF; + float density = exp(-5.0 * (1.0-length(lighting.xyz))) * LpvFadeF; + // float density = (1-exp(-1.0-clamp(length(lighting.rgb),0.0,1.0),25) )* LpvFadeF; - if(length(lpvSample.xyz) > 1e-5){ - vec3 LpvTorchLight = GetLpvBlockLight(lpvSample); - - vec3 lighting = LpvTorchLight; - float density = exp(-5.0 * clamp( 1.0 - length(lpvSample.xyz) / 16.0,0.0,1.0)) * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0) * LpvFadeF; + // float density = 0.01 * LpvFadeF; color = lighting - lighting * exp(-density*dd*dL); - } + // } } return color; @@ -130,21 +140,38 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } + +uniform float nightVision; + #ifdef OVERWORLD_SHADER const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; + #ifdef TRANSLUCENT_COLORED_SHADOWS uniform sampler2D shadowcolor0; uniform sampler2DShadow shadowtex0; uniform sampler2DShadow shadowtex1; #endif flat varying vec3 refractedSunVec; - + + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + + // uniform int dhRenderDistance; #define TIMEOFDAYFOG #include "/lib/lightning_stuff.glsl" - #define CLOUDS_INTERSECT_TERRAIN + + // #define CLOUDS_INTERSECT_TERRAIN #include "/lib/volumetricClouds.glsl" + + #include "/lib/climate_settings.glsl" #include "/lib/overworld_fog.glsl" #endif #ifdef NETHER_SHADER @@ -159,7 +186,9 @@ uniform sampler2D colortex4; #define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) float interleaved_gradientNoise_temporal(){ - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; @@ -168,15 +197,15 @@ float interleaved_gradientNoise(){ } float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a+ 1.0/1.6180339887 * frameCounter ); + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter ); } float R2_dither(){ - #ifdef TAA + // #ifdef TAA vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; - #else - vec2 coord = gl_FragCoord.xy; - #endif + // #else + // vec2 coord = gl_FragCoord.xy; + // #endif vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } @@ -226,7 +255,7 @@ void waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEn } -void waterVolumetrics(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estEyeDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ +vec3 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ int spCount = 8; vec3 start = toShadowSpaceProjected(rayStart); @@ -236,35 +265,29 @@ void waterVolumetrics(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estE //limit ray length at 32 blocks for performance and reducing integration error //you can't see above this anyway float maxZ = min(rayLength,32.0)/(1e-8+rayLength); - dV *= maxZ; - vec3 dVWorld = mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; - rayLength *= maxZ; - float dY = normalize(mat3(gbufferModelViewInverse) * rayEnd).y * rayLength; - - vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; - - #ifdef OVERWORLD_SHADER - float phase = fogPhase(VdotL) * 5.0; - #endif + dV *= maxZ; + rayLength *= maxZ; + + vec3 dVWorld = mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; + vec3 absorbance = vec3(1.0); vec3 vL = vec3(0.0); - float YFade = pow(normalize(dVWorld).y*0.3+0.7,1.5); - #ifdef OVERWORLD_SHADER - float lowlightlevel = clamp(eyeBrightnessSmooth.y/240.0,0.1,1.0); + float lowlightlevel = clamp(eyeBrightnessSmooth.y/240.0,0.1,1.0); + float phase = fogPhase(VdotL) * 5.0; #else - float lowlightlevel = 1.0; + float lowlightlevel = 1.0; + float phase = 0.0; #endif - // lowlightlevel = pow(lowlightlevel,0.5); float expFactor = 11.0; for (int i=0;i pos.z && sh.x < 1.0){ - sh = normalize(texture2D(shadowcolor0, pos.xy).rgb+0.0001); + vec4 translucentShadow = texture2D(shadowcolor0, pos.xy); + if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); } #else sh = vec3(shadow2D(shadow, pos).x); @@ -292,38 +318,28 @@ void waterVolumetrics(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estE } #ifdef VL_CLOUDS_SHADOWS - sh *= GetCloudShadow_VLFOG(progressW, WsunVec); + sh *= GetCloudShadow(progressW, WsunVec); #endif - - - // float bubble = 1.0 - pow(1.0-pow(1.0-min(max(1.0 - length(d*dVWorld) / (16),0.0)*5.0,1.0),2.0),2.0); - float bubble = exp( -7.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0) ); - float bubble2 = max(pow(length(d*dVWorld)/24,5)*100.0,0.0) + 1; - - float sunCaustics = (waterCaustics(progressW, WsunVec)) * mix(0.25,10.0,bubble) + 0.75; - - vec3 sunMul = exp(-1 * d * waterCoefs * 1.1); - vec3 Directlight = ((lightSource* sh) * phase * sunMul * sunCaustics) * lowlightlevel * pow(abs(WsunVec.y),1); - #else - vec3 Directlight = vec3(0.0); #endif - vec3 ambientMul = exp(-1 * d * waterCoefs); - vec3 Indirectlight = ambient * ambientMul * YFade * lowlightlevel; - vec3 light = (Indirectlight + Directlight) * scatterCoef; + float bubble = exp2(-10.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0)); + float caustics = mix(max(max(waterCaustics(progressW, WsunVec), phase*0.5) * mix(0.5, 200.0, bubble), phase), 1.0, lowlightlevel); - vL += (light - light * exp(-waterCoefs * dd * rayLength)) / waterCoefs * absorbance; - absorbance *= exp(-waterCoefs * dd * rayLength); + vec3 Directlight = lightSource * sh * phase * caustics*abs(WsunVec.y) * lowlightlevel; + vec3 Indirectlight = ambient * lowlightlevel; - #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT - vL += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, 1.0); - #endif + vec3 WaterAbsorbance = exp(-waterCoefs * rayLength * d); + + vec3 light = (Indirectlight + Directlight) * WaterAbsorbance * scatterCoef; + + vec3 volumeCoeff = exp(-waterCoefs * rayLength * dd); + vL += (light - light * volumeCoeff) / waterCoefs * absorbance; + absorbance *= volumeCoeff; } - inColor += vL; + return vL; } -// #endif vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; @@ -351,9 +367,130 @@ float encodeVec2(vec2 a){ -// uniform int framemod8; -// #include "/lib/TAA_jitter.glsl" +uniform int framemod8; +#include "/lib/TAA_jitter.glsl" + + + +vec3 toClipSpace3Prev(vec3 viewSpacePosition) { + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 closestToCamera5taps(vec2 texcoord, sampler2D depth) +{ + vec2 du = vec2(texelSize.x*2., 0.0); + vec2 dv = vec2(0.0, texelSize.y*2.); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depth, texcoord - dv - du).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depth, texcoord - dv + du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depth, texcoord).x); + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depth, texcoord + dv - du).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depth, texcoord + dv + du).x); + + vec3 dmin = dmc; + dmin = dmin.z > dtr.z ? dtr : dmin; + dmin = dmin.z > dtl.z ? dtl : dmin; + dmin = dmin.z > dbl.z ? dbl : dmin; + dmin = dmin.z > dbr.z ? dbr : dmin; + + #ifdef TAA_UPSCALING + dmin.xy = dmin.xy/RENDER_SCALE; + #endif + + return dmin; +} + +vec3 toClipSpace3Prev_DH( vec3 viewSpacePosition, bool depthCheck ) { + + #ifdef DISTANT_HORIZONS + mat4 projectionMatrix = depthCheck ? dhPreviousProjection : gbufferPreviousProjection; + return projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; + #else + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; + #endif +} + +vec3 toScreenSpace_DH_special(vec3 POS, bool depthCheck ) { + + vec4 viewPos = vec4(0.0); + vec3 feetPlayerPos = vec3(0.0); + vec4 iProjDiag = vec4(0.0); + + #ifdef DISTANT_HORIZONS + if (depthCheck) { + iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw); + + feetPlayerPos = POS * 2.0 - 1.0; + viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3]; + viewPos.xyz /= viewPos.w; + + } else { + #endif + iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + + feetPlayerPos = POS * 2.0 - 1.0; + viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; + viewPos.xyz /= viewPos.w; + + #ifdef DISTANT_HORIZONS + } + #endif + + return viewPos.xyz; +} +vec4 VLTemporalFiltering(vec3 viewPos, bool depthCheck, vec4 color){ + vec2 texcoord = gl_FragCoord.xy * texelSize; + + vec2 VLtexCoord = texcoord/VL_RENDER_RESOLUTION; + + // vec3 closestToCamera = closestToCamera5taps(texcoord, depthtex0); + // vec3 viewPos_5tap = toScreenSpace(closestToCamera); + + // get previous frames position stuff for UV + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); + vec3 previousPosition = mat3(gbufferPreviousModelView) * playerPos + gbufferPreviousModelView[3].xyz; + previousPosition = toClipSpace3Prev(previousPosition); + + vec2 velocity = previousPosition.xy - VLtexCoord/RENDER_SCALE; + previousPosition.xy = VLtexCoord + velocity; + + vec4 currentFrame = color; + if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return currentFrame; + + // vec4 col0 = currentFrame; // can use this because its the center sample. + // vec4 col1 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, texelSize.y)); + // vec4 col2 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, -texelSize.y)); + // vec4 col3 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, -texelSize.y)); + // vec4 col4 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, texelSize.y)); + // vec4 col5 = texture2D(colortex0, VLtexCoord + vec2( 0.0, texelSize.y)); + // vec4 col6 = texture2D(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y)); + // vec4 col7 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0)); + // vec4 col8 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, 0.0)); + + // vec4 colMax = max(col0,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8)))))))); + // vec4 colMin = min(col0,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8)))))))); + + // // colMin = 0.5 * (colMin + min(col0,min(col5,min(col6,min(col7,col8))))); + // // colMax = 0.5 * (colMax + max(col0,max(col5,max(col6,max(col7,col8))))); + + vec4 frameHistory = texture2D(colortex10, previousPosition.xy*VL_RENDER_RESOLUTION); + vec4 clampedFrameHistory = frameHistory; + // vec4 clampedFrameHistory = clamp(frameHistory, colMin, colMax); + + float blendFactor = 0.25; + blendFactor = clamp(length(velocity/texelSize),blendFactor,0.2); + + // if(min(frameHistory.a,rejection) > 0.0) blendFactor = 1.0; + + return mix(clampedFrameHistory, currentFrame, blendFactor); +} + +float convertHandDepth(float depth) { + float ndcDepth = depth * 2.0 - 1.0; + ndcDepth /= MC_HAND_DEPTH; + return ndcDepth * 0.5 + 0.5; +} //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -362,88 +499,95 @@ float encodeVec2(vec2 a){ void main() { -#if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN - /* RENDERTARGETS:0,14 */ -#else - /* RENDERTARGETS:0 */ -#endif - float noise_1 = max(1.0 - R2_dither(),0.0015); + /* RENDERTARGETS:0 */ + float noise_2 = blueNoise(); - - vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize + texelSize*0.5; + float noise_1 = max(1.0 - R2_dither(),0.0015); + // float noise_2 = interleaved_gradientNoise_temporal(); + vec2 bnoise = blueNoise(gl_FragCoord.xy ).rg; + + int seed = (frameCounter*5)%40000; + vec2 r2_sequence = R2_samples(seed).xy; + vec2 BN = fract(r2_sequence + bnoise); + + // vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize + texelSize*0.5; + vec2 tc = gl_FragCoord.xy/VL_RENDER_RESOLUTION*texelSize;// + texelSize*0.5; bool iswater = texture2D(colortex7,tc).a > 0.99; - float z0 = texture2D(depthtex0, tc).x; + vec2 jitter = TAA_Offset/VL_RENDER_RESOLUTION*texelSize*0.5; + + float depth = texture2D(depthtex0, tc + jitter).x; + float z0 = depth < 0.56 ? convertHandDepth(depth) : depth; + #ifdef DISTANT_HORIZONS float DH_z0 = texture2D(dhDepthTex,tc).x; #else float DH_z0 = 0.0; #endif - vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE , z0, DH_z0); - vec3 playerPos_normalized = normalize(mat3(gbufferModelViewInverse) * viewPos0 + gbufferModelViewInverse[3].xyz); + vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos0 + gbufferModelViewInverse[3].xyz; + vec3 playerPos_normalized = normalize(playerPos); - - - float dirtAmount = Dirt_Amount + 0.01; + float dirtAmount = Dirt_Amount; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; - vec3 directLightColor = lightCol.rgb/80.0; - vec3 indirectLightColor = averageSkyCol/30.0; - vec3 indirectLightColor_dynamic = averageSkyCol_Clouds/30.0; + vec3 directLightColor = lightCol.rgb / 2400.0; + vec3 indirectLightColor = averageSkyCol / 1200.0; + vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0; + + // indirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02; - vec3 cloudDepth = vec3(0.0); - vec3 fogDepth = vec3(0.0); - - #if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN - vec4 VolumetricClouds = renderClouds(viewPos0, vec2(noise_1,noise_2), directLightColor, indirectLightColor, cloudDepth); + #if defined OVERWORLD_SHADER + // z0 = texture2D(depthtex0, tc + jitter/VL_RENDER_RESOLUTION).x; + // viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); + vec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WsunVec, directLightColor, indirectLightColor); #ifdef CAVE_FOG - float skyhole = (1.0-pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2)* caveDetection) ; - VolumetricClouds.rgb *= skyhole; - VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, (1.0-skyhole) * caveDetection); + + float skyhole = pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2)* caveDetection; + VolumetricClouds.rgb *= 1.0-skyhole; + VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, skyhole); #endif #endif #ifdef OVERWORLD_SHADER float atmosphereAlpha = 1.0; - vec4 VolumetricFog = GetVolumetricFog(viewPos0, vec2(noise_2,noise_1), directLightColor, indirectLightColor, averageSkyCol_Clouds/30.0, atmosphereAlpha); - VolumetricClouds.a *= atmosphereAlpha; + + vec3 sceneColor = texelFetch2D(colortex3,ivec2(tc/texelSize),0).rgb * VolumetricClouds.a + VolumetricClouds.rgb; + vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN, directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb); + #endif #if defined NETHER_SHADER || defined END_SHADER - vec4 VolumetricFog = GetVolumetricFog(viewPos0, noise_1, noise_2); - #endif - - #if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN - VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a * atmosphereAlpha + VolumetricFog.rgb, VolumetricFog.a); + vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN.x, BN.y); #endif - gl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0); - + #if defined OVERWORLD_SHADER + VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a); + // VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a); + #endif if (isEyeInWater == 1){ - - float estEyeDepth = clamp(eyeBrightnessSmooth.y/240.0,0.,1.0); - // estEyeDepth = pow(estEyeDepth,3.0) * 32.0; - estEyeDepth = 0.0; - - // vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.); - - vec3 vl = vec3(0.0); - waterVolumetrics(vl, vec3(0.0), viewPos0, estEyeDepth, estEyeDepth, length(viewPos0), noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0), normalize(sunVec* lightCol.a ) )); + vec3 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0, length(viewPos0), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0), normalize(sunVec* lightCol.a ) )); - gl_FragData[0] = clamp(vec4(vl,1.0),0.000001,65000.); - + VolumetricFog = vec4(underWaterFog, 1.0); } - #if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN - gl_FragData[1] = vec4(VolumetricClouds.a,0.0,0.0,0.0); - #endif + gl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0); + + + // vec4 currentFrame = VolumetricFog; + // vec4 previousFrame = texture2D(colortex10, gl_FragCoord.xy * texelSize); + + // vec4 temporallyFilteredVL = VLTemporalFiltering(viewPos0, z0 >= 1.0, VolumetricFog); + + // gl_FragData[1] = temporallyFilteredVL; + } \ No newline at end of file diff --git a/shaders/dimensions/composite2.vsh b/shaders/dimensions/composite2.vsh index 3f1c92f..b7de7d9 100644 --- a/shaders/dimensions/composite2.vsh +++ b/shaders/dimensions/composite2.vsh @@ -10,10 +10,11 @@ flat varying vec3 averageSkyCol_Clouds; flat varying float exposure; #endif -#if defined Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; -#endif + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #endif + @@ -49,6 +50,7 @@ void main() { gl_Position = ftransform(); gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0; + #ifdef OVERWORLD_SHADER lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; @@ -56,11 +58,11 @@ void main() { averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; #if defined Daily_Weather - dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams0.a = (texelFetch2D(colortex4,ivec2(3,1),0).x/150.0)/2.0; - dailyWeatherParams1.a = (texelFetch2D(colortex4,ivec2(3,1),0).y/150.0)/2.0; + dailyWeatherParams0.a = texelFetch2D(colortex4,ivec2(3,1),0).x/1500.0; + dailyWeatherParams1.a = texelFetch2D(colortex4,ivec2(3,1),0).y/1500.0; #endif #endif @@ -68,7 +70,7 @@ void main() { #ifdef NETHER_SHADER lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); - averageSkyCol_Clouds = vec3(2.0, 1.0, 0.5) * 10.0; + averageSkyCol_Clouds = vec3(0.0); #endif #ifdef END_SHADER @@ -78,7 +80,7 @@ void main() { #endif lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; - WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); + WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition) ; refractedSunVec = refract(WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333); diff --git a/shaders/dimensions/composite3.fsh b/shaders/dimensions/composite3.fsh index b5bdc22..30ac926 100644 --- a/shaders/dimensions/composite3.fsh +++ b/shaders/dimensions/composite3.fsh @@ -13,6 +13,7 @@ uniform sampler2D noisetex; uniform sampler2D depthtex0; uniform sampler2D depthtex1; + // const bool colortex4MipmapEnabled = true; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; @@ -36,8 +37,9 @@ uniform sampler2D colortex15; uniform vec2 texelSize; uniform sampler2D colortex4; - - +uniform float viewHeight; +uniform float viewWidth; +uniform float nightVision; uniform vec3 sunVec; uniform float frameTimeCounter; uniform int frameCounter; @@ -56,6 +58,8 @@ uniform mat4 gbufferPreviousProjection; uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; +uniform int hideGUI; +uniform int dhRenderDistance; uniform int isEyeInWater; uniform ivec2 eyeBrightnessSmooth; uniform ivec2 eyeBrightness; @@ -69,14 +73,12 @@ uniform float caveDetection; #include "/lib/res_params.glsl" #ifdef OVERWORLD_SHADER - #include "/lib/sky_gradient.glsl" - #include "/lib/lightning_stuff.glsl" #include "/lib/climate_settings.glsl" - #define CLOUDS_INTERSECT_TERRAIN - // #define CLOUDSHADOWSONLY - // #include "/lib/volumetricClouds.glsl" #endif +#include "/lib/sky_gradient.glsl" + +uniform float eyeAltitude; #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) @@ -93,28 +95,49 @@ vec3 toLinear(vec3 sRGB){ } vec3 toScreenSpace(vec3 p) { vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); - vec3 p3 = p * 2. - 1.; - vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + vec3 playerPos = p * 2. - 1.; + vec4 fragposition = iProjDiag * playerPos.xyzz + gbufferProjectionInverse[3]; return fragposition.xyz / fragposition.w; } #include "/lib/DistantHorizons_projections.glsl" -float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); -} -vec4 blueNoise(vec2 coord){ - return texelFetch2D(colortex6, ivec2(coord )%512 , 0); -} -vec3 normVec (vec3 vec){ - return vec*inversesqrt(dot(vec,vec)); -} +float interleaved_gradientNoise_temporal(){ + #ifdef TAA + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); + #else + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); + #endif +} float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } +float R2_dither(){ + vec2 coord = gl_FragCoord.xy ; + + #ifdef TAA + coord += (frameCounter%40000) * 2.0; + #endif + + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * coord.x + alpha.y * coord.y ) ; +} +float blueNoise(){ + #ifdef TAA + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); + #else + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); + #endif +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; +} +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} float DH_ld(float dist) { return (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - dist * (dhFarPlane - dhNearPlane)); @@ -216,7 +239,8 @@ void ApplyDistortion(inout vec2 Texcoord, vec2 TangentNormals, float lineardista float refractionStrength = isTranslucentEntity ? 0.25 : 1.0 ; // Texcoord = abs(Texcoord + (TangentNormals * clamp((ld(depths.x) - ld(depths.y)) * 0.5,0.0,0.15)) * RENDER_SCALE * refractionStrength ); - Texcoord = abs(Texcoord + (TangentNormals * mix(0.01, 0.1, pow(clamp(1.0-lineardistance/(32*4),0.0,1.0),2))) * RENDER_SCALE * refractionStrength ); + // Texcoord = abs(Texcoord + (TangentNormals * mix(0.01, 0.1, pow(clamp(1.0-lineardistance/(32*4),0.0,1.0),2))) * RENDER_SCALE * refractionStrength ); + Texcoord = abs(Texcoord + TangentNormals * RENDER_SCALE * 0.1 ); float DistortedAlpha = decodeVec2(texture2D(colortex11,Texcoord).b).g; // float DistortedAlpha = decodeVec2(texelFetch2D(colortex11,ivec2(Texcoord/texelSize),0).b).g; @@ -225,17 +249,201 @@ void ApplyDistortion(inout vec2 Texcoord, vec2 TangentNormals, float lineardista Texcoord = mix(Texcoord, UnalteredTexcoord, min(max(0.1-DistortedAlpha,0.0) * 1000.0,1.0)); // remove distortion on non-translucents } -uniform int dhRenderDistance; -uniform float eyeAltitude; +vec3 doRefractionEffect( inout vec2 texcoord, vec2 normal, float linearDistance){ + + // make the tangent space normals match the directions of the texcoord UV, this greatly improves the refraction effect. + vec2 UVNormal = vec2(normal.x,-normal.y); + + float refractionMult = 0.3 / (1.0 + linearDistance); + float diffractionMult = 0.035; + float smudgeMult = 1.0; + + // for diffraction, i wanted to know *when* normals were at an angle, not what the + float clampValue = 0.2; + vec2 abberationOffset = (clamp(UVNormal,-clampValue, clampValue)/clampValue) * diffractionMult; + + // return vec3(abs(abberationOffset), 0.0); + + #ifdef REFRACTION_SMUDGE + vec2 directionalSmudge = abberationOffset * (blueNoise()-0.5) * smudgeMult; + #else + vec2 directionalSmudge = vec2(0.0); + #endif + + vec2 refractedUV = texcoord - (UVNormal + directionalSmudge)*refractionMult; + + // a max bound around screen edges and edges of the refracted screen + vec2 vignetteSides = clamp(min((1.0 - refractedUV)/0.05, refractedUV/0.05)+0.5,0.0,1.0); + float vignette = vignetteSides.x*vignetteSides.y; + + refractionMult *= decodeVec2(texelFetch2D(colortex11, ivec2(refractedUV/texelSize),0).b).g > 0.0 ? 1.0 : 0.0; + + vec3 color = vec3(0.0); + + #ifdef FAKE_DISPERSION_EFFECT + //// RED + refractedUV = clamp(texcoord - ((UVNormal + abberationOffset) + directionalSmudge)*refractionMult ,0.0,1.0); + color.r = texelFetch2D(colortex3, ivec2(refractedUV/texelSize),0).r; + //// GREEN + refractedUV = clamp(texcoord - (UVNormal + directionalSmudge)*refractionMult ,0,1); + color.g = texelFetch2D(colortex3, ivec2(refractedUV/texelSize),0).g; + //// BLUE + refractedUV = clamp(texcoord - ((UVNormal - abberationOffset) + directionalSmudge)*refractionMult ,0.0,1.0); + color.b = texelFetch2D(colortex3, ivec2(refractedUV/texelSize),0).b; + + #else + refractedUV = clamp(texcoord - UVNormal,0.0,1.0); + color = texture2D(colortex3, refractedUV).rgb; + #endif + + // texcoord = texcoord - (UVNormal+directionalSmudge)*refractionMult*vignette; + return color; +} + +vec3 toClipSpace3Prev(vec3 viewSpacePosition) { + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 closestToCamera5taps(vec2 texcoord, sampler2D depth) +{ + vec2 du = vec2(texelSize.x*2., 0.0); + vec2 dv = vec2(0.0, texelSize.y*2.); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depth, texcoord - dv - du).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depth, texcoord - dv + du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depth, texcoord).x); + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depth, texcoord + dv - du).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depth, texcoord + dv + du).x); + + vec3 dmin = dmc; + dmin = dmin.z > dtr.z ? dtr : dmin; + dmin = dmin.z > dtl.z ? dtl : dmin; + dmin = dmin.z > dbl.z ? dbl : dmin; + dmin = dmin.z > dbr.z ? dbr : dmin; + + #ifdef TAA_UPSCALING + dmin.xy = dmin.xy/RENDER_SCALE; + #endif + + return dmin; +} + +vec3 toClipSpace3Prev_DH( vec3 viewSpacePosition, bool depthCheck ) { + + #ifdef DISTANT_HORIZONS + mat4 projectionMatrix = depthCheck ? dhPreviousProjection : gbufferPreviousProjection; + return projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; + #else + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; + #endif +} + +vec3 toScreenSpace_DH_special(vec3 POS, bool depthCheck ) { + + vec4 viewPos = vec4(0.0); + vec3 feetPlayerPos = vec3(0.0); + vec4 iProjDiag = vec4(0.0); + + #ifdef DISTANT_HORIZONS + if (depthCheck) { + iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw); + + feetPlayerPos = POS * 2.0 - 1.0; + viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3]; + viewPos.xyz /= viewPos.w; + + } else { + #endif + iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + + feetPlayerPos = POS * 2.0 - 1.0; + viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; + viewPos.xyz /= viewPos.w; + + #ifdef DISTANT_HORIZONS + } + #endif + + return viewPos.xyz; +} +vec3 tonemap(vec3 col){ + return col/(1+luma(col)); +} +vec3 invTonemap(vec3 col){ + return col/(1-luma(col)); +} + +vec4 VLTemporalFiltering(vec3 viewPos, bool depthCheck, out float DEBUG){ + vec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0; + + vec2 VLtexCoord = texcoord * VL_RENDER_RESOLUTION; + + // vec3 closestToCamera = closestToCamera5taps(texcoord, depthtex0); + // vec3 viewPos_5tap = toScreenSpace(closestToCamera); + + // get previous frames position stuff for UV + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); + vec3 previousPosition = mat3(gbufferPreviousModelView) * playerPos + gbufferPreviousModelView[3].xyz; + previousPosition = toClipSpace3Prev(previousPosition); + + vec2 velocity = previousPosition.xy - texcoord/RENDER_SCALE; + previousPosition.xy = texcoord + velocity; + + // vec4 currentFrame = texture2D_bicubic(colortex0, VLtexCoord); + vec4 currentFrame = texture2D(colortex0, VLtexCoord ); + // vec4 currentFrame = texelFetch2D(colortex0, ivec2(VLtexCoord/texelSize),0); + + if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return currentFrame; + + vec4 col1 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, texelSize.y)); + vec4 col2 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, -texelSize.y)); + vec4 col3 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, -texelSize.y)); + vec4 col4 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, texelSize.y)); + vec4 col5 = texture2D(colortex0, VLtexCoord + vec2( 0.0, texelSize.y)); + vec4 col6 = texture2D(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y)); + vec4 col7 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0)); + vec4 col8 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, 0.0)); + + vec4 colMax = max(currentFrame,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8)))))))); + vec4 colMin = min(currentFrame,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8)))))))); + + // colMin = 0.5 * (colMin + min(currentFrame,min(col5,min(col6,min(col7,col8))))); + // colMax = 0.5 * (colMax + max(currentFrame,max(col5,max(col6,max(col7,col8))))); + + // vec4 col0 = texture(colortex0, VLtexCoord + vec2( texelSize.x, 0.0)); + // vec4 col1 = texture(colortex0, VLtexCoord + vec2( 0.0, texelSize.y)); + // vec4 col2 = texture(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0)); + // vec4 col3 = texture(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y)); + + // vec4 colMin = min(currentFrame, min(col0, min(col1, min(col2, col3)))); + // vec4 colMax = max(currentFrame, max(col0, max(col1, max(col2, col3)))); + + vec4 frameHistory = texture2D(colortex10, previousPosition.xy); + vec4 clampedFrameHistory = clamp(frameHistory, colMin, colMax); + + float blendingFactor = 0.1; + // if((min(max(clampedFrameHistory.a - frameHistory.a,0.0) / 0.0000001, 1.0)) > 0.0) blendingFactor = 1.0; + + // if(abs(clampedFrameHistory.a-frameHistory.a) > 0.1 && abs(currentFrame.a-frameHistory.a) > 0.1) blendingFactor = 1.0; + + // if(abs(currentFrame.a - frameHistory.a) > 0.6) blendingFactor = 1.0; + if(abs(clampedFrameHistory.a - frameHistory.a) > 0.1) blendingFactor = 1.0; + // blendingFactor = clamp(blendingFactor + abs(clampedFrameHistory.a - frameHistory.a),0.0,1.0); + + // DEBUG = abs(clampedFrameHistory.a - frameHistory.a) > 0.1 ? 0. : 1.0; + // DEBUG = clamp(abs(clampedFrameHistory.a - frameHistory.a),0.0,1.0); + + return clamp(mix(clampedFrameHistory, currentFrame, blendingFactor),0.0,65000.0); +} void main() { - /* DRAWBUFFERS:73 */ + /* RENDERTARGETS:7,3,10 */ ////// --------------- SETUP STUFF --------------- ////// vec2 texcoord = gl_FragCoord.xy*texelSize; - float z = texture2D(depthtex0,texcoord).x; - float z2 = texture2D(depthtex1,texcoord).x; + float z = texture2D(depthtex0, texcoord).x; + float z2 = texture2D(depthtex1, texcoord).x; float frDepth = ld(z); float swappedDepth = z; @@ -258,19 +466,13 @@ void main() { float DH_depth0 = 0.0; #endif - vec3 fragpos = toScreenSpace_DH(texcoord/RENDER_SCALE-vec2(TAA_Offset)*texelSize*0.5, z, DH_depth0); - - // vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(TAA_Offset)*texelSize*0.5,z)); - vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; - vec3 np3 = normVec(p3); - - float linearDistance = length(p3); - float linearDistance_cylinder = length(p3.xz); - - // vec3 fragpos_NODH = toScreenSpace(texcoord/RENDER_SCALE-vec2(TAA_Offset)*texelSize*0.5, z); - - // float linearDistance_NODH = length(p3); + vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth0); + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; + vec3 playerPos_normalized = normVec(playerPos); + vec3 playerPos222 = mat3(gbufferModelViewInverse) * toScreenSpace_DH(texcoord/RENDER_SCALE, 1.0,1.0) + gbufferModelViewInverse[3].xyz ; + float linearDistance = length(playerPos); + float linearDistance_cylinder = length(playerPos.xz); float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240.,2) ,0.0,1.0); float lightleakfixfast = clamp(eyeBrightness.y/240.,0.0,1.0); @@ -280,7 +482,7 @@ void main() { // bool isOpaque_entity = abs(opaqueMasks-0.45) < 0.01; ////// --------------- UNPACK TRANSLUCENT GBUFFERS --------------- ////// - vec4 data = texture2D(colortex11,texcoord).rgba; + vec4 data = texelFetch2D(colortex11,ivec2(texcoord/texelSize),0).rgba; vec4 unpack0 = vec4(decodeVec2(data.r),decodeVec2(data.g)) ; vec4 unpack1 = vec4(decodeVec2(data.b),0,0) ; @@ -288,7 +490,6 @@ void main() { vec2 tangentNormals = unpack0.xy*2.0-1.0; if(albedo.a < 0.01) tangentNormals = vec2(0.0); - vec4 TranslucentShader = texture2D(colortex2, texcoord); ////// --------------- UNPACK MISC --------------- ////// // 1.0 = water mask @@ -310,25 +511,36 @@ void main() { #else float cloudAlpha = 1.0; #endif + float DEBUG = 0.0; + vec4 temporallyFilteredVL = VLTemporalFiltering(viewPos, z >= 1.0,DEBUG); + gl_FragData[2] = temporallyFilteredVL; + + // #ifdef DISTANT_HORIZONS + // vec4 vl = BilateralUpscale(colortex0, colortex14, colortex12, gl_FragCoord.xy - 1.5, sqrt(texture2D(colortex12,texcoord).a/65000.0), cloudAlpha); + // #else + // vec4 vl = BilateralUpscale(colortex0, colortex14, depthtex0, gl_FragCoord.xy - 1.5, frDepth,cloudAlpha); + // #endif + // vec4 temporallyFilteredVL = vl; + + // vec4 temporallyFilteredVL = texture2D(colortex10, texcoord*VL_RENDER_RESOLUTION); - #ifdef DISTANT_HORIZONS - vec4 vl = BilateralUpscale(colortex0, colortex14, colortex12, gl_FragCoord.xy - 1.5, sqrt(texture2D(colortex12,texcoord).a/65000.0), cloudAlpha); - #else - vec4 vl = BilateralUpscale(colortex0, colortex14, depthtex0, gl_FragCoord.xy - 1.5, frDepth,cloudAlpha); - #endif float bloomyFogMult = 1.0; ////// --------------- distort texcoords as a refraction effect vec2 refractedCoord = texcoord; - #ifdef Refraction - ApplyDistortion(refractedCoord, tangentNormals, linearDistance, isEntity); - #endif - ////// --------------- MAIN COLOR BUFFER - vec3 color = texture2D(colortex3, refractedCoord).rgb; - + #ifdef FAKE_REFRACTION_EFFECT + // ApplyDistortion(refractedCoord, tangentNormals, linearDistance, isEntity); + // vec3 color = texture2D(colortex3, refractedCoord).rgb; + vec3 color = doRefractionEffect(refractedCoord, tangentNormals.xy, linearDistance); + #else + // vec3 color = texture2D(colortex3, refractedCoord).rgb; + vec3 color = texelFetch2D(colortex3, ivec2(refractedCoord/texelSize),0).rgb; + #endif + vec4 TranslucentShader = texture2D(colortex2, texcoord); + // color = vec3(texcoord-0.5,0.0) * mat3(gbufferModelViewInverse); // apply block breaking effect. if(albedo.a > 0.01 && !isWater && TranslucentShader.a <= 0.0 && !isEntity) color = mix(color*6.0, color, luma(albedo.rgb)) * albedo.rgb; @@ -342,7 +554,7 @@ void main() { float fog = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance_cylinder / far,0.0)*3.0,1.0) ); #endif - fog *= exp(-10.0 * pow(clamp(np3.y,0.0,1.0)*4.0,2.0)); + fog *= exp(-10.0 * pow(clamp(playerPos_normalized.y,0.0,1.0)*4.0,2.0)); fog *= (1.0-caveDetection); @@ -351,7 +563,7 @@ void main() { #ifdef SKY_GROUND vec3 borderFogColor = skyGroundColor; #else - vec3 borderFogColor = skyFromTex(np3, colortex4)/30.0; + vec3 borderFogColor = skyFromTex(playerPos_normalized, colortex4)/30.0; #endif color.rgb = mix(color.rgb, borderFogColor, fog); @@ -361,7 +573,7 @@ void main() { if (TranslucentShader.a > 0.0){ #ifdef Glass_Tint - if(!isWater) color *= mix(normalize(albedo.rgb+0.0001)*0.9+0.1, vec3(1.0), max(fog, min(max(0.1-albedo.a,0.0) * 1000.0,1.0))) ; + if(!isWater) color *= mix(normalize(albedo.rgb+1e-7), vec3(1.0), max(fog, min(max(0.1-albedo.a,0.0) * 10.0,1.0))) ; #endif #ifdef BorderFog @@ -385,58 +597,50 @@ void main() { #endif cavefogCol *= 1.0-pow(1.0-pow(1.0 - max(1.0 - linearDistance/far,0.0),2.0),CaveFogFallOff); - cavefogCol *= exp(-7.0*clamp(normalize(np3).y*0.5+0.5,0.0,1.0)) * 0.999 + 0.001; + cavefogCol *= exp(-7.0*clamp(normalize(playerPos_normalized).y*0.5+0.5,0.0,1.0)) * 0.999 + 0.001; - float skyhole = pow(clamp(1.0-pow(max(np3.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2); + cavefogCol *= 0.3; + + float skyhole = pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2); color.rgb = mix(color.rgb + cavefogCol * caveDetection, cavefogCol, z >= 1.0 ? skyhole * caveDetection : 0.0); + } #endif -#ifdef END_SHADER - // create a point that "glows" but in worldspace. - - // this is not correct but whatever - float CenterdotV = dot(normalize(vec3(0.0,400.0,0.0) - cameraPosition), normalize(p3 + cameraPosition)); - - float distanceFadeOff = pow(min(max(length(cameraPosition)-300.0,0.0)/100.0,1.0),2.0); - - color.rgb += vec3(0.1,0.5,1.0) * (exp2(-10.0 * max(-CenterdotV*0.5+0.5,0.0)) + exp(-150.0 * max(-CenterdotV*0.5+0.5,0.0))) * distanceFadeOff; -#endif - ////// --------------- underwater fog if (isEyeInWater == 1){ - float dirtAmount = Dirt_Amount + 0.01; + float dirtAmount = Dirt_Amount; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; - vec3 absorbColor = exp(-totEpsilon*linearDistance); - vec3 maxAbsorb = exp(-8.0 * totEpsilon); + vec3 absorption = exp(-2.0 * totEpsilon * linearDistance); + vec3 fixedAbsorption = exp(-30.0 * totEpsilon) ; + vec3 finalAbsorption = (absorption + fixedAbsorption * 5.0 * (1.0 + nightVision*10)); + // vec3 finalAbsorption = absorption; + + linearDistance = length(vec3(playerPos.x,max(-playerPos.y,0.0),playerPos.z)); + + // in vanilla, the water fog has a max distance of ~7 chunks + float fogfade = max(1.0 - linearDistance / min(far, 16.0*7.0), 0.0); + fogfade *= fogfade; + // fogfade = exp(-5.0* (1.0-fogfade)); + + color.rgb = mix(fixedAbsorption, color.rgb * finalAbsorption, fogfade); + // color.rgb = color.rgb * finalAbsorption; - #ifdef OVERWORLD_SHADER - - linearDistance = length(vec3(p3.x,max(-p3.y,0.0),p3.z)); - float fogfade = exp(-0.001*(linearDistance*linearDistance)); - vec3 thresholdAbsorbedColor = mix(maxAbsorb, absorbColor, clamp(dot(absorbColor,vec3(0.33333)),0.0,1.0)); - color.rgb = mix(vec3(1.0) * clamp(WsunVec.y,0,1) * pow(normalize(np3).y*0.3+0.7,1.5) * maxAbsorb, color.rgb * thresholdAbsorbedColor, clamp(fogfade,0.0,1.0)); - - #else - - color.rgb *= absorbColor; - - #endif - bloomyFogMult *= 0.4; } ////// --------------- BLEND FOG INTO SCENE //////////// apply VL fog over opaque and translucents - color *= vl.a*cloudAlpha ; - color += vl.rgb; - bloomyFogMult *= mix(vl.a,vl.a*0.5 + 0.5, rainStrength); + bloomyFogMult *= temporallyFilteredVL.a; + color *= temporallyFilteredVL.a; + color += temporallyFilteredVL.rgb; ////// --------------- VARIOUS FOG EFFECTS (in front of volumetric fog) //////////// blindness, nightvision, liquid fogs and misc fogs @@ -449,12 +653,13 @@ void main() { ////// --------------- lava. if (isEyeInWater == 2){ - color.rgb = vec3(4.0,0.5,0.1); + color.rgb = mix(color.rgb, vec3(0.1,0.0,0.0), 1.0-exp(-10.0*clamp(linearDistance*0.5,0.,1.))*0.5 ); + bloomyFogMult = 0.0; } ///////// --------------- powdered snow if (isEyeInWater == 3){ - color.rgb = mix(color.rgb,vec3(10,15,20),clamp(linearDistance*0.5,0.,1.)); + color.rgb = mix(color.rgb,vec3(0.5,0.75,1.0),clamp(linearDistance*0.5,0.,1.)); bloomyFogMult = 0.0; } @@ -462,23 +667,30 @@ void main() { color.rgb *= mix(1.0,clamp( exp(pow(linearDistance*(blindness*0.2),2) * -5),0.,1.) , blindness); //////// --------------- darkness effect - color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(fragpos)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); + color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(viewPos)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); ////// --------------- FINALIZE #ifdef display_LUT - vec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb / 30; - if(luma(thingy) > 0.0){ - color.rgb = thingy; - vl.a = 1.0; - } + // if(hideGUI == 0){ + vec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy/150),0).rgb /1200.0; + + if(luma(thingy) > 0.0){ + color.rgb = thingy; + // // vl.a = 1.0; + } + // } + #if defined OVERWORLD_SHADER + + if( hideGUI == 1) color.rgb = skyCloudsFromTex(playerPos_normalized, colortex4).rgb/1200.0; + #else + if( hideGUI == 1) color.rgb = volumetricsFromTex(playerPos_normalized, colortex4, 0.0).rgb/1200.0; + #endif #endif - - // if(texcoord.x > 0.5 )color.rgb = skyCloudsFromTex(np3, colortex4).rgb/30.0; - +// color.rgb = vec3(DEBUG); gl_FragData[0].r = bloomyFogMult; // pass fog alpha so bloom can do bloomy fog gl_FragData[1].rgb = clamp(color.rgb, 0.0,68000.0); - // gl_FragData[1].rgb = vec3(tangentNormals.xy,0.0) ; + // gl_FragData[1].rgb = vec3(tangentNormals.xy,0.0) * 0.1 ; // gl_FragData[1].rgb = vec3(1.0) * ld( (data.a > 0.0 ? data.a : texture2D(depthtex0, texcoord).x ) ) ; // gl_FragData[1].rgb = gl_FragData[1].rgb * (1.0-TranslucentShader.a) + TranslucentShader.rgb*10.0; // gl_FragData[1].rgb = 1-(texcoord.x > 0.5 ? vec3(TranslucentShader.a) : vec3(data.a)); diff --git a/shaders/dimensions/composite3.vsh b/shaders/dimensions/composite3.vsh index 3b7d4d0..2b4c566 100644 --- a/shaders/dimensions/composite3.vsh +++ b/shaders/dimensions/composite3.vsh @@ -37,7 +37,7 @@ void main() { #ifdef OVERWORLD_SHADER #ifdef BorderFog - skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 30.0 * Sky_Brightness; + skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 1200.0 * Sky_Brightness; #endif WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); #endif diff --git a/shaders/dimensions/composite5.fsh b/shaders/dimensions/composite5.fsh index a9d9a1a..d060192 100644 --- a/shaders/dimensions/composite5.fsh +++ b/shaders/dimensions/composite5.fsh @@ -11,7 +11,7 @@ const int colortex6Format = R11F_G11F_B10F; // additionnal buffer for bloom (c const int colortex7Format = RGBA8; // Final output, transparencies id (gbuffer->composite4) const int colortex8Format = RGBA8; // Specular Texture const int colortex9Format = RGBA8; // rain in alpha -const int colortex10Format = RGBA16; // resourcepack Skies +const int colortex10Format = RGBA16F; // resourcepack Skies const int colortex11Format = RGBA16; // unchanged translucents albedo, alpha and tangent normals const int colortex12Format = RGBA16F; // DISTANT HORIZONS + VANILLA MIXED DEPTHs @@ -31,7 +31,7 @@ const bool colortex6Clear = false; const bool colortex7Clear = false; const bool colortex8Clear = false; const bool colortex9Clear = true; -const bool colortex10Clear = true; +const bool colortex10Clear = false; const bool colortex11Clear = true; const bool colortex12Clear = false; const bool colortex13Clear = false; @@ -41,11 +41,11 @@ const bool colortex15Clear = false; #ifdef SCREENSHOT_MODE /* - const int colortex5Format = RGBA32F;// TAA buffer (everything) + const int colortex5Format = RGBA32F; //TAA buffer (everything) */ #else /* - const int colortex5Format = R11F_G11F_B10F; // TAA buffer (everything) + const int colortex5Format = RGBA16F; //TAA buffer (everything) */ #endif @@ -67,6 +67,7 @@ uniform vec2 texelSize; uniform float frameTimeCounter; uniform float viewHeight; uniform float viewWidth; + uniform vec3 previousCameraPosition; uniform mat4 gbufferPreviousModelView; @@ -213,6 +214,24 @@ vec4 smoothfilter(in sampler2D tex, in vec2 uv) return texture2D(tex, uv); } +vec2 smoothfilterUV(in vec2 uv) +{ + vec2 textureResolution = vec2(viewWidth,viewHeight); + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + #ifndef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + #endif + #ifdef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); + #endif + + uv = (uv - 0.5)/textureResolution; + + return uv; +} //approximation from SMAA presentation from siggraph 2016 vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount) { @@ -231,15 +250,14 @@ vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float shar vec2 w12 = w1 + w2; vec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12); vec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb; - vec2 tc0 = rtMetrics.xy * (centerPosition - 1.0); vec2 tc3 = rtMetrics.xy * (centerPosition + 2.0); - vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + + vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + vec4(texture2D(colorTex, vec2(tc0.x, tc12.y)).rgb, 1.0) * (w0.x * w12.y) + vec4(centerColor, 1.0) * (w12.x * w12.y) + vec4(texture2D(colorTex, vec2(tc3.x, tc12.y)).rgb, 1.0) * (w3.x * w12.y) + vec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y ); - + return color.rgb/color.a; } @@ -314,6 +332,24 @@ vec3 closestToCamera5taps_DH(vec2 texcoord, sampler2D depth, sampler2D dhDepth, return dmin; } +vec3 RGB2YCoCg(vec3 RGB) +{ + vec3 o; + o.x = 0.25*RGB.r + 0.5*RGB.g + 0.25*RGB.b; + o.y = 0.5*RGB.r - 0.5*RGB.b; + o.z = -0.25*RGB.r + 0.5*RGB.g - 0.25*RGB.b; + return o; +} + +vec3 YCoCg2RGB(vec3 YCoCg) +{ + vec3 o; + o.r = YCoCg.x + YCoCg.y - YCoCg.z; + o.g = YCoCg.x + YCoCg.z; + o.b = YCoCg.x - YCoCg.y - YCoCg.z; + return o; +} + vec4 computeTAA(vec2 texcoord, bool hand){ vec2 jitter = offsets[framemod8]*texelSize*0.5; @@ -340,9 +376,9 @@ vec4 computeTAA(vec2 texcoord, bool hand){ vec2 velocity = previousPosition.xy - closestToCamera.xy; previousPosition.xy = texcoord + velocity; - // sample current frame, and make sure it is de-jittered - vec3 currentFrame = smoothfilter(colortex3, adjTC + jitter).rgb; + // vec3 currentFrame = smoothfilter(colortex3, adjTC + jitter).rgb; + vec3 currentFrame = texelFetch2D(colortex3, ivec2((adjTC + jitter)/texelSize), 0).rgb; //reject history if off-screen and early exit if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return vec4(currentFrame, 1.0); @@ -366,14 +402,13 @@ vec4 computeTAA(vec2 texcoord, bool hand){ vec3 colMax = max(col0,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8)))))))); vec3 colMin = min(col0,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8)))))))); - vec3 colMax5 = max(col0,max(col5,max(col6,max(col7,col8)))); - vec3 colMin5 = min(col0,min(col5,min(col6,min(col7,col8)))); + colMin = 0.5 * (colMin + min(col0,min(col5,min(col6,min(col7,col8))))); + colMax = 0.5 * (colMax + max(col0,max(col5,max(col6,max(col7,col8))))); - colMin = 0.5 * (colMin + colMin5); - colMax = 0.5 * (colMax + colMax5); #endif + #ifdef DAMAGE_TAKEN_EFFECT - // when this triggers, use current frame UV to sample history, for a funny trailing effect. + ////// when this triggers, use current frame UV to sample history, for a funny trailing effect. if(CriticalDamageTaken > 0.01) previousPosition.xy = texcoord; #endif @@ -383,14 +418,17 @@ vec4 computeTAA(vec2 texcoord, bool hand){ float blendingFactor = BLEND_FACTOR; if(hand) blendingFactor = clamp(length(velocity/texelSize),blendingFactor,1.0); - //Increases blending factor when far from AABB, reduces ghosting - blendingFactor = min(blendingFactor + luma(min(max(clampedframeHistory - frameHistory,0.0) / frameHistory, 1.0)),1.0); + ////// Increases blending factor when far from AABB, reduces ghosting + // blendingFactor = min(blendingFactor + luma(min(max(clampedframeHistory-frameHistory,0.0) / frameHistory, 1.0)),1.0); + // blendingFactor = min(blendingFactor + luma(abs(clampedframeHistory - frameHistory)/clampedframeHistory) ,1.0); - // Blend current pixel with clamped history, apply fast tonemap beforehand to reduce flickering + // if(luma(abs(clampedframeHistory - frameHistory)) > 0.01) blendingFactor = 1.0; + + ////// Blend current pixel with clamped history, apply fast tonemap beforehand to reduce flickering vec3 finalResult = invTonemap(mix(tonemap(clampedframeHistory), tonemap(currentFrame), blendingFactor)); #ifdef DAMAGE_TAKEN_EFFECT - // when this triggers, do a funny trailing effect. + ////// when this triggers, do a funny trailing effect. if(CriticalDamageTaken > 0.01) finalResult = mix(finalResult, frameHistory, sqrt(CriticalDamageTaken)*0.8); #endif #ifdef SCREENSHOT_MODE @@ -418,14 +456,10 @@ void main() { // vec4 color = TAA_hq(hand); - vec4 color = computeTAA(texcoord, hand); + vec4 color = computeTAA(smoothfilterUV(texcoord), hand); // gl_FragData[0] = clamp(color, 0.0, 65000.0); - #if DEBUG_VIEW == debug_TEMPORAL_REPROJECTION - color.rgb = texture2D(colortex3, taauTC).rgb; - #endif - #ifdef SCREENSHOT_MODE gl_FragData[0] = clamp(color, 0.0, 65000.0); #else diff --git a/shaders/dimensions/deferred.fsh b/shaders/dimensions/deferred.fsh index 84b8232..a65ccea 100644 --- a/shaders/dimensions/deferred.fsh +++ b/shaders/dimensions/deferred.fsh @@ -64,11 +64,18 @@ vec3 toShadowSpaceProjected(vec3 p3){ return p3; } +float interleaved_gradientNoise_temporal(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y) + 1.0/1.6180339887 * frameCounter); +} float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; - float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+frameCounter/1.6180339887); + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} float blueNoise(){ return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); } @@ -123,6 +130,7 @@ float invLinZ (float lindepth){ } #ifdef OVERWORLD_SHADER + uniform sampler2D colortex4; // uniform sampler2D colortex12; // const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; @@ -135,11 +143,27 @@ float invLinZ (float lindepth){ uniform sampler2DShadow shadowtex1; #endif - #define TEST + // #define TEST #define TIMEOFDAYFOG #include "/lib/lightning_stuff.glsl" - + + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + + flat varying vec4 CurrentFrame_dailyWeatherParams0; + flat varying vec4 CurrentFrame_dailyWeatherParams1; + + + #define VL_CLOUDS_DEFERRED + #include "/lib/volumetricClouds.glsl" + #include "/lib/climate_settings.glsl" #include "/lib/overworld_fog.glsl" #endif @@ -165,23 +189,16 @@ vec2 R2_samples(float n){ return fract(alpha * n); } +uniform float dayChangeSmooth; +uniform bool worldTimeChangeCheck; + void main() { /* DRAWBUFFERS:4 */ gl_FragData[0] = vec4(0.0); + float mixhistory = 0.06; -float accumuteSpeed = texelFetch2D(colortex4, ivec2(5,5), 0).r/150.0; - -vec2 pixelPos6 = vec2(5,5); - -if (gl_FragCoord.x > pixelPos6.x && gl_FragCoord.x < pixelPos6.x + 1 && gl_FragCoord.y > pixelPos6.y && gl_FragCoord.y < pixelPos6.y + 1){ - mixhistory = 0.1; - gl_FragData[0] = vec4(1,0,0,1); -} - - - #ifdef OVERWORLD_SHADER @@ -194,12 +211,12 @@ if (gl_FragCoord.x > pixelPos6.x && gl_FragCoord.x < pixelPos6.x + 1 && gl_FragC #ifdef Daily_Weather ivec2 pixelPos = ivec2(0,0); if (gl_FragCoord.x > 1 && gl_FragCoord.x < 4 && gl_FragCoord.y > 1 && gl_FragCoord.y < 2){ + + mixhistory = clamp(dayChangeSmooth*dayChangeSmooth*dayChangeSmooth*0.1, frameTime*0.1, 1.0); - mixhistory = 0.005; - - if(gl_FragCoord.x < 2) gl_FragData[0] = vec4(dailyWeatherParams0.rgb * 2.0,1.0); - if(gl_FragCoord.x > 2) gl_FragData[0] = vec4(dailyWeatherParams1.rgb * 2.0,1.0); - if(gl_FragCoord.x > 3) gl_FragData[0] = vec4(dailyWeatherParams0.a * 2.0, dailyWeatherParams1.a * 2.0, 0.0, 1.0); + if(gl_FragCoord.x < 2) gl_FragData[0] = vec4(CurrentFrame_dailyWeatherParams0.rgb * 10.0,1.0); + if(gl_FragCoord.x > 2) gl_FragData[0] = vec4(CurrentFrame_dailyWeatherParams1.rgb * 10.0,1.0); + if(gl_FragCoord.x > 3) gl_FragData[0] = vec4(CurrentFrame_dailyWeatherParams0.a * 10.0, CurrentFrame_dailyWeatherParams1.a * 10.0, 0.0, 1.0); } #endif @@ -267,7 +284,9 @@ if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ sky *= vec3(0.0, 0.18, 0.35); #endif - gl_FragData[0] = vec4(sky / 4000.0, 1.0); + gl_FragData[0] = vec4(sky / 4000.0 , 1.0); + + if(worldTimeChangeCheck) mixhistory = 1.0; } /// --- Sky + clouds + fog @@ -275,27 +294,31 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.+tempOffsets/256.,0.0,1.0); vec3 viewVector = cartToSphere(p); - WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition) ;// * ( float(sunElevation > 1e-5)*2.0-1.0 ); + vec3 viewPos = mat3(gbufferModelView)*viewVector*1024.0; + float noise = interleaved_gradientNoise_temporal(); + + WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition + gbufferModelViewInverse[3].xyz) ;// * ( float(sunElevation > 1e-5)*2.0-1.0 ); vec3 sky = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy)-ivec2(257,0),0).rgb/150.0; - sky = mix(dot(sky, vec3(0.333)) * vec3(0.5), sky, pow(clamp(viewVector.y+1.0,0.0,1.0),5)); + sky = mix(averageSkyCol_Clouds * AmbientLightTint * 0.25, sky, pow(clamp(viewVector.y+1.0,0.0,1.0),5.0)); vec3 suncol = lightSourceColor; + #ifdef ambientLight_only suncol = vec3(0.0); #endif - - vec3 cloudDepth = vec3(0.0); - vec4 clouds = renderClouds(mat3(gbufferModelView)*viewVector*1024., vec2(fract(frameCounter/1.6180339887),1-fract(frameCounter/1.6180339887)), suncol*2.0, skyGroundCol/30.0, cloudDepth); - - float atmosphereAlpha = 1.0; - vec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*1024., vec2(fract(frameCounter/1.6180339887),1-fract(frameCounter/1.6180339887)), suncol*2.0, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha); + float rejection = 1.0; + vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, suncol*2.5, skyGroundCol/30.0); - sky = sky*clouds.a + clouds.rgb / 5.0; - sky *= atmosphereAlpha; - sky = sky * VL_Fog.a + VL_Fog.rgb / 5.0; + float atmosphereAlpha = 1.0; + vec4 volumetricFog = GetVolumetricFog(viewPos, vec2(noise, 1.0-noise), suncol*2.5, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha, volumetricClouds.rgb); + + sky = sky * volumetricClouds.a + volumetricClouds.rgb / 5.0; + sky = sky * volumetricFog.a + volumetricFog.rgb / 5.0; gl_FragData[0] = vec4(sky,1.0); + + if(worldTimeChangeCheck) mixhistory = 1.0; } #endif @@ -306,14 +329,15 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ if (gl_FragCoord.x > (fogPos.x - fogPos.x*0.22) && gl_FragCoord.y > 0.4 && gl_FragCoord.x < 535){ vec2 p = clamp(floor(gl_FragCoord.xy-fogPos)/256.+tempOffsets/256.,-0.2,1.2); vec3 viewVector = cartToSphere(p); + float noise = interleaved_gradientNoise_temporal(); vec3 BackgroundColor = vec3(0.0); - vec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*256., fract(frameCounter/1.6180339887), fract(frameCounter/2.6180339887)); + vec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*256., noise, 1.0-noise); - BackgroundColor += VL_Fog.rgb/5.0; + BackgroundColor += VL_Fog.rgb; - gl_FragData[0] = vec4(BackgroundColor, 1.0); + gl_FragData[0] = vec4(BackgroundColor*8.0, 1.0); } #endif @@ -371,12 +395,11 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ //Temporally accumulate sky and light values -vec3 temp = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; -vec3 curr = gl_FragData[0].rgb*150.; +vec3 frameHistory = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; +vec3 currentFrame = gl_FragData[0].rgb*150.; -if(accumuteSpeed < 1.0) mixhistory = 1.0; -gl_FragData[0].rgb = clamp(mix(temp, curr, mixhistory),0.0,65000.); +gl_FragData[0].rgb = clamp(mix(frameHistory, currentFrame, mixhistory),0.0,65000.); //Exposure values if (gl_FragCoord.x > 10. && gl_FragCoord.x < 11. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh index 02bf6ec..5378d88 100644 --- a/shaders/dimensions/deferred.vsh +++ b/shaders/dimensions/deferred.vsh @@ -23,8 +23,13 @@ flat varying float rodExposure; flat varying float avgL2; flat varying float centerDepth; -flat varying vec4 dailyWeatherParams0; -flat varying vec4 dailyWeatherParams1; +#ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; +#endif +uniform int hideGUI; +flat varying vec4 CurrentFrame_dailyWeatherParams0; +flat varying vec4 CurrentFrame_dailyWeatherParams1; uniform sampler2D colortex4; uniform sampler2D colortex6; @@ -146,10 +151,13 @@ void main() { } // maximum control of color and luminance - vec3 minimumlight = vec3(0.5,0.75,1.0) * (min(MIN_LIGHT_AMOUNT,0.0025) + nightVision); // vec3 minimumlight = vec3(0.5,0.75,1.0) * nightVision; - averageSkyCol_Clouds = max( normalize(averageSkyCol_Clouds) * min(luma(averageSkyCol_Clouds) * 3.0,2.5) * (1.0-rainStrength*0.7), minimumlight); - averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS, minimumlight); + // averageSkyCol_Clouds = max( normalize(averageSkyCol_Clouds) * min(luma(averageSkyCol_Clouds) * 3.0,2.5) * (1.0-rainStrength*0.7), minimumlight); + + + vec3 minimumlight = vec3(0.02) * 0.2 * MIN_LIGHT_AMOUNT + nightVision * 0.05; + averageSkyCol_Clouds = max(normalize(averageSkyCol_Clouds + 1e-6) * min(luma(averageSkyCol_Clouds) * 3.0,2.5),0.0); + averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS,0.0) + max(minimumlight, 0.02 * 0.2); //////////////////////////////////////// /// --- SUNLIGHT/MOONLIGHT STUFF --- /// @@ -165,7 +173,8 @@ void main() { sunColor = sunColorBase/4000.0 * skyAbsorb; moonColor = moonColorBase/4000.0; - lightSourceColor = (sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis) ; + // lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis; + lightSourceColor = sunColor * sunVis + moonColor * moonVis; #endif @@ -213,8 +222,39 @@ void main() { vec4(DAY9_l0_density, DAY9_l1_density, DAY9_l2_density, DAY9_cfog_density) ); - dailyWeatherParams0 = weatherParameters_A[dayCounter]; - dailyWeatherParams1 = weatherParameters_B[dayCounter]; + + + CurrentFrame_dailyWeatherParams0 = weatherParameters_A[dayCounter]; + CurrentFrame_dailyWeatherParams1 = weatherParameters_B[dayCounter]; + + vec4 rainyWeatherParameters_A[3] = vec4[]( + // vec4(DAY0_l0_coverage, DAY0_l1_coverage, DAY0_l2_coverage, DAY0_ufog_density), + vec4(1.3,0.0,0.0,0.0), + vec4(0.5,0.0,0.0,0.0), + vec4(0.0,0.0,0.0,0.0) + ); + vec4 rainyWeatherParameters_B[3] = vec4[]( + // vec4(DAY7_l0_density, DAY7_l1_density, DAY7_l2_density, DAY7_cfog_density), + vec4(0.1,0.0,0.0,0.0), + vec4(0.1,0.0,0.0,0.0), + vec4(0.0,0.0,0.0,0.0) + ); + + // if(hideGUI == 1){ + // CurrentFrame_dailyWeatherParams0 = rainyWeatherParameters_A[worldDay%2]; + // CurrentFrame_dailyWeatherParams1 = rainyWeatherParameters_B[worldDay%2]; + // } else { + // CurrentFrame_dailyWeatherParams0 = vec4(0.5,0.0,0.0,0.0); + // CurrentFrame_dailyWeatherParams1 = vec4(0.1,0.5,0.0,0.0); + // } + + #if defined Daily_Weather + dailyWeatherParams0 = vec4(sqrt(texelFetch2D(colortex4,ivec2(1,1),0).rgb/ 1500.0), 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + + dailyWeatherParams0.a = texelFetch2D(colortex4,ivec2(3,1),0).x/1500.0; + dailyWeatherParams1.a = texelFetch2D(colortex4,ivec2(3,1),0).y/1500.0; + #endif #endif @@ -235,7 +275,7 @@ void main() { vec2 ij = R2_samples((frameCounter%2000)*maxITexp+i); vec2 tc = 0.5 + (ij-0.5) * 0.7; vec3 sp = texture2D(colortex6, tc/16. * resScale+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; - avgExp += log(luma(sp)); + avgExp += log(sqrt(luma(sp))); avgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2)); } @@ -247,13 +287,16 @@ void main() { float L = max(avgBrightness,1e-8); float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); float expFunc = 0.5+0.5*tanh(log(L)); - float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; + + float targetExposure = 1.0/log(L+1.05); + // float targetExposure = 0.35/log(L+1.05); + // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; - exposure = max(targetExposure*EXPOSURE_MULTIPLIER, 0.0); + exposure = max(targetExposure, 0.0); // exposure = mix(0.0, 1.0, min(targetExposure,1.0)); // exposure = 1; diff --git a/shaders/dimensions/deferred2.fsh b/shaders/dimensions/deferred2.fsh index b2d8c55..60c584b 100644 --- a/shaders/dimensions/deferred2.fsh +++ b/shaders/dimensions/deferred2.fsh @@ -100,6 +100,17 @@ uniform int dhRenderDistance; #define CLOUDS_INTERSECT_TERRAIN uniform float eyeAltitude; + + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + + #include "/lib/volumetricClouds.glsl" @@ -116,7 +127,6 @@ uniform float eyeAltitude; void main() { -/* DRAWBUFFERS:0 */ diff --git a/shaders/dimensions/deferred2.vsh b/shaders/dimensions/deferred2.vsh index cc7f26b..8dd15ea 100644 --- a/shaders/dimensions/deferred2.vsh +++ b/shaders/dimensions/deferred2.vsh @@ -1,10 +1,12 @@ #include "/lib/settings.glsl" // uniform int dhRenderDistance; -#if defined Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; -#endif + + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #endif + flat varying vec3 averageSkyCol; flat varying vec3 sunColor; @@ -32,8 +34,8 @@ void main() { gl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(CLOUDS_QUALITY+0.01,0.0,1.0)*2.0-1.0; #if defined Daily_Weather - dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); #endif averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb; diff --git a/shaders/dimensions/final.fsh b/shaders/dimensions/final.fsh index 12d3420..b97b76e 100644 --- a/shaders/dimensions/final.fsh +++ b/shaders/dimensions/final.fsh @@ -1,14 +1,18 @@ #include "/lib/settings.glsl" uniform sampler2D colortex7; +uniform sampler2D colortex5; +uniform sampler2D colortex6; uniform sampler2D colortex14; uniform sampler2D depthtex0; +uniform sampler2D depthtex1; uniform sampler2D depthtex2; uniform sampler2D noisetex; varying vec2 texcoord; uniform vec2 texelSize; uniform float frameTimeCounter; +uniform int frameCounter; uniform float viewHeight; uniform float viewWidth; uniform float aspectRatio; @@ -19,12 +23,19 @@ uniform int hideGUI; #include "/lib/color_dither.glsl" #include "/lib/res_params.glsl" - +uniform float near; +uniform float far; +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} #include "/lib/gameplay_effects.glsl" @@ -53,14 +64,20 @@ uniform mat4 gbufferPreviousModelView; #include "/lib/util.glsl" #include "/lib/projections.glsl" +vec3 tonemap(vec3 col){ + return col/(1+luma(col)); +} +vec3 invTonemap(vec3 col){ + return col/(1-luma(col)); +} -vec3 doMotionBlur(vec2 texcoord, float depth, float noise){ +vec3 doMotionBlur(vec2 texcoord, float depth, float noise, bool hand){ float samples = 4.0; vec3 color = vec3(0.0); float blurMult = 1.0; - if(depth < 0.56) blurMult = 0.0; + if(hand) blurMult = 0.0; vec3 viewPos = toScreenSpace(vec3(texcoord, depth)); viewPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); @@ -71,8 +88,9 @@ vec3 doMotionBlur(vec2 texcoord, float depth, float noise){ vec2 velocity = texcoord - previousPosition.xy; // thank you Capt Tatsu for letting me use these - velocity = (velocity / (1.0 + length(velocity))) * 0.05 * blurMult * MOTION_BLUR_STRENGTH; + velocity = (velocity / (1.0 + length(velocity)) ) * 0.05 * blurMult * MOTION_BLUR_STRENGTH; texcoord = texcoord - velocity*(samples*0.5 + noise); + vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight); for (int i = 0; i < int(samples); i++) { @@ -81,23 +99,53 @@ vec3 doMotionBlur(vec2 texcoord, float depth, float noise){ color += texture2D(colortex7, clamp(texcoord, screenEdges, 1.0-screenEdges)).rgb; } - // return vec3(texcoord,0.0); + return color / samples; } +float convertHandDepth_2(in float depth, bool hand) { + if(!hand) return depth; + + float ndcDepth = depth * 2.0 - 1.0; + ndcDepth /= MC_HAND_DEPTH; + return ndcDepth * 0.5 + 0.5; +} + uniform sampler2D shadowcolor1; +float doVignette( in vec2 texcoord, in float noise){ + + float vignette = 1.0-clamp(1.0-length(texcoord-0.5),0.0,1.0); + + // vignette = pow(1.0-pow(1.0-vignette,3),5); + vignette *= vignette*vignette; + vignette = 1.0-vignette; + vignette *= vignette*vignette*vignette*vignette; + + // stop banding + vignette = vignette + vignette*(noise-0.5)*0.01; + + return mix(1.0, vignette, VIGNETTE_STRENGTH); +} + void main() { - float depth = texture2D(depthtex0,texcoord*RENDER_SCALE).r; - float noise = interleaved_gradientNoise(); + float noise = blueNoise(); #ifdef MOTION_BLUR - vec3 COLOR = doMotionBlur(texcoord, depth, noise); + float depth = texture2D(depthtex0, texcoord*RENDER_SCALE).r; + bool hand = depth < 0.56; + float depth2 = convertHandDepth_2(depth, hand); + + vec3 COLOR = doMotionBlur(texcoord, depth2, noise, hand); #else vec3 COLOR = texture2D(colortex7,texcoord).rgb; #endif - + + #ifdef VIGNETTE + COLOR *= doVignette(texcoord, noise); + #endif + #if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT || defined WATER_ON_CAMERA_EFFECT // for making the fun, more fun applyGameplayEffects(COLOR, texcoord, noise); @@ -108,10 +156,19 @@ void main() { #endif #if DEBUG_VIEW == debug_SHADOWMAP + vec2 shadowUV = texcoord * vec2(2.0, 1.0) ; - vec2 shadowUV = texcoord * vec2(2.0, 1.0); + // shadowUV -= vec2(0.5,0.0); + // float zoom = 0.1; + // shadowUV = ((shadowUV-0.5) - (shadowUV-0.5)*zoom) + 0.5; - if(shadowUV.x < 1.0 && shadowUV.y < 1.0 && hideGUI == 1)COLOR = texture2D(shadowcolor1,shadowUV).rgb; + if(shadowUV.x < 1.0 && shadowUV.y < 1.0 && hideGUI == 1) COLOR = texture2D(shadowcolor1,shadowUV).rgb; + #endif + #if DEBUG_VIEW == debug_DEPTHTEX0 + COLOR = vec3(ld(texture2D(depthtex0, texcoord*RENDER_SCALE).r)); + #endif + #if DEBUG_VIEW == debug_DEPTHTEX1 + COLOR = vec3(ld(texture2D(depthtex1, texcoord*RENDER_SCALE).r)); #endif diff --git a/shaders/dimensions/fogBehindTranslucent_pass.fsh b/shaders/dimensions/fogBehindTranslucent_pass.fsh index 87ceb60..51cad85 100644 --- a/shaders/dimensions/fogBehindTranslucent_pass.fsh +++ b/shaders/dimensions/fogBehindTranslucent_pass.fsh @@ -2,9 +2,7 @@ // #if defined END_SHADER || defined NETHER_SHADER #undef IS_LPV_ENABLED // #endif -#ifndef OVERWORLD_SHADER uniform float nightVision; -#endif flat varying vec4 lightCol; flat varying vec3 averageSkyCol; @@ -90,14 +88,33 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo flat varying vec3 refractedSunVec; + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); + #endif + + #define TIMEOFDAYFOG #include "/lib/lightning_stuff.glsl" #define CLOUDS_INTERSECT_TERRAIN // #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" + #include "/lib/climate_settings.glsl" #include "/lib/overworld_fog.glsl" + +// float fogPhase(float lightPoint){ +// float linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0); +// float linear2 = 1.0 - clamp(lightPoint,0.0,1.0); +// float exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5; +// exponential += sqrt(exp2(sqrt(linear) * -12.5)); + +// return exponential; +// } #endif #ifdef NETHER_SHADER uniform sampler2D colortex4; @@ -190,7 +207,7 @@ float fogPhase2(float lightPoint){ return exponential; } -vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ +vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL, float lightleakFix){ int spCount = rayMarchSampleCount; vec3 start = toShadowSpaceProjected(rayStart); @@ -207,8 +224,12 @@ vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float vec3 wpos = mat3(gbufferModelViewInverse) * rayStart + gbufferModelViewInverse[3].xyz; vec3 dVWorld = (wpos - gbufferModelViewInverse[3].xyz); + + // vec3 dVWorld = -mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; - vec3 newabsorbance = exp(-rayLength * waterCoefs); // No need to take the integrated value + // vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + + #ifdef OVERWORLD_SHADER float phase = fogPhase(VdotL) * 5.0; #else @@ -218,13 +239,14 @@ vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float vec3 vL = vec3(0.0); ambient = max(ambient * (normalize(wpos).y*0.3+0.7),0.0); - float expFactor = 11.0; for (int i=0;i 0.99; + float alpha = texture2D(colortex7,tc).a ; + float blendedAlpha = texture2D(colortex2, tc).a; + + bool iswater = alpha > 0.99; ////////////////////////////////////////////////////////// ///////////////// BEHIND OF TRANSLUCENTS ///////////////// ////////////////////////////////////////////////////////// - if(texture2D(colortex2, tc).a > 0.0 || iswater){ + if(blendedAlpha > 0.0 || iswater){ float noise_1 = R2_dither(); float noise_2 = blueNoise(); @@ -322,78 +390,106 @@ void main() { // vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.); - float dirtAmount = Dirt_Amount + 0.1; + float dirtAmount = Dirt_Amount ; // float dirtAmount = Dirt_Amount + 0.01; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); - vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + vec3 totEpsilon = dirtEpsilon * dirtAmount + waterEpsilon; vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; #ifdef BIOME_TINT_WATER // yoink the biome tint written in this buffer for water only. if(iswater){ - vec2 translucentdata = texture2D(colortex11,tc).gb; + vec2 translucentdata = texelFetch2D(colortex11,ivec2(tc/texelSize),0).gb; vec3 wateralbedo = normalize(vec3(decodeVec2(translucentdata.x),decodeVec2(translucentdata.y).x)+0.00001) * 0.5 + 0.5; scatterCoef = dirtAmount * wateralbedo / 3.14; } #endif - vec3 directLightColor = lightCol.rgb/80.0; - vec3 indirectLightColor = averageSkyCol/30.0; - vec3 indirectLightColor_dynamic = averageSkyCol_Clouds/30.0; + // vec3 directLightColor = lightCol.rgb / 2400.0; + // vec3 indirectLightColor = averageSkyCol / 1500.0; + // vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 900.0; + + vec3 directLightColor = lightCol.rgb / 2400.0; + vec3 indirectLightColor = averageSkyCol / 1200.0; + vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 900.0; + vec3 viewPos1 = toScreenSpace_DH(tc/RENDER_SCALE, z, DH_z); vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); - vec3 playerPos = normalize(mat3(gbufferModelViewInverse) * viewPos1); + + vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos1; + vec3 playerPos0 = mat3(gbufferModelViewInverse) * viewPos0; #ifdef OVERWORLD_SHADER // vec2 lightmap = decodeVec2(texture2D(colortex14, tc).a); - vec2 lightmap = vec2(0.0,texture2D(colortex14, tc).a); + // vec2 lightmap = vec2(0.0,texture2D(colortex14, tc).a); + + vec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).x); + + #ifdef DISTANT_HORIZONS if(z >= 1.0) lightmap.y = 0.99; #endif #else - vec2 lightmap = decodeVec2(texture2D(colortex14, tc).a); + vec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).a); lightmap.y = 1.0; #endif - float Vdiff = distance(viewPos1, viewPos0) * 2.0; - float VdotU = playerPos.y; - float estimatedDepth = Vdiff * abs(VdotU) ; //assuming water plane - float estimatedSunDepth = estimatedDepth / abs(WsunVec.y); //assuming water plane + // float Vdiff = distance(viewPos1, viewPos0) * 2.0; + // float VdotU = playerPos.y; + // float estimatedDepth = Vdiff * abs(VdotU); //assuming water plane - indirectLightColor_dynamic *= ambient_brightness * pow(1.0-pow(1.0-lightmap.y,0.5),3.0) ; - // float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) ; - // indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * TorchBrightness_autoAdjust * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) * 2.0; - - vec3 cloudDepth = vec3(0.0); - vec4 VolumetricFog2 = vec4(0,0,0,1); - vec4 VolumetricClouds = vec4(0,0,0,1); + float Vdiff = distance(viewPos1, viewPos0); + float estimatedDepth = Vdiff * abs(normalize(playerPos).y); + float estimatedSunDepth = (Vdiff * 0.5) / abs(WsunVec.y); //assuming water plane + Vdiff *= 2.0; - #ifdef OVERWORLD_SHADER - if(!iswater){ + // Vdiff = Vdiff * (1.0 - clamp(exp(-Vdiff),0.0,1.0)) + max(estimatedDepth - 1.0,0.0); + // estimatedDepth = max(estimatedDepth - 1.0,0.0); + + indirectLightColor_dynamic *= ambient_brightness * lightmap.y*lightmap.y; - #if defined CLOUDS_INTERSECT_TERRAIN - VolumetricClouds = renderClouds(viewPos1, vec2(noise_1,noise_2), directLightColor, indirectLightColor, cloudDepth); - #endif + indirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02; + + indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) ; + + vec4 finalVolumetrics = vec4(0.0,0.0,0.0,1.0); + + if(!iswater){ + #ifdef OVERWORLD_SHADER + vec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WsunVec, directLightColor, indirectLightColor); + float atmosphereAlpha = 1.0; - VolumetricFog2 = GetVolumetricFog(viewPos1, vec2(noise_1, noise_2), directLightColor, indirectLightColor,indirectLightColor_dynamic, atmosphereAlpha); - VolumetricClouds.a *= atmosphereAlpha; + vec4 VolumetricFog = GetVolumetricFog(viewPos1, vec2(noise_1, noise_2), directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb); + + finalVolumetrics = VolumetricClouds; + + // VolumetricClouds.a *= atmosphereAlpha; + #endif - #if defined CLOUDS_INTERSECT_TERRAIN - VolumetricFog2 = vec4(VolumetricClouds.rgb * VolumetricFog2.a * atmosphereAlpha + VolumetricFog2.rgb, VolumetricFog2.a*VolumetricClouds.a); - #endif - } - #endif + #if defined NETHER_SHADER || defined END_SHADER + vec4 VolumetricFog = GetVolumetricFog(viewPos1, noise_1, noise_2); + #endif + + // #if defined OVERWORLD_SHADER + // vec4 VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a); + // #endif + + finalVolumetrics.rgb = finalVolumetrics.rgb * VolumetricFog.a + VolumetricFog.rgb; + finalVolumetrics.a *= VolumetricFog.a; + } vec4 underwaterVlFog = vec4(0,0,0,1); - if(iswater) underwaterVlFog = waterVolumetrics_test(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor* (1.0-caveDetection), dot(normalize(viewPos1), normalize(sunVec*lightCol.a)) ); - vec4 fogFinal = vec4(underwaterVlFog.rgb * VolumetricFog2.a + VolumetricFog2.rgb, VolumetricFog2.a * underwaterVlFog.a); + float lightleakfix = clamp(lightmap.y + (1-caveDetection),0.0,1.0); + if(iswater && isEyeInWater != 1) underwaterVlFog = waterVolumetrics_test(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos1), normalize(sunVec*lightCol.a)) ,lightleakfix); + + finalVolumetrics.rgb += underwaterVlFog.rgb; - gl_FragData[0] = clamp(fogFinal, 0.0, 65000.0); + gl_FragData[0] = clamp(finalVolumetrics, 0.0, 65000.0); } } \ No newline at end of file diff --git a/shaders/dimensions/fogBehindTranslucent_pass.vsh b/shaders/dimensions/fogBehindTranslucent_pass.vsh index 1b6f513..d74ae93 100644 --- a/shaders/dimensions/fogBehindTranslucent_pass.vsh +++ b/shaders/dimensions/fogBehindTranslucent_pass.vsh @@ -6,10 +6,11 @@ flat varying vec4 lightCol; flat varying vec3 averageSkyCol; flat varying vec3 averageSkyCol_Clouds; -#if defined Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; -#endif + #ifdef Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; + #endif + flat varying vec3 WsunVec; flat varying vec3 refractedSunVec; @@ -56,11 +57,11 @@ void main() { averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; #if defined Daily_Weather - dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams0.a = (texelFetch2D(colortex4,ivec2(3,1),0).x/150.0)/2.0; - dailyWeatherParams1.a = (texelFetch2D(colortex4,ivec2(3,1),0).y/150.0)/2.0; + dailyWeatherParams0.a = texelFetch2D(colortex4,ivec2(3,1),0).x/1500.0; + dailyWeatherParams1.a = texelFetch2D(colortex4,ivec2(3,1),0).y/1500.0; #endif #endif @@ -68,7 +69,7 @@ void main() { #ifdef NETHER_SHADER lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); - averageSkyCol_Clouds = vec3(2.0, 1.0, 0.5) * 5.0; + averageSkyCol_Clouds = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb; #endif #ifdef END_SHADER diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 54ba5b5..63564b5 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -389,12 +389,14 @@ screen.World = World option.SSR_STEPS = SSR Quality option.WATER_SUN_SPECULAR = Sun/Moon Reflections option.WATER_BACKGROUND_SPECULAR = Sky/Fog Reflections - option.Refraction = Refraction In Water/Glass + option.FAKE_REFRACTION_EFFECT = Refraction In Water/Glass option.Dirt_Amount = Dirt Amount option.Water_Top_Layer = Ocean Y coordinate option.WATER_WAVE_STRENGTH = Wave Strength option.SNELLS_WINDOW = Snell's Window - + option.MINIMUM_WATER_ABSORBANCE = Minimum Water Absorbance + value.MINIMUM_WATER_ABSORBANCE.-1 = AUTO + screen.Water_fog_color = Water Fog Settings option.Dirt_Scatter_R = Scatter Red (dirt) option.Dirt_Scatter_G = Scatter Green (dirt) @@ -417,6 +419,7 @@ screen.Post_Processing = Post Processing screen.TAA_OPTIONS = Anti-Aliasing Settings option.SCREENSHOT_MODE = Screenshot Mode option.TAA = TAA + option.RESPONSIVE_TAA = Responsive TAA §a(SET BLEND FACTOR TO 0.25 WHEN THIS IS ENABLED) option.BLEND_FACTOR = Blend Factor option.TAA_UPSCALING = Temporal Upscaling option.SCALE_FACTOR = Scale Factor @@ -627,7 +630,7 @@ screen.World.comment = Configure settings for various things that happen in the option.SSR_STEPS.comment = Configure the quality of the screen-space reflections on translucent things. §aPERFORMANCE COST:§r medium to high option.WATER_SUN_SPECULAR.comment = Toggle the sun and moon reflections on translucent things. §aPERFORMANCE COST:§r low option.WATER_BACKGROUND_SPECULAR.comment = Toggle the sky and fog reflections on translucent things. §aPERFORMANCE COST:§r low to medium - option.Refraction.comment = Toggle refraction on translucent things. §bWhat is this?§r If you look at water, you can see the light refracting distorts what is in it. §aPERFORMANCE COST:§r low + option.FAKE_REFRACTION_EFFECT.comment = Toggle refraction on translucent things. §bWhat is this?§r If you look at water, you can see the light refracting distorts what is in it. §aPERFORMANCE COST:§r low option.Dirt_Amount.comment = Configure how much dirt is in water. This controls how much fog is within water. option.Water_Top_Layer.comment = Configure the Y coordinate at which the ocean should be in the world. @@ -735,4 +738,5 @@ option.DISTANT_HORIZONS_SHADOWMAP.comment = §cTHIS SETTING WILL DESTROY PERFOR option.TOGGLE_VL_FOG = Toggle Volumetric Fog option.TOGGLE_VL_FOG.comment = one big button to just turn all the fog off. -option.TRANSLUCENT_COLORED_SHADOWS.comment = §bWhat is this?§r This effect allows translucent things like stained glass to color the sunlight as it passes through it. §aPERFORMANCE COST:§r medium \ No newline at end of file +option.TRANSLUCENT_COLORED_SHADOWS.comment = §bWhat is this?§r This effect allows translucent things like stained glass to color the sunlight as it passes through it. §aPERFORMANCE COST:§r medium +option.MINIMUM_WATER_ABSORBANCE.comment = §bWhat is this?§r This controls how "clear" the water is in shallow areas. AUTO allows water to be clear outdoors, but adjust to be at a minimum value of 7 when indoors, to make it clearly visible. §dTHIS SETTING DOES NOT IMPACT UNDER-WATER VISUALS. \ No newline at end of file diff --git a/shaders/lang/pt_br.lang b/shaders/lang/pt_br.lang index ef7718c..d204370 100644 --- a/shaders/lang/pt_br.lang +++ b/shaders/lang/pt_br.lang @@ -216,7 +216,7 @@ screen.World = Mundo option.SSR_STEPS = Qualidade do SSR option.WATER_SUN_SPECULAR = Reflexos do Sol/Lua option.WATER_BACKGROUND_SPECULAR = Reflexos do Céu/Névoa - option.Refraction = Refração na Água/Vidro + option.FAKE_REFRACTION_EFFECT = Refração na Água/Vidro option.Dirt_Amount = Quantidade de Sujeira option.Water_Top_Layer = Coordenada Y do Oceano @@ -451,7 +451,7 @@ screen.World.comment = Ajuste configurações para váriadas coisas que acontece option.SSR_STEPS.comment = Ajuste a qualiade dos reflexos em coisas translúcidas. §aCUSTO DE PERFORMANCE:§r Médio pra Alto option.WATER_SUN_SPECULAR.comment = Habilita reflexos da lua e do sol em coisas translúcidas. §aCUSTO DE PERFORMANCE:§r Baixo option.WATER_BACKGROUND_SPECULAR.comment = Habilita reflexos do céu e névoa em coisas translúcidas. §aCUSTO DE PERFORMANCE:§r Baixo para Médio - option.Refraction.comment = Habilita refração em coisas translúcidas. §bO Que é Isso?§r Olhe para a água e você vai perceber a refração da luz distorcendo as coisas dentro dela. §aCUSTO DE PERFORMANCE:§r Baixo + option.FAKE_REFRACTION_EFFECT.comment = Habilita refração em coisas translúcidas. §bO Que é Isso?§r Olhe para a água e você vai perceber a refração da luz distorcendo as coisas dentro dela. §aCUSTO DE PERFORMANCE:§r Baixo option.Dirt_Amount.comment = Ajusta quanta sujeira tem na água. Isso controla quanta névoa tem dentro da água. option.Water_Top_Layer.comment = Ajusta a coordenada Y que oceano deve estar no mundo. diff --git a/shaders/lang/ru_RU.lang b/shaders/lang/ru_RU.lang index d612ebd..7a15d6c 100644 --- a/shaders/lang/ru_RU.lang +++ b/shaders/lang/ru_RU.lang @@ -363,7 +363,7 @@ screen.World = Мир option.SSR_STEPS = Качество SSR option.WATER_SUN_SPECULAR = Отражения солнца/луны option.WATER_BACKGROUND_SPECULAR = Отражения неба/тумана - option.Refraction = Преломление в воде/стекле + option.FAKE_REFRACTION_EFFECT = Преломление в воде/стекле option.Dirt_Amount = Количество грязи option.Water_Top_Layer = Координата океана Y option.WATER_WAVE_STRENGTH = Сила волны @@ -653,7 +653,7 @@ screen.World.comment = Настраивайте параметры для раз option.SSR_STEPS.comment = Настройте качество отражения в пространстве экрана на полупрозрачных объектах. §aНАГРУЗКА:§r от средней до высокой option.WATER_SUN_SPECULAR.comment = Переключайте отражения солнца и луны на полупрозрачных объектах. §aНАГРУЗКА:§r низкая option.WATER_BACKGROUND_SPECULAR.comment = Переключайте отражения неба и тумана на полупрозрачных объектах. §aНАГРУЗКА:§r от низкой до средней - option.Refraction.comment = Переключите преломление на полупрозрачных объектах. §bЧто это?§r Если вы посмотрите на воду, то увидите, что преломление света искажает то, что в ней находится. §aНАГРУЗКА:§r низкая + option.FAKE_REFRACTION_EFFECT.comment = Переключите преломление на полупрозрачных объектах. §bЧто это?§r Если вы посмотрите на воду, то увидите, что преломление света искажает то, что в ней находится. §aНАГРУЗКА:§r низкая option.Dirt_Amount.comment = Настройте количество грязи в воде. Это определяет количество тумана в воде option.Water_Top_Layer.comment = Настройте координату Y, в которой должен находиться океан в мире diff --git a/shaders/lang/zh_cn.lang b/shaders/lang/zh_cn.lang index 148158f..b2b4def 100644 --- a/shaders/lang/zh_cn.lang +++ b/shaders/lang/zh_cn.lang @@ -373,7 +373,7 @@ screen.World = 世界 option.SSR_STEPS = SSR 采样值 option.WATER_SUN_SPECULAR = 日月反射 option.WATER_BACKGROUND_SPECULAR = 天空/雾气反射 - option.Refraction = 折射 (水体/玻璃) + option.FAKE_REFRACTION_EFFECT = 折射 (水体/玻璃) option.Dirt_Amount = 水体浑浊程度 option.Water_Top_Layer = 海平面 Y 轴坐标 option.WATER_WAVE_STRENGTH = 水波强度 @@ -599,7 +599,7 @@ screen.World.comment = 配置多种会在主世界发生的效果, 从摇摆植 option.SSR_STEPS.comment = 配置半透明方块的屏幕空间反射质量. §a性能消耗水平:§r 中偏高. option.WATER_SUN_SPECULAR.comment = 半透明方块的日月反射开关. §a性能消耗水平:§r 低. option.WATER_BACKGROUND_SPECULAR.comment = 半透明方块的天空和雾气反射开关. §a性能消耗水平:§r 低偏中. - option.Refraction.comment = 半透明折射开关. §b这啥?§r 如果你观察水体, 可以看到光的折射会扭曲了水中的内容. §a性能消耗水平:§r 低. + option.FAKE_REFRACTION_EFFECT.comment = 半透明折射开关. §b这啥?§r 如果你观察水体, 可以看到光的折射会扭曲了水中的内容. §a性能消耗水平:§r 低. option.Dirt_Amount.comment = 配置水中污物含量. 这可以控制水雾量. option.Water_Top_Layer.comment = 配置海平面在世界中的 Y 坐标. diff --git a/shaders/lib/ROBOBO_sky.glsl b/shaders/lib/ROBOBO_sky.glsl index d7e9c0b..e5f23f6 100644 --- a/shaders/lib/ROBOBO_sky.glsl +++ b/shaders/lib/ROBOBO_sky.glsl @@ -119,7 +119,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s position += increment * (0.34*noise); vec2 phaseSun = sky_phase(dot(viewVector, sunVector), 0.8); - vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), 0.8); + vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), 0.8) ; vec3 scatteringSun = vec3(0.0); vec3 scatteringMoon = vec3(0.0); @@ -128,7 +128,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s transmittance = vec3(1.0); float high_sun = clamp(pow(sunVector.y+0.6,5),0.0,1.0) * 3.0; // make sunrise less blue, and allow sunset to be bluer - float low_sun = clamp(((1.0-abs(sunVector.y))*3.) - high_sun,1.0,1.8) ; + float low_sun = clamp(((1.0-abs(sunVector.y))*3.) - high_sun,1.0,2.0) ; for (int i = 0; i < iSteps; ++i, position += increment) { @@ -144,7 +144,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s #ifdef ORIGINAL_CHOCAPIC_SKY scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun) * stepScatteringVisible * sky_transmittance(position, sunVector, jSteps) * planetGround; #else - scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun) * stepScatteringVisible * sky_transmittance(position, sunVector*0.5+0.1, jSteps) * planetGround; + scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun) * stepScatteringVisible * sky_transmittance(position, sunVector, jSteps) * planetGround; #endif scatteringMoon += sky_coefficientsScattering * (stepAirmass.xy * phaseMoon) * stepScatteringVisible * sky_transmittance(position, moonVector, jSteps) * planetGround; @@ -159,7 +159,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s transmittance *= stepTransmittance; } - vec3 scattering = scatteringSun * sunColorBase + scatteringAmbient * background + scatteringMoon*moonColorBase ; + vec3 scattering = scatteringAmbient * background + scatteringSun * sunColorBase + scatteringMoon*moonColorBase * 0.5; return scattering; } diff --git a/shaders/lib/Shadows.glsl b/shaders/lib/Shadows.glsl index 07cb5a7..c5cf4d5 100644 --- a/shaders/lib/Shadows.glsl +++ b/shaders/lib/Shadows.glsl @@ -11,16 +11,19 @@ void GriAndEminShadowFix( float MinimumValue = 0.05; // give a tiny boost to the distance mulitplier when shadowmap resolution is below 2048.0 - float ResMultiplier = 1.0 + (shadowDistance/8.0)*(1.0 - min(shadowMapResolution,2048)/2048.0)*0.3; + // float ResMultiplier = 1.0 + (shadowDistance/8.0)*(1.0 - min(shadowMapResolution,2048)/2048.0)*0.3; - float DistanceMultiplier = max(1.0 - max(1.0 - length(WorldPos) / shadowDistance, 0.0), MinimumValue) * ResMultiplier; - - vec3 Bias = FlatNormal * DistanceMultiplier; + // float DistanceMultiplier = max(1.0 - max(1.0 - length(WorldPos) / shadowDistance, 0.0), MinimumValue) * ResMultiplier; + float theDistance = max(1.0 - length(WorldPos) / shadowDistance,0.0); + float DistanceMultiplier = mix(0.5, 0.05, theDistance); + float DistanceMultiplier2 = mix(1.0, 0.02, theDistance); + + vec3 Bias = (FlatNormal * DistanceMultiplier + WsunVec * DistanceMultiplier2); // stop lightleaking by zooming up, centered on blocks vec2 scale = vec2(0.5); scale.y *= 0.5; - vec3 zoomShadow = scale.y - scale.x * fract(WorldPos + cameraPosition + Bias*scale.y); - if(SkyLightmap < 0.1) Bias = zoomShadow; + vec3 zoomShadow = scale.y - scale.x * fract(WorldPos + cameraPosition + Bias*scale.y*0.1); + if(SkyLightmap < 0.1 && isEyeInWater != 1 && VanillaAO > 0.0) Bias = zoomShadow; WorldPos += Bias; } \ No newline at end of file diff --git a/shaders/lib/TAA_jitter.glsl b/shaders/lib/TAA_jitter.glsl index 6e36ea9..ff5c988 100644 --- a/shaders/lib/TAA_jitter.glsl +++ b/shaders/lib/TAA_jitter.glsl @@ -1,33 +1,40 @@ -const vec2[8] offsets = vec2[8]( - vec2( 1.0, -3.0)/8.0, - vec2(-1.0, 3.0)/8.0, - vec2( 5.0, 1.0)/8.0, - vec2(-3.0, -5.0)/8.0, - vec2(-5.0, 5.0)/8.0, - vec2(-7.0, -1.0)/8.0, - vec2( 3.0, 7.0)/8.0, - vec2( 7.0, 7.0)/8.0 -); +// swap out jitter pattern to be a 4 frame pattern instead of an 8 frame halton sequence +#ifdef RESPONSIVE_TAA + const vec2[4] offsets = vec2[4]( -// const vec2[4] offsets = vec2[4]( -// vec2( 0.0, -1.0), // right bottom -// vec2( 1.0, 0.0), // left top -// vec2( 0.0, 1.0), // right top -// vec2(-1.0, 0.0) // left bottom -// ); -// const vec2[4] offsets = vec2[4]( -// vec2(0.0), -// vec2(0.0), -// vec2(0.0), -// vec2(0.0) -// ); -// const vec2[8] offsets = vec2[8]( -// vec2(0.0), -// vec2(0.0), -// vec2(0.0), -// vec2(0.0), -// vec2(0.0), -// vec2(0.0), -// vec2(0.0), -// vec2(0.0) -// ); \ No newline at end of file + // vec2( 0.0, -1.0), + // vec2( 1.0, 0.0), + // vec2( 0.0, 1.0), + // vec2(-1.0, 0.0) + + // vec2(-1.0, -7.0)/8.0, + // vec2( 7.0, -1.0)/8.0, + // vec2( 1.0, 7.0)/8.0, + // vec2(-7.0, 1.0)/8.0 + + vec2(-0.125, -0.875), + vec2( 0.875, -0.125), + vec2( 0.125, 0.875), + vec2(-0.875, 0.125) + + + // vec2(-7.0, 1.0)/8.0, + // vec2( 7.0, -1.0)/8.0, + // vec2( 1.0, 7.0)/8.0, + // vec2(-1.0, -7.0)/8.0 + + ); +#else + + const vec2[8] offsets = vec2[8]( + vec2( 1.0, -3.0)/8.0, + vec2(-1.0, 3.0)/8.0, + vec2( 5.0, 1.0)/8.0, + vec2(-3.0, -5.0)/8.0, + vec2(-5.0, 5.0)/8.0, + vec2(-7.0, -1.0)/8.0, + vec2( 3.0, 7.0)/8.0, + vec2( 7.0, 7.0)/8.0 + ); + +#endif \ No newline at end of file diff --git a/shaders/lib/climate_settings.glsl b/shaders/lib/climate_settings.glsl index d952f5b..2121437 100644 --- a/shaders/lib/climate_settings.glsl +++ b/shaders/lib/climate_settings.glsl @@ -122,7 +122,6 @@ ///////////////////////////// BIOME SPECIFICS ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////// - uniform float nightVision; uniform float isJungles; uniform float isSwamps; @@ -144,7 +143,7 @@ BiomeColors.b = isSwamps*SWAMP_B + isJungles*JUNGLE_B + isDarkForests*DARKFOREST_B + sandStorm*0.3 + snowStorm*1.0; // insure the biome colors are locked to the fog shape and lighting, but not its orignal color. - BiomeColors *= max(dot(FinalFogColor,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); + BiomeColors *= max(dot(FinalFogColor,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025); // these range 0.0-1.0. they will never overlap. float Inbiome = isJungles+isSwamps+isDarkForests+sandStorm+snowStorm; @@ -184,8 +183,8 @@ // DirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); // IndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); - DirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); - IndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); + DirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 ); + IndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 ); // these range 0.0-1.0. they will never overlap. float Inbiome = isJungles+isSwamps+isDarkForests+sandStorm+snowStorm; diff --git a/shaders/lib/color_transforms.glsl b/shaders/lib/color_transforms.glsl index 99c5370..42224f6 100644 --- a/shaders/lib/color_transforms.glsl +++ b/shaders/lib/color_transforms.glsl @@ -70,11 +70,17 @@ return x/(1.0+x); vec3 ACESFilm( vec3 x ) { x*=0.9; + // float a = 2.51f; + // float b = 0.03f; + // float c = 2.43f; + // float d = 0.59f; + // float e = 0.14f; + // slower rate to bright color float a = 2.51f; float b = 0.03f; float c = 2.43f; - float d = 0.59f; - float e = 0.14f; + float d = 0.95f; + float e = 0.12f; return (x*(a*x+b))/(x*(c*x+d)+e); } @@ -241,7 +247,7 @@ vec3 agxLook(vec3 val) { vec3 slope = vec3(1.0); vec3 power = vec3(1.0); float sat = 1.25; - + // ASC CDL val = pow(val * slope + offset, power); return luma + sat * (val - luma); diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index 6044852..94140a7 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -25,13 +25,29 @@ vec3 doBlockLightLighting( vec3 lightColor, float lightmap, float exposureValue, vec3 playerPos, vec3 lpvPos ){ + lightmap = clamp(lightmap,0.0,1.0); - float lightmapCurve = pow(1.0-sqrt(1.0-clamp(lightmap,0.0,1.0)),2.0) * 2.0; + float lightmapBrightspot = min(max(lightmap-0.7,0.0)*3.3333,1.0); + lightmapBrightspot *= lightmapBrightspot*lightmapBrightspot; + + float lightmapLight = 1.0-sqrt(1.0-lightmap); + lightmapLight *= lightmapLight; + + float lightmapCurve = mix(lightmapLight, 2.0, lightmapBrightspot); + + // lightmapCurve = lightmap*lightmap; + + // float lightmapCurve = (exp(-15.0 * (1.0-lightmap))*10.0 + lightmap*pow(1.0-pow(1.0-lightmap,2.0),2.0))*0.5; + // float lightmapCurve = (pow(min(max(lightmap-0.6, 0.0) * 2.5,1.0),4.0) * 10.0 + lightmap*pow(1.0-pow(1.0-lightmap,2.0),2.0))*0.5; + // float lightmapCurve = pow(1.0-pow(1.0-lightmap,2.0),2.0); - vec3 blockLight = lightColor * lightmapCurve; //; + vec3 blockLight = lightColor * lightmapCurve; #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store vec4 lpvSample = SampleLpvLinear(lpvPos); + #ifdef VANILLA_LIGHTMAP_MASK + lpvSample.rgb *= lightmapCurve; + #endif vec3 lpvBlockLight = GetLpvBlockLight(lpvSample); // create a smooth falloff at the edges of the voxel volume. @@ -41,7 +57,7 @@ vec3 doBlockLightLighting( voxelRangeFalloff = 1.0 - pow(1.0-pow(voxelRangeFalloff,1.5),3.0); // outside the voxel volume, lerp to vanilla lighting as a fallback - blockLight = mix(blockLight, lpvBlockLight/5.0, voxelRangeFalloff); + blockLight = mix(blockLight, lpvSample.rgb, voxelRangeFalloff); #ifdef Hand_Held_lights // create handheld lightsources @@ -56,8 +72,8 @@ vec3 doBlockLightLighting( #endif // try to make blocklight have consistent visiblity in different light levels. - float autoBrightness = mix(1.0, 30.0, clamp(exp(-10.0*exposureValue),0.0,1.0)); - blockLight *= autoBrightness; + // float autoBrightness = mix(0.5, 1.0, clamp(exp(-10.0*exposureValue),0.0,1.0)); + // blockLight *= autoBrightness; return blockLight * TORCH_AMOUNT; } @@ -66,11 +82,14 @@ vec3 doIndirectLighting( vec3 lightColor, vec3 minimumLightColor, float lightmap ){ + // float lightmapCurve = pow(1.0-pow(1.0-lightmap,2.0),2.0); + // float lightmapCurve = lightmap*lightmap; float lightmapCurve = (pow(lightmap,15.0)*2.0 + pow(lightmap,2.5))*0.5; vec3 indirectLight = lightColor * lightmapCurve * ambient_brightness * 0.7; - indirectLight += minimumLightColor * max(MIN_LIGHT_AMOUNT*0.01, nightVision * 0.1); + // indirectLight = max(indirectLight, minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision)); + indirectLight += minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02); return indirectLight; } \ No newline at end of file diff --git a/shaders/lib/end_fog.glsl b/shaders/lib/end_fog.glsl index d076c63..9840e56 100644 --- a/shaders/lib/end_fog.glsl +++ b/shaders/lib/end_fog.glsl @@ -168,12 +168,15 @@ float fogShape(in vec3 pos){ float endFogPhase(vec3 LightPos){ - float mie = exp(length(LightPos) / -150); - mie *= mie; - mie *= mie; - mie *= 100; + // float mie = exp(length(LightPos) / -150); + // mie *= mie; + // mie *= mie; + // mie *= 100; - return mie; + // float mie = 1.0 - clamp(1.0 - length(LightPos) / 100.0,0.0,1.0); + float mie = exp(length(LightPos) / -50.0); + + return (mie*10.0)*(mie*10.0); } vec3 LightSourceColors(float vortexBounds, float lightningflash){ @@ -197,13 +200,13 @@ vec3 LightSourceLighting(vec3 startPos, vec3 lightPos, float noise, float densit float shadow = 0.0; for (int j = 0; j < 3; j++){ - vec3 shadowSamplePos = startPos - lightPos * (0.05 + j * (0.25 + noise*0.15)); + vec3 shadowSamplePos = startPos - lightPos * (0.05 + j * (0.25 + 0*0.15)); shadow += fogShape(shadowSamplePos); } - vec3 finalLighting = lightColor * phase * exp(shadow * -10.0); - finalLighting += lightColor * phase*phase * (1.0-exp((shadow*shadow*shadow) * vec3(0.6,2.0,2) * -1)) * (1.0 - exp(-density*density)); + vec3 finalLighting = lightColor * phase * exp(-7.0 * shadow) ; + finalLighting += lightColor * phase*phase * (1.0 - exp( -shadow * vec3(0.6,2.0,2))) * (1.0 - exp(-density*density)); return finalLighting; } @@ -246,9 +249,9 @@ vec4 GetVolumetricFog( // float phsething = phaseEND(CenterdotV, 0.35) + phaseEND(CenterdotV, 0.85) ; - float skyPhase = 0.5 + pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; + float skyPhase = (0.5 + pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0) * 0.1; - vec3 hazeColor = normalize(gl_Fog.color.rgb) * 0.1; + vec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.1; float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; @@ -258,7 +261,7 @@ vec4 GetVolumetricFog( for (int i = 0; i < SAMPLECOUNT; i++) { float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); - float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); + float dd = pow(expFactor, float(i+dither2)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition + d*dVWorld; @@ -268,7 +271,7 @@ vec4 GetVolumetricFog( // determine where the vortex area ends and chaotic lightning area begins. float vortexBounds = clamp(vortexBoundRange - length(progressW), 0.0,1.0); vec3 lightPosition = LightSourcePosition(progressW, cameraPosition, vortexBounds); - vec3 lightColors = LightSourceColors(vortexBounds, lightningflash); + vec3 lightColors = LightSourceColors(vortexBounds, lightningflash) * 0.25; float volumeDensity = fogShape(progressW); @@ -281,9 +284,9 @@ vec4 GetVolumetricFog( float volumeCoeff = exp(-stormDensity*dd*dL); - - vec3 lightsources = LightSourceLighting(progressW, lightPosition, dither2, volumeDensity, lightColors, vortexBounds); - vec3 indirect = vec3(0.5,0.75,1.0) * 0.2 * (exp((volumeDensity*volumeDensity) * -50) * 0.9 + 0.1); + vec3 lightsources = LightSourceLighting(progressW, lightPosition, dither, volumeDensity, lightColors, vortexBounds); + vec3 indirect = vec3(0.5,0.75,1.0) * 0.2 * (exp((volumeDensity*volumeDensity) * -50) * 0.9 + 0.1) * 0.1; + vec3 stormLighting = indirect + lightsources; color += (stormLighting - stormLighting*volumeCoeff) * absorbance; @@ -337,7 +340,7 @@ vec4 GetVolumetricFog( return vec4(color, absorbance); } -float GetCloudShadow(vec3 WorldPos, vec3 LightPos){ +float GetEndFogShadow(vec3 WorldPos, vec3 LightPos){ float Shadow = 0.0; for (int i=0; i < 3; i++){ @@ -347,5 +350,5 @@ float GetCloudShadow(vec3 WorldPos, vec3 LightPos){ Shadow += fogShape(shadowSamplePos)*END_STORM_DENSTIY; } - return clamp(exp2(Shadow * -5.0),0.0,1.0); + return clamp(exp2(Shadow * -10.0),0.0,1.0); } \ No newline at end of file diff --git a/shaders/lib/indirect_lighting_effects.glsl b/shaders/lib/indirect_lighting_effects.glsl index de824bf..f128ca1 100644 --- a/shaders/lib/indirect_lighting_effects.glsl +++ b/shaders/lib/indirect_lighting_effects.glsl @@ -13,7 +13,7 @@ vec3 cosineHemisphereSample(vec2 Xi){ return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); } -vec3 TangentToWorld(vec3 N, vec3 H, float roughness){ +vec3 TangentToWorld(vec3 N, vec3 H){ vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); vec3 T = normalize(cross(UpVector, N)); vec3 B = cross(N, T); @@ -92,67 +92,6 @@ vec4 BilateralUpscale_SSAO(sampler2D tex, sampler2D depth, vec2 coord, float ref return RESULT / SUM; } -vec2 SSAO( - vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise -){ - if(hand) return vec2(1.0,0.0); - int samples = 7; - float occlusion = 0.0; - float sss = 0.0; - - - float dist = 1.0 + clamp(viewPos.z*viewPos.z/50.0,0,5); // shrink sample size as distance increases - float mulfov2 = gbufferProjection[1][1]/(3 * dist); - float maxR2 = viewPos.z*viewPos.z*mulfov2*2.*5/50.0; - - #ifdef Ambient_SSS - float maxR2_2 = viewPos.z*viewPos.z*mulfov2*2.*2./50.0; - - float dist3 = clamp(1-exp( viewPos.z*viewPos.z / -50),0,1); - if(leaves) maxR2_2 = mix(10, maxR2_2, dist3); - #endif - - vec2 acc = -(TAA_Offset*(texelSize/2))*RENDER_SCALE ; - - int n = 0; - for (int i = 0; i < samples; i++) { - - // vec2 sampleOffset = SpiralSample(i, 7, 8, noise) * 0.2 * mulfov2; - - vec2 sampleOffset = SpiralSample(i, 7, 8, noise) * clamp(0.05 + i*0.095, 0.0,0.3) * mulfov2; - - ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)*RENDER_SCALE); - - if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth*RENDER_SCALE.x && offset.y < viewHeight*RENDER_SCALE.y ) { - #ifdef DISTANT_HORIZONS - float dhdepth = texelFetch2D(dhDepthTex1, offset,0).x; - #else - float dhdepth = 0.0; - #endif - - vec3 t0 = toScreenSpace_DH((offset*texelSize+acc+0.5*texelSize) * (1.0/RENDER_SCALE), texelFetch2D(depthtex1, offset,0).x, dhdepth); - vec3 vec = (t0.xyz - viewPos); - float dsquared = dot(vec, vec); - - if (dsquared > 1e-5){ - if (dsquared < maxR2){ - float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal)),0.,1.); - occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); - } - - #ifdef Ambient_SSS - if(dsquared > maxR2_2){ - float NdotV = 1.0 - clamp(dot(vec*dsquared, normalize(normal)),0.,1.); - sss += max((NdotV - (1.0-NdotV)) * clamp(1.0-maxR2_2/dsquared,0.0,1.0) ,0.0); - } - #endif - - n += 1; - } - } - } - return max(1.0 - vec2(occlusion, sss)/n, 0.0); -} float ScreenSpace_SSS( vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise ){ @@ -210,40 +149,79 @@ vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ direction.xy = normalize(direction.xy); //get at which length the ray intersects with the edge of the screen - vec3 maxLengths = (step(0.0,direction)-clipPosition) / direction; - float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = maxLengths.y; - vec3 stepv = (direction * mult) / quality*vec3(RENDER_SCALE,1.0); - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) ; - spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE ; + spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; - float minZ = spos.z; - float maxZ = spos.z; + spos += stepv*dither; + + float biasdist = clamp(position.z*position.z/50.0,1,2); // shrink sample size as distance increases for(int i = 0; i < int(quality); i++){ - if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); - #ifdef UseQuarterResDepth - float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0)); + float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0); #else - float sp = texelFetch2D(depthtex1,ivec2(spos.xy/ texelSize),0).r; + float sp = linZ(texelFetch2D(depthtex1,ivec2(spos.xy/ texelSize),0).r); #endif - float currZ = linZ(spos.z); - float nextZ = linZ(sp); - - if(nextZ < currZ && (sp <= max(minZ,maxZ) && sp >= min(minZ,maxZ))) return vec3(spos.xy/RENDER_SCALE,sp); - - float biasamount = 0.00005; - - minZ = maxZ - biasamount / currZ; - maxZ += stepv.z; + if( sp < currZ) { + float dist = abs(sp-currZ)/currZ; + if (abs(dist) < biasdist*0.05) return vec3(spos.xy, invLinZ(sp))/vec3(RENDER_SCALE,1.0); + } spos += stepv; } return vec3(1.1); } +// vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ + +// vec3 clipPosition = toClipSpace3(position); +// float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? +// (-near -position.z) / dir.z : far*sqrt(3.); +// vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space +// direction.xy = normalize(direction.xy); + +// //get at which length the ray intersects with the edge of the screen +// vec3 maxLengths = (step(0.0,direction)-clipPosition) / direction; +// float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + +// vec3 stepv = (direction * mult) / quality*vec3(RENDER_SCALE,1.0); +// vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0); + +// spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE ; + +// spos += stepv*dither; + +// float minZ = spos.z; +// float maxZ = spos.z; + +// for(int i = 0; i < int(quality); i++){ +// if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); + +// #ifdef UseQuarterResDepth +// float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0)); +// #else +// float sp = texelFetch2D(depthtex1,ivec2(spos.xy/ texelSize),0).r; +// #endif + +// float currZ = linZ(spos.z); +// float nextZ = linZ(sp); + +// if(nextZ < currZ && (sp <= max(minZ,maxZ) && sp >= min(minZ,maxZ))) return vec3(spos.xy/RENDER_SCALE,sp); + +// float biasamount = 0.00005; + +// minZ = maxZ - biasamount / currZ; +// maxZ += stepv.z; + +// spos += stepv; +// } +// return vec3(1.1); +// } float convertHandDepth_3(in float depth, bool hand) { if(!hand) return depth; @@ -301,7 +279,7 @@ vec3 RT(vec3 dir, vec3 position, float noise, float stepsizes, bool hand){ return vec3(1.1); } -vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool hand){ +vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool hand, inout float CURVE ){ vec3 worldpos = mat3(gbufferModelViewInverse) * position; @@ -324,12 +302,12 @@ vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool ha int iterations = min(int(min(len, mult*len)-2), maxSteps); - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0);// + stepv*noise; + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*(noise-0.5); spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE; - + float minZ = spos.z; float maxZ = spos.z; - + CURVE = 0.0; for(int i = 0; i < iterations; i++){ if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); @@ -349,8 +327,9 @@ vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool ha minZ = maxZ-biasamount / currZ; maxZ += stepv.z; - spos += stepv*(noise*0.25+0.75); - + spos += stepv; + + CURVE += 1.0/iterations; } return vec3(1.1); } @@ -378,24 +357,30 @@ vec3 ApplySSRT( vec3 radiance2 = vec3(0.0); vec3 occlusion2 = vec3(0.0); vec3 skycontribution2 = unchangedIndirect; - + float CURVE = 1.0; vec3 bouncedLight = vec3(0.0); for (int i = 0; i < nrays; i++){ int seed = (frameCounter%40000)*nrays+i; vec2 ij = fract(R2_samples(seed) + noise.xy); - vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij)), lightmap); + vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij))); #ifdef HQ_SSGI vec3 rayHit = rayTrace_GI( mat3(gbufferModelView) * rayDir, viewPos, noise.z, 50.); // ssr rt #else - vec3 rayHit = RT_alternate(mat3(gbufferModelView)*rayDir, viewPos, noise.z, 10., isLOD); // choc sspt + vec3 rayHit = RT_alternate(mat3(gbufferModelView)*rayDir, viewPos, noise.z, 10., isLOD, CURVE); // choc sspt + + + /// RAAAAAAAAAAAAAAAAAAAAAAAAGHH + // CURVE = (1.0-exp(-5.0*(1.0-CURVE))); + CURVE = 1.0-pow(1.0-pow(1.0-CURVE,2.0),5.0); #endif #ifdef SKY_CONTRIBUTION_IN_SSRT #ifdef OVERWORLD_SHADER - skycontribution = doIndirectLighting(pow(skyCloudsFromTexLOD(rayDir, colortex4, 0).rgb/30.0, vec3(0.7)) * 2.5, minimumLightColor, lightmap) + blockLightColor; + // skycontribution = doIndirectLighting(pow(skyCloudsFromTexLOD(rayDir, colortex4, 0).rgb/1200.0, vec3(0.7)) * 2.5, minimumLightColor, lightmap) + blockLightColor; + skycontribution = doIndirectLighting(skyCloudsFromTex(rayDir, colortex4).rgb/1200.0, minimumLightColor, lightmap) + blockLightColor; #else - skycontribution = pow(skyCloudsFromTexLOD2(rayDir, colortex4, 6).rgb / 30.0, vec3(0.7)) + blockLightColor; + skycontribution = volumetricsFromTex(rayDir, colortex4, 6).rgb / 1200.0 + blockLightColor; #endif #else #ifdef OVERWORLD_SHADER @@ -413,18 +398,18 @@ vec3 ApplySSRT( previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0){ - bouncedLight = texture2D(colortex5, previousPosition.xy).rgb * GI_Strength; + bouncedLight = texture2D(colortex5, previousPosition.xy).rgb * GI_Strength * CURVE; radiance += bouncedLight; radiance2 += bouncedLight; } #endif - occlusion += skycontribution; - occlusion2 += skycontribution2; + occlusion += skycontribution * CURVE; + occlusion2 += skycontribution2 * CURVE; } } - + // return unchangedIndirect * CURVE; if(isLOD) return max(radiance/nrays, 0.0); #ifdef SKY_CONTRIBUTION_IN_SSRT diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index d5d127b..a1d4a05 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,10 +1,13 @@ -// LPV block brightness scale -const float LpvBlockBrightness = 1.0; +// LPV block brightness scale. just 1.0/15.0 +const float LpvBlockBrightness = 0.066666; float lpvCurve(float values) { - // return values; - return pow(1.0 - sqrt(1.0-values), 2.0); + #ifdef VANILLA_LIGHTMAP_MASK + return sqrt(values); + #else + return values*values; + #endif } vec4 SampleLpvLinear(const in vec3 lpvPos) { @@ -17,6 +20,8 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec3 hsv = RgbToHsv(lpvSample.rgb); hsv.z = lpvCurve(hsv.b) * LpvBlockSkyRange.x; lpvSample.rgb = HsvToRgb(hsv); + + lpvSample.rgb = clamp(lpvSample.rgb/15.0,0.0,1.0); return lpvSample; } diff --git a/shaders/lib/nether_fog.glsl b/shaders/lib/nether_fog.glsl index aa3f0a1..2e88ef2 100644 --- a/shaders/lib/nether_fog.glsl +++ b/shaders/lib/nether_fog.glsl @@ -43,7 +43,7 @@ vec4 GetVolumetricFog( /// ------------- RAYMARCHING STUFF ------------- \\\ - int SAMPLECOUNT = 10; + int SAMPLECOUNT = 16; vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz; vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); @@ -62,14 +62,14 @@ vec4 GetVolumetricFog( vec3 color = vec3(0.0); float absorbance = 1.0; - vec3 hazeColor = normalize(gl_Fog.color.rgb); + vec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.25; #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0; #endif for (int i = 0; i < SAMPLECOUNT; i++) { - float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); + float d = (pow(expFactor, float(i+dither2)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld; @@ -80,7 +80,7 @@ vec4 GetVolumetricFog( float plumeDensity = min(densityVol * pow(min(max(100.0-progressW.y,0.0)/30.0,1.0),4.0), pow(clamp(1.0 - length(progressW-cameraPosition)/far,0.0,1.0),5.0) * NETHER_PLUME_DENSITY); float plumeVolumeCoeff = exp(-plumeDensity*dd*dL); - vec3 lighting = vec3(1.0,0.4,0.2) * exp(-15.0*densityVol); + vec3 lighting = vec3(1.0,0.4,0.2)*0.25 * exp(-15.0*densityVol); color += (lighting - lighting * plumeVolumeCoeff) * absorbance; absorbance *= plumeVolumeCoeff; @@ -98,7 +98,7 @@ vec4 GetVolumetricFog( float ceilingSmokeDensity = 0.001 * pow(min(max(progressW.y-40.0,0.0)/50.0,1.0),3.0); float ceilingSmokeVolumeCoeff = exp(-ceilingSmokeDensity*dd*dL); - vec3 ceilingSmoke = vec3(1.0); + vec3 ceilingSmoke = vec3(0.1); color += (ceilingSmoke - ceilingSmoke*ceilingSmokeVolumeCoeff) * (absorbance*0.5+0.5); absorbance *= ceilingSmokeVolumeCoeff; diff --git a/shaders/lib/overworld_fog.glsl b/shaders/lib/overworld_fog.glsl index 5a3159b..f468c48 100644 --- a/shaders/lib/overworld_fog.glsl +++ b/shaders/lib/overworld_fog.glsl @@ -44,7 +44,7 @@ float cloudVol(in vec3 pos, float maxDistance ){ FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, dailyWeatherParams0.a, dailyWeatherParams1.a); - return uniformFog + medium_gradientFog + cloudyFog + rainyFog; + return uniformFog + medium_gradientFog + cloudyFog; } float phaseRayleigh(float cosTheta) { @@ -52,23 +52,29 @@ float phaseRayleigh(float cosTheta) { return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation } float fogPhase(float lightPoint){ - float linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0); + float linear = clamp(-lightPoint*0.5+0.5,0.0,1.0); float linear2 = 1.0 - clamp(lightPoint,0.0,1.0); float exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5; exponential += sqrt(exp2(sqrt(linear) * -12.5)); + // float exponential = 1.0 / (linear * 10.0 + 0.05); + return exponential; } - +float phaseCloudFog(float x, float g){ + float gg = g * g; + return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14; +} uniform ivec2 eyeBrightness; vec4 GetVolumetricFog( - vec3 viewPosition, - vec2 dither, - vec3 LightColor, - vec3 AmbientColor, - vec3 AveragedAmbientColor, - inout float atmosphereAlpha + in vec3 viewPosition, + in vec2 dither, + in vec3 LightColor, + in vec3 AmbientColor, + in vec3 AveragedAmbientColor, + inout float atmosphereAlpha, + inout vec3 sceneColor ){ #ifndef TOGGLE_VL_FOG return vec4(0.0,0.0,0.0,1.0); @@ -101,8 +107,7 @@ vec4 GetVolumetricFog( dV *= maxLength; dVWorld *= maxLength; - float dL_alternate = length(dVWorld); - float dL = dL_alternate/8.0; + float dL = length(dVWorld)/8.0; vec3 progress = start.xyz; vec3 progressW = vec3(0.0); @@ -111,17 +116,23 @@ vec4 GetVolumetricFog( /// ------------- COLOR/LIGHTING STUFF ------------- \\\ vec3 color = vec3(0.0); - float totalAbsorbance = 1.0; + vec3 finalAbsorbance = vec3(1.0); + + // float totalAbsorbance = 1.0; + vec3 totalAbsorbance = vec3(1.0); + float fogAbsorbance = 1.0; - float atmosphereAbsorbance = 1.0; + // float atmosphereAbsorbance = 1.0; + vec3 atmosphereAbsorbance = vec3(1.0); vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec; float SdotV = dot(sunVec, normalize(viewPosition))*lightCol.a; ///// ----- fog lighting //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) - float sunPhase = fogPhase(SdotV) * 5.0; - float skyPhase = pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; + float sunPhase = fogPhase(SdotV)*5.0;// phaseCloudFog(SdotV, 0.9) + phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5) * 5.0; + float sunPhase2 = (phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5)) * 5.0; + float skyPhase = 2.0 + pow(1.0-pow(1.0-clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0 ;//pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; float rayL = phaseRayleigh(SdotV); vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) ; @@ -130,7 +141,7 @@ vec4 GetVolumetricFog( vec3 skyLightPhased = AmbientColor; vec3 LightSourcePhased = LightColor; - skyLightPhased *= 1.0 + skyPhase; + skyLightPhased *= skyPhase; LightSourcePhased *= sunPhase; #ifdef ambientLight_only @@ -143,12 +154,6 @@ vec4 GetVolumetricFog( float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); #endif - #ifdef DISTANT_HORIZONS - float atmosphereMult = 1.0; - #else - float atmosphereMult = 1.5; - #endif - #ifdef RAYMARCH_CLOUDS_WITH_FOG vec3 SkyLightColor = AmbientColor; vec3 LightSourceColor = LightColor; @@ -174,14 +179,16 @@ vec4 GetVolumetricFog( float lightLevelZero = pow(clamp(eyeBrightnessSmooth.y/240.0 ,0.0,1.0),3.0); // SkyLightColor *= lightLevelZero*0.9 + 0.1; + vec3 finalsceneColor = vec3(0.0); for (int i = 0; i < SAMPLECOUNT; i++) { float d = (pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); - float dd = pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); + float dd = pow(expFactor, float(i+dither.y)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); progress = start.xyz + d*dV; progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld; + // if(length(progressW-cameraPosition) > cloudDepth) break; //------------------------------------ //------ SAMPLE SHADOWS FOR FOG EFFECTS //------------------------------------ @@ -212,7 +219,7 @@ vec4 GetVolumetricFog( #endif #ifdef VL_CLOUDS_SHADOWS - sh *= GetCloudShadow_VLFOG(progressW, WsunVec * lightCol.a); + sh *= GetCloudShadow(progressW, WsunVec*lightCol.a); #endif #ifdef PER_BIOME_ENVIRONMENT @@ -237,10 +244,9 @@ vec4 GetVolumetricFog( #endif vec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz); - vec3 lighting = DirectLight + indirectLight * (lightLevelZero*0.99 + 0.01) + Lightning; - - color += (lighting - lighting * fogVolumeCoeff) * fogAbsorbance; - fogAbsorbance *= fogVolumeCoeff; + vec3 lighting = DirectLight + indirectLight;// * (lightLevelZero*0.99 + 0.01) + Lightning; + + color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance; // kill fog absorbance when in caves. totalAbsorbance *= mix(1.0, fogVolumeCoeff, lightLevelZero); @@ -252,26 +258,32 @@ vec4 GetVolumetricFog( #else float cloudPlaneCutoff = 1.0; #endif + // maximum range for atmosphere haze, basically. + float planetVolume = 1.0 - exp(clamp(1.0 - length(progressW-cameraPosition) / (16*150), 0.0,1.0) * -10); // just air - vec2 airCoef = exp2(-max(progressW.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.,7.0)) * (24.0 * atmosphereMult) * Haze_amount * cloudPlaneCutoff; + vec2 airCoef = (exp2(-max(progressW.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.,7.0)) * 192.0 * Haze_amount) * cloudPlaneCutoff * planetVolume; // Pbr for air, yolo mix between mie and rayleigh for water droplets vec3 rL = rC*airCoef.x; vec3 m = mC*(airCoef.y+densityVol*300.0); // calculate the atmosphere haze seperately and purely additive to color, do not contribute to absorbtion. - vec3 atmosphereVolumeCoeff = exp(-(rL+m)*dd*dL_alternate); - + vec3 atmosphereVolumeCoeff = exp(-(rL+m)*dd*dL); + // vec3 Atmosphere = LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m); vec3 Atmosphere = (LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m) * (lightLevelZero*0.99 + 0.01)) * inACave; - color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6) * atmosphereAbsorbance * totalAbsorbance; - atmosphereAbsorbance *= dot(atmosphereVolumeCoeff, vec3(0.33333)); + color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6) * atmosphereAbsorbance; + // finalsceneColor = sceneColor * totalAbsorbance; + + atmosphereAbsorbance *= atmosphereVolumeCoeff*fogVolumeCoeff; + + //------------------------------------ //------ LPV FOG EFFECT //------------------------------------ #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT - color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * totalAbsorbance; + color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * totalAbsorbance; #endif //------------------------------------ //------ STUPID RENDER CLOUDS AS FOG EFFECT @@ -333,271 +345,13 @@ vec4 GetVolumetricFog( } } #else - if (totalAbsorbance < 1e-5) break; + // if (totalAbsorbance < 1e-5) break; #endif } - atmosphereAlpha = atmosphereAbsorbance; + + // sceneColor = finalsceneColor; + + // atmosphereAlpha = atmosphereAbsorbance; + return vec4(color, totalAbsorbance); -} - - - - - - - - - - - - - - - - - - - -// vec4 GetVolumetricFog( -// vec3 viewPosition, -// vec2 dither, -// vec3 LightColor, -// vec3 AmbientColor -// ){ - -// #ifndef TOGGLE_VL_FOG -// return vec4(0.0,0.0,0.0,1.0); -// #endif -// int SAMPLECOUNT = VL_SAMPLES; -// /// ------------- RAYMARCHING STUFF ------------- \\\ - -// //project pixel position into projected shadowmap space - -// vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz; -// vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; -// fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; - -// //project view origin into projected shadowmap space -// vec3 start = toShadowSpaceProjected(vec3(0.0)); - -// //rayvector into projected shadow map space -// //we can use a projected vector because its orthographic projection -// //however we still have to send it to curved shadow map space every step -// vec3 dV = fragposition - start; -// vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); - -// #ifdef DISTANT_HORIZONS -// float maxLength = min(length(dVWorld), max(dhFarPlane-1000,0.0))/length(dVWorld); -// SAMPLECOUNT += SAMPLECOUNT; -// #else -// float maxLength = min(length(dVWorld), far)/length(dVWorld); -// #endif - -// dV *= maxLength; -// dVWorld *= maxLength; - -// float dL = length(dVWorld); -// float mult = length(dVWorld)/25; - -// vec3 progress = start.xyz; -// vec3 progressW = gbufferModelViewInverse[3].xyz + cameraPosition; - -// vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec * lightCol.a; -// float SdotV = dot(sunVec,normalize(viewPosition))*lightCol.a; - - -// /// ------------- COLOR/LIGHTING STUFF ------------- \\\ - -// vec3 color = vec3(0.0); -// vec3 absorbance = vec3(1.0); - -// ///// ----- fog lighting -// //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) -// float mie = fogPhase(SdotV) * 5.0; -// float rayL = phaseRayleigh(SdotV); - -// vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5); -// vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); - -// vec3 skyLightPhased = AmbientColor; -// vec3 LightSourcePhased = LightColor; - -// #ifdef ambientLight_only -// LightSourcePhased = vec3(0.0); -// #endif -// #ifdef PER_BIOME_ENVIRONMENT -// vec3 biomeDirect = LightSourcePhased; -// vec3 biomeIndirect = skyLightPhased; -// float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); -// #endif - -// skyLightPhased = max(skyLightPhased + skyLightPhased*(normalize(wpos).y*0.9+0.1),0.0); -// LightSourcePhased *= mie; - -// // float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240.,2) ,0.0,1.0); - -// float lightleakfix = 1.0 - caveDetection; - -// #ifdef RAYMARCH_CLOUDS_WITH_FOG -// vec3 SkyLightColor = AmbientColor; -// vec3 LightSourceColor = LightColor; - -// #ifdef ambientLight_only -// LightSourceColor = vec3(0.0); -// #endif - -// float shadowStep = 200.0; - -// vec3 dV_Sun = WsunVec*shadowStep; - -// float mieDay = phaseg(SdotV, 0.75); -// float mieDayMulti = (phaseg(SdotV, 0.35) + phaseg(-SdotV, 0.35) * 0.5) ; - -// vec3 directScattering = LightSourceColor * mieDay * 3.14; -// vec3 directMultiScattering = LightSourceColor * mieDayMulti * 3.14; - -// vec3 sunIndirectScattering = LightSourceColor * phaseg(dot(mat3(gbufferModelView)*vec3(0,1,0),normalize(viewPosition)), 0.5) * 3.14; -// #endif - - -// #ifdef DISTANT_HORIZONS -// float atmosphereMult = 1.0; -// #else -// float atmosphereMult = 1.5; -// #endif - -// float expFactor = 11.0; -// for (int i=0;i pos.z && sh.x < 1.0){ -// vec4 translucentShadow = texture2D(shadowcolor0, pos.xy); -// if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); -// } -// #else -// sh = vec3(shadow2D(shadow, pos).x); -// #endif - -// } -// vec3 sh2 = sh; - -// #ifdef VL_CLOUDS_SHADOWS -// // if(clamp(progressW.y - CloudLayer1_height,0.0,1.0) < 1.0 && clamp(progressW.y-50,0.0,1.0) > 0.0) -// sh *= GetCloudShadow_VLFOG(progressW, WsunVec); -// #endif - - -// #ifdef PER_BIOME_ENVIRONMENT -// float maxDistance = inBiome * min(max(1.0 - length(d*dVWorld.xz)/(32*8),0.0)*2.0,1.0); -// float densityVol = cloudVol(progressW, maxDistance) * lightleakfix; -// #else -// float densityVol = cloudVol(progressW, 0.0) * lightleakfix; -// #endif - -// //Water droplets(fog) -// float density = densityVol*300.0; - -// ///// ----- main fog lighting - -// //Just air -// vec2 airCoef = exp(-max(progressW.y - SEA_LEVEL, 0.0) / vec2(8.0e3, 1.2e3) * vec2(6.,7.0)) * (atmosphereMult * 24.0) * Haze_amount * clamp(CloudLayer0_height - progressW.y + max(eyeAltitude-(CloudLayer0_height-50),0),0.0,1.0); - -// //Pbr for air, yolo mix between mie and rayleigh for water droplets -// vec3 rL = rC*airCoef.x; -// vec3 m = (airCoef.y+density) * mC; - -// #ifdef PER_BIOME_ENVIRONMENT -// vec3 Atmosphere = mix(skyLightPhased, biomeDirect, maxDistance) * (rL + m); // not pbr so just make the atmosphere also dense fog heh -// vec3 DirectLight = mix(LightSourcePhased, biomeIndirect, maxDistance) * sh * (rL*rayL + m); -// #else -// vec3 Atmosphere = skyLightPhased * (rL + m); // not pbr so just make the atmosphere also dense fog heh -// vec3 DirectLight = LightSourcePhased * sh * (rL*rayL + m); -// #endif -// vec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz) * (rL + m); - -// vec3 foglighting = (Atmosphere + DirectLight + Lightning) * lightleakfix; - - - -// color += (foglighting - foglighting * exp(-(rL+m)*dd*dL)) / ((rL+m)+0.00000001)*absorbance; -// absorbance *= clamp(exp(-(rL+m)*dd*dL),0.0,1.0); - -// #ifdef RAYMARCH_CLOUDS_WITH_FOG -// ////////////////////////////////////////// -// ///// ----- cloud part -// ////////////////////////////////////////// -// // curvature = clamp(1.0 - length(progressW - cameraPosition)/(32*128),0.0,1.0); - - -// float otherlayer = max(progressW.y - (CloudLayer0_height+99.5), 0.0) > 0.0 ? 0.0 : 1.0; - -// float DUAL_MIN_HEIGHT = otherlayer > 0.0 ? CloudLayer0_height : CloudLayer1_height; -// float DUAL_MAX_HEIGHT = DUAL_MIN_HEIGHT + 100.0; - -// float DUAL_DENSITY = otherlayer > 0.0 ? CloudLayer0_density : CloudLayer1_density; - -// if(clamp(progressW.y - DUAL_MAX_HEIGHT,0.0,1.0) < 1.0 && clamp(progressW.y - DUAL_MIN_HEIGHT,0.0,1.0) > 0.0){ - -// float DUAL_MIN_HEIGHT_2 = otherlayer > 0.0 ? CloudLayer0_height : CloudLayer1_height; -// float DUAL_MAX_HEIGHT_2 = DUAL_MIN_HEIGHT + 100.0; - -// float cumulus = GetCumulusDensity(-1, progressW, 1, CloudLayer0_height, CloudLayer1_height); -// float fadedDensity = DUAL_DENSITY * clamp(exp( (progressW.y - (DUAL_MAX_HEIGHT - 75)) / 9.0 ),0.0,1.0); - -// float muE = cumulus*fadedDensity; -// float directLight = 0.0; -// for (int j=0; j < 3; j++){ -// vec3 shadowSamplePos = progressW + dV_Sun * (0.1 + j * (0.1 + dither.y*0.05)); -// float shadow = GetCumulusDensity(-1, shadowSamplePos, 0, DUAL_MIN_HEIGHT, DUAL_MAX_HEIGHT) * DUAL_DENSITY; - -// directLight += shadow; -// } - -// /// shadows cast from one layer to another -// /// large cumulus -> small cumulus -// #if defined CloudLayer1 && defined CloudLayer0 -// if(otherlayer > 0.0) directLight += LAYER1_DENSITY * 2.0 * GetCumulusDensity(1, progressW + dV_Sun/abs(dV_Sun.y) * max((LAYER1_minHEIGHT+70*dither.y) - progressW.y,0.0), 0, LAYER1_minHEIGHT, LAYER1_maxHEIGHT); -// #endif -// // // altostratus -> cumulus -// // #ifdef CloudLayer2 -// // vec3 HighAlt_shadowPos = rayProgress + dV_Sun/abs(dV_Sun.y) * max(LAYER2_HEIGHT - rayProgress.y,0.0); -// // float HighAlt_shadow = GetAltostratusDensity(HighAlt_shadowPos) * CloudLayer2_density; -// // directLight += HighAlt_shadow; -// // #endif - - -// float skyScatter = clamp(((DUAL_MAX_HEIGHT - 20 - progressW.y) / 275.0) * (0.5+DUAL_DENSITY),0.0,1.0); -// float distantfade = 1- exp( -10*pow(clamp(1.0 - length(progressW - cameraPosition)/(32*65),0.0,1.0),2)); -// vec3 cloudlighting = DoCloudLighting(cloudDensity * cumulus, SkyLightColor, skyScatter, directLight, directScattering*sh2, directMultiScattering*sh2, 1); - -// color += max(cloudlighting - cloudlighting*exp(-muE*dd*dL),0.0) * absorbance; -// absorbance *= max(exp(-muE*dd*dL),0.0); -// } - -// #endif - -// if (min(dot(absorbance,vec3(0.335)),1.0) < 1e-5) break; -// } -// return vec4(color, min(dot(absorbance,vec3(0.335)),1.0)); -// } \ No newline at end of file +} \ No newline at end of file diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 79d19f4..1eabc33 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -9,31 +9,28 @@ // #define Vanilla_like_water #define WATER_WAVE_STRENGTH 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define WATER_WAVE_SPEED 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] -#define Dirt_Amount 0.14 // [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] +#define Dirt_Amount 0.14 // [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] -#define Dirt_Scatter_R 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] -#define Dirt_Scatter_G 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] -#define Dirt_Scatter_B 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] -#define Dirt_Absorb_R 0.65 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] -#define Dirt_Absorb_G 0.85 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] -#define Dirt_Absorb_B 1.05 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] -#define Water_Absorb_R 0.2629 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] -#define Water_Absorb_G 0.0565 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] -#define Water_Absorb_B 0.01011 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Dirt_Scatter_R 0.6 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.9 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.9 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Absorb_R 1.0 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 1.0 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 1.0 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Water_Absorb_R 0.25 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.05 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define MINIMUM_WATER_ABSORBANCE -1 // [-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 60 70 80 90 100] #define rayMarchSampleCount 2 // [1 2 3 4 6 8 12 16 32 64] #define Water_Top_Layer 62.90 // [0.90 1.90 2.90 3.90 4.90 5.90 6.90 7.90 8.90 9.90 10.90 11.90 12.90 13.90 14.90 15.90 16.90 17.90 18.90 19.90 20.90 21.90 22.90 23.90 24.90 25.90 26.90 27.90 28.90 29.90 30.90 31.90 32.90 33.90 34.90 35.90 36.90 37.90 38.90 39.90 40.90 41.90 42.90 43.90 44.90 45.90 46.90 47.90 48.90 49.90 50.90 51.90 52.90 53.90 54.90 55.90 56.90 57.90 58.90 59.90 60.90 61.90 62.90 63.90 64.90 65.90 66.90 67.90 68.90 69.90 70.90 71.90 72.90 73.90 74.90 75.90 76.90 77.90 78.90 79.90 80.90 81.90 82.90 83.90 84.90 85.90 86.90 87.90 88.90 89.90 90.90 91.90 92.90 93.90 94.90 95.90 96.90 97.90 98.90 99.90 100.90 101.90 102.90 103.90 104.90 105.90 106.90 107.90 108.90 109.90 110.90 111.90 112.90 113.90 114.90 115.90 116.90 117.90 118.90 119.90 120.90 121.90 122.90 123.90 124.90 125.90 126.90 127.90 128.90 129.90 130.90 131.90 132.90 133.90 134.90 135.90 136.90 137.90 138.90 139.90 140.90 141.90 142.90 143.90 144.90 145.90 146.90 147.90 148.90 149.90 150.90 151.90 152.90 153.90 154.90 155.90 156.90 157.90 158.90 159.90 160.90 161.90 162.90 163.90 164.90 165.90 166.90 167.90 168.90 169.90 170.90 171.90 172.90 173.90 174.90 175.90 176.90 177.90 178.90 179.90 180.90 181.90 182.90 183.90 184.90 185.90 186.90 187.90 188.90 189.90 190.90 191.90 192.90 193.90 194.90 195.90 196.90 197.90 198.90 199.90] -#define Refraction +#define FAKE_REFRACTION_EFFECT +#define FAKE_DISPERSION_EFFECT +#define REFRACTION_SMUDGE #define SSR_STEPS 30 // [10 15 20 25 30 35 40 50 100 200 400] #define USE_QUARTER_RES_DEPTH -#define WATER_REFLECTIONS -#define WATER_BACKGROUND_SPECULAR -#define WATER_SUN_SPECULAR -#define SCREENSPACE_REFLECTIONS -// #define WATER_HQ_SMOOTHNESS - #define SNELLS_WINDOW //////////////////////////////////////// @@ -80,7 +77,7 @@ // ----- INDIRECT LIGHT RELATED SETTINGS ----- // ///////////////////////////////////////////////// -#define MIN_LIGHT_AMOUNT 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ] +#define MIN_LIGHT_AMOUNT 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ] #define ambient_brightness 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] #define AmbientLight_R 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] @@ -94,11 +91,11 @@ #define TORCH_B 0.65 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define Hand_Held_lights -#define HANDHELD_LIGHT_RANGE 10 // [1 2 3 4 5 6 7 8 9 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245 250 255] +#define HANDHELD_LIGHT_RANGE 16 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245 250 255] #define indirect_effect 1 // [0 1 2 3 4] -#define AO_in_sunlight +// #define AO_in_sunlight #define AO_Strength 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0] // #define SKY_CONTRIBUTION_IN_SSRT @@ -145,7 +142,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define VPS_Search_Samples 4 // [4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32] #define Min_Shadow_Filter_Radius 5.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] #define Max_Shadow_Filter_Radius 30.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] -#define Max_Filter_Depth 35.0 // [0.1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 220.0] +#define Max_Filter_Depth 15.0 // [0.1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 220.0] #define BASIC_SHADOW_FILTER #define SHADOW_FILTER_SAMPLE_COUNT 13 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ] @@ -191,7 +188,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define RainFog_amount 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] -#define BLOOMY_FOG 1.5 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] +#define BLOOMY_FOG 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] #define BLOOM_STRENGTH 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 50.0 75.0 100.0] #define CAVE_FOG @@ -260,14 +257,9 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. // ----- LABPBR MATERIALS RELATED SETTINGS ----- // /////////////////////////////////////////////////// -// #define Specular_Reflections -// #define Screen_Space_Reflections -// #define Sky_reflection -// #define Rough_reflections -#define Dynamic_SSR_quality #define Sun_specular_Strength 1 // [0 1 2 3 4 5 6 7 8 9 10] #define reflection_quality 30 // [6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 55.0 60.0 65.0 70.0 75.0 80.0 85.0 90.0 95.0 100.0 ] -#define Roughness_Threshold 1.5 // [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define Roughness_Threshold 0.3 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #ifdef Specular_Reflections #define LIGHTSOURCE_REFLECTION @@ -326,7 +318,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define sunColorG 0.91 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] #define sunColorB 0.81 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] -#define moon_illuminance 50.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 150.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0 1000.0 2000.0 3000.0 4000.0 5000.0 6000.0 7000.0 8000.0 9000.0 10000.0 11000.0 12000.0 13000.0 14000.0 15000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 150000.0 200000.0 250000.0 300000.0 400000.0 500000.0] +#define moon_illuminance 600.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 150.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0 1000.0 2000.0 3000.0 4000.0 5000.0 6000.0 7000.0 8000.0 9000.0 10000.0 11000.0 12000.0 13000.0 14000.0 15000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 150000.0 200000.0 250000.0 300000.0 400000.0 500000.0] #define Moon_temp 15000 // [1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 4500 5600 5700 5800 5900 6000 6100 6200 6300 6400 6500 6600 6700 6800 6900 7000 7100 7200 7300 7400 7500 7600 7700 7800 7900 8000 8100 8200 8300 8400 8500 8600 8700 8800 8900 9000 9100 9200 9300 9400 9500 9600 9700 9800 9900 10000 15000 20000 25000 50000] #define moonColorR 0.9080 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] #define moonColorG 0.9121 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] @@ -512,12 +504,14 @@ uniform int moonPhase; ////////////////////////////////////// #define TAA -// #define SCREENSHOT_MODE +// #define RESPONSIVE_TAA // #define TAA_UPSCALING -#define BLEND_FACTOR 0.12 // [0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00] -#define CLOSEST_VELOCITY -//#define NO_CLIP +// #define SCREENSHOT_MODE +#ifdef SCREENSHOT_MODE + #undef RESPONSIVE_TAA +#endif +#define BLEND_FACTOR 0.125 // [0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.125 0.14 0.16 0.18 0.20 0.25 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00] ///////////////////////////////////////////////// @@ -582,6 +576,9 @@ const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_ #define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] #define Exposure_Speed 1.0 // [0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] +#define MINUMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define MAXIMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + #define Fake_purkinje #define Purkinje_strength 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define Purkinje_R 0.4 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] @@ -593,12 +590,19 @@ const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_ // #define AEROCHROME_WOOL_ENABLED // Technically wool things should be affected but it affects a lot of builds and stuff #define AEROCHROME_PINKNESS 0.3 // How pink it is from red [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631), AEROCHROME_PINKNESS); - // #define CAMERA_GRIDLINES + + // #define MOTION_BLUR #define MOTION_BLUR_STRENGTH 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0] +// #define CHROMATIC_ABERRATION +#define CHROMATIC_ABERRATION_STRENGTH 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0] + +// #define VIGNETTE +#define VIGNETTE_STRENGTH 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] + /////////////////////////////////////////////////////// // ----- GAMEPLAY POST EFFECT RELATED SETTINGS ----- // /////////////////////////////////////////////////////// @@ -699,6 +703,10 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define SELECT_BOX_COL_B 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define OLD_CAVE_DETECTION +#define FORCE_TRANSLUCENT_GLASS + +// #define PLANET_CURVATURE +#define CURVATURE_AMOUNT 1.0 // [-10.0 -9.0 -8.0 -7.0 -6.0 -5.0 -4.0 -3.0 -2.0 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] /////////////////////////////////////////// // ----- DISTANT HORIZONS SETTINGS ----- // @@ -708,7 +716,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define DISTORT_SHADOWMAP // #define DISTANT_HORIZONS_SHADOWMAP #ifdef DISTANT_HORIZONS_SHADOWMAP - // #undef DISTORT_SHADOWMAP + #undef DISTORT_SHADOWMAP const float shadowNearPlane = -1.0; const float shadowFarPlane = -1.0; @@ -716,11 +724,12 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) // #define DH_SHADOWPROJECTIONTWEAK #define DH_OVERDRAW_PREVENTION -#define OVERDRAW_MAX_DISTANCE 0 // [0 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256] +#define OVERDRAW_MAX_DISTANCE 128 // [0 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256] #define DH_AMBIENT_OCCLUSION #define DH_SUBSURFACE_SCATTERING #define DH_SCREENSPACE_REFLECTIONS +#define DH_NOISE_TEXTURE /////////////////////////////////////////// // ----- FLOODFILL [LPV] SETTINGS ----- // @@ -728,7 +737,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) //#define LPV_ENABLED #define LPV_SIZE 7 // [6 7 8] -#define LPV_SATURATION 100 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] +#define LPV_SATURATION 50 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] #define LPV_TINT_SATURATION 100 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] #define LPV_NORMAL_STRENGTH 50 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] #define LPV_NORMAL_OFFSET @@ -749,6 +758,8 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #endif #endif +// ruining parts of the effect to make it more like vanilla floodfill +// #define VANILLA_LIGHTMAP_MASK //////////////////////////////// // ----- DEBUG SETTINGS ----- // @@ -763,10 +774,13 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define debug_VIEW_POSITION 6 #define debug_DH_WATER_BLENDING 7 #define debug_FILTERED_STUFF 8 -#define debug_TEMPORAL_REPROJECTION 9 -#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_TEMPORAL_REPROJECTION] - +#define debug_DEPTHTEX0 9 +#define debug_DEPTHTEX1 10 +#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_DEPTHTEX0 debug_DEPTHTEX1] +#if DEBUG_VIEW == debug_DEPTHTEX0 || DEBUG_VIEW == debug_DEPTHTEX1 + #undef TAA +#endif // fix settings #ifdef DH_SCREENSPACE_REFLECTIONS #endif @@ -793,4 +807,6 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #ifdef LPV_VL_FOG_ILLUMINATION #endif #ifdef OLD_CAVE_DETECTION +#endif +#ifdef FORCE_TRANSLUCENT_GLASS #endif \ No newline at end of file diff --git a/shaders/lib/sky_gradient.glsl b/shaders/lib/sky_gradient.glsl index 2656274..6429948 100644 --- a/shaders/lib/sky_gradient.glsl +++ b/shaders/lib/sky_gradient.glsl @@ -28,7 +28,7 @@ vec3 drawMoon(vec3 PlayerPos, vec3 WorldSunVec, vec3 Color, inout vec3 occludeSt vec3 LightDir = phase[moonPhase]; - return Shape * pow(clamp(dot(sunNormal,LightDir)/5,0.0,1.5),5) * Color + clamp(Shape * 4.0 * pow(shape2/200,2.0),0.0,1.0)*0.004; + return Shape * pow(clamp(dot(sunNormal,LightDir)/5,0.0,1.5),5) * Color * 10.0 + clamp(Shape * 4.0 * pow(shape2/200,2.0),0.0,1.0)*0.004; } const float pi = 3.141592653589793238462643383279502884197169; @@ -134,27 +134,73 @@ vec4 texture2D_bicubic_offset(sampler2D tex, vec2 uv, float noise, float scale) vec2 sphereToCarte(vec3 dir) { float lonlat = clamp(atan(-dir.x, -dir.z), -pi, pi); - return vec2(lonlat * (0.5/pi) +0.5,0.5*dir.y+0.5); + return vec2(lonlat * (0.5/pi) +0.5, 0.5*dir.y+0.5); } vec3 skyFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + + vec2 clampUV = vec2(1.0); + p = clamp(p*2.0-1.0, -clampUV, clampUV)*0.5+0.5; + return texture2D(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize).rgb; } vec3 skyFromTexLOD(vec3 pos,sampler2D sampler, float LOD){ vec2 p = sphereToCarte(pos); + return texture2DLod(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize,LOD).rgb; } + vec4 skyCloudsFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); - return texture2D(sampler,p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize); -} -vec4 skyCloudsFromTexLOD(vec3 pos,sampler2D sampler, float LOD){ - vec2 p = sphereToCarte(pos); - return texture2DLod(sampler,p*texelSize*256. + vec2(18.5 + 257., 1.5)*texelSize,LOD); + + vec2 uv = clamp(p, 0.0, 1.0) * texelSize*256. + vec2(18.5+257.,1.5)*texelSize; + + return texture2D(sampler, uv); } -vec4 skyCloudsFromTexLOD2(vec3 pos,sampler2D sampler, float LOD){ +vec4 skyCloudsFromTexBLUR(vec3 pos,sampler2D sampler, float scaler){ + vec2 p = sphereToCarte(pos); - return texture2DLod(sampler,p*texelSize*256. + vec2(256.0 - 256.0*0.12,1.5)*texelSize,LOD); + vec2 scaleA = texelSize*256.; + vec2 scaleB = vec2(18.5+257.,1.5)*texelSize; + vec2 posi = p; + + vec2 uv = clamp(posi, 0.0, 1.0)*scaleA + scaleB; + + + vec4 color = texture2D(sampler, uv); + + return color; +} + +vec4 skyCloudsFromTexLOD(vec3 pos,sampler2D sampler, float roughness){ + vec2 p = sphereToCarte(pos); + + roughness = (1-pow(1-roughness,3)); + + float Y = min(max(p.y-0.5,0)*50.0,1); + p = mix(p, ((p-0.5) - (p-0.5)*roughness) + 0.5, Y); + + // p = ((p-0.5) - (p-0.5)*roughness) + 0.5; + + vec2 clampUV = vec2(1.0); + p = clamp(p*2.0-1.0, -clampUV, clampUV)*0.5+0.5; + + vec2 uv = p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize; + + return texture2D(sampler, uv); +} + + +vec4 volumetricsFromTex(vec3 pos,sampler2D sampler, float LOD){ + vec2 p = sphereToCarte(pos); + + p = clamp(p, 0.0, 1.0); + + vec2 uv = p*texelSize*256. + vec2(256.0 - 256.0*0.12,1.5)*texelSize; + + return texture2DLod(sampler, uv, LOD); } \ No newline at end of file diff --git a/shaders/lib/specular.glsl b/shaders/lib/specular.glsl index ee44e96..ba3ab89 100644 --- a/shaders/lib/specular.glsl +++ b/shaders/lib/specular.glsl @@ -1,13 +1,13 @@ -uniform int framemod8; +// uniform int framemod8; -const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), - vec2(-1.,3.)/8., - vec2(5.0,1.)/8., - vec2(-3,-5.)/8., - vec2(-5.,5.)/8., - vec2(-7.,-1.)/8., - vec2(3,7.)/8., - vec2(7.,-7.)/8.); +// const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), +// vec2(-1.,3.)/8., +// vec2(5.0,1.)/8., +// vec2(-3,-5.)/8., +// vec2(-5.,5.)/8., +// vec2(-7.,-1.)/8., +// vec2(3,7.)/8., +// vec2(7.,-7.)/8.); vec3 lerp(vec3 X, vec3 Y, float A){ return X * (1.0 - A) + Y * A; @@ -23,9 +23,9 @@ float square(float x){ -vec3 toClipSpace3(vec3 viewSpacePosition) { - return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; -} +// vec3 toClipSpace3(vec3 viewSpacePosition) { +// return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +// } float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } @@ -61,7 +61,89 @@ vec2 R2_Sample(int n){ return fract(alpha * n); } -vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, bool hand, inout float reflectLength){ +float fma(float a,float b,float c){ + return a * b + c; +} + +vec3 SampleVNDFGGX( + vec3 viewerDirection, // Direction pointing towards the viewer, oriented such that +Z corresponds to the surface normal + float alpha, // Roughness parameter along X and Y of the distribution + vec2 xy // Pair of uniformly distributed numbers in [0, 1) +) { + + // Transform viewer direction to the hemisphere configuration + viewerDirection = normalize(vec3( alpha * 0.5 * viewerDirection.xy, viewerDirection.z)); + + // Sample a reflection direction off the hemisphere + const float tau = 6.2831853; // 2 * pi + float phi = tau * xy.x; + + float cosTheta = fma(1.0 - xy.y, 1.0 + viewerDirection.z, -viewerDirection.z); + float sinTheta = sqrt(clamp(1.0 - cosTheta * cosTheta, 0.0, 1.0)); + + sinTheta = clamp(sinTheta,0.0,1.0); + cosTheta = clamp(cosTheta,sinTheta*0.5,1.0); + + + vec3 reflected = vec3(vec2(cos(phi), sin(phi)) * sinTheta, cosTheta); + + // Evaluate halfway direction + // This gives the normal on the hemisphere + vec3 halfway = reflected + viewerDirection; + + // Transform the halfway direction back to hemiellispoid configuation + // This gives the final sampled normal + return normalize(vec3(alpha * halfway.xy, halfway.z)); +} + +vec3 GGX(vec3 n, vec3 v, vec3 l, float r, vec3 f0, vec3 metalAlbedoTint) { + r = max(pow(r,2.5), 0.0001); + + vec3 h = normalize(l + v); + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.) ; + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + + vec3 F = (f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH)) * metalAlbedoTint; + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + +float shlickFresnelRoughness(float XdotN, float roughness){ + + float shlickFresnel = clamp(1.0 + XdotN,0.0,1.0); + + // shlickFresnel = pow(1.0-pow(1.0-shlickFresnel, mix(1.0,2.1,roughness)), mix(5.0,3.0,roughness)); + // shlickFresnel = mix(0.0, mix(1.0,0.065,1-pow(1-roughness,3.5)), shlickFresnel); + + + // float curves = 1.0-exp(-1.3*roughness); + // float brightness = 1.0-exp(-4.0*roughness); + + float curves = exp(-4.0*pow(1-(roughness),2.5)); + float brightness = exp(-3.0*pow(1-sqrt(roughness),3.50)); + + + shlickFresnel = pow(1.0-pow(1.0-shlickFresnel, mix(1.0, 1.9, curves)),mix(5.0, 2.6, curves)); + + + + + shlickFresnel = mix(0.0, mix(1.0,0.065, brightness) , clamp(shlickFresnel,0.0,1.0)); + + return shlickFresnel; +} + +vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, bool hand, inout float reflectionLength, float fresnel){ + + float biasAmount = 0.00005;//mix(0.00035, 0.00005, pow(fresnel,0.01)); vec3 clipPosition = toClipSpace3(position); float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? @@ -75,108 +157,282 @@ vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, boo vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*(dither-0.5); + + #ifndef FORWARD_SPECULAR + spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; + #endif float minZ = spos.z; float maxZ = spos.z; - spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; - float depthcancleoffset = pow(1.0-(quality/reflection_quality),1.0); - float dist = 1.0 + clamp(position.z*position.z/50.0,0.0,2.0); // shrink sample size as distance increases + for (int i = 0; i <= int(quality); i++) { - // float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4.0),0).a/65000.0)); - - // if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ) ) return vec3(spos.xy/RENDER_SCALE,sp); - - // spos += stepv; - - // //small bias - // float biasamount = (0.0002 + 0.0015*pow(depthcancleoffset,5) ) / dist; - - // if(hand) biasamount = 0.00035; - - // minZ = maxZ-biasamount / ld(spos.z); - // maxZ += stepv.z; - - float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4.0),0).a/65000.0)); float currZ = linZ(spos.z); float nextZ = linZ(sp); - // if(nextZ < currZ) { - if(abs(nextZ-currZ)/currZ < 0.15 && sp <= max(minZ,maxZ) && sp >= min(minZ,maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); - // } - float biasamount = 0.005; - minZ = maxZ-biasamount / linZ(spos.z); + // if(abs(nextZ-currZ) < mix(0.005,0.5,currZ*currZ) && sp < max(minZ,maxZ) && sp > min(minZ,maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); + if(sp < max(minZ,maxZ) && sp > min(minZ,maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); + + minZ = maxZ-biasAmount / currZ; maxZ += stepv.z; spos += stepv; - reflectLength += 1.0 / quality; // for shit + reflectionLength += 1.0 / quality; + } return vec3(1.1); } -float fma(float a,float b,float c){ - return a * b + c; +vec4 screenSpaceReflections( + vec3 reflectedVector, + vec3 viewPos, + float noise, + + bool isHand, + float roughness, + float fresnel + +){ + vec4 reflection = vec4(0.0); + + float reflectionLength = 0.0; + float quality = 30.0f;//mix(10.0f, 30.0f, fresnel); + + vec3 raytracePos = rayTraceSpeculars(reflectedVector, viewPos, noise, quality, isHand, reflectionLength, fresnel); + + if (raytracePos.z >= 1.0) return reflection; + + // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. + + float value = 0.1; + reflectionLength = min(max(reflectionLength - value, 0.0)/(1.0-value), 1.0); + + float LOD = mix(0.0, 6.0*(1.0-exp(-15.0*sqrt(roughness))), 1.0-pow(1.0-reflectionLength,5.0)); + // float LOD = mix(0.0, 6.0*pow(roughness,0.1), 1.0-pow(1.0-reflectionLength,5.0)); + + // float LOD = clamp(pow(reflectionLength, pow(1.0-sqrt(roughness),5.0) * 3.0) * 6.0, 0.0, 6.0*pow(roughness,0.1)); + + + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(raytracePos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + reflection.a = 1.0; + + #ifdef FORWARD_RENDERED_SPECULAR + // vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + // vec2 resScale = vec2(1920.,1080.)/clampedRes; + // vec2 bloomTileUV = (((previousPosition.xy/texelSize)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.); + // reflection.rgb = texture2D(colortex6, bloomTileUV / 4.0).rgb; + reflection.rgb = texture2D(colortex5, previousPosition.xy).rgb; + #else + reflection.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb; + #endif + + } + + // reflection.rgb = vec3(LOD/6); + +// vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +// vec2 resScale = vec2(1920.,1080.)/clampedRes; +// vec2 bloomTileUV = (((previousPosition.xy/texelSize)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.); + +// vec2 bloomTileoffsetUV[6] = vec2[]( +// bloomTileUV / 4., +// bloomTileUV / 8. + vec2(0.25*resScale.x+2.5*texelSize.x, .0), +// bloomTileUV / 16. + vec2(0.375*resScale.x+4.5*texelSize.x, .0), +// bloomTileUV / 32. + vec2(0.4375*resScale.x+6.5*texelSize.x, .0), +// bloomTileUV / 64. + vec2(0.46875*resScale.x+8.5*texelSize.x, .0), +// bloomTileUV / 128. + vec2(0.484375*resScale.x+10.5*texelSize.x, .0) +// ); +// // reflectLength = pow(1-pow(1-reflectLength,2),5) * 6; +// reflectLength = (exp(-4*(1-reflectLength))) * 6; +// Reflections.rgb = texture2D(colortex6, bloomTileoffsetUV[0]).rgb; + + return reflection; } -//// thank you Zombye | the paper: https://ggx-research.github.io/publication/2023/06/09/publication-ggx.html -vec3 SampleVNDFGGX( - vec3 viewerDirection, // Direction pointing towards the viewer, oriented such that +Z corresponds to the surface normal - vec2 alpha, // Roughness parameter along X and Y of the distribution - float xy // Pair of uniformly distributed numbers in [0, 1) -) { - // alpha *= alpha; - // Transform viewer direction to the hemisphere configuration - viewerDirection = normalize(vec3(alpha * viewerDirection.xy, viewerDirection.z)); +float getReflectionVisibility(float f0, float roughness){ - // Sample a reflection direction off the hemisphere - const float tau = 6.2831853; // 2 * pi - float phi = tau * xy; + // the goal is to determine if the reflection is even visible. + // if it reaches a point in smoothness or reflectance where it is not visible, allow it to interpolate to diffuse lighting. + float thresholdValue = Roughness_Threshold; - float cosTheta = fma(1.0 - xy, 1.0 + viewerDirection.z, -viewerDirection.z) ; - float sinTheta = sqrt(clamp(1.0 - cosTheta * cosTheta, 0.0, 1.0)); + if(thresholdValue < 0.01) return 0.0; - // xonk note, i dont know what im doing but this kinda does what i want so whatever - float attemptTailClamp = clamp(sinTheta,max(cosTheta-0.25,0), cosTheta); - float attemptTailClamp2 = clamp(cosTheta,max(sinTheta-0.25,0), sinTheta); + // the visibility gradient should only happen for dialectric materials. because metal is always shiny i guess or something + float dialectrics = max(f0*255.0 - 26.0,0.0)/229.0; + float value = 0.35; // so to a value you think is good enough. + float thresholdA = min(max( (1.0-dialectrics) - value, 0.0)/value, 1.0); - vec3 reflected = vec3(vec2(cos(phi), sin(phi)) * attemptTailClamp2, attemptTailClamp); - // vec3 reflected = vec3(vec2(cos(phi), sin(phi)) * sinTheta, cosTheta); + // use perceptual smoothness instead of linear roughness. it just works better i guess + float smoothness = 1.0-sqrt(roughness); + value = thresholdValue; // this one is typically want you want to scale. + float thresholdB = min(max(smoothness - value, 0.0)/value, 1.0); + + // preserve super smooth reflections. if thresholdB's value is really high, then fully smooth, low f0 materials would be removed (like water). + value = 0.1; // super low so only the smoothest of materials are includes. + float thresholdC = 1.0-min(max(value - (1.0-smoothness), 0.0)/value, 1.0); + + float visibilityGradient = max(thresholdA*thresholdC - thresholdB,0.0); - // Evaluate halfway direction - // This gives the normal on the hemisphere - vec3 halfway = reflected + viewerDirection; + // a curve to make the gradient look smooth/nonlinear. just preference + visibilityGradient = 1.0-visibilityGradient; + visibilityGradient *=visibilityGradient; + visibilityGradient = 1.0-visibilityGradient; + visibilityGradient *=visibilityGradient; - // Transform the halfway direction back to hemiellispoid configuation - // This gives the final sampled normal - return normalize(vec3(alpha * halfway.xy, halfway.z)); + return visibilityGradient; } -float GGX(vec3 n, vec3 v, vec3 l, float r, float f0) { - r = max(pow(r,2.5), 0.0001); +// derived from N and K from labPBR wiki https://shaderlabs.org/wiki/LabPBR_Material_Standard +// using ((1.0 - N)^2 + K^2) / ((1.0 + N)^2 + K^2) +vec3 HCM_F0 [8] = vec3[]( + vec3(0.531228825312, 0.51235724246, 0.495828545714),// iron + vec3(0.944229966045, 0.77610211732, 0.373402004593),// gold + vec3(0.912298031535, 0.91385063144, 0.919680580954),// Aluminum + vec3(0.55559681715, 0.55453707574, 0.554779427513),// Chrome + vec3(0.925952196272, 0.72090163805, 0.504154241735),// Copper + vec3(0.632483812932, 0.62593707362, 0.641478899539),// Lead + vec3(0.678849234658, 0.64240055565, 0.588409633571),// Platinum + vec3(0.961999998804, 0.94946811207, 0.922115710997) // Silver +); - vec3 h = l + v; - float hn = inversesqrt(dot(h, h)); +vec3 specularReflections( - float dotLH = clamp(dot(h,l)*hn,0.,1.); - float dotNH = clamp(dot(h,n)*hn,0.,1.) ; - float dotNL = clamp(dot(n,l),0.,1.); - float dotNHsq = dotNH*dotNH; + in vec3 viewPos, // toScreenspace(vec3(screenUV, depth) + in vec3 playerPos, // normalized + in vec3 lightPos, // should be in world space + in vec3 noise, // x = bluenoise y = interleaved gradient noise - float denom = dotNHsq * r - dotNHsq + 1.; - float D = r / (3.141592653589793 * denom * denom); + in vec3 normal, // normals in world space + in float roughness, // red channel of specular texture _S + in float f0, // green channel of specular texture _S + in vec3 albedo, + in vec3 diffuseLighting, + in vec3 lightColor, // should contain the light's color and shadows. - float F = f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH); - float k2 = .25 * r; + in float lightmap, // in anything other than world0, this should be 1.0; + in bool isHand // mask for the hand - return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); + #ifdef FORWARD_SPECULAR + , inout float reflectanceForAlpha + #else + , bool isWater + #endif +){ + #ifdef FORWARD_RENDERED_SPECULAR + lightmap = pow(min(max(lightmap-0.6,0.0)*2.5,1.0),2.0); + #else + lightmap = clamp((lightmap-0.8)*7.0, 0.0,1.0); + #endif + + roughness = 1.0 - roughness; + roughness *= roughness; + + f0 = f0 == 0.0 ? 0.02 : f0; + + // f0 = 0.9; + // roughness = 0.0; + + bool isMetal = f0 > 229.5/255.0; + + // #ifndef FORWARD_RENDERED_SPECULAR + // // underwater, convert from f0 air, to ior, then back to f0 water + // if(!isMetal || isWater){ + // f0 = 2.0 / (1.0 - sqrt(f0)) - 1.0; + // f0 = clamp(pow((1.33 - f0) / (1.33 + f0), 2.0),0.0,1.0); + // } + // #endif + + // get reflected vector + mat3 basis = CoordBase(normal); + vec3 viewDir = -playerPos*basis; + + #if defined FORWARD_ROUGH_REFLECTION || defined DEFERRED_ROUGH_REFLECTION + vec3 samplePoints = SampleVNDFGGX(viewDir, roughness, noise.xy); + vec3 reflectedVector_L = basis * reflect(-normalize(viewDir), samplePoints); + + // get reflectance and f0/HCM values + // float shlickFresnel = pow(clamp(1.0 + dot(-reflectedVector, samplePoints),0.0,1.0),5.0); + #else + vec3 reflectedVector_L = reflect(playerPos, normal); + #endif + + float shlickFresnel = shlickFresnelRoughness(dot(-normalize(viewDir), vec3(0.0,0.0,1.0)), roughness); + + // #if defined FORWARD_RENDERED_SPECULAR && defined SNELLS_WINDOW + // if(isEyeInWater == 1) shlickFresnel = mix(shlickFresnel, 1.0, min(max(0.97 - (1-shlickFresnel),0.0)/(1-0.97),1.0)); + // #endif + + // F0 < 230 dialectrics + // F0 >= 230 hardcoded metal f0 + // F0 == 255 use albedo for f0 + albedo = f0 == 1.0 ? sqrt(albedo) : albedo; + vec3 metalAlbedoTint = isMetal ? albedo : vec3(1.0); + // get F0 values for hardcoded metals. + vec3 hardCodedMetalsF0 = f0 == 1.0 ? albedo : HCM_F0[int(clamp(f0*255.0 - 229.5,0.0,7.0))]; + vec3 reflectance = isMetal ? hardCodedMetalsF0 : vec3(f0); + vec3 F0 = (reflectance + (1.0-reflectance) * shlickFresnel) * metalAlbedoTint; + + #if defined FORWARD_SPECULAR + reflectanceForAlpha = clamp(dot(F0, vec3(0.3333333)), 0.0,1.0); + #endif + + vec3 specularReflections = diffuseLighting; + + float reflectionVisibilty = getReflectionVisibility(f0, roughness); + + #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION || defined DEFERRED_ENVIORNMENT_REFLECTION || defined FORWARD_ENVIORNMENT_REFLECTION + if(reflectionVisibilty < 1.0){ + #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION + #if !defined OVERWORLD_SHADER && !defined FORWARD_SPECULAR + vec3 backgroundReflection = volumetricsFromTex(reflectedVector_L, colortex4, roughness).rgb / 1200.0; + #else + vec3 backgroundReflection = skyCloudsFromTex(reflectedVector_L, colortex4).rgb / 1200.0; + #endif + #endif + + #if defined DEFERRED_ENVIORNMENT_REFLECTION || defined FORWARD_ENVIORNMENT_REFLECTION + vec4 enviornmentReflection = screenSpaceReflections(mat3(gbufferModelView) * reflectedVector_L, viewPos, noise.y, isHand, roughness, shlickFresnel); + // darkening for metals. + vec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-enviornmentReflection.a) * (1.0-lightmap) : diffuseLighting; + #else + // darkening for metals. + vec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-lightmap) : diffuseLighting; + #endif + + // composite all the different reflections together + #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION + specularReflections = mix(DarkenedDiffuseLighting, backgroundReflection, lightmap); + #endif + + #if defined DEFERRED_ENVIORNMENT_REFLECTION || defined FORWARD_ENVIORNMENT_REFLECTION + specularReflections = mix(specularReflections, enviornmentReflection.rgb, enviornmentReflection.a); + #endif + + specularReflections = mix(DarkenedDiffuseLighting, specularReflections, F0); + + // lerp back to diffuse lighting if the reflection has not been deemed visible enough + specularReflections = mix(specularReflections, diffuseLighting, reflectionVisibilty); + } + #endif + + #if defined OVERWORLD_SHADER + vec3 lightSourceReflection = Sun_specular_Strength * lightColor * GGX(normal, -playerPos, lightPos, roughness, reflectance, metalAlbedoTint); + specularReflections += lightSourceReflection; + #endif + + return specularReflections; } - +/* void DoSpecularReflections( inout vec3 Output, @@ -199,43 +455,70 @@ void DoSpecularReflections( vec3 Background_Reflection = Output; vec3 Lightsource_Reflection = vec3(0.0); vec4 SS_Reflections = vec4(0.0); + float reflectLength = 0.0; Lightmap = clamp((Lightmap-0.8)*7.0, 0.0,1.0); Roughness = 1.0 - Roughness; Roughness *= Roughness; F0 = F0 == 0.0 ? 0.02 : F0; - + + // F0 = 230.0/255.0; + // Roughness = 0.0; + + // F0 = 230.0/255.0; + bool isMetal = F0 > 229.5/255.0; + + // underwater, convert from f0 air, to ior, then back to f0 water + // if(!isMetal){ + // F0 = 2.0 / (1.0 - sqrt(F0)) - 1.0; + // F0 = clamp(pow((1.33 - F0) / (1.33 + F0), 2.0),0.0,1.0); + // } // Roughness = 0.0; - // F0 = 0.9; mat3 Basis = CoordBase(Normal); vec3 ViewDir = -WorldPos*Basis; #ifdef Rough_reflections - vec3 SamplePoints = SampleVNDFGGX(ViewDir, vec2(Roughness), Noise.x); + vec3 SamplePoints = SampleVNDFGGX(ViewDir, Roughness, Noise.xy); + // vec3 SamplePoints = SampleVNDFGGX(ViewDir, vec2(0.1), Noise.x); if(Hand) SamplePoints = vec3(0.0,0.0,1.0); #else vec3 SamplePoints = vec3(0.0,0.0,1.0); #endif + vec3 Ln = reflect(-ViewDir, SamplePoints); vec3 L = Basis * Ln; - float Fresnel = pow(clamp(1.0 + dot(-Ln, SamplePoints),0.0,1.0), 5.0); // Schlick's approximation + float Fresnel = pow(clamp(1.0 + dot(-Ln, SamplePoints),0.0,1.0),5.0); // Schlick's approximation + // F0 < 230 dialectrics + // F0 >= 230 hardcoded metal f0 + // F0 == 255 use albedo for f0 + Albedo = F0 == 1.0 ? sqrt(Albedo) : Albedo; - float RayContribution = lerp(F0, 1.0, Fresnel); // ensure that when the angle is 0 that the correct F0 is used. + vec3 metalAlbedoTint = isMetal ? Albedo : vec3(1.0); + // metalAlbedoTint = vec3(1.0); + // get F0 values for hardcoded metals. + vec3 hardCodedMetalsF0 = F0 == 1.0 ? Albedo : HCM_F0[int(max(F0*255.0 - 229.5,0.0))]; - #ifdef Rough_reflections - if(Hand) RayContribution = RayContribution * pow(1.0-Roughness,F0 > 229.5/255.0 ? 1.0 : 3.0); - #else - RayContribution = RayContribution * pow(1.0-Roughness,3.0); - #endif + vec3 reflectance = isMetal ? hardCodedMetalsF0 : vec3(F0); + + vec3 f0 = (reflectance + (1.0-reflectance) * Fresnel) * metalAlbedoTint; + + // reflectance = mix(vec3(F0), vec3(1.0), Fresnel); + + // vec3 reflectance = mix(R0, vec3(1.0), Fresnel); // ensure that when the angle is 0 that the correct F0 is used. + + // #ifdef Rough_reflections + // if(Hand) Fresnel = Fresnel * pow(1.0-Roughness,F0 > 229.5/255.0 ? 1.0 : 3.0); + // #else + // Fresnel = Fresnel * pow(1.0-Roughness,3.0); + // #endif bool hasReflections = Roughness_Threshold == 1.0 ? true : F0 * (1.0 - Roughness * Roughness_Threshold) > 0.01; // mulitply all reflections by the albedo if it is a metal. - // vec3 Metals = F0 > 229.5/255.0 ? lerp(normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3), vec3(1.0), Fresnel * pow(1.0-Roughness,25.0)) : vec3(1.0); - vec3 Metals = F0 > 229.5/255.0 ? normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3) : vec3(1.0); + // vec3 Metals = F0 > 229.5/255.0 ? normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3) : vec3(1.0); // vec3 Metals = F0 > 229.5/255.0 ? Albedo : vec3(1.0); // --------------- BACKGROUND REFLECTIONS @@ -243,31 +526,33 @@ void DoSpecularReflections( #ifdef Sky_reflection #ifdef OVERWORLD_SHADER - if(hasReflections) Background_Reflection = (skyCloudsFromTex(L, colortex4).rgb / 30.0) * Metals ; + if(hasReflections) Background_Reflection = (skyCloudsFromTex(L, colortex4).rgb / 1200.0) ; #else - if(hasReflections) Background_Reflection = (skyCloudsFromTexLOD2(L, colortex4, sqrt(Roughness) * 6.0).rgb / 30.0) * Metals; + if(hasReflections) Background_Reflection = (volumetricsFromTex(L, colortex4, sqrt(Roughness) * 6.0).rgb / 1200.0) ; #endif // take fresnel and lightmap levels into account and write to the final color - Final_Reflection = lerp(Output, Background_Reflection, Lightmap * RayContribution); + // the minimum color being the output is for when the background reflection color is close to dark, it will fallback to a dimmed diffuse + // Final_Reflection = mix(Output, Background_Reflection, Lightmap * reflectance); + Final_Reflection = mix(Output, mix(isMetal ? vec3(0.0) : Output, Background_Reflection, f0 * Lightmap), Lightmap); + // Final_Reflection = Background_Reflection * reflectance; #endif // --------------- SCREENSPACE REFLECTIONS // apply screenspace reflections to the final color and mask out background reflections. #ifdef Screen_Space_Reflections if(hasReflections){ - #ifdef Dynamic_SSR_quality - float SSR_Quality = lerp(reflection_quality, 6.0, RayContribution); // Scale quality with ray contribution - #else - float SSR_Quality = reflection_quality; - #endif + + float SSR_Quality =reflection_quality;// mix(6.0, reflection_quality, Fresnel); // Scale quality with fresnel - float reflectLength = 0.0; vec3 RaytracePos = rayTraceSpeculars(mat3(gbufferModelView) * L, FragPos, Noise.y, float(SSR_Quality), Hand, reflectLength); float LOD = clamp(pow(reflectLength, pow(1.0-sqrt(Roughness),5.0) * 3.0) * 6.0, 0.0, 6.0); // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. + // float LOD = clamp((1-pow(clamp(1.0-reflectLength,0,1),5.0)) * 6.0, 0.0, 6.0); // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. if(Roughness <= 0.0) LOD = 0.0; + // LOD = 0.0; + if (RaytracePos.z < 1.0){ vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(RaytracePos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; @@ -275,25 +560,26 @@ void DoSpecularReflections( if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { SS_Reflections.a = 1.0; - SS_Reflections.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb * Metals; + SS_Reflections.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb; } } // make sure it takes the fresnel into account for SSR. - SS_Reflections.rgb = lerp(Output, SS_Reflections.rgb, RayContribution); + SS_Reflections.rgb = mix(isMetal ? vec3(0.0) : Output, SS_Reflections.rgb, f0); // occlude the background with the SSR and write to the final color. - Final_Reflection = lerp(Final_Reflection, SS_Reflections.rgb, SS_Reflections.a); + Final_Reflection = mix(Final_Reflection, SS_Reflections.rgb, SS_Reflections.a); } #endif - // Final_Reflection = mix(mix(Output,Background_Reflection,Lightmap), SS_Reflections.rgb, SS_Reflections.a) * RayContribution; - // --------------- LIGHTSOURCE REFLECTIONS // slap the main lightsource reflections to the final color. #ifdef LIGHTSOURCE_REFLECTION - Lightsource_Reflection = Diffuse * GGX(Normal, -WorldPos, LightPos, Roughness, F0) * Metals; - Final_Reflection += Lightsource_Reflection * Sun_specular_Strength ; + Lightsource_Reflection = Diffuse * GGX(Normal, -WorldPos, LightPos, Roughness, reflectance, metalAlbedoTint) * Sun_specular_Strength; + Final_Reflection += Lightsource_Reflection; #endif - + Output = Final_Reflection; -} \ No newline at end of file + + // Output = exp(-100 * (reflectLength*reflectLength*reflectLength)) * vec3(1.0); +} +*/ \ No newline at end of file diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 901aea5..a90c8b9 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -1,56 +1,11 @@ -#ifdef HQ_CLOUDS - int maxIT_clouds = minRayMarchSteps; - int maxIT = maxRayMarchSteps; - - const int cloudLoD = cloud_LevelOfDetail; - const int cloudShadowLoD = cloud_ShadowLevelOfDetail; -#else - int maxIT_clouds = minRayMarchStepsLQ; - int maxIT = maxRayMarchStepsLQ; - - const int cloudLoD = cloud_LevelOfDetailLQ; - const int cloudShadowLoD = cloud_ShadowLevelOfDetailLQ; -#endif - -uniform int worldTime; -#define WEATHERCLOUDS -#include "/lib/climate_settings.glsl" - -#if defined Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; -#else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); -#endif - -float LAYER0_width = 100.0; -float LAYER0_minHEIGHT = CloudLayer0_height; -float LAYER0_maxHEIGHT = LAYER0_width + LAYER0_minHEIGHT; - -float LAYER1_width = 100.0; -float LAYER1_minHEIGHT = max(CloudLayer1_height, LAYER0_maxHEIGHT); -float LAYER1_maxHEIGHT = LAYER1_width + LAYER1_minHEIGHT; - -float LAYER2_HEIGHT = max(CloudLayer2_height, LAYER1_maxHEIGHT); - -// float LAYER0_COVERAGE = mix(pow(dailyWeatherParams0.x*2.0,0.2), 0.9, rainStrength); -// float LAYER1_COVERAGE = mix(pow(dailyWeatherParams0.y*2.0,0.2), 0.8, rainStrength); -// float LAYER2_COVERAGE = mix(pow(dailyWeatherParams0.z*2.0,0.2), 1.3, rainStrength); - -float LAYER0_COVERAGE = mix(dailyWeatherParams0.x, 0.95, rainStrength); -float LAYER1_COVERAGE = mix(dailyWeatherParams0.y, 0.0, rainStrength); -float LAYER2_COVERAGE = mix(dailyWeatherParams0.z, 1.5, rainStrength); - -float LAYER0_DENSITY = mix(dailyWeatherParams1.x,1.0,rainStrength); -float LAYER1_DENSITY = mix(dailyWeatherParams1.y,0.0,rainStrength); -float LAYER2_DENSITY = mix(dailyWeatherParams1.z,0.05,rainStrength); +#define ALTOSTRATUS_LAYER 2 +#define LARGECUMULUS_LAYER 1 +#define SMALLCUMULUS_LAYER 0 uniform int worldDay; - +uniform int worldTime; float cloud_movement = (worldTime + mod(worldDay,100)*24000.0) / 24.0 * Cloud_Speed; -//3D noise from 2d texture float densityAtPos(in vec3 pos){ pos /= 18.; pos.xz *= 0.5; @@ -65,341 +20,331 @@ float densityAtPos(in vec3 pos){ return mix(xy.r,xy.g, f.y); } +float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, float maxHeight){ -float GetAltostratusDensity(vec3 pos){ - - float large = 1.0 - texture2D(noisetex, (pos.xz + cloud_movement)/100000.).b; - large = max(large + LAYER2_COVERAGE - 0.7, 0.0); + vec3 samplePos = position*vec3(1.0, 1.0/48.0, 1.0)/4.0; - float medium = 1.0 - texture2D(noisetex, (pos.xz - cloud_movement)/7500. + vec2(-large,1.0-large)/5.0).b; - - float shape = max(large - medium*0.4 * clamp(1.5-large,0.0,1.0),0.0); - - return shape*shape; -} - -float cloudCov(int layer, in vec3 pos, vec3 samplePos, float minHeight, float maxHeight){ - float FinalCloudCoverage = 0.0; float coverage = 0.0; - float Topshape = 0.0; - float Baseshape = 0.0; + float shape = 0.0; + float largeCloud = 0.0; + float smallCloud = 0.0; - float LAYER0_minHEIGHT_FOG = CloudLayer0_height; - float LAYER0_maxHEIGHT_FOG = 100 + LAYER0_minHEIGHT_FOG; - LAYER0_minHEIGHT_FOG = LAYER0_minHEIGHT; - LAYER0_maxHEIGHT_FOG = LAYER0_maxHEIGHT; + if(LayerIndex == ALTOSTRATUS_LAYER){ + + coverage = dailyWeatherParams0.z; - float LAYER1_minHEIGHT_FOG = max(CloudLayer1_height, LAYER0_maxHEIGHT); - float LAYER1_maxHEIGHT_FOG = 100 + LAYER1_minHEIGHT_FOG; - LAYER1_minHEIGHT_FOG = LAYER1_minHEIGHT; - LAYER1_maxHEIGHT_FOG = LAYER1_maxHEIGHT; + largeCloud = texture2D(noisetex, (position.xz + cloud_movement)/100000.).b; + smallCloud = 1.0 - texture2D(noisetex, (position.xz - cloud_movement)/7500. - vec2(1.0-largeCloud, -largeCloud)/5.0).b; + smallCloud = largeCloud + smallCloud * 0.4 * clamp(1.5-largeCloud,0.0,1.0); + + float val = coverage; + shape = min(max(val - smallCloud,0.0)/sqrt(val),1.0); + shape *= shape; - vec2 SampleCoords0 = vec2(0.0); vec2 SampleCoords1 = vec2(0.0); + return shape; + } + if(LayerIndex == LARGECUMULUS_LAYER){ + coverage = dailyWeatherParams0.y; + + largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0).b; + smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0).b; + + smallCloud = abs(largeCloud* -0.7) + smallCloud; - float CloudSmall = 0.0; - if(layer == 0){ - SampleCoords0 = (samplePos.xz + cloud_movement) / 5000 ; - SampleCoords1 = (samplePos.xz - cloud_movement) / 500 ; - CloudSmall = texture2D(noisetex, SampleCoords1 ).r; + float val = coverage; + shape = min(max(val - smallCloud,0.0)/sqrt(val),1.0) ; + + + } + if(LayerIndex == SMALLCUMULUS_LAYER){ + coverage = dailyWeatherParams0.x; + + largeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0).b; + smallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0).r; + + smallCloud = abs(largeCloud-0.6) + smallCloud*smallCloud; + + float val = coverage; + shape = min(max(val - smallCloud,0.0)/sqrt(val),1.0) ; + + // shape = abs(largeCloud*2.0 - 1.2)*0.5 - (1.0-smallCloud); } - if(layer == 1){ - SampleCoords0 = -( (samplePos.zx + cloud_movement*2) / 10000); - SampleCoords1 = -( (samplePos.zx - cloud_movement*2) / 2500); - CloudSmall = texture2D(noisetex, SampleCoords1 ).b; - } + // clamp density of the cloud within its upper/lower bounds + shape = min(min(shape, clamp(maxHeight - position.y,0,1)), 1.0 - clamp(minHeight - position.y,0,1)); - if(layer == -1){ - float otherlayer = max(pos.y - (LAYER0_minHEIGHT_FOG+99.5), 0.0) > 0 ? 0.0 : 1.0; - if(otherlayer > 0.0){ - SampleCoords0 = (samplePos.xz + cloud_movement) / 5000 ; - SampleCoords1 = (samplePos.xz - cloud_movement) / 500 ; - CloudSmall = texture2D(noisetex, SampleCoords1 ).r; - }else{ - SampleCoords0 = -( (samplePos.zx + cloud_movement*2) / 10000); - SampleCoords1 = -( (samplePos.zx - cloud_movement*2) / 2500); - CloudSmall = texture2D(noisetex, SampleCoords1 ).b; + // carve out the upper part of clouds. make sure it rounds out at its upper bound + float topShape = min(max(maxHeight-position.y,0.0) / max(maxHeight-minHeight,1.0),1.0); + topShape = min(exp(-0.5 * (1.0-topShape)), 1.0-pow(1.0-topShape,5.0)); + + // round out the bottom part slightly + float bottomShape = 1.0-pow(1.0-min(max(position.y-minHeight,0.0) / 25.0, 1.0), 5.0); + shape = max((shape - 1.0) + topShape * bottomShape,0.0); + + /// erosion noise + if(shape > 0.001){ + + float erodeAmount = 0.5; + // shrink the coverage slightly so it is a similar shape to clouds with erosion. this helps cloud lighting and cloud shadows. + if (LOD < 1) return max(shape - 0.27*erodeAmount,0.0); + + samplePos.xz -= cloud_movement/4.0; + + // da wind + // if(LayerIndex == SMALLCUMULUS_LAYER) + samplePos.xz += pow( max(position.y - (minHeight+20.0), 0.0) / (max(maxHeight-minHeight,1.0)*0.20), 1.5); + + float erosion = 0.0; + + if(LayerIndex == SMALLCUMULUS_LAYER){ + erosion += (1.0-densityAtPos(samplePos * 200.0)) * sqrt(1.0-shape); + + float falloff = 1.0 - clamp((maxHeight - position.y)/100.0,0.0,1.0); + erosion += abs(densityAtPos(samplePos * 600.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25); + + erosion = erosion*erosion*erosion*erosion; } - } + if(LayerIndex == LARGECUMULUS_LAYER){ + erosion += (1.0 - densityAtPos(samplePos * 100.0)) * sqrt(1.0-shape); - float CloudLarge = texture2D(noisetex, SampleCoords0).b; + float falloff = 1.0 - clamp((maxHeight - position.y)/200.0,0.0,1.0); + erosion += abs(densityAtPos(samplePos * 450.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); - if(layer == 0){ - coverage = abs(CloudLarge*2.0 - 1.2)*0.5 - (1.0-CloudSmall); + erosion = erosion*erosion*erosion*erosion; + } - float layer0 = min(min(coverage + LAYER0_COVERAGE, clamp(LAYER0_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER0_minHEIGHT_FOG - pos.y,0,1)); + return max(shape - erosion*erodeAmount,0.0); - Topshape = max(pos.y - (LAYER0_maxHEIGHT_FOG - 75),0.0) / 200.0; - Topshape += max(pos.y - (LAYER0_maxHEIGHT_FOG - 10),0.0) / 15.0; - Baseshape = max(LAYER0_minHEIGHT_FOG + 12.5 - pos.y, 0.0) / 50.0; - - FinalCloudCoverage = max(layer0 - Topshape - Baseshape * (1.0-rainStrength),0.0); - } - - if(layer == 1){ - - coverage = abs(CloudLarge-0.8) - CloudSmall; - - float layer1 = min(min(coverage + LAYER1_COVERAGE - 0.5,clamp(LAYER1_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER1_minHEIGHT_FOG - pos.y,0,1)); - - Topshape = max(pos.y - (LAYER1_maxHEIGHT_FOG - 75),0.0) / 200.0; - Topshape += max(pos.y - (LAYER1_maxHEIGHT_FOG - 10), 0.0) / 15.0; - Baseshape = max(LAYER1_minHEIGHT_FOG + 15.5 - pos.y, 0.0) / 50.0; - - FinalCloudCoverage = max(layer1 - Topshape*Topshape - Baseshape * (1.0-rainStrength), 0.0); - } - - - if(layer == -1){ - - #ifdef CloudLayer0 - float layer0_coverage = abs(CloudLarge*2.0 - 1.2)*0.5 - (1.0-CloudSmall); - float layer0 = min(min(layer0_coverage + LAYER0_COVERAGE, clamp(LAYER0_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER0_minHEIGHT_FOG - pos.y,0,1)); - - Topshape = max(pos.y - (LAYER0_maxHEIGHT_FOG - 75),0.0) / 200.0; - Topshape += max(pos.y - (LAYER0_maxHEIGHT_FOG - 10),0.0) / 15.0; - Baseshape = max(LAYER0_minHEIGHT_FOG + 12.5 - pos.y, 0.0) / 50.0; - - FinalCloudCoverage = max(layer0 - Topshape - Baseshape * (1.0-rainStrength),0.0); - #endif - - #ifdef CloudLayer1 - float layer1_coverage = abs(CloudLarge-0.8) - CloudSmall; - float layer1 = min(min(layer1_coverage + LAYER1_COVERAGE - 0.5,clamp(LAYER1_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER1_minHEIGHT_FOG - pos.y,0,1)); - - Topshape = max(pos.y - (LAYER1_maxHEIGHT_FOG - 75), 0.0) / 200; - Topshape += max(pos.y - (LAYER1_maxHEIGHT_FOG - 10 ), 0.0) / 50; - Baseshape = max(LAYER1_minHEIGHT_FOG + 12.5 - pos.y, 0.0) / 50.0; - - FinalCloudCoverage += max(layer1 - Topshape*Topshape - Baseshape * (1.0-rainStrength), 0.0); - #endif - } - - return FinalCloudCoverage; -} - -//Erode cloud with 3d Perlin-worley noise, actual cloud value -float cloudVol(int layer, in vec3 pos, in vec3 samplePos, in float cov, in int LoD, float minHeight, float maxHeight){ - - // float curvature = 1-exp(-25*pow(clamp(1.0 - length(pos - cameraPosition)/(32*80),0.0,1.0),2)); - // curvature = clamp(1.0 - length(pos - cameraPosition)/(32*128),0.0,1.0); - - float otherlayer = max(pos.y - (CloudLayer0_height+99.5), 0.0) > 0 ? 0.0 : 1.0; - float upperPlane = otherlayer; - - float noise = 0.0 ; - float totalWeights = 0.0; - float pw = log(fbmPower1); - float pw2 = log(fbmPower2); - - samplePos.xz -= cloud_movement/4; - - samplePos.xz += pow( max(pos.y - (minHeight+20), 0.0) / 20.0,1.50) ; - - noise += (1.0-densityAtPos(samplePos * mix(100.0,200.0,upperPlane)) ) * sqrt(1.0-cov); - - if (LoD > 0){ - noise += abs( densityAtPos(samplePos * mix(450.0,600.0,upperPlane) ) - (1.0-clamp(((maxHeight - pos.y) / 100.0),0.0,1.0))) * 0.75 * (1.0-cov); - } - - noise = noise*noise; - float cloud = max(cov - noise*noise*fbmAmount,0.0); - - return cloud; -} - -float GetCumulusDensity(int layer, in vec3 pos, in int LoD, float minHeight, float maxHeight){ - - vec3 samplePos = pos*vec3(1.0,1./48.,1.0)/4; - - float coverageSP = cloudCov(layer, pos,samplePos, minHeight, maxHeight); - - // return coverageSP; - if (coverageSP > 0.001) { - if (LoD < 0) return max(coverageSP - 0.27*fbmAmount,0.0); - return cloudVol(layer, pos,samplePos,coverageSP,LoD ,minHeight, maxHeight) ; } else return 0.0; + } +float getPlanetShadow(vec3 playerPos, vec3 WsunVec){ + float planetShadow = min(max(playerPos.y - (-100.0 + 1.0 / abs(WsunVec.y*0.1)),0.0) / 100.0, 1.0); + + planetShadow = mix(pow(1.0-pow(1.0-planetShadow,2.0),2.0), 1.0, pow(abs(WsunVec.y),2.0)); + + return planetShadow; +} + +float GetCloudShadow(vec3 playerPos, vec3 sunVector){ + + float totalShadow = getPlanetShadow(playerPos, sunVector); + + vec3 startPosition = playerPos; + + float cloudShadows = 0.0; + + #ifdef CloudLayer0 + startPosition = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer0_height + 20.0) - playerPos.y, 0.0); + cloudShadows = getCloudShape(SMALLCUMULUS_LAYER, 0, startPosition, CloudLayer0_height, CloudLayer0_height+100.0)*dailyWeatherParams1.x; + #endif + #ifdef CloudLayer1 + startPosition = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 20.0) - playerPos.y, 0.0); + cloudShadows += getCloudShape(LARGECUMULUS_LAYER, 0, startPosition, CloudLayer1_height, CloudLayer1_height+100.0)*dailyWeatherParams1.y; + #endif + #ifdef CloudLayer2 + startPosition = playerPos + sunVector / abs(sunVector.y) * max(CloudLayer2_height - playerPos.y, 0.0); + cloudShadows += getCloudShape(ALTOSTRATUS_LAYER, 0, startPosition, CloudLayer2_height, CloudLayer2_height)*dailyWeatherParams1.z * (1.0-abs(WsunVec.y)); + #endif + #if defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2 + totalShadow *= exp((cloudShadows*cloudShadows) * -200.0); + #endif + + return totalShadow; +} #ifndef CLOUDSHADOWSONLY -uniform sampler2D colortex4; //Skybox -//Mie phase function -float phaseg(float x, float g){ +float phaseCloud(float x, float g){ float gg = g * g; return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14; } -vec3 DoCloudLighting( - float density, - - vec3 skyLightCol, - float skyScatter, - - float sunShadows, - vec3 sunScatter, - vec3 sunMultiScatter, - float distantfog +float getCloudScattering( + int LayerIndex, + vec3 rayPosition, + vec3 sunVector, + float dither, + float minHeight, + float maxHeight, + float density ){ - float powder = 1.0 - exp(-10.0 * density); - vec3 directLight = sunScatter * exp(-10.0 * sunShadows) + sunMultiScatter * exp(-3.0 * sunShadows) * powder; + int samples = 3; + int LOD = 0; - vec3 indirectLight = skyLightCol * mix(1.0, 2.0 * (1.0 - sqrt((skyScatter*skyScatter*skyScatter)*density)) , pow(distantfog,1.0 - rainStrength*0.5)); - - // return directLight; - // #ifndef TEST - // return indirectLight; - // #endif - return directLight + indirectLight; + if(LayerIndex == ALTOSTRATUS_LAYER) samples = 2; + + float shadow = 0.0; + vec3 shadowRayPosition = vec3(0.0); + + for (int i = 0; i < samples; i++){ + + if(LayerIndex == ALTOSTRATUS_LAYER){ + shadowRayPosition = rayPosition + sunVector * (1.0 + i * dither) / (pow(abs(sunVector.y*0.5),3.0) * 0.995 + 0.005); + }else{ + shadowRayPosition = rayPosition + sunVector * (1.0 + i + dither)*20.0; + } + // float fadeddensity = density * pow(clamp((shadowRayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0); + + shadow += getCloudShape(LayerIndex, LOD, shadowRayPosition, minHeight, maxHeight) * density; + } + + return shadow; } -vec4 renderLayer( - int layer, - in vec3 POSITION, - in vec3 rayProgress, - in vec3 dV_view, - in float mult, - in float dither, +vec3 getCloudLighting( + float shape, + float shapeFaded, + + float sunShadowMask, + vec3 directLightCol, + vec3 directLightCol_multi, + + float indirectShadowMask, + vec3 indirectLightCol, + + float distanceFade +){ + float powderEffect = 1.0 - exp(-3.0*shapeFaded); + + vec3 directScattering = directLightCol * exp(-10.0*sunShadowMask) + directLightCol_multi * exp(-3.0*(sunShadowMask - (1.0-indirectShadowMask*indirectShadowMask)*0.5)) * powderEffect; + vec3 indirectScattering = indirectLightCol * mix(1.0, exp2(-5.0*shape), (indirectShadowMask*indirectShadowMask) * distanceFade); + + // return indirectScattering; + // return directScattering; + return indirectScattering + directScattering; +} + +vec4 raymarchCloud( + int LayerIndex, + float samples, + vec3 rayPosition, + vec3 rayDirection, + float dither, - int QUALITY, - float minHeight, float maxHeight, - in vec3 dV_Sun, + vec3 sunVector, + vec3 sunScattering, + vec3 sunMultiScattering, + vec3 skyScattering, + float distanceFade, - float cloudDensity, - in vec3 skyLightCol, - in vec3 sunScatter, - in vec3 sunMultiScatter, - in vec3 indirectScatter, - in float distantfog, - bool notVisible, - vec3 FragPosition, - inout vec3 cloudDepth + float referenceDistance ){ - vec3 COLOR = vec3(0.0); - float TOTAL_EXTINCTION = 1.0; - bool IntersecTerrain = false; + vec3 color = vec3(0.0); + float totalAbsorbance = 1.0; + + float planetShadow = getPlanetShadow(rayPosition, sunVector); + sunScattering *= planetShadow; + sunMultiScattering *= planetShadow; - #ifdef CLOUDS_INTERSECT_TERRAIN - // thank you emin for this world intersection thing - #if defined DISTANT_HORIZONS - float maxdist = dhRenderDistance + 16 * 32; + float distanceFactor = length(rayDirection); + + if(LayerIndex == ALTOSTRATUS_LAYER){ + float density = dailyWeatherParams1.z; + + bool ifAboveOrBelowPlane = max(mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight,0.0,1.0)) * normalize(rayDirection).y,0.0) > 0.0; + + // check if the ray staring position is going farther than the reference distance, if yes, dont begin marching. this is to check for intersections with the world. + // check if the camera is above or below the cloud plane, so it doesnt waste work on the opposite hemisphere + #ifndef VL_CLOUDS_DEFERRED + if(length(rayPosition - cameraPosition) > referenceDistance || ifAboveOrBelowPlane) return vec4(color, totalAbsorbance); #else - float maxdist = far + 16*5; + if(ifAboveOrBelowPlane) return vec4(color, totalAbsorbance); #endif - float lViewPosM = length(FragPosition) < maxdist ? length(FragPosition) - 1.0 : 100000000.0; - #endif + float shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight); + float shapeWithDensity = shape*density; -if(layer == 2){ - - #ifdef CLOUDS_INTERSECT_TERRAIN - IntersecTerrain = length(rayProgress - cameraPosition) > lViewPosM; - #endif + // check if the pixel has visible clouds before doing work. + if(shapeWithDensity > 1e-5){ + // can add the initial cloud shape sample for a free shadow starting step :D + float sunShadowMask = (shapeWithDensity + getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density)) * (1.0-abs(WsunVec.y)); + float indirectShadowMask = 0.5; - if(notVisible || IntersecTerrain) return vec4(COLOR, TOTAL_EXTINCTION); - - float signFlip = mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight,0.0,1.0)); - - if(max(signFlip * normalize(dV_view).y,0.0) <= 0.0){ - float altostratus = GetAltostratusDensity(rayProgress); + vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensity, sunShadowMask, sunScattering, sunMultiScattering, indirectShadowMask, skyScattering, distanceFade); - float AltoWithDensity = altostratus * cloudDensity; - - if(altostratus > 1e-5){ - float muE = altostratus * cloudDensity; - - float directLight = 0.0; - for (int j = 0; j < 2; j++){ - - // lower the step size as the sun gets higher in the sky - vec3 shadowSamplePos_high = rayProgress + dV_Sun * (1.0 + j * dither) / (pow(abs(dV_Sun.y*0.5),3.0) * 0.995 + 0.005); - - // lower density as the sun gets higher in the sky to simulate.... multiscattering or something idk it looks better this way - directLight += GetAltostratusDensity(shadowSamplePos_high) * cloudDensity * (1.0-abs(dV_Sun.y)); - } - - vec3 lighting = DoCloudLighting(AltoWithDensity, skyLightCol, 0.5, directLight, sunScatter, sunMultiScatter, distantfog); - - COLOR += max(lighting - lighting*exp(-mult*muE),0.0) * TOTAL_EXTINCTION; - TOTAL_EXTINCTION *= max(exp(-mult*muE),0.0); + float densityCoeff = exp(-distanceFactor*shapeWithDensity); + color += (lighting - lighting * densityCoeff) * totalAbsorbance; + totalAbsorbance *= densityCoeff; } - } - - return vec4(COLOR, TOTAL_EXTINCTION); -}else{ - #if defined CloudLayer1 && defined CloudLayer0 - float upperLayerOcclusion = layer == 0 ? GetCumulusDensity(1, rayProgress + vec3(0.0,1.0,0.0) * max((LAYER1_minHEIGHT+70*dither) - rayProgress.y,0.0), 0, LAYER1_minHEIGHT, LAYER1_maxHEIGHT) : 0.0; - float skylightOcclusion = mix(1.0, (1.0 - LAYER1_DENSITY)*0.8 + 0.2, (1.0 - exp2(-5.0 * (upperLayerOcclusion*upperLayerOcclusion))) * distantfog); - #else + return vec4(color, totalAbsorbance); + } + + if(LayerIndex < ALTOSTRATUS_LAYER){ + float density = dailyWeatherParams1.x; + + if(LayerIndex == LARGECUMULUS_LAYER) density = dailyWeatherParams1.y; + float skylightOcclusion = 1.0; - #endif - - float expFactor = 11.0; - for(int i = 0; i < QUALITY; i++) { - - #ifdef CLOUDS_INTERSECT_TERRAIN - IntersecTerrain = length(rayProgress - cameraPosition) > lViewPosM; - #endif - - /// avoid overdraw - if(notVisible || IntersecTerrain) break; - - // do not sample anything unless within a clouds bounding box - if(clamp(rayProgress.y - maxHeight,0.0,1.0) < 1.0 && clamp(rayProgress.y - minHeight,0.0,1.0) > 0.0){ - - float cumulus = GetCumulusDensity(layer, rayProgress, 1, minHeight, maxHeight); - float fadedDensity = cloudDensity * pow(clamp((rayProgress.y - minHeight)/25,0.0,1.0),2.0); - float CumulusWithDensity = cloudDensity * cumulus; - - - if(CumulusWithDensity > 1e-5 ){ // make sure no work is done on pixels with no densities - float muE = cumulus * fadedDensity; - - float directLight = 0.0; - for (int j=0; j < 3; j++){ - vec3 shadowSamplePos = rayProgress + dV_Sun * (20.0 + j * (20.0 + dither*20.0)); - directLight += GetCumulusDensity(layer, shadowSamplePos, 0, minHeight, maxHeight) * cloudDensity; - } - - /// shadows cast from one layer to another - /// large cumulus -> small cumulus - #if defined CloudLayer1 && defined CloudLayer0 - if(layer == 0) directLight += LAYER1_DENSITY * 2.0 * GetCumulusDensity(1, rayProgress + dV_Sun/abs(dV_Sun.y) * max((LAYER1_minHEIGHT+70*dither) - rayProgress.y,0.0), 0, LAYER1_minHEIGHT, LAYER1_maxHEIGHT); - #endif - // altostratus -> cumulus - #ifdef CloudLayer2 - vec3 HighAlt_shadowPos = rayProgress + dV_Sun/abs(dV_Sun.y) * max(LAYER2_HEIGHT - rayProgress.y,0.0); - float HighAlt_shadow = GetAltostratusDensity(HighAlt_shadowPos) * CloudLayer2_density * (1.0-abs(WsunVec.y)); - directLight += HighAlt_shadow; - #endif - - float skyScatter = clamp(((maxHeight - rayProgress.y) / 100.0),0.0,1.0); // linear gradient from bottom to top of cloud layer - vec3 lighting = DoCloudLighting(CumulusWithDensity, skyLightCol * skylightOcclusion, skyScatter, directLight, sunScatter, sunMultiScatter, distantfog); - - COLOR += max(lighting - lighting*exp(-mult*muE),0.0) * TOTAL_EXTINCTION; - TOTAL_EXTINCTION *= max(exp(-mult*muE),0.0); - - if (TOTAL_EXTINCTION < 1e-5) break; - + #if defined CloudLayer1 && defined CloudLayer0 + if(LayerIndex == SMALLCUMULUS_LAYER) { + float upperLayerOcclusion = getCloudShape(LARGECUMULUS_LAYER, 0, rayPosition + vec3(0.0,1.0,0.0) * max((CloudLayer1_height+20) - rayPosition.y,0.0), CloudLayer1_height, CloudLayer1_height+100.0); + skylightOcclusion = mix(mix(0.0,0.2,dailyWeatherParams1.y), 1.0, pow(1.0 - upperLayerOcclusion*dailyWeatherParams1.y,2)); } + skylightOcclusion = mix(1.0, skylightOcclusion, distanceFade); + #endif + + for(int i = 0; i < int(samples); i++) { + + // check if the ray staring position is going farther than the reference distance, if yes, dont begin marching. this is to check for intersections with the world. + #ifndef VL_CLOUDS_DEFERRED + if(length(rayPosition - cameraPosition) > referenceDistance) break; + #endif + + // check if the pixel is in the bounding box before doing work. + if(clamp(rayPosition.y - maxHeight,0.0,1.0) < 1.0 && clamp(rayPosition.y - minHeight,0.0,1.0) > 0.0){ + + float shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight); + float shapeWithDensity = shape*density; + float shapeWithDensityFaded = shape*density * pow(clamp((rayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0); + + // check if the pixel has visible clouds before doing work. + if(shapeWithDensityFaded > 1e-5){ + // can add the initial cloud shape sample for a free shadow starting step :D + float indirectShadowMask = 1.0 - min(max(rayPosition.y - minHeight,0.0) / max(maxHeight-minHeight,1.0), 1.0); + float sunShadowMask = shapeWithDensity + getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density); + + // do cloud shadows from one layer to another + // large cumulus layer -> small cumulus layer + #if defined CloudLayer0 && defined CloudLayer1 + if(LayerIndex == SMALLCUMULUS_LAYER){ + vec3 shadowStartPos = rayPosition + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 20.0) - rayPosition.y, 0.0); + sunShadowMask += 3.0 * getCloudShape(LARGECUMULUS_LAYER, 0, shadowStartPos, CloudLayer1_height, CloudLayer1_height+100.0)*dailyWeatherParams1.y; + } + #endif + // altostratus layer -> all cumulus layers + #if defined CloudLayer2 + vec3 shadowStartPos = rayPosition + sunVector / abs(sunVector.y) * max(CloudLayer2_height - rayPosition.y, 0.0); + sunShadowMask += getCloudShape(ALTOSTRATUS_LAYER, 0, shadowStartPos, CloudLayer2_height, CloudLayer2_height) * dailyWeatherParams1.z * (1.0-abs(sunVector.y)); + #endif + + vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering, sunMultiScattering, indirectShadowMask, skyScattering * skylightOcclusion, distanceFade); + + float densityCoeff = exp(-distanceFactor*shapeWithDensityFaded); + color += (lighting - lighting * densityCoeff) * totalAbsorbance; + totalAbsorbance *= densityCoeff; + + // check if you can see through the cloud on the pixel before doing the next iteration + if (totalAbsorbance < 1e-5) break; + } + } + rayPosition += rayDirection; } - - rayProgress += dV_view; + + return vec4(color, totalAbsorbance); } - - return vec4(COLOR, TOTAL_EXTINCTION); -} + } -vec3 layerStartingPosition( - vec3 dV_view, +vec3 getRayOrigin( + vec3 rayStartPos, vec3 cameraPos, float dither, @@ -407,263 +352,132 @@ vec3 layerStartingPosition( float maxHeight ){ // allow passing through/above/below the plane without limits - float flip = mix(max(cameraPos.y - maxHeight,0.0), max(minHeight - cameraPos.y,0.0), clamp(dV_view.y,0.0,1.0)); + float flip = mix(max(cameraPos.y - maxHeight,0.0), max(minHeight - cameraPos.y,0.0), clamp(rayStartPos.y,0.0,1.0)); // orient the ray to be a flat plane facing up/down - vec3 position = dV_view*dither + cameraPos + (dV_view/abs(dV_view.y)) * flip; + vec3 position = rayStartPos*dither + cameraPos + (rayStartPos/abs(rayStartPos.y)) * flip; return position; } -float invLinZ_cloud (float lindepth){ - return -((2.0*near/lindepth)-far-near)/(far-near); -} -vec4 renderClouds( - vec3 FragPosition, - vec2 Dither, - vec3 LightColor, - vec3 SkyColor, - inout vec3 cloudDepth -){ - vec3 SignedWsunvec = WsunVec; - vec3 WsunVec = WsunVec * (float(sunElevation > 1e-5)*2.0-1.0); +vec4 GetVolumetricClouds( + vec3 viewPos, + vec2 dither, + vec3 sunVector, + vec3 directLightCol, + vec3 indirectLightCol +){ #ifndef VOLUMETRIC_CLOUDS return vec4(0.0,0.0,0.0,1.0); #endif - float total_extinction = 1.0; vec3 color = vec3(0.0); + float totalAbsorbance = 1.0; + vec4 cloudColor = vec4(color, totalAbsorbance); - float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - LAYER0_minHEIGHT,0.0) / 100.0 ,0.0,1.0); + float cloudheight = 100.0; + float minHeight = CloudLayer0_height; + float maxHeight = cloudheight + minHeight; -////////////////////////////////////////// -////// Raymarching stuff -////////////////////////////////////////// - //project pixel position into projected shadowmap space - vec4 viewPos = normalize(gbufferModelViewInverse * vec4(FragPosition,1.0) ); - maxIT_clouds = int(clamp(maxIT_clouds / sqrt(exp2(viewPos.y)),0.0, maxIT)); - // maxIT_clouds = 30; + float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - minHeight,0.0) / 100.0 ,0.0,1.0); - vec3 dV_view = normalize(viewPos.xyz); - - // this is the cloud curvature. - dV_view.y += 0.025 * heightRelativeToClouds; - - vec3 dV_view_Alto = dV_view; - - dV_view_Alto *= 5.0/abs(dV_view_Alto.y); - float mult_alto = length(dV_view_Alto); - - // dV_view *= (LAYER0_maxHEIGHT - LAYER0_minHEIGHT)/abs(dV_view.y)/maxIT_clouds; - - vec3 dV_viewTEST = dV_view * (90.0/abs(dV_view.y)/maxIT_clouds); - float mult = length(dV_viewTEST); - - - -////////////////////////////////////////// -////// lighting stuff -////////////////////////////////////////// - - vec3 dV_Sun = WsunVec; - #ifdef EXCLUDE_WRITE_TO_LUT - dV_Sun *= lightCol.a; - #endif - - float SdotV = dot(WsunVec, normalize(mat3(gbufferModelViewInverse)*FragPosition + gbufferModelViewInverse[3].xyz)); - - float mieDay = phaseg(SdotV, 0.85) + phaseg(SdotV, 0.75); - float mieDayMulti = (phaseg(SdotV, 0.35) + phaseg(-SdotV, 0.35) * 0.5) ; - - vec3 directScattering = LightColor * mieDay * 3.14 ; - vec3 directMultiScattering = LightColor * mieDayMulti * 3.14 * 2.0; - vec3 sunIndirectScattering = LightColor;// * phaseg(dot(mat3(gbufferModelView)*vec3(0,1,0),normalize(FragPosition)), 0.5) * 3.14; - - // use this to blend into the atmosphere's ground. - vec3 approxdistance = normalize(dV_viewTEST); - #ifdef SKY_GROUND - float distantfog = mix(1.0, max(1.0 - clamp(exp2(pow(abs(approxdistance.y),mix(1.5, 4.0, rainStrength)) * -mix(100.0, 35.0, rainStrength)),0.0,1.0),0.0), heightRelativeToClouds); + #if defined DISTANT_HORIZONS + float maxdist = dhRenderDistance + 16 * 32; #else - float distantfog = 1.0; - float distantfog2 = mix(1.0, max(1.0 - clamp(exp(pow(abs(approxdistance.y),1.5) * -35.0),0.0,1.0),0.0), heightRelativeToClouds); + float maxdist = far + 16*5.0; #endif + + float lViewPosM = length(viewPos) < maxdist ? length(viewPos) - 1.0 : 100000000.0; + vec4 NormPlayerPos = normalize(gbufferModelViewInverse * vec4(viewPos, 1.0) + vec4(gbufferModelViewInverse[3].xyz,0.0)); + + vec3 signedSunVec = sunVector; + vec3 unignedSunVec = sunVector * (float(sunElevation > 1e-5)*2.0-1.0); + float SdotV = dot(unignedSunVec, NormPlayerPos.xyz); + + NormPlayerPos.y += 0.025*heightRelativeToClouds; + + int maxSamples = 15; + int minSamples = 10; + int samples = int(clamp(maxSamples / sqrt(exp2(NormPlayerPos.y)),0.0, minSamples)); + // int samples = 30; + + ///------- setup the ray + vec3 rayDirection = NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)/samples); + vec3 rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); + ///------- do color stuff outside of the raymarcher loop + vec3 sunScattering = directLightCol * (phaseCloud(SdotV, 0.85) + phaseCloud(SdotV, 0.75)) * 3.14; + vec3 sunMultiScattering = directLightCol * 0.8;// * (phaseCloud(SdotV, 0.35) + phaseCloud(-SdotV, 0.35) * 0.5) * 6.28; + vec3 skyScattering = indirectLightCol; + + vec3 distanceEstimation = normalize(NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)/samples)); + // terrible fake rayleigh scattering - vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5)*3.0; - float atmosphere = exp(abs(approxdistance.y) * -5.0); - vec3 scatter = distantfog * exp(-10000.0 * rC * atmosphere); + // vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5)*3.0; + // vec3 rayleighScatter = exp(-10000.0 * rC * exp(abs(distanceEstimation.y) * -5.0)); + // sunMultiScattering *= rayleighScatter; + // sunScattering *= rayleighScatter; - directScattering *= scatter; - directMultiScattering *= scatter; + float distanceFade = 1.0 - clamp(exp2(pow(abs(distanceEstimation.y),1.5) * -100.0),0.0,1.0)*heightRelativeToClouds; +// - pow(1.0-clamp(signedSunVec.y,0.0,1.0),5.0) + skyScattering *= mix(1.0, 2.0, distanceFade); + sunScattering *= distanceFade; + sunMultiScattering *= distanceFade; - SkyColor *= mix(1.0* Sky_Brightness, 1.0-pow(1.0-clamp(SignedWsunvec.y,0.0,1.0),5.0) * 0.75 + 0.25, distantfog); + ////------- RENDER SMALL CUMULUS CLOUDS + vec4 smallCumulusClouds = cloudColor; -////////////////////////////////////////// -////// render Cloud layers and do blending orders -////////////////////////////////////////// + #ifdef CloudLayer0 + smallCumulusClouds = raymarchCloud(SMALLCUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unignedSunVec, sunScattering, sunMultiScattering, skyScattering, distanceFade, lViewPosM); + #endif - // first cloud layer - float MinHeight = LAYER0_minHEIGHT; - float MaxHeight = LAYER0_maxHEIGHT; + ////------- RENDER LARGE CUMULUS CLOUDS + vec4 largeCumulusClouds = cloudColor; - float MinHeight1 = LAYER1_minHEIGHT; - float MaxHeight1 = LAYER1_maxHEIGHT; + #ifdef CloudLayer1 + cloudheight = 200.0; + minHeight = CloudLayer1_height; + maxHeight = cloudheight + minHeight; - float Height2 = LAYER2_HEIGHT; + rayDirection = NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)/samples); + rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); - // int above_Layer0 = int(clamp(cameraPosition.y - MaxHeight,0.0,1.0)); - int below_Layer0 = int(clamp(MaxHeight - cameraPosition.y,0.0,1.0)); - int above_Layer1 = int(clamp(MaxHeight1 - cameraPosition.y,0.0,1.0)); - bool below_Layer1 = clamp(cameraPosition.y - MinHeight1,0.0,1.0) < 1.0; - bool below_Layer2 = clamp(cameraPosition.y - Height2,0.0,1.0) < 1.0; - // bool layer1_below_layer0 = MinHeight1 < MinHeight; - - bool altoNotVisible = false; - + if(smallCumulusClouds.a > 1e-5) largeCumulusClouds = raymarchCloud(LARGECUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unignedSunVec, sunScattering, sunMultiScattering, skyScattering, distanceFade, lViewPosM); + #endif - #ifdef CloudLayer0 - vec3 layer0_dV_view = dV_view * (LAYER0_width/abs(dV_view.y)/maxIT_clouds); - vec3 layer0_start = layerStartingPosition(layer0_dV_view, cameraPosition, Dither.y, MinHeight, MaxHeight); - - #endif - - #ifdef CloudLayer1 - vec3 layer1_dV_view = dV_view * (LAYER1_width/abs(dV_view.y)/maxIT_clouds); - vec3 layer1_start = layerStartingPosition(layer1_dV_view, cameraPosition, Dither.y, MinHeight1, MaxHeight1); - #endif - #ifdef CloudLayer2 - vec3 layer2_start = layerStartingPosition(dV_view_Alto, cameraPosition, Dither.y, Height2, Height2); - #endif - - #ifdef CloudLayer0 - vec4 layer0 = renderLayer(0,dV_view, layer0_start, layer0_dV_view, mult, Dither.x, maxIT_clouds, MinHeight, MaxHeight, dV_Sun, LAYER0_DENSITY, SkyColor, directScattering, directMultiScattering, sunIndirectScattering, distantfog, false, FragPosition, cloudDepth); - total_extinction *= layer0.a; - - // stop overdraw. - bool notVisible = layer0.a < 1e-5 && below_Layer1; - altoNotVisible = notVisible; - #else - // stop overdraw. - bool notVisible = false; - #endif - - #ifdef CloudLayer1 - vec4 layer1 = renderLayer(1,dV_view, layer1_start, layer1_dV_view, mult, Dither.x, maxIT_clouds, MinHeight1, MaxHeight1, dV_Sun, LAYER1_DENSITY, SkyColor, directScattering, directMultiScattering, sunIndirectScattering, distantfog, notVisible, FragPosition, cloudDepth); - total_extinction *= layer1.a; - - // stop overdraw. - altoNotVisible = (layer1.a < 1e-5 || notVisible) && below_Layer1; - #endif - - #ifdef CloudLayer2 - vec4 layer2 = renderLayer(2,dV_view,layer2_start, dV_view_Alto, mult_alto, Dither.x, maxIT_clouds, Height2, Height2, dV_Sun, LAYER2_DENSITY, SkyColor, directScattering * (1.0 + rainStrength*3), directMultiScattering* (1.0 + rainStrength*3), sunIndirectScattering, distantfog, altoNotVisible, FragPosition, cloudDepth); - total_extinction *= layer2.a; - #endif - - /// i know this looks confusing - /// it is changing blending order based on the players position relative to the clouds. - /// to keep it simple for myself, it all revolves around layer0, the lowest cloud layer. - /// for layer1, swap between back to front and front to back blending if you are above or below layer0 - /// for layer2, swap between back to front and front to back blending if you are above or below layer1 - - - /// blend the altostratus clouds first, so it is BEHIND all the cumulus clouds, if the player postion is below the cumulus clouds. - /// handle the case if one of the cloud layers is disabled. - #if !defined CloudLayer1 && defined CloudLayer2 - if(below_Layer2) color = color * layer2.a + layer2.rgb; - #endif - #if defined CloudLayer1 && defined CloudLayer2 - if(below_Layer2) layer1.rgb = layer2.rgb * layer1.a + layer1.rgb; - #endif - - /// blend the cumulus clouds together. swap the blending order from (BACK TO FRONT -> FRONT TO BACK) depending on the player position relative to the lowest cloud layer. - #if defined CloudLayer0 && defined CloudLayer1 - color = mix(layer0.rgb, layer1.rgb, float(below_Layer0)); - color = mix(color * layer1.a + layer1.rgb, color * layer0.a + layer0.rgb, float(below_Layer0)); - #endif - - /// handle the case of one of the cloud layers being disabled. - #if defined CloudLayer0 && !defined CloudLayer1 - color = color * layer0.a + layer0.rgb; - #endif - #if !defined CloudLayer0 && defined CloudLayer1 - color = color * layer1.a + layer1.rgb; - #endif - - /// blend the altostratus clouds last, so it is IN FRONT of all the cumulus clouds when the player position is above them. - #ifdef CloudLayer2 - if(!below_Layer2) color = color * layer2.a + layer2.rgb; - #endif - - #ifndef SKY_GROUND + ////------- RENDER ALTOSTRATUS CLOUDS + vec4 altoStratusClouds = cloudColor; - // return mix(fogcolor, vec4(color, total_extinction), clamp(distantfog2,0.0,1.0)); - return mix(vec4(vec3(0.0),1.0), vec4(color, total_extinction), clamp(distantfog2,0.0,1.0)); - #else - return vec4(color, total_extinction); - #endif - -} + #ifdef CloudLayer2 + cloudheight = 5.0; + minHeight = CloudLayer2_height; + maxHeight = cloudheight + minHeight; -#endif + rayDirection = NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)); + rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); -float GetCloudShadow(vec3 feetPlayerPos){ -#ifdef CLOUDS_SHADOWS - vec3 playerPos = feetPlayerPos + cameraPosition; + if(smallCumulusClouds.a > 1e-5 || largeCumulusClouds.a > 1e-5) altoStratusClouds = raymarchCloud(ALTOSTRATUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unignedSunVec, sunScattering, sunMultiScattering, skyScattering, distanceFade, lViewPosM); + #endif - float shadow = 0.0; + ////------- BLEND LAYERS - // assume a flat layer of cloud, and stretch the sampled density along the sunvector, starting from some vertical layer in the cloud. - #ifdef CloudLayer0 - vec3 lowShadowStart = playerPos + (WsunVec / max(abs(WsunVec.y),0.0)) * max((CloudLayer0_height + 30) - playerPos.y,0.0) ; - shadow += GetCumulusDensity(0, lowShadowStart, 0, CloudLayer0_height, CloudLayer0_height+100)*LAYER0_DENSITY; + #ifdef CloudLayer2 + cloudColor = altoStratusClouds; #endif #ifdef CloudLayer1 - vec3 higherShadowStart = playerPos + (WsunVec / max(abs(WsunVec.y),0.0)) * max((CloudLayer1_height + 50) - playerPos.y,0.0) ; - shadow += GetCumulusDensity(1, higherShadowStart, 0, CloudLayer1_height, CloudLayer1_height+100)*LAYER1_DENSITY; + cloudColor.rgb *= largeCumulusClouds.a; + cloudColor.rgb += largeCumulusClouds.rgb; + cloudColor.a *= largeCumulusClouds.a; #endif - #ifdef CloudLayer2 - vec3 highShadowStart = playerPos + (WsunVec / max(abs(WsunVec.y),0.0)) * max(CloudLayer2_height - playerPos.y,0.0); - shadow += GetAltostratusDensity(highShadowStart) * CloudLayer2_density * (1.0-abs(WsunVec.y)); - #endif - - shadow = clamp(shadow,0.0,1.0); - - shadow = exp2((shadow*shadow) * -100.0); - - return mix(1.0, shadow, CLOUD_SHADOW_STRENGTH); - -#else - return 1.0; -#endif -} - - -float GetCloudShadow_VLFOG(vec3 WorldPos, vec3 WorldSpace_sunVec){ -#ifdef CLOUDS_SHADOWS - - float shadow = 0.0; - #ifdef CloudLayer0 - vec3 lowShadowStart = WorldPos + (WorldSpace_sunVec / max(abs(WorldSpace_sunVec.y),0.0)) * max((CloudLayer0_height + 30) - WorldPos.y,0.0) ; - shadow += max(GetCumulusDensity(0, lowShadowStart, 0, CloudLayer0_height, CloudLayer0_height+100),0.0)*LAYER0_DENSITY; - #endif - #ifdef CloudLayer1 - vec3 higherShadowStart = WorldPos + (WorldSpace_sunVec / max(abs(WorldSpace_sunVec.y),0.0)) * max((CloudLayer1_height + 30) - WorldPos.y,0.0) ; - shadow += max(GetCumulusDensity(1,higherShadowStart, 0, CloudLayer1_height,CloudLayer1_height+100) ,0.0)*LAYER1_DENSITY; - #endif - #ifdef CloudLayer2 - vec3 highShadowStart = WorldPos + (WorldSpace_sunVec / max(abs(WorldSpace_sunVec.y),0.0)) * max(CloudLayer2_height - WorldPos.y,0.0); - shadow += GetAltostratusDensity(highShadowStart)*LAYER2_DENSITY * (1.0-abs(WorldSpace_sunVec.y)); + cloudColor.rgb *= smallCumulusClouds.a; + cloudColor.rgb += smallCumulusClouds.rgb; + cloudColor.a *= smallCumulusClouds.a; #endif - shadow = clamp(shadow,0.0,1.0); + color = cloudColor.rgb; + totalAbsorbance = cloudColor.a; - shadow = exp((shadow*shadow) * -100.0); - - return mix(1.0, shadow, CLOUD_SHADOW_STRENGTH); - -#else - return 1.0; -#endif -} \ No newline at end of file + return vec4(color, totalAbsorbance); +} +#endif \ No newline at end of file diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 23e1316..b6da807 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,6 +1,7 @@ clouds=off stars=false vignette=false + underwaterOverlay=false dynamicHandLight=true oldLighting=false @@ -84,7 +85,10 @@ program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_I program.world-1/deferred2.enabled = false #endif -program.composite5.enabled = TAA_UPSCALING +program.world0/composite11.enabled = false +program.world0/composite5.enabled = TAA_UPSCALING +program.world1/composite5.enabled = TAA_UPSCALING +program.world-1/composite5.enabled = TAA_UPSCALING # SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE ZERO # SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE @@ -103,7 +107,7 @@ blend.gbuffers_beaconbeam = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ON blend.gbuffers_entities_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_spidereyes = ONE ONE ONE ONE blend.gbuffers_skytextured = ONE ONE ONE ZERO -blend.shadow = SRC_COLOR ZERO ONE ZERO +blend.shadow = ONE ZERO ONE ZERO # Disable blending blend.gbuffers_terrain = off @@ -130,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders =VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -172,7 +176,7 @@ SHADER_VERSION_LABEL \ screen.Ambient_light = [LPV] [Torch_Colors] [Ambient_Colors] \ MIN_LIGHT_AMOUNT indirect_effect \ \ - AO_Strength GI_Strength \ + AO_Strength AO_in_sunlight GI_Strength \ ambientOcclusionLevel HQ_SSGI \ Hand_Held_lights SKY_CONTRIBUTION_IN_SSRT \ HANDHELD_LIGHT_RANGE UseQuarterResDepth @@ -209,11 +213,11 @@ SHADER_VERSION_LABEL \ LPV_TINT_SATURATION LPV_REDSTONE_LIGHTS \ LPV_NORMAL_STRENGTH LPV_ENTITY_LIGHTS \ LPV_NOSHADOW_HACK \ - LPV_VL_FOG_ILLUMINATION LPV_VL_FOG_ILLUMINATION_BRIGHTNESS + LPV_VL_FOG_ILLUMINATION LPV_VL_FOG_ILLUMINATION_BRIGHTNESS VANILLA_LIGHTMAP_MASK ######## WORLD screen.World.columns=1 - screen.World = [Water] [Waving_Stuff] [Sky_coefficients] SKY_GROUND AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED + screen.World = [Water] [Waving_Stuff] PLANET_CURVATURE CURVATURE_AMOUNT [Sky_coefficients] SKY_GROUND AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED ### WAVING STUFF screen.Waving_Stuff.columns=1 screen.Waving_Stuff = WAVY_PLANTS WAVY_STRENGTH WAVY_SPEED @@ -290,22 +294,23 @@ SHADER_VERSION_LABEL \ ### WATER screen.Water.columns=2 - screen.Water = WATER_REFLECTIONS Refraction \ + screen.Water = WATER_REFLECTIONS FAKE_REFRACTION_EFFECT \ WATER_SUN_SPECULAR Vanilla_like_water \ SCREENSPACE_REFLECTIONS SSR_STEPS \ WATER_BACKGROUND_SPECULAR Dirt_Amount \ - [Water_fog_color] Water_Top_Layer \ - SNELLS_WINDOW WATER_WAVE_STRENGTH WATER_WAVE_SPEED LARGE_WAVE_DISPLACEMENT + MINIMUM_WATER_ABSORBANCE [Water_fog_color] \ + Water_Top_Layer SNELLS_WINDOW \ + WATER_WAVE_STRENGTH WATER_WAVE_SPEED \ screen.Water_fog_color.columns=1 screen.Water_fog_color = Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B ######## POST screen.Post_Processing.columns=2 - screen.Post_Processing = [TAA_OPTIONS] [Tonemapping] [Exposure] [DepthOfField] [Purkinje_effect] [COLOR_GRADING] [GAMEPLAY_EFFECTS] SHARPENING BLOOM_STRENGTH CAMERA_GRIDLINES MOTION_BLUR MOTION_BLUR_STRENGTH + screen.Post_Processing = [TAA_OPTIONS] [Tonemapping] [Exposure] [DepthOfField] [Purkinje_effect] [COLOR_GRADING] [GAMEPLAY_EFFECTS] CAMERA_GRIDLINES BLOOM_STRENGTH SHARPENING MOTION_BLUR MOTION_BLUR_STRENGTH CHROMATIC_ABERRATION CHROMATIC_ABERRATION_STRENGTH VIGNETTE VIGNETTE_STRENGTH ### TAA screen.TAA_OPTIONS.columns = 1 - screen.TAA_OPTIONS= SCREENSHOT_MODE TAA BLEND_FACTOR TAA_UPSCALING SCALE_FACTOR + screen.TAA_OPTIONS= SCREENSHOT_MODE TAA RESPONSIVE_TAA BLEND_FACTOR TAA_UPSCALING SCALE_FACTOR ### DOF screen.DepthOfField.columns = 1 screen.DepthOfField = DOF_QUALITY DOF_ANAMORPHIC_RATIO focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY [JITTER_DOF] @@ -340,13 +345,13 @@ SHADER_VERSION_LABEL \ screen.Mod_support = [DISTANT_HORIZONS_SETTINGS] screen.DISTANT_HORIZONS_SETTINGS.columns = 1 - screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution TOGGLE_VL_FOG VOLUMETRIC_CLOUDS + screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DH_NOISE_TEXTURE DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution TOGGLE_VL_FOG VOLUMETRIC_CLOUDS ######## MISC SETTINGS screen.Misc_Settings = [EXPERIMENTAL_STUFF] DEBUG_VIEW [the_end_orb] display_LUT WhiteWorld SSS_view ambientLight_only LIGHTNING_FLASH DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX TRANSLUCENT_ENTITIES LIGHTING_EFFECTS_BLUR_FILTER [selection_box_outline] - screen.EXPERIMENTAL_STUFF = CLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER HYPER_DETAILED_WAVES OLD_BLOOM PLANET_GROUND_BRIGHTNESS LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS OLD_CAVE_DETECTION + screen.EXPERIMENTAL_STUFF = CLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER HYPER_DETAILED_WAVES OLD_BLOOM PLANET_GROUND_BRIGHTNESS LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS OLD_CAVE_DETECTION FORCE_TRANSLUCENT_GLASS LARGE_WAVE_DISPLACEMENT screen.the_end_orb.columns = 1 screen.the_end_orb = THE_ORB ORB_X ORB_Y ORB_Z ORB_ColMult ORB_R ORB_G ORB_B @@ -454,6 +459,10 @@ uniform.float.noPuddleAreas = smooth(if(in(biome, 3, 4, 16, 37, 39, 48, 49, 31, ############################ ####### RANDOM STUFF ####### ############################ +# force LUT accumulation to have a high blend factor after a certain amount of time +uniform.float.dayChangeSmooth = smooth(if(abs(smooth(worldDay, 0.05, 0.05) - worldDay) > 0.01, 0.0, 1.0), 300.0, 0.0) + +uniform.bool.worldTimeChangeCheck = abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) > 0.01 #if defined WATER_ON_CAMERA_EFFECT uniform.float.exitWater = smooth(if(isEyeInWater == 1,1,0),0.0,5.0) @@ -466,7 +475,7 @@ uniform.float.noPuddleAreas = smooth(if(in(biome, 3, 4, 16, 37, 39, 48, 49, 31, uniform.float.threeHeart = smooth(if(Currenthealth <= 6.0 && currentPlayerHealth > -1.0, 1,0), 0.0,1.0) variable.float.interpolatedHealth = smooth(if(is_hurt, 0.0, Currenthealth), 0.0, 1.0) - + # detect over 5 hearts of damage taken variable.bool.largeHealthDifference = (interpolatedHealth - Currenthealth) >= 7.0 variable.bool.delayedCritDamage = smooth(if(largeHealthDifference, 1.0, 0.0), 0.0, 1.0) > 0.01 @@ -506,6 +515,8 @@ uniform.float.noPuddleAreas = smooth(if(in(biome, 3, 4, 16, 37, 39, 48, 49, 31, #endif +uniform.float.wetnessAmount = smooth(if(rainStrength>0.01, 3.0, 0.0), 100.0, 100.0) + # photon stuff uniform.vec2.view_res = vec2(viewWidth, viewHeight) uniform.vec2.view_pixel_size = vec2(1.0 / viewWidth, 1.0 / viewHeight) @@ -517,20 +528,28 @@ variable.float.texelSizeX = 1.0/viewWidth variable.float.texelSizeY = 1.0/viewHeight uniform.vec2.texelSize = vec2(texelSizeX,texelSizeY) -uniform.int.framemod8 = frameCounter%8 +#if defined RESPONSIVE_TAA + uniform.int.framemod8 = frameCounter%4 +#else + uniform.int.framemod8 = frameCounter%8 +#endif -variable.float.normSunVec = sqrt(sunPosition.x*sunPosition.x+sunPosition.y*sunPosition.y+sunPosition.z*sunPosition.z) +variable.float.sunPosXSTEUFF = sunPosition.x +variable.float.sunPosYSTEUFF = sunPosition.y +variable.float.sunPosZSTEUFF = sunPosition.z + +variable.float.normSunVec = sqrt(sunPosXSTEUFF*sunPosXSTEUFF+sunPosYSTEUFF*sunPosYSTEUFF+sunPosZSTEUFF*sunPosZSTEUFF) variable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z) -variable.float.sunPosX = sunPosition.x/normSunVec -variable.float.sunPosY = sunPosition.y/normSunVec -variable.float.sunPosZ = sunPosition.z/normSunVec +variable.float.sunPosX = (sunPosition.x/normSunVec) +variable.float.sunPosY = (sunPosition.y/normSunVec) +variable.float.sunPosZ = (sunPosition.z/normSunVec) uniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ) -variable.float.upPosX = upPosition.x/normUpVec -variable.float.upPosY = upPosition.y/normUpVec -variable.float.upPosZ = upPosition.z/normUpVec +variable.float.upPosX =(upPosition.x)/normUpVec +variable.float.upPosY =(upPosition.y)/normUpVec +variable.float.upPosZ =(upPosition.z)/normUpVec uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ) uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ diff --git a/shaders/world0/dh_generic.fsh b/shaders/world0/dh_generic.fsh new file mode 100644 index 0000000..51531cb --- /dev/null +++ b/shaders/world0/dh_generic.fsh @@ -0,0 +1,5 @@ +#version 330 compatibility + +#define OVERWORLD_SHADER + +#include "/dimensions/DH_generic.fsh" \ No newline at end of file diff --git a/shaders/world0/dh_generic.vsh b/shaders/world0/dh_generic.vsh new file mode 100644 index 0000000..32f39b8 --- /dev/null +++ b/shaders/world0/dh_generic.vsh @@ -0,0 +1,5 @@ +#version 330 compatibility + +#define OVERWORLD_SHADER + +#include "/dimensions/DH_generic.vsh" \ No newline at end of file diff --git a/shaders/world0/shadow.fsh b/shaders/world0/shadow.fsh index 801129d..5a1d6cc 100644 --- a/shaders/world0/shadow.fsh +++ b/shaders/world0/shadow.fsh @@ -20,7 +20,16 @@ float blueNoise(){ void main() { - gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); + + vec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); + + #ifdef TRANSLUCENT_COLORED_SHADOWS + if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); + #endif + + gl_FragData[0] = shadowColor; + + // gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); #ifdef Stochastic_Transparent_Shadows if(gl_FragData[0].a < blueNoise()) { discard; return;} diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 7c0970e..647346b 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -152,6 +152,8 @@ void main() { color = gl_Color; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + // playerpos = vec4(0.0); // playerpos = gbufferModelViewInverse * (gl_ModelViewMatrix * gl_Vertex); @@ -202,9 +204,9 @@ void main() { // } // #endif - #if defined IS_LPV_ENABLED || defined WAVY_PLANTS + // #if defined IS_LPV_ENABLED || defined WAVY_PLANTS || !defined PLANET_CURVATURE vec3 playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; - #endif + // #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store PopulateShadowVoxel(playerpos); @@ -231,6 +233,7 @@ void main() { int blockId = int(mc_Entity.x + 0.5); + vec3 worldpos = playerpos; #ifdef WAVY_PLANTS // also use normal, so up/down facing geometry does not get detatched from its model parts. bool InterpolateFromBase = gl_MultiTexCoord0.t < max(mc_midTexCoord.t, abs(viewToWorld(normalize(gl_NormalMatrix * gl_Normal)).y)); @@ -248,7 +251,6 @@ void main() { ) && length(position.xy) < 24.0 ){ - vec3 worldpos = playerpos; // apply displacement for waving plant blocks worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); @@ -256,11 +258,16 @@ void main() { // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly if(blockId == BLOCK_AIR_WAVING) worldpos = playerpos + calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; - position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz; } #endif - + #ifdef PLANET_CURVATURE + float curvature = length(worldpos) / (16*8); + worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + #endif + + position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz; + #ifdef DISTORT_SHADOWMAP if (entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SLIME) position.xyz = position.xyz - normalize(gl_NormalMatrix * gl_Normal) * 0.25; From 718838d8b781290790301d287ef2f050c76d2177 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 17:58:24 -0500 Subject: [PATCH 077/101] fix incorrect auto target exposure values --- shaders/dimensions/deferred.vsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh index 5378d88..df35a2f 100644 --- a/shaders/dimensions/deferred.vsh +++ b/shaders/dimensions/deferred.vsh @@ -288,9 +288,9 @@ void main() { float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); float expFunc = 0.5+0.5*tanh(log(L)); - float targetExposure = 1.0/log(L+1.05); - // float targetExposure = 0.35/log(L+1.05); - // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; + // float targetExposure = 1.0/log(L+1.05); + float targetExposure = 0.35/log(L+1.05); // mine + // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; From 9094300a9aff61ee0b4b2bff917693a1cdba0ff0 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 17:59:55 -0500 Subject: [PATCH 078/101] disable daily weather by default for now --- shaders/lib/settings.glsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 1eabc33..620c6b9 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -402,7 +402,7 @@ uniform int moonPhase; #define HQ_CLOUDS -#define Daily_Weather +// #define Daily_Weather // #define CHOOSE_RANDOM_WEATHER_PROFILE #ifdef Daily_Weather From 09a927db73c2b6117aa51a3aebc017b7b8e2cd41 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 18:52:43 -0500 Subject: [PATCH 079/101] add controllable exposure brightening and darkening --- shaders/dimensions/deferred.vsh | 2 +- shaders/lib/settings.glsl | 4 ++-- shaders/shaders.properties | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh index df35a2f..07d9fc2 100644 --- a/shaders/dimensions/deferred.vsh +++ b/shaders/dimensions/deferred.vsh @@ -289,7 +289,7 @@ void main() { float expFunc = 0.5+0.5*tanh(log(L)); // float targetExposure = 1.0/log(L+1.05); - float targetExposure = 0.35/log(L+1.05); // mine + float targetExposure = (EXPOSURE_DARKENING * 0.35)/log(L+1.0 + EXPOSURE_BRIGHTENING * 0.05); // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 620c6b9..36b77b4 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -576,8 +576,8 @@ const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_ #define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] #define Exposure_Speed 1.0 // [0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] -#define MINUMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] -#define MAXIMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define EXPOSURE_DARKENING 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define EXPOSURE_BRIGHTENING 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define Fake_purkinje #define Purkinje_strength 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] diff --git a/shaders/shaders.properties b/shaders/shaders.properties index b6da807..1f3a52d 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -134,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders =VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -318,7 +318,7 @@ SHADER_VERSION_LABEL \ screen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR SCREENSHOT_MODE ### EXPOSURE screen.Exposure.columns = 1 - screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value + screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value EXPOSURE_DARKENING EXPOSURE_BRIGHTENING ### TONEMAPS screen.Tonemapping.columns = 1 screen.Tonemapping = TONEMAP USE_ACES_COLORSPACE_APPROXIMATION SATURATION CROSSTALK From e7401e9d9566260c0c37a0c2225b47cefe19e638 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 19:02:21 -0500 Subject: [PATCH 080/101] fix sun specular being turned off for DH water --- shaders/dimensions/DH_translucent.fsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 0f9533f..3b89972 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -4,6 +4,9 @@ #include "/lib/color_transforms.glsl" #include "/lib/projections.glsl" +#ifdef OVERWORLD_SHADER +#define WATER_SUN_SPECULAR +#endif uniform vec2 texelSize; // uniform int moonPhase; uniform float frameTimeCounter; From ebbd25cd27ba85e8d515a19a38e97e8d0272e8ba Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 19:53:12 -0500 Subject: [PATCH 081/101] fix world curvature on DH LODS --- shaders/dimensions/DH_solid.vsh | 18 +++++++++++++++++- shaders/dimensions/DH_translucent.fsh | 3 ++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/shaders/dimensions/DH_solid.vsh b/shaders/dimensions/DH_solid.vsh index 38e1e37..bd19765 100644 --- a/shaders/dimensions/DH_solid.vsh +++ b/shaders/dimensions/DH_solid.vsh @@ -63,7 +63,23 @@ void main() { vec4 viewPos = gl_ModelViewMatrix * vPos; localPos = gbufferModelViewInverse * viewPos; - gl_Position = dhProjection * viewPos; + + #ifdef PLANET_CURVATURE + vec4 worldPos = localPos; + + float curvature = length(worldPos) / (16*8); + worldPos.y -= curvature*curvature * CURVATURE_AMOUNT; + + worldPos = gbufferModelView * worldPos; + + gl_Position = dhProjection * worldPos; + #else + gl_Position = dhProjection * viewPos; + #endif + + + + #ifdef TAA_UPSCALING diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 3b89972..1a52519 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -5,8 +5,9 @@ #include "/lib/projections.glsl" #ifdef OVERWORLD_SHADER -#define WATER_SUN_SPECULAR + #define WATER_SUN_SPECULAR #endif + uniform vec2 texelSize; // uniform int moonPhase; uniform float frameTimeCounter; From 9b80b3ba97046ab4f456a811695ef3cbbdb3baab Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 20:08:03 -0500 Subject: [PATCH 082/101] make new specular settings functional --- shaders/dimensions/all_translucent.fsh | 9 +++++++++ shaders/dimensions/composite1.fsh | 9 +++++++++ shaders/shaders.properties | 10 ++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index b987a77..d3bd525 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -371,6 +371,15 @@ uniform vec3 eyePosition; #define FORWARD_BACKGROUND_REFLECTION #define FORWARD_ROUGH_REFLECTION +#ifdef FORWARD_SPECULAR +#endif +#ifdef FORWARD_ENVIORNMENT_REFLECTION +#endif +#ifdef FORWARD_BACKGROUND_REFLECTION +#endif +#ifdef FORWARD_ROUGH_REFLECTION +#endif + #include "/lib/specular.glsl" //////////////////////////////VOID MAIN////////////////////////////// diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index e87d11b..ede4faa 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -220,6 +220,15 @@ vec2 decodeVec2(float a){ #define DEFERRED_BACKGROUND_REFLECTION #define DEFERRED_ROUGH_REFLECTION +#ifdef DEFERRED_SPECULAR +#endif +#ifdef DEFERRED_ENVIORNMENT_REFLECTION +#endif +#ifdef DEFERRED_BACKGROUND_REFLECTION +#endif +#ifdef DEFERRED_ROUGH_REFLECTION +#endif + #include "/lib/specular.glsl" diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 1f3a52d..7a7356c 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -192,8 +192,14 @@ SHADER_VERSION_LABEL \ screen.Resource_Pack_Support = [Reflections] [Emissives] [Subsurface_Scattering] [POM] [Porosity] MATERIAL_AO RESOURCEPACK_SKY screen.Reflections.columns=2 - screen.Reflections = Specular_Reflections Sun_specular_Strength Screen_Space_Reflections reflection_quality Rough_reflections Roughness_Threshold Sky_reflection Dynamic_SSR_quality - + # screen.Reflections = Specular_Reflections Sun_specular_Strength Screen_Space_Reflections reflection_quality Rough_reflections Roughness_Threshold Sky_reflection Dynamic_SSR_quality + screen.Reflections = \ + DEFERRED_SPECULAR FORWARD_SPECULAR \ + DEFERRED_ENVIORNMENT_REFLECTION FORWARD_ENVIORNMENT_REFLECTION \ + DEFERRED_BACKGROUND_REFLECTION FORWARD_BACKGROUND_REFLECTION \ + DEFERRED_ROUGH_REFLECTION FORWARD_ROUGH_REFLECTION \ + Sun_specular_Strength Roughness_Threshold + screen.Subsurface_Scattering.columns=1 screen.Subsurface_Scattering = SSS_TYPE sss_density_multiplier sss_absorbance_multiplier LabSSS_Curve MISC_BLOCK_SSS MOB_SSS Ambient_SSS ambientsss_brightness From 23ea37e5bc5d9e709670ae7774b837f66ab13062 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 20:10:52 -0500 Subject: [PATCH 083/101] potential fix for cloud depth intersection max distance being too short for DH LODs --- shaders/lib/volumetricClouds.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index a90c8b9..9a6381a 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -359,7 +359,7 @@ vec3 getRayOrigin( return position; } - +// uniform float dhFarPlane; vec4 GetVolumetricClouds( vec3 viewPos, vec2 dither, @@ -382,7 +382,7 @@ vec4 GetVolumetricClouds( float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - minHeight,0.0) / 100.0 ,0.0,1.0); #if defined DISTANT_HORIZONS - float maxdist = dhRenderDistance + 16 * 32; + float maxdist = dhFarPlane; #else float maxdist = far + 16*5.0; #endif From 74f391e57f340b959a785e27787b93521adaca0e Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 20:29:25 -0500 Subject: [PATCH 084/101] add cloud tallness settings for small/large cumulus clouds --- shaders/lib/settings.glsl | 3 +++ shaders/lib/volumetricClouds.glsl | 4 ++-- shaders/shaders.properties | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 36b77b4..4240137 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -370,11 +370,14 @@ uniform int moonPhase; #define CloudLayer0_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer0_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer0_height 250 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] +#define CloudLayer0_tallness 100 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] #define CloudLayer1 #define CloudLayer1_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer1_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer1_height 500 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] +#define CloudLayer1_tallness 200 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] + #define CloudLayer2 #define CloudLayer2_coverage 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 9a6381a..5682ff0 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -375,7 +375,7 @@ vec4 GetVolumetricClouds( float totalAbsorbance = 1.0; vec4 cloudColor = vec4(color, totalAbsorbance); - float cloudheight = 100.0; + float cloudheight = CloudLayer0_tallness; float minHeight = CloudLayer0_height; float maxHeight = cloudheight + minHeight; @@ -435,7 +435,7 @@ vec4 GetVolumetricClouds( vec4 largeCumulusClouds = cloudColor; #ifdef CloudLayer1 - cloudheight = 200.0; + cloudheight = CloudLayer1_tallness; minHeight = CloudLayer1_height; maxHeight = cloudheight + minHeight; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 7a7356c..563c813 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -134,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -273,6 +273,7 @@ SHADER_VERSION_LABEL \ CloudLayer0_coverage CloudLayer1_coverage CloudLayer2_coverage \ CloudLayer0_density CloudLayer1_density CloudLayer2_density \ CloudLayer0_height CloudLayer1_height CloudLayer2_height \ + CloudLayer0_tallness CloudLayer1_tallness ### FOG screen.Fog.columns=2 From fbee3f8426d4004adfdee05a00d45209a2678e39 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 20:56:53 -0500 Subject: [PATCH 085/101] add scale setting for large/small cumulus clouds --- shaders/lib/settings.glsl | 2 ++ shaders/lib/volumetricClouds.glsl | 20 ++++++++++---------- shaders/shaders.properties | 15 +++------------ 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 4240137..04560f7 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -371,12 +371,14 @@ uniform int moonPhase; #define CloudLayer0_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer0_height 250 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] #define CloudLayer0_tallness 100 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] +#define CloudLayer0_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer1 #define CloudLayer1_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer1_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer1_height 500 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] #define CloudLayer1_tallness 200 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] +#define CloudLayer1_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer2 diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 5682ff0..95f2264 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -47,8 +47,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, if(LayerIndex == LARGECUMULUS_LAYER){ coverage = dailyWeatherParams0.y; - largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0).b; - smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0).b; + largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0 * CloudLayer1_scale).b; + smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0 * CloudLayer1_scale).b; smallCloud = abs(largeCloud* -0.7) + smallCloud; @@ -60,8 +60,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, if(LayerIndex == SMALLCUMULUS_LAYER){ coverage = dailyWeatherParams0.x; - largeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0).b; - smallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0).r; + largeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0 * CloudLayer0_scale).b; + smallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0 * CloudLayer0_scale).r; smallCloud = abs(largeCloud-0.6) + smallCloud*smallCloud; @@ -98,18 +98,18 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, float erosion = 0.0; if(LayerIndex == SMALLCUMULUS_LAYER){ - erosion += (1.0-densityAtPos(samplePos * 200.0)) * sqrt(1.0-shape); + erosion += (1.0-densityAtPos(samplePos * 200.0 * CloudLayer0_scale)) * sqrt(1.0-shape); float falloff = 1.0 - clamp((maxHeight - position.y)/100.0,0.0,1.0); - erosion += abs(densityAtPos(samplePos * 600.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25); + erosion += abs(densityAtPos(samplePos * 600.0 * CloudLayer0_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25); erosion = erosion*erosion*erosion*erosion; } if(LayerIndex == LARGECUMULUS_LAYER){ - erosion += (1.0 - densityAtPos(samplePos * 100.0)) * sqrt(1.0-shape); + erosion += (1.0 - densityAtPos(samplePos * 100.0 * CloudLayer1_scale)) * sqrt(1.0-shape); float falloff = 1.0 - clamp((maxHeight - position.y)/200.0,0.0,1.0); - erosion += abs(densityAtPos(samplePos * 450.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); + erosion += abs(densityAtPos(samplePos * 450.0 * CloudLayer1_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); erosion = erosion*erosion*erosion*erosion; } @@ -375,7 +375,7 @@ vec4 GetVolumetricClouds( float totalAbsorbance = 1.0; vec4 cloudColor = vec4(color, totalAbsorbance); - float cloudheight = CloudLayer0_tallness; + float cloudheight = CloudLayer0_tallness / CloudLayer0_scale; float minHeight = CloudLayer0_height; float maxHeight = cloudheight + minHeight; @@ -435,7 +435,7 @@ vec4 GetVolumetricClouds( vec4 largeCumulusClouds = cloudColor; #ifdef CloudLayer1 - cloudheight = CloudLayer1_tallness; + cloudheight = CloudLayer1_tallness/CloudLayer1_scale; minHeight = CloudLayer1_height; maxHeight = cloudheight + minHeight; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 563c813..054efec 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -134,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = CloudLayer0_scale CloudLayer1_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -147,16 +147,6 @@ SHADER_VERSION_LABEL \ \ [Misc_Settings] [Mod_support] \ -# screen = \ -# BLISS_SHADERS \ -# \ -# [Direct_Light] [World] \ -# [Ambient_light] [Fog] \ -# [Post_Processing] [Clouds] \ -# [LabPBR] [Climate] \ -# \ -# [Misc_Settings] [DISTANT_HORIZONS_SETTINGS] \ - ######## LIGHTING ### DIRECT LIGHT screen.Direct_Light.columns=1 @@ -273,7 +263,8 @@ SHADER_VERSION_LABEL \ CloudLayer0_coverage CloudLayer1_coverage CloudLayer2_coverage \ CloudLayer0_density CloudLayer1_density CloudLayer2_density \ CloudLayer0_height CloudLayer1_height CloudLayer2_height \ - CloudLayer0_tallness CloudLayer1_tallness + CloudLayer0_tallness CloudLayer1_tallness \ + CloudLayer0_scale CloudLayer1_scale ### FOG screen.Fog.columns=2 From 82139685d166b487d43480c0362162065d2b4784 Mon Sep 17 00:00:00 2001 From: Xonk Date: Fri, 15 Nov 2024 20:59:09 -0500 Subject: [PATCH 086/101] remove pointless phase effect for diffuse lighting on particles --- shaders/dimensions/all_particles.fsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 2bc5656..1733e3c 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -435,9 +435,9 @@ void main() { Direct_lighting = directLightColor * Shadows; - #ifndef LINES - Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; - #endif + // #ifndef LINES + // Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; + // #endif AmbientLightColor = averageSkyCol_Clouds / 900.0; From f8d1b0b8da0622f9f0866a7f80a8da61390a9cd2 Mon Sep 17 00:00:00 2001 From: Xonk Date: Sat, 16 Nov 2024 01:34:37 -0500 Subject: [PATCH 087/101] remove underwater distortion. make AO in sunlight also be on SSS. --- shaders/dimensions/composite1.fsh | 24 +++++++++++++++++------- shaders/lib/gameplay_effects.glsl | 2 +- shaders/lib/volumetricClouds.glsl | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index ede4faa..b4692de 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1353,14 +1353,24 @@ void main() { float skylight = 1.0; #if indirect_effect == 0 || indirect_effect == 1 || indirect_effect == 2 - float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y*1.5; - if(isGrass) SkylightDir = 1.5; + // float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y *1.5; + // if(isGrass) SkylightDir = 1.5; - skylight = max(pow((FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); + // skylight = max(pow((FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); + + // #if indirect_effect == 1 + // skylight = min(skylight, mix(0.95, 2.5, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) )); + // #endif + + float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y; + + if(isGrass) SkylightDir = 1.0; + + SkylightDir = clamp(SkylightDir*0.7+0.3, 0.0, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) * 0.7 + 0.3); + + + skylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir); - #if indirect_effect == 1 - skylight = min(skylight, mix(0.95, 2.5, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) )); - #endif #endif #if indirect_effect == 3 || indirect_effect == 4 @@ -1487,7 +1497,7 @@ void main() { #ifdef OVERWORLD_SHADER // Direct_lighting = max(shadowColor*NdotL, SSSColor); #ifdef AO_in_sunlight - Direct_lighting = shadowColor*NdotL*(AO*0.7+0.3) + SSSColor; + Direct_lighting = (shadowColor*NdotL + SSSColor) * (AO*0.7+0.3); #else Direct_lighting = shadowColor*NdotL + SSSColor; #endif diff --git a/shaders/lib/gameplay_effects.glsl b/shaders/lib/gameplay_effects.glsl index b9e28ad..31e3ce7 100644 --- a/shaders/lib/gameplay_effects.glsl +++ b/shaders/lib/gameplay_effects.glsl @@ -68,7 +68,7 @@ void applyGameplayEffects(inout vec3 color, in vec2 texcoord, float noise){ float waterDrops = texture2D(noisetex, (texcoord - vec2(0.0, scale.z)) * scale.xy).r ; - if(isEyeInWater == 1) waterDrops = waterDrops*waterDrops * 0.3; + if(isEyeInWater == 1) waterDrops = 0.0; if(isEyeInWater == 0 && exitWater > 0.0) waterDrops = sqrt(min(max(waterDrops - (1.0-sqrt(exitWater))*0.7,0.0) * (1.0 + exitWater),1.0)) * 0.3; // apply distortion effects for exiting water and under water diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 95f2264..18afa8e 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -384,7 +384,7 @@ vec4 GetVolumetricClouds( #if defined DISTANT_HORIZONS float maxdist = dhFarPlane; #else - float maxdist = far + 16*5.0; + float maxdist = far*4.0; #endif float lViewPosM = length(viewPos) < maxdist ? length(viewPos) - 1.0 : 100000000.0; From 8f2dd50f816cc544dcfa054a5fc281ec67b03710 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 18:45:58 +0100 Subject: [PATCH 088/101] Fixed formatting --- shaders/block.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index ce8a49d..1478726 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -90,7 +90,8 @@ block.55=minecraft:fern \ block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves snow:is_on_leaves=true \ #else block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ -#endif beachparty:palm_leaves \ +#endif + beachparty:palm_leaves \ biomesoplenty:redwood_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:cypress_leaves biomesoplenty:snowblossom_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:fir_leaves biomesoplenty:pine_leaves biomesoplenty:red_maple_leaves biomesoplenty:orange_maple_leaves biomesoplenty:yellow_maple_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:empyreal_leaves \ conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 \ flying_stuff:fiery_leaves flying_stuff:lavic_fungus_block \ @@ -124,7 +125,8 @@ block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lila block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5:is_on_leaves=false snow:layers=6:is_on_leaves=false snow:layers=7:is_on_leaves=false snow:layers=8:is_on_leaves=false minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ #else block.81=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 minecraft:snow_block powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block \ -#endif aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ +#endif + aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ beachparty:seashell_block beachparty:beach_parasol \ biomesoplenty:toadstool \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ From cf3346232eeca374579161481db6de67e040ea94 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 089/101] Revert "remove underwater distortion. make AO in sunlight also be on SSS." This reverts commit f8d1b0b8da0622f9f0866a7f80a8da61390a9cd2. --- shaders/dimensions/composite1.fsh | 24 +++++++----------------- shaders/lib/gameplay_effects.glsl | 2 +- shaders/lib/volumetricClouds.glsl | 2 +- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index b4692de..ede4faa 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1353,24 +1353,14 @@ void main() { float skylight = 1.0; #if indirect_effect == 0 || indirect_effect == 1 || indirect_effect == 2 - // float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y *1.5; - // if(isGrass) SkylightDir = 1.5; + float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y*1.5; + if(isGrass) SkylightDir = 1.5; - // skylight = max(pow((FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); - - // #if indirect_effect == 1 - // skylight = min(skylight, mix(0.95, 2.5, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) )); - // #endif - - float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y; - - if(isGrass) SkylightDir = 1.0; - - SkylightDir = clamp(SkylightDir*0.7+0.3, 0.0, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) * 0.7 + 0.3); - - - skylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir); + skylight = max(pow((FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); + #if indirect_effect == 1 + skylight = min(skylight, mix(0.95, 2.5, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) )); + #endif #endif #if indirect_effect == 3 || indirect_effect == 4 @@ -1497,7 +1487,7 @@ void main() { #ifdef OVERWORLD_SHADER // Direct_lighting = max(shadowColor*NdotL, SSSColor); #ifdef AO_in_sunlight - Direct_lighting = (shadowColor*NdotL + SSSColor) * (AO*0.7+0.3); + Direct_lighting = shadowColor*NdotL*(AO*0.7+0.3) + SSSColor; #else Direct_lighting = shadowColor*NdotL + SSSColor; #endif diff --git a/shaders/lib/gameplay_effects.glsl b/shaders/lib/gameplay_effects.glsl index 31e3ce7..b9e28ad 100644 --- a/shaders/lib/gameplay_effects.glsl +++ b/shaders/lib/gameplay_effects.glsl @@ -68,7 +68,7 @@ void applyGameplayEffects(inout vec3 color, in vec2 texcoord, float noise){ float waterDrops = texture2D(noisetex, (texcoord - vec2(0.0, scale.z)) * scale.xy).r ; - if(isEyeInWater == 1) waterDrops = 0.0; + if(isEyeInWater == 1) waterDrops = waterDrops*waterDrops * 0.3; if(isEyeInWater == 0 && exitWater > 0.0) waterDrops = sqrt(min(max(waterDrops - (1.0-sqrt(exitWater))*0.7,0.0) * (1.0 + exitWater),1.0)) * 0.3; // apply distortion effects for exiting water and under water diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 18afa8e..95f2264 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -384,7 +384,7 @@ vec4 GetVolumetricClouds( #if defined DISTANT_HORIZONS float maxdist = dhFarPlane; #else - float maxdist = far*4.0; + float maxdist = far + 16*5.0; #endif float lViewPosM = length(viewPos) < maxdist ? length(viewPos) - 1.0 : 100000000.0; From 855b08cd127fe960c60f3206ad82a43b8b150110 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 090/101] Revert "remove pointless phase effect for diffuse lighting on particles" This reverts commit 82139685d166b487d43480c0362162065d2b4784. --- shaders/dimensions/all_particles.fsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 1733e3c..2bc5656 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -435,9 +435,9 @@ void main() { Direct_lighting = directLightColor * Shadows; - // #ifndef LINES - // Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; - // #endif + #ifndef LINES + Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; + #endif AmbientLightColor = averageSkyCol_Clouds / 900.0; From bf92f6612942a878e6067b48264203be8a120ac6 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 091/101] Revert "add scale setting for large/small cumulus clouds" This reverts commit fbee3f8426d4004adfdee05a00d45209a2678e39. --- shaders/lib/settings.glsl | 2 -- shaders/lib/volumetricClouds.glsl | 20 ++++++++++---------- shaders/shaders.properties | 15 ++++++++++++--- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 04560f7..4240137 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -371,14 +371,12 @@ uniform int moonPhase; #define CloudLayer0_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer0_height 250 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] #define CloudLayer0_tallness 100 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] -#define CloudLayer0_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer1 #define CloudLayer1_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer1_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer1_height 500 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] #define CloudLayer1_tallness 200 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] -#define CloudLayer1_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer2 diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 95f2264..5682ff0 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -47,8 +47,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, if(LayerIndex == LARGECUMULUS_LAYER){ coverage = dailyWeatherParams0.y; - largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0 * CloudLayer1_scale).b; - smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0 * CloudLayer1_scale).b; + largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0).b; + smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0).b; smallCloud = abs(largeCloud* -0.7) + smallCloud; @@ -60,8 +60,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, if(LayerIndex == SMALLCUMULUS_LAYER){ coverage = dailyWeatherParams0.x; - largeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0 * CloudLayer0_scale).b; - smallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0 * CloudLayer0_scale).r; + largeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0).b; + smallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0).r; smallCloud = abs(largeCloud-0.6) + smallCloud*smallCloud; @@ -98,18 +98,18 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, float erosion = 0.0; if(LayerIndex == SMALLCUMULUS_LAYER){ - erosion += (1.0-densityAtPos(samplePos * 200.0 * CloudLayer0_scale)) * sqrt(1.0-shape); + erosion += (1.0-densityAtPos(samplePos * 200.0)) * sqrt(1.0-shape); float falloff = 1.0 - clamp((maxHeight - position.y)/100.0,0.0,1.0); - erosion += abs(densityAtPos(samplePos * 600.0 * CloudLayer0_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25); + erosion += abs(densityAtPos(samplePos * 600.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25); erosion = erosion*erosion*erosion*erosion; } if(LayerIndex == LARGECUMULUS_LAYER){ - erosion += (1.0 - densityAtPos(samplePos * 100.0 * CloudLayer1_scale)) * sqrt(1.0-shape); + erosion += (1.0 - densityAtPos(samplePos * 100.0)) * sqrt(1.0-shape); float falloff = 1.0 - clamp((maxHeight - position.y)/200.0,0.0,1.0); - erosion += abs(densityAtPos(samplePos * 450.0 * CloudLayer1_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); + erosion += abs(densityAtPos(samplePos * 450.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); erosion = erosion*erosion*erosion*erosion; } @@ -375,7 +375,7 @@ vec4 GetVolumetricClouds( float totalAbsorbance = 1.0; vec4 cloudColor = vec4(color, totalAbsorbance); - float cloudheight = CloudLayer0_tallness / CloudLayer0_scale; + float cloudheight = CloudLayer0_tallness; float minHeight = CloudLayer0_height; float maxHeight = cloudheight + minHeight; @@ -435,7 +435,7 @@ vec4 GetVolumetricClouds( vec4 largeCumulusClouds = cloudColor; #ifdef CloudLayer1 - cloudheight = CloudLayer1_tallness/CloudLayer1_scale; + cloudheight = CloudLayer1_tallness; minHeight = CloudLayer1_height; maxHeight = cloudheight + minHeight; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 054efec..563c813 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -134,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = CloudLayer0_scale CloudLayer1_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -147,6 +147,16 @@ SHADER_VERSION_LABEL \ \ [Misc_Settings] [Mod_support] \ +# screen = \ +# BLISS_SHADERS \ +# \ +# [Direct_Light] [World] \ +# [Ambient_light] [Fog] \ +# [Post_Processing] [Clouds] \ +# [LabPBR] [Climate] \ +# \ +# [Misc_Settings] [DISTANT_HORIZONS_SETTINGS] \ + ######## LIGHTING ### DIRECT LIGHT screen.Direct_Light.columns=1 @@ -263,8 +273,7 @@ SHADER_VERSION_LABEL \ CloudLayer0_coverage CloudLayer1_coverage CloudLayer2_coverage \ CloudLayer0_density CloudLayer1_density CloudLayer2_density \ CloudLayer0_height CloudLayer1_height CloudLayer2_height \ - CloudLayer0_tallness CloudLayer1_tallness \ - CloudLayer0_scale CloudLayer1_scale + CloudLayer0_tallness CloudLayer1_tallness ### FOG screen.Fog.columns=2 From 07f905fb8e511ade9bfce4e38a16a05c9beb21e7 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 092/101] Revert "add cloud tallness settings for small/large cumulus clouds" This reverts commit 74f391e57f340b959a785e27787b93521adaca0e. --- shaders/lib/settings.glsl | 3 --- shaders/lib/volumetricClouds.glsl | 4 ++-- shaders/shaders.properties | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 4240137..36b77b4 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -370,14 +370,11 @@ uniform int moonPhase; #define CloudLayer0_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer0_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer0_height 250 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] -#define CloudLayer0_tallness 100 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] #define CloudLayer1 #define CloudLayer1_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define CloudLayer1_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] #define CloudLayer1_height 500 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] -#define CloudLayer1_tallness 200 // // [0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 700 800 900 1000 1250 1500 1750 2000 2250 2500 2750 3000 4000 5000] - #define CloudLayer2 #define CloudLayer2_coverage 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 5682ff0..9a6381a 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -375,7 +375,7 @@ vec4 GetVolumetricClouds( float totalAbsorbance = 1.0; vec4 cloudColor = vec4(color, totalAbsorbance); - float cloudheight = CloudLayer0_tallness; + float cloudheight = 100.0; float minHeight = CloudLayer0_height; float maxHeight = cloudheight + minHeight; @@ -435,7 +435,7 @@ vec4 GetVolumetricClouds( vec4 largeCumulusClouds = cloudColor; #ifdef CloudLayer1 - cloudheight = CloudLayer1_tallness; + cloudheight = 200.0; minHeight = CloudLayer1_height; maxHeight = cloudheight + minHeight; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 563c813..7a7356c 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -134,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -273,7 +273,6 @@ SHADER_VERSION_LABEL \ CloudLayer0_coverage CloudLayer1_coverage CloudLayer2_coverage \ CloudLayer0_density CloudLayer1_density CloudLayer2_density \ CloudLayer0_height CloudLayer1_height CloudLayer2_height \ - CloudLayer0_tallness CloudLayer1_tallness ### FOG screen.Fog.columns=2 From 3b7b0489c1e23dad5dbcc2a2646d1c389cdcef8e Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 093/101] Revert "potential fix for cloud depth intersection max distance being too short for DH LODs" This reverts commit 23ea37e5bc5d9e709670ae7774b837f66ab13062. --- shaders/lib/volumetricClouds.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index 9a6381a..a90c8b9 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -359,7 +359,7 @@ vec3 getRayOrigin( return position; } -// uniform float dhFarPlane; + vec4 GetVolumetricClouds( vec3 viewPos, vec2 dither, @@ -382,7 +382,7 @@ vec4 GetVolumetricClouds( float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - minHeight,0.0) / 100.0 ,0.0,1.0); #if defined DISTANT_HORIZONS - float maxdist = dhFarPlane; + float maxdist = dhRenderDistance + 16 * 32; #else float maxdist = far + 16*5.0; #endif From 13feffe3175e02071865fb1f3a47472b8fca9101 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 094/101] Revert "make new specular settings functional" This reverts commit 9b80b3ba97046ab4f456a811695ef3cbbdb3baab. --- shaders/dimensions/all_translucent.fsh | 9 --------- shaders/dimensions/composite1.fsh | 9 --------- shaders/shaders.properties | 10 ++-------- 3 files changed, 2 insertions(+), 26 deletions(-) diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index d3bd525..b987a77 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -371,15 +371,6 @@ uniform vec3 eyePosition; #define FORWARD_BACKGROUND_REFLECTION #define FORWARD_ROUGH_REFLECTION -#ifdef FORWARD_SPECULAR -#endif -#ifdef FORWARD_ENVIORNMENT_REFLECTION -#endif -#ifdef FORWARD_BACKGROUND_REFLECTION -#endif -#ifdef FORWARD_ROUGH_REFLECTION -#endif - #include "/lib/specular.glsl" //////////////////////////////VOID MAIN////////////////////////////// diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index ede4faa..e87d11b 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -220,15 +220,6 @@ vec2 decodeVec2(float a){ #define DEFERRED_BACKGROUND_REFLECTION #define DEFERRED_ROUGH_REFLECTION -#ifdef DEFERRED_SPECULAR -#endif -#ifdef DEFERRED_ENVIORNMENT_REFLECTION -#endif -#ifdef DEFERRED_BACKGROUND_REFLECTION -#endif -#ifdef DEFERRED_ROUGH_REFLECTION -#endif - #include "/lib/specular.glsl" diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 7a7356c..1f3a52d 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -192,14 +192,8 @@ SHADER_VERSION_LABEL \ screen.Resource_Pack_Support = [Reflections] [Emissives] [Subsurface_Scattering] [POM] [Porosity] MATERIAL_AO RESOURCEPACK_SKY screen.Reflections.columns=2 - # screen.Reflections = Specular_Reflections Sun_specular_Strength Screen_Space_Reflections reflection_quality Rough_reflections Roughness_Threshold Sky_reflection Dynamic_SSR_quality - screen.Reflections = \ - DEFERRED_SPECULAR FORWARD_SPECULAR \ - DEFERRED_ENVIORNMENT_REFLECTION FORWARD_ENVIORNMENT_REFLECTION \ - DEFERRED_BACKGROUND_REFLECTION FORWARD_BACKGROUND_REFLECTION \ - DEFERRED_ROUGH_REFLECTION FORWARD_ROUGH_REFLECTION \ - Sun_specular_Strength Roughness_Threshold - + screen.Reflections = Specular_Reflections Sun_specular_Strength Screen_Space_Reflections reflection_quality Rough_reflections Roughness_Threshold Sky_reflection Dynamic_SSR_quality + screen.Subsurface_Scattering.columns=1 screen.Subsurface_Scattering = SSS_TYPE sss_density_multiplier sss_absorbance_multiplier LabSSS_Curve MISC_BLOCK_SSS MOB_SSS Ambient_SSS ambientsss_brightness From 31bbc062b71fb5a8bcf3d4c1bf8ffacb0fe3926b Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 095/101] Revert "fix world curvature on DH LODS" This reverts commit ebbd25cd27ba85e8d515a19a38e97e8d0272e8ba. --- shaders/dimensions/DH_solid.vsh | 18 +----------------- shaders/dimensions/DH_translucent.fsh | 3 +-- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/shaders/dimensions/DH_solid.vsh b/shaders/dimensions/DH_solid.vsh index bd19765..38e1e37 100644 --- a/shaders/dimensions/DH_solid.vsh +++ b/shaders/dimensions/DH_solid.vsh @@ -63,23 +63,7 @@ void main() { vec4 viewPos = gl_ModelViewMatrix * vPos; localPos = gbufferModelViewInverse * viewPos; - - #ifdef PLANET_CURVATURE - vec4 worldPos = localPos; - - float curvature = length(worldPos) / (16*8); - worldPos.y -= curvature*curvature * CURVATURE_AMOUNT; - - worldPos = gbufferModelView * worldPos; - - gl_Position = dhProjection * worldPos; - #else - gl_Position = dhProjection * viewPos; - #endif - - - - + gl_Position = dhProjection * viewPos; #ifdef TAA_UPSCALING diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 1a52519..3b89972 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -5,9 +5,8 @@ #include "/lib/projections.glsl" #ifdef OVERWORLD_SHADER - #define WATER_SUN_SPECULAR +#define WATER_SUN_SPECULAR #endif - uniform vec2 texelSize; // uniform int moonPhase; uniform float frameTimeCounter; From 0ec2ffac951b3b72e1c7b4b72b2302420d6e7153 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 096/101] Revert "fix sun specular being turned off for DH water" This reverts commit e7401e9d9566260c0c37a0c2225b47cefe19e638. --- shaders/dimensions/DH_translucent.fsh | 3 --- 1 file changed, 3 deletions(-) diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 3b89972..0f9533f 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -4,9 +4,6 @@ #include "/lib/color_transforms.glsl" #include "/lib/projections.glsl" -#ifdef OVERWORLD_SHADER -#define WATER_SUN_SPECULAR -#endif uniform vec2 texelSize; // uniform int moonPhase; uniform float frameTimeCounter; From 25071e301071326795bcc6ec07fc177f103e7581 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 097/101] Revert "add controllable exposure brightening and darkening" This reverts commit 09a927db73c2b6117aa51a3aebc017b7b8e2cd41. --- shaders/dimensions/deferred.vsh | 2 +- shaders/lib/settings.glsl | 4 ++-- shaders/shaders.properties | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh index 07d9fc2..df35a2f 100644 --- a/shaders/dimensions/deferred.vsh +++ b/shaders/dimensions/deferred.vsh @@ -289,7 +289,7 @@ void main() { float expFunc = 0.5+0.5*tanh(log(L)); // float targetExposure = 1.0/log(L+1.05); - float targetExposure = (EXPOSURE_DARKENING * 0.35)/log(L+1.0 + EXPOSURE_BRIGHTENING * 0.05); + float targetExposure = 0.35/log(L+1.05); // mine // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 36b77b4..620c6b9 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -576,8 +576,8 @@ const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_ #define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] #define Exposure_Speed 1.0 // [0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] -#define EXPOSURE_DARKENING 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] -#define EXPOSURE_BRIGHTENING 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define MINUMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define MAXIMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define Fake_purkinje #define Purkinje_strength 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 1f3a52d..b6da807 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -134,7 +134,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders = EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders =VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -318,7 +318,7 @@ SHADER_VERSION_LABEL \ screen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR SCREENSHOT_MODE ### EXPOSURE screen.Exposure.columns = 1 - screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value EXPOSURE_DARKENING EXPOSURE_BRIGHTENING + screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value ### TONEMAPS screen.Tonemapping.columns = 1 screen.Tonemapping = TONEMAP USE_ACES_COLORSPACE_APPROXIMATION SATURATION CROSSTALK From 1f0517e876d177f929d0e3b02c7d4f403bcbc9e2 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 098/101] Revert "disable daily weather by default for now" This reverts commit 9094300a9aff61ee0b4b2bff917693a1cdba0ff0. --- shaders/lib/settings.glsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 620c6b9..1eabc33 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -402,7 +402,7 @@ uniform int moonPhase; #define HQ_CLOUDS -// #define Daily_Weather +#define Daily_Weather // #define CHOOSE_RANDOM_WEATHER_PROFILE #ifdef Daily_Weather From 51d696ea5f33ceddfadf9332b2de909287f21545 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 099/101] Revert "fix incorrect auto target exposure values" This reverts commit 718838d8b781290790301d287ef2f050c76d2177. --- shaders/dimensions/deferred.vsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh index df35a2f..5378d88 100644 --- a/shaders/dimensions/deferred.vsh +++ b/shaders/dimensions/deferred.vsh @@ -288,9 +288,9 @@ void main() { float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); float expFunc = 0.5+0.5*tanh(log(L)); - // float targetExposure = 1.0/log(L+1.05); - float targetExposure = 0.35/log(L+1.05); // mine - // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original + float targetExposure = 1.0/log(L+1.05); + // float targetExposure = 0.35/log(L+1.05); + // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; From 62be2ab09780e6a3723c90222dcd988e8aa849f5 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:39:26 +0100 Subject: [PATCH 100/101] Revert "intial changes for commit #495" This reverts commit 4869877f770434bcf79509ebf6ddb87af7393d4d. --- shaders/dimensions/DH_generic.fsh | 50 - shaders/dimensions/DH_generic.vsh | 52 - shaders/dimensions/DH_solid.fsh | 57 +- shaders/dimensions/DH_solid.vsh | 38 +- shaders/dimensions/DH_translucent.fsh | 65 +- shaders/dimensions/DH_translucent.vsh | 28 +- shaders/dimensions/all_particles.fsh | 37 +- shaders/dimensions/all_particles.vsh | 14 +- shaders/dimensions/all_solid.fsh | 99 +- shaders/dimensions/all_solid.vsh | 18 +- shaders/dimensions/all_translucent.fsh | 358 ++++--- shaders/dimensions/all_translucent.vsh | 17 +- shaders/dimensions/all_vanilla_emissives.fsh | 8 +- shaders/dimensions/composite.fsh | 218 ++-- shaders/dimensions/composite.vsh | 6 - shaders/dimensions/composite1.fsh | 766 +++++--------- shaders/dimensions/composite1.vsh | 15 +- shaders/dimensions/composite10.fsh | 2 +- shaders/dimensions/composite11.fsh | 129 +-- shaders/dimensions/composite12.fsh | 37 +- shaders/dimensions/composite2.fsh | 356 ++----- shaders/dimensions/composite2.vsh | 22 +- shaders/dimensions/composite3.fsh | 404 ++------ shaders/dimensions/composite3.vsh | 2 +- shaders/dimensions/composite5.fsh | 80 +- shaders/dimensions/deferred.fsh | 97 +- shaders/dimensions/deferred.vsh | 65 +- shaders/dimensions/deferred2.fsh | 12 +- shaders/dimensions/deferred2.vsh | 14 +- shaders/dimensions/final.fsh | 79 +- .../dimensions/fogBehindTranslucent_pass.fsh | 202 +--- .../dimensions/fogBehindTranslucent_pass.vsh | 19 +- shaders/lang/en_us.lang | 12 +- shaders/lang/pt_br.lang | 4 +- shaders/lang/ru_RU.lang | 4 +- shaders/lang/zh_cn.lang | 4 +- shaders/lib/ROBOBO_sky.glsl | 8 +- shaders/lib/Shadows.glsl | 15 +- shaders/lib/TAA_jitter.glsl | 71 +- shaders/lib/climate_settings.glsl | 7 +- shaders/lib/color_transforms.glsl | 12 +- shaders/lib/diffuse_lighting.glsl | 31 +- shaders/lib/end_fog.glsl | 37 +- shaders/lib/indirect_lighting_effects.glsl | 187 ++-- shaders/lib/lpv_render.glsl | 13 +- shaders/lib/nether_fog.glsl | 10 +- shaders/lib/overworld_fog.glsl | 352 ++++++- shaders/lib/settings.glsl | 96 +- shaders/lib/sky_gradient.glsl | 64 +- shaders/lib/specular.glsl | 502 ++-------- shaders/lib/volumetricClouds.glsl | 938 +++++++++++------- shaders/shaders.properties | 63 +- shaders/world0/dh_generic.fsh | 5 - shaders/world0/dh_generic.vsh | 5 - shaders/world0/shadow.fsh | 11 +- shaders/world0/shadow.vsh | 17 +- 56 files changed, 2279 insertions(+), 3555 deletions(-) delete mode 100644 shaders/dimensions/DH_generic.fsh delete mode 100644 shaders/dimensions/DH_generic.vsh delete mode 100644 shaders/world0/dh_generic.fsh delete mode 100644 shaders/world0/dh_generic.vsh diff --git a/shaders/dimensions/DH_generic.fsh b/shaders/dimensions/DH_generic.fsh deleted file mode 100644 index c737d31..0000000 --- a/shaders/dimensions/DH_generic.fsh +++ /dev/null @@ -1,50 +0,0 @@ -#include "/lib/settings.glsl" - -varying vec4 pos; -varying vec4 gcolor; - -uniform vec2 texelSize; -uniform vec3 cameraPosition; -uniform sampler2D depthtex1; - -uniform mat4 gbufferModelViewInverse; -uniform float far; -uniform int frameCounter; - -vec3 toLinear(vec3 sRGB){ - return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); -} - -float interleaved_gradientNoise_temporal(){ - #ifdef TAA - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); - #else - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); - #endif -} -/* RENDERTARGETS:2 */ -void main() { -if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) { - - vec3 viewPos = pos.xyz; - vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; - - float falloff = exp(-10.0 * (1.0-clamp(1.0 - playerPos.y/5000.0,0.0,1.0))); - - - #ifdef DH_OVERDRAW_PREVENTION - #if OVERDRAW_MAX_DISTANCE == 0 - float maxOverdrawDistance = far; - #else - float maxOverdrawDistance = OVERDRAW_MAX_DISTANCE; - #endif - - if(length(playerPos) < clamp(far-16*4, 16, maxOverdrawDistance) || texture2D(depthtex1, gl_FragCoord.xy*texelSize).x < 1.0){ discard; return;} - #endif - - - vec3 Albedo = toLinear(gcolor.rgb) ; - - gl_FragData[0] = vec4(Albedo * Emissive_Brightness * 0.1, gcolor.a); -} -} \ No newline at end of file diff --git a/shaders/dimensions/DH_generic.vsh b/shaders/dimensions/DH_generic.vsh deleted file mode 100644 index 1c1d4f2..0000000 --- a/shaders/dimensions/DH_generic.vsh +++ /dev/null @@ -1,52 +0,0 @@ -#include "/lib/settings.glsl" -#include "/lib/res_params.glsl" - -varying vec4 pos; -varying vec4 gcolor; - -uniform vec2 texelSize; -uniform int framemod8; - -#if DOF_QUALITY == 5 - uniform int hideGUI; - uniform int frameCounter; - uniform float aspectRatio; - uniform float screenBrightness; - uniform float far; - #include "/lib/bokeh.glsl" -#endif - -#include "/lib/TAA_jitter.glsl" - - -void main() { - gl_Position = ftransform(); - - #ifdef TAA_UPSCALING - gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; - #endif - #ifdef TAA - gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; - #endif - - pos = gl_ModelViewMatrix * gl_Vertex; - gcolor = gl_Color; - - #if DOF_QUALITY == 5 - vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); - jitter = rotate(radians(float(frameCounter))) * jitter; - jitter.y *= aspectRatio; - jitter.x *= DOF_ANAMORPHIC_RATIO; - - #if MANUAL_FOCUS == -2 - float focusMul = 0; - #elif MANUAL_FOCUS == -1 - float focusMul = gl_Position.z + (far / 3.0) - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); - #else - float focusMul = gl_Position.z + (far / 3.0) - MANUAL_FOCUS; - #endif - - vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; - gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0); - #endif -} \ No newline at end of file diff --git a/shaders/dimensions/DH_solid.fsh b/shaders/dimensions/DH_solid.fsh index 5aeba68..ad1136c 100644 --- a/shaders/dimensions/DH_solid.fsh +++ b/shaders/dimensions/DH_solid.fsh @@ -2,7 +2,6 @@ varying vec4 pos; -varying vec4 localPos; varying vec4 gcolor; varying vec2 lightmapCoords; varying vec4 normals_and_materials; @@ -11,7 +10,6 @@ flat varying float EMISSIVE; flat varying int dh_material_id; uniform float far; -uniform float nightVision; // uniform int hideGUI; uniform mat4 gbufferModelView; uniform mat4 gbufferModelViewInverse; @@ -55,7 +53,6 @@ float encodeVec2(float x,float y){ uniform mat4 gbufferProjection; uniform mat4 gbufferProjectionInverse; -uniform vec3 cameraPosition; vec3 toScreenSpace(vec3 p) { vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); @@ -98,48 +95,7 @@ float densityAtPos(in vec3 pos){ return mix(xy.r,xy.g, f.y); } - -// https://gitlab.com/jeseibel/distant-horizons-core/-/blob/main/core/src/main/resources/shaders/flat_shaded.frag?ref_type=heads -// Property of Distant Horizons [mod] - -const int noiseSteps = 4; -const float noiseIntensity = 10.0; -const int noiseDropoff = 1024; - -float rand(float co) { return fract(sin(co*(91.3458)) * 47453.5453); } -float rand(vec2 co) { return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); } -float rand(vec3 co) { return rand(co.xy + rand(co.z)); } - -vec3 quantize(const in vec3 val, const in int stepSize) { - return floor(val * stepSize) / stepSize; -} - -vec4 applyNoise(in vec4 fragColor, const in vec3 viewPos, const in float viewDist) { - // vec3 vertexNormal = normalize(cross(dFdy(vPos.xyz), dFdx(vPos.xyz))); - // // This bit of code is required to fix the vertex position problem cus of floats in the verted world position varuable - // vec3 fixedVPos = vPos.xyz + vertexNormal * 0.001; - - float noiseAmplification = noiseIntensity * 0.01; - float lum = (fragColor.r + fragColor.g + fragColor.b) / 3.0; - noiseAmplification = (1.0 - pow(lum * 2.0 - 1.0, 2.0)) * noiseAmplification; // Lessen the effect on depending on how dark the object is, equasion for this is -(2x-1)^{2}+1 - noiseAmplification *= fragColor.a; // The effect would lessen on transparent objects - - // Random value for each position - float randomValue = rand(quantize(viewPos, noiseSteps)) - * 2.0 * noiseAmplification - noiseAmplification; - - // Modifies the color - // A value of 0 on the randomValue will result in the original color, while a value of 1 will result in a fully bright color - vec3 newCol = fragColor.rgb + (1.0 - fragColor.rgb) * randomValue; - newCol = clamp(newCol, 0.0, 1.0); - - if (noiseDropoff != 0) { - float distF = min(viewDist / noiseDropoff, 1.0); - newCol = mix(newCol, fragColor.rgb, distF); // The further away it gets, the less noise gets applied - } - - return vec4(newCol,1.0); -} +uniform vec3 cameraPosition; /* RENDERTARGETS:1,7,8 */ void main() { @@ -151,7 +107,7 @@ void main() { float maxOverdrawDistance = OVERDRAW_MAX_DISTANCE; #endif - if(clamp(1.0-length(localPos.xyz)/clamp(far - 32.0,32.0,maxOverdrawDistance),0.0,1.0) > 0.0 ){ + if(clamp(1.0-length(pos.xyz)/clamp(far - 32.0,32.0,maxOverdrawDistance),0.0,1.0) > 0.0 ){ discard; return; } @@ -164,14 +120,11 @@ void main() { // PackLightmaps.y *= 1.05; PackLightmaps = min(max(PackLightmaps,0.0)*1.05,1.0); - vec4 data1 = clamp( encode(viewToWorld(normals), PackLightmaps), 0.0, 1.0); + vec4 data1 = clamp( encode(normals, PackLightmaps), 0.0, 1.0); // alpha is material masks, set it to 0.65 to make a DH LODs mask. - #ifdef DH_NOISE_TEXTURE - vec4 Albedo = applyNoise(gcolor, localPos.rgb+cameraPosition, length(localPos.xyz)); - #else - vec4 Albedo = vec4(gcolor.rgb, 1.0); - #endif + vec4 Albedo = vec4(gcolor.rgb, 1.0); + // vec3 worldPos = mat3(gbufferModelViewInverse)*pos.xyz + cameraPosition; // worldPos = (worldPos*vec3(1.0,1./48.,1.0)/4) ; // worldPos = floor(worldPos * 4.0 + 0.001) / 32.0; diff --git a/shaders/dimensions/DH_solid.vsh b/shaders/dimensions/DH_solid.vsh index 38e1e37..bab0fb9 100644 --- a/shaders/dimensions/DH_solid.vsh +++ b/shaders/dimensions/DH_solid.vsh @@ -2,14 +2,12 @@ #include "/lib/res_params.glsl" varying vec4 pos; -varying vec4 localPos; varying vec4 gcolor; varying vec2 lightmapCoords; varying vec4 normals_and_materials; flat varying float SSSAMOUNT; flat varying float EMISSIVE; flat varying int dh_material_id; -uniform float nightVision; uniform vec2 texelSize; uniform int framemod8; @@ -27,9 +25,9 @@ uniform float far; +/* uniform mat4 gbufferModelViewInverse; uniform mat4 gbufferModelView; - uniform float far; uniform mat4 dhProjection; uniform vec3 cameraPosition; @@ -39,45 +37,38 @@ uniform vec3 cameraPosition; vec4 toClipSpace3(vec3 viewSpacePosition) { return vec4(projMAD(dhProjection, viewSpacePosition),-viewSpacePosition.z); } +*/ #define SEASONS_VSH #define DH_SEASONS #include "/lib/climate_settings.glsl" void main() { + gl_Position = ftransform(); - // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; - // vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; - // #ifdef PLANET_CURVATURE - // float curvature = length(worldpos) / (16*8); - // worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; - // #endif - // position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + /* + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; - // gl_Position = toClipSpace3(position); - - vec4 vPos = gl_Vertex; - - vec3 cameraOffset = fract(cameraPosition); - vPos.xyz = floor(vPos.xyz + cameraOffset + 0.5) - cameraOffset; - - vec4 viewPos = gl_ModelViewMatrix * vPos; - localPos = gbufferModelViewInverse * viewPos; - gl_Position = dhProjection * viewPos; + float cellSize = 32*2; + vec3 modulusWorldPos = vec3(worldpos.x,worldpos.y,worldpos.z) + fract(cameraPosition/cellSize)*cellSize - cellSize*0.5; + worldpos.y -= (clamp(1.0-length(modulusWorldPos)/max(far-32,0.0),0.0,1.0)) * 50.0; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + gl_Position = toClipSpace3(position); + */ #ifdef TAA_UPSCALING gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; #endif - #ifdef TAA gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; #endif - lightmapCoords = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy; + lightmapCoords = gl_MultiTexCoord1.xy; // is this even correct? lol' gcolor = gl_Color; - + pos = gl_ModelViewMatrix * gl_Vertex; EMISSIVE = 0.0; if(dhMaterialId == DH_BLOCK_ILLUMINATED || gl_MultiTexCoord1.x >= 0.95) EMISSIVE = 0.5; @@ -94,6 +85,7 @@ void main() { normals_and_materials = vec4(normalize(gl_NormalMatrix * gl_Normal), MATERIALS); dh_material_id = dhMaterialId; + #if defined Seasons && defined OVERWORLD_SHADER YearCycleColor(gcolor.rgb, gl_Color.rgb, dhMaterialId == DH_BLOCK_LEAVES, dhMaterialId == DH_BLOCK_GRASS); #endif diff --git a/shaders/dimensions/DH_translucent.fsh b/shaders/dimensions/DH_translucent.fsh index 0f9533f..950b54a 100644 --- a/shaders/dimensions/DH_translucent.fsh +++ b/shaders/dimensions/DH_translucent.fsh @@ -117,22 +117,10 @@ uniform int isEyeInWater; uniform float rainStrength; #ifdef OVERWORLD_SHADER - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif -#ifndef OVERWORLD_SHADER -#undef WATER_SUN_SPECULAR -#endif float GGX(vec3 n, vec3 v, vec3 l, float r, float f0) { r = max(pow(r,2.5), 0.0001); @@ -212,30 +200,16 @@ vec3 rayTrace(vec3 dir, vec3 position,float dither, float fresnel, bool inwater) return vec3(1.1); } - -float interleaved_gradientNoise_temporal(){ - #ifdef TAA - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); - #else - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); - #endif -} -float interleaved_gradientNoise(){ - vec2 coord = gl_FragCoord.xy; - float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); - return noise; -} float R2_dither(){ - vec2 coord = gl_FragCoord.xy ; - - #ifdef TAA - coord += + (frameCounter%40000) * 2.0; - #endif - + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } - +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715) ) ); + return noise ; +} vec3 viewToWorld(vec3 viewPos) { vec4 pos; pos.xyz = viewPos; @@ -272,10 +246,6 @@ vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ return normalize(bump*tbnMatrix); } -#define FORWARD_SPECULAR -#define FORWARD_ENVIORNMENT_REFLECTION -#define FORWARD_BACKGROUND_REFLECTION -#define FORWARD_ROUGH_REFLECTION /* RENDERTARGETS:2,7 */ void main() { @@ -340,7 +310,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/2400.0; + vec3 DirectLightColor = lightCol.rgb/80.0; float NdotL = clamp(dot(normals, normalize(WsunVec2)),0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); @@ -372,14 +342,13 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) Shadows = shadow2D(shadow, projectedShadowPosition + vec3(0.0,0.0, smallbias)).x; } #endif - - #ifdef CLOUDS_SHADOWS - Shadows *= GetCloudShadow(playerPos + cameraPosition, WsunVec); - #endif + #ifdef CLOUDS_SHADOWS + Shadows *= pow(GetCloudShadow(playerPos),3); + #endif Direct_lighting = DirectLightColor * NdotL * Shadows; - vec3 AmbientLightColor = averageSkyCol_Clouds/900.0; + vec3 AmbientLightColor = averageSkyCol_Clouds/30.0; vec3 ambientcoefs = normals_and_materials.xyz / dot(abs(normals_and_materials.xyz), vec3(1.0)); float SkylightDir = ambientcoefs.y*1.5; @@ -397,7 +366,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo; // specular - #ifdef FORWARD_SPECULAR + #ifdef WATER_REFLECTIONS vec3 Reflections_Final = vec3(0.0); vec4 Reflections = vec4(0.0); vec3 BackgroundReflection = FinalColor; @@ -417,8 +386,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifdef SNELLS_WINDOW if(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0); #endif - #if defined FORWARD_ENVIORNMENT_REFLECTION && defined DH_SCREENSPACE_REFLECTIONS - vec3 rtPos = rayTrace(reflectedVector, viewPos, interleaved_gradientNoise_temporal(), fresnel, false); + #if defined SCREENSPACE_REFLECTIONS && defined DH_SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector, viewPos, interleaved_gradientNoise(), fresnel, false); if (rtPos.z < 1.){ vec3 previousPosition = mat3(gbufferModelViewInverse) * DH_toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; @@ -429,11 +398,11 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) } } #endif - #ifdef FORWARD_BACKGROUND_REFLECTION - BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 1200.0; + #ifdef WATER_BACKGROUND_SPECULAR + BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 30.0; #endif #ifdef WATER_SUN_SPECULAR - SunReflection = (DirectLightColor * Shadows) * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); + SunReflection = Direct_lighting * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); #endif Reflections_Final = mix(BackgroundReflection, Reflections.rgb, Reflections.a) * fresnel; diff --git a/shaders/dimensions/DH_translucent.vsh b/shaders/dimensions/DH_translucent.vsh index 4d9372f..458b070 100644 --- a/shaders/dimensions/DH_translucent.vsh +++ b/shaders/dimensions/DH_translucent.vsh @@ -14,7 +14,7 @@ flat varying vec3 averageSkyCol_Clouds; flat varying vec4 lightCol; #ifdef OVERWORLD_SHADER - #ifdef Daily_Weather + #if defined Daily_Weather flat varying vec4 dailyWeatherParams0; flat varying vec4 dailyWeatherParams1; #endif @@ -56,26 +56,11 @@ vec4 toClipSpace3(vec3 viewSpacePosition) { } void main() { - gl_Position = dhProjection * gl_ModelViewMatrix * gl_Vertex; + gl_Position = ftransform(); vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; - - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; - - // worldpos.y -= length(worldpos)/(16*2); - - #ifdef PLANET_CURVATURE - float curvature = length(worldpos) / (16*8); - worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; - #endif - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; - - gl_Position = toClipSpace3(position); pos = gl_ModelViewMatrix * gl_Vertex; - - // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; - isWater = 0; @@ -83,13 +68,13 @@ void main() { isWater = 1; // offset water to not look like a full cube - // vec3 worldpos = mat3(gbufferModelViewInverse) * position;// + gbufferModelViewInverse[3].xyz ; - // worldpos.y -= 1.8/16.0; - // position = mat3(gbufferModelView) * worldpos;// + gbufferModelView[3].xyz; + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz ; + worldpos.y -= 1.8/16.0; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; } - // gl_Position = toClipSpace3(position); + gl_Position = toClipSpace3(position); normals_and_materials = vec4(normalize(gl_Normal), 1.0); @@ -98,6 +83,7 @@ void main() { + lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 2bc5656..2a497d7 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -62,25 +62,17 @@ uniform vec2 texelSize; uniform ivec2 eyeBrightnessSmooth; uniform float rainStrength; -uniform float nightVision; - flat varying float HELD_ITEM_BRIGHTNESS; - +#ifndef OVERWORLD_SHADER + uniform float nightVision; +#endif #include "/lib/util.glsl" #ifdef OVERWORLD_SHADER - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - - #define CLOUDSHADOWSONLY + #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif @@ -231,8 +223,8 @@ vec3 toClipSpace3(vec3 viewSpacePosition) { } flat varying vec3 WsunVec2; - const float mincoord = 1.0/4096.0; - const float maxcoord = 1.0-mincoord; +const float mincoord = 1.0/4096.0; +const float maxcoord = 1.0-mincoord; uniform sampler2D normals; varying vec4 tangent; @@ -381,12 +373,7 @@ void main() { #else vec3 playerCamPos = cameraPosition; #endif - // lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); - if(HELD_ITEM_BRIGHTNESS > 0.0){ - float pointLight = clamp(1.0-length((feetPlayerPos+cameraPosition)-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0); - lightmap.x = mix(lightmap.x, HELD_ITEM_BRIGHTNESS, pointLight*pointLight); - } - + lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); #endif #ifdef WEATHER @@ -415,7 +402,7 @@ void main() { if(lightmap.x >= 0.9) Torch_Color *= LIT_PARTICLE_BRIGHTNESS; #ifdef OVERWORLD_SHADER - directLightColor = lightCol.rgb/2400.0; + directLightColor = lightCol.rgb/80.0; float Shadows = 1.0; vec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; @@ -430,7 +417,7 @@ void main() { Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); #ifdef CLOUDS_SHADOWS - Shadows *= GetCloudShadow(feetPlayerPos+cameraPosition, WsunVec); + Shadows *= GetCloudShadow(feetPlayerPos); #endif Direct_lighting = directLightColor * Shadows; @@ -439,7 +426,7 @@ void main() { Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; #endif - AmbientLightColor = averageSkyCol_Clouds / 900.0; + AmbientLightColor = averageSkyCol_Clouds / 30.0; #ifdef IS_IRIS AmbientLightColor *= 2.5; @@ -451,11 +438,11 @@ void main() { #endif #ifdef NETHER_SHADER - Indirect_lighting = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0; + Indirect_lighting = skyCloudsFromTexLOD2(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 30.0; #endif #ifdef END_SHADER - Indirect_lighting = vec3(0.3,0.6,1.0) * 0.1; + Indirect_lighting = vec3(0.3,0.6,1.0) * 0.5; #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING diff --git a/shaders/dimensions/all_particles.vsh b/shaders/dimensions/all_particles.vsh index 115f358..20114e5 100644 --- a/shaders/dimensions/all_particles.vsh +++ b/shaders/dimensions/all_particles.vsh @@ -23,12 +23,10 @@ flat varying float exposure; flat varying vec3 averageSkyCol_Clouds; flat varying vec4 lightCol; flat varying vec3 WsunVec; - - #ifdef Daily_Weather + #if defined Daily_Weather flat varying vec4 dailyWeatherParams0; flat varying vec4 dailyWeatherParams1; #endif - #endif @@ -108,12 +106,12 @@ void main() { vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; - bool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.99; + bool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.94; if(!istopv){ - worldpos.xyz -= cameraPosition - vec3(2.0,0.0,2.0) * min(max(eyeBrightnessSmooth.y/240.0-0.95,0.0)*11.0,1.0); + worldpos.xyz -= cameraPosition; }else{ - worldpos.xyz -= cameraPosition ; + worldpos.xyz -= cameraPosition + vec3(2.0,0.0,2.0); } position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; @@ -142,8 +140,8 @@ void main() { WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); #if defined Daily_Weather - dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0) / 2.0, 0.0); + dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0) / 2.0, 0.0); #endif #endif diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index 096f728..5fcaa59 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -94,40 +94,25 @@ flat varying int SIGN; flat varying float HELD_ITEM_BRIGHTNESS; uniform float noPuddleAreas; -uniform float nightVision; + // float interleaved_gradientNoise(){ // return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); // } - float interleaved_gradientNoise_temporal(){ - #ifdef TAA - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); - #else - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); - #endif + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } -float R2_dither(){ - vec2 coord = gl_FragCoord.xy ; - - #ifdef TAA - coord += + (frameCounter%40000) * 2.0; - #endif - - vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha.x * coord.x + alpha.y * coord.y ) ; -} float blueNoise(){ - #ifdef TAA - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); - #else - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); - #endif + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; } mat3 inverseMatrix(mat3 m) { @@ -326,8 +311,7 @@ void main() { vec2 tempOffset = offsets[framemod8]; vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); - vec3 playerpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; - vec3 worldpos = playerpos + cameraPosition; + vec3 worldpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; float torchlightmap = lmtexcoord.z; @@ -338,11 +322,8 @@ void main() { vec3 playerCamPos = cameraPosition; #endif - // if(HELD_ITEM_BRIGHTNESS > 0.0) torchlightmap = max(torchlightmap, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(worldpos-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); - if(HELD_ITEM_BRIGHTNESS > 0.0){ - float pointLight = clamp(1.0-length(worldpos-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0); - torchlightmap = mix(torchlightmap, HELD_ITEM_BRIGHTNESS, pointLight*pointLight); - } + if(HELD_ITEM_BRIGHTNESS > 0.0) torchlightmap = max(torchlightmap, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(worldpos-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); + #ifdef HAND torchlightmap *= 0.9; #endif @@ -350,17 +331,17 @@ void main() { float lightmap = clamp( (lmtexcoord.w-0.9) * 10.0,0.,1.); - // float rainfall = 1.0; - // float Puddle_shape = 0.0; + float rainfall = 0.0; + float Puddle_shape = 0.0; - // #if defined Puddles && defined WORLD && !defined ENTITIES && !defined HAND - // // rainfall = rainStrength * noPuddleAreas * lightmap; + #if defined Puddles && defined WORLD && !defined ENTITIES && !defined HAND + rainfall = rainStrength * noPuddleAreas * lightmap; - // // Puddle_shape = clamp(lightmap - exp(-15.0 * pow(texture2D(noisetex, worldpos.xz * (0.020 * Puddle_Size) ).b,5.0)),0.0,1.0); - // // Puddle_shape *= clamp( viewToWorld(normal).y*0.5+0.5,0.0,1.0); - // // Puddle_shape *= rainStrength * noPuddleAreas ; + Puddle_shape = clamp(lightmap - exp(-15.0 * pow(texture2D(noisetex, worldpos.xz * (0.020 * Puddle_Size) ).b,5.0)),0.0,1.0); + Puddle_shape *= clamp( viewToWorld(normal).y*0.5+0.5,0.0,1.0); + Puddle_shape *= rainStrength * noPuddleAreas ; - // #endif + #endif vec2 adjustedTexCoord = lmtexcoord.xy; @@ -370,38 +351,31 @@ void main() { adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; // vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); vec3 viewVector = normalize(tbnMatrix*fragpos); - float dist = length(playerpos); - - float falloff = min(max(1.0-dist/MAX_OCCLUSION_DISTANCE,0.0) * 2.0,1.0); - - falloff = pow(1.0-pow(1.0-falloff,1.0),2.0); - - // falloff = 1; + float dist = length(fragpos); float maxdist = MAX_OCCLUSION_DISTANCE; if(!ifPOM) maxdist = 0.0; gl_FragDepth = gl_FragCoord.z; - if (falloff > 0.0) { + if (dist < maxdist) { float depthmap = readNormal(vtexcoord.st).a; float used_POM_DEPTH = 1.0; - float pomdepth = POM_DEPTH*falloff; if ( viewVector.z < 0.0 && depthmap < 0.9999 && depthmap > 0.00001) { float noise = blueNoise(); #ifdef Adaptive_Step_length - vec3 interval = (viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS * pomdepth) * clamp(1.0-pow(depthmap,2),0.1,1.0); + vec3 interval = (viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS * POM_DEPTH) * clamp(1.0-pow(depthmap,2),0.1,1.0); used_POM_DEPTH = 1.0; #else - vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*pomdepth; + vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*POM_DEPTH; #endif vec3 coord = vec3(vtexcoord.st , 1.0); coord += interval * noise * used_POM_DEPTH; float sumVec = noise; - for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - pomdepth + pomdepth * readNormal(coord.st).a ) < coord.p && coord.p >= 0.0; ++loopCount) { + for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH * readNormal(coord.st).a ) < coord.p && coord.p >= 0.0; ++loopCount) { coord = coord + interval * used_POM_DEPTH; sumVec += used_POM_DEPTH; } @@ -429,7 +403,7 @@ void main() { //////////////////////////////// //////////////////////////////// float textureLOD = bias(); vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color; - // Albedo.rgb = vec3(1.0) * min(max(exp(-15.0 * pow(1.0-luma(Albedo.rgb),3.0)) - 0.2,0.0)*5.0,1.0); + #if defined HAND if (Albedo.a < 0.1) discard; #endif @@ -509,7 +483,7 @@ void main() { NormalTex.xy = NormalTex.xy * 2.0-1.0; NormalTex.z = sqrt(max(1.0 - dot(NormalTex.xy, NormalTex.xy), 0.0)); - normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0); + normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0-Puddle_shape); #endif //////////////////////////////// //////////////////////////////// @@ -519,8 +493,8 @@ void main() { #ifdef WORLD vec4 SpecularTex = texture2D_POMSwitch(specular, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM,textureLOD); - // SpecularTex.r = max(SpecularTex.r, rainfall); - // SpecularTex.g = max(SpecularTex.g, max(Puddle_shape*0.02,0.02)); + SpecularTex.r = max(SpecularTex.r, rainfall); + SpecularTex.g = max(SpecularTex.g, max(Puddle_shape*0.02,0.02)); gl_FragData[1].rg = SpecularTex.rg; @@ -569,23 +543,24 @@ void main() { //////////////////////////////// //////////////////////////////// #ifdef WORLD - // #ifdef Puddles - // float porosity = 0.4; + #ifdef Puddles + float porosity = 0.4; - // #ifdef Porosity - // porosity = SpecularTex.z >= 64.5/255.0 ? 0.0 : (SpecularTex.z*255.0/64.0)*0.65; - // #endif + #ifdef Porosity + porosity = SpecularTex.z >= 64.5/255.0 ? 0.0 : (SpecularTex.z*255.0/64.0)*0.65; + #endif - // // if(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity); - // #endif + if(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity); + #endif // apply noise to lightmaps to reduce banding. vec2 PackLightmaps = vec2(torchlightmap, lmtexcoord.w); + vec4 data1 = clamp( encode(viewToWorld(normal), PackLightmaps), 0.0, 1.0); - + gl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x), encodeVec2(Albedo.y,data1.y), encodeVec2(Albedo.z,data1.z), encodeVec2(data1.w,Albedo.w)); - gl_FragData[2] = vec4(viewToWorld(FlatNormals) * 0.5 + 0.5, VanillaAO); + gl_FragData[2] = vec4(FlatNormals * 0.5 + 0.5, VanillaAO); #endif } \ No newline at end of file diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 32f8074..89abca9 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -83,7 +83,7 @@ flat varying int SIGN; // in vec3 at_velocity; // out vec3 velocity; -uniform float nightVision; + uniform mat4 gbufferModelView; uniform mat4 gbufferModelViewInverse; @@ -198,8 +198,6 @@ void main() { VanillaAO = 1.0 - clamp(color.a,0,1); if (color.a < 0.3) color.a = 1.0; // fix vanilla ao on some custom block models. - - /////// ----- RANDOM STUFF ----- /////// // gl_TextureMatrix[0] for animated things like charged creepers @@ -243,7 +241,6 @@ void main() { NameTags = 0; #ifdef ENTITIES - // disallow POM to work on item frames. if(entityId == ENTITY_ITEM_FRAME) SIGN = 1; @@ -300,7 +297,7 @@ void main() { mc_Entity.x == BLOCK_AMETHYST_BUD_MEDIUM || mc_Entity.x == BLOCK_AMETHYST_BUD_LARGE || mc_Entity.x == BLOCK_AMETHYST_CLUSTER || mc_Entity.x == BLOCK_BAMBOO || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_VINE ) { - SSSAMOUNT = 0.0; + SSSAMOUNT = 0.75; } // low #ifdef MISC_BLOCK_SSS @@ -331,7 +328,6 @@ void main() { #endif - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; #ifdef WAVY_PLANTS // also use normal, so up/down facing geometry does not get detatched from its model parts. @@ -350,24 +346,18 @@ void main() { ) && abs(position.z) < 64.0 ){ + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; vec3 UnalteredWorldpos = worldpos; // apply displacement for waving plant blocks worldpos += calcMovePlants(worldpos + cameraPosition) * max(lmtexcoord.w,0.5); - // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly if(mc_Entity.x == BLOCK_AIR_WAVING) worldpos = UnalteredWorldpos + calcMoveLeaves(worldpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; } #endif - - #ifdef PLANET_CURVATURE - float curvature = length(worldpos) / (16*8); - worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; - #endif - - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; gl_Position = toClipSpace3(position); #endif diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index b987a77..8d7910a 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -36,6 +36,7 @@ uniform vec4 entityColor; flat varying float HELD_ITEM_BRIGHTNESS; +const bool colortex4MipmapEnabled = true; uniform sampler2D noisetex; uniform sampler2D depthtex1; uniform sampler2D depthtex0; @@ -83,15 +84,11 @@ uniform float rainStrength; uniform float skyIntensityNight; uniform float skyIntensity; uniform ivec2 eyeBrightnessSmooth; -uniform float nightVision; - uniform int frameCounter; uniform float frameTimeCounter; uniform vec2 texelSize; uniform int framemod8; -uniform float viewWidth; -uniform float viewHeight; uniform mat4 gbufferPreviousModelView; uniform vec3 previousCameraPosition; @@ -113,18 +110,11 @@ uniform vec3 nsunColor; #ifdef OVERWORLD_SHADER flat varying float Flashing; #include "/lib/lightning_stuff.glsl" - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - + #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" - +#else + uniform float nightVision; #endif #ifdef END_SHADER @@ -142,12 +132,14 @@ uniform vec3 nsunColor; #include "/lib/diffuse_lighting.glsl" +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; +} float interleaved_gradientNoise_temporal(){ - #ifdef TAA - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); - #else - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); - #endif + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; @@ -155,27 +147,20 @@ float interleaved_gradientNoise(){ return noise; } float R2_dither(){ - vec2 coord = gl_FragCoord.xy ; - - #ifdef TAA - coord += + (frameCounter%40000) * 2.0; - #endif - + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } -float blueNoise(){ - #ifdef TAA - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); - #else - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); - #endif -} - #include "/lib/TAA_jitter.glsl" + + + + + + #define PW_DEPTH 1.5 //[0.5 1.0 1.5 2.0 2.5 3.0] #define PW_POINTS 2 //[2 4 6 8 16 32] @@ -254,10 +239,91 @@ float encodeVec2(float x,float y){ } +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } +vec3 rayTrace(vec3 dir, vec3 position,float dither, float fresnel, bool inwater, inout float reflectLength){ + + float quality = mix(15,SSR_STEPS,fresnel); + + // quality = SSR_STEPS; + + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality * vec3(RENDER_SCALE,1.0); + + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + + spos.xy += offsets[framemod8]*texelSize*0.5/RENDER_SCALE; + + float dist = 1.0 + clamp(position.z*position.z/50.0,0,2); // shrink sample size as distance increases + for (int i = 0; i <= int(quality); i++) { + + // decode depth buffer + // float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0); + + float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4.0),0).a/65000.0); + sp = invLinZ(sp); + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)) return vec3(spos.xy/RENDER_SCALE,sp); + + + + + spos += stepv; + //small bias + if(inwater) { + minZ = maxZ-0.00035/ld(spos.z); + }else{ + minZ = maxZ-0.0001/max(ld(spos.z), (0.0 + position.z*position.z*0.001)); + } + maxZ += stepv.z; + + + reflectLength += 1.0 / quality; // for shit + } + + return vec3(1.1); +} + +float GGX(vec3 n, vec3 v, vec3 l, float r, float f0) { + r = max(pow(r,2.5), 0.0001); + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.) ; + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + + float F = f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + + + uniform float dhFarPlane; #include "/lib/DistantHorizons_projections.glsl" @@ -360,19 +426,12 @@ void Emission( float Emission, float exposure ){ - // float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); - if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); // old method.... idk why + float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * Emissive_Brightness * autoBrightnessAdjust * 0.1, pow(Emission, Emissive_Curve)); // old method.... idk why } uniform vec3 eyePosition; -#define FORWARD_SPECULAR -#define FORWARD_ENVIORNMENT_REFLECTION -#define FORWARD_BACKGROUND_REFLECTION -#define FORWARD_ROUGH_REFLECTION - -#include "/lib/specular.glsl" - //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -427,9 +486,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) gl_FragData[0] = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) * color; float UnchangedAlpha = gl_FragData[0].a; - - // gl_FragData[0].a = pow(gl_FragData[0].a,3); - + #ifdef WhiteWorld gl_FragData[0].rgb = vec3(0.5); gl_FragData[0].a = 1.0; @@ -475,6 +532,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 worldSpaceNormal = viewToWorld(normal).xyz; vec2 TangentNormal = vec2(0); // for refractions + + vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, tangent.y, tangent2.y, normal.y, @@ -482,14 +541,17 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 NormalTex = vec3(texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).xy,0.0); NormalTex.xy = NormalTex.xy*2.0-1.0; - NormalTex.z = clamp(sqrt(1.0 - dot(NormalTex.xy, NormalTex.xy)),0.0,1.0); - + NormalTex.z = clamp(sqrt(1.0 - dot(NormalTex.xy, NormalTex.xy)),0.0,1.0) ; + + // tangent space normals for refraction + TangentNormal = NormalTex.xy*0.5+0.5; + #ifndef HAND if (isWater){ vec3 posxz = (mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz) + cameraPosition; // make the waves flow in the direction the water faces, except for perfectly up facing parts. - if(abs(worldSpaceNormal.y) < 0.9995) posxz.xz -= posxz.y + normalize(worldSpaceNormal.xz*10.0) * frameTimeCounter * 3.0 * WATER_WAVE_SPEED; + if(abs(worldSpaceNormal.y) < 0.9995) posxz.xz -= (posxz.y + frameTimeCounter*3 * WATER_WAVE_SPEED) * normalize(worldSpaceNormal.xz) ; posxz.xyz = getParallaxDisplacement(posxz); vec3 bump = normalize(getWaveNormal(posxz, false)); @@ -498,24 +560,22 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); NormalTex.xyz = bump; + + // tangent space normals for refraction + TangentNormal = (bump.xy/3.0)*0.5+0.5; } #endif - // tangent space normals for refraction - TangentNormal = NormalTex.xy; - normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0); - // TangentNormal = clamp(TangentNormal + (blueNoise()*2.0-1.0)*0.005,-1.0,1.0); - - gl_FragData[2] = vec4(encodeVec2(TangentNormal*0.5+0.5), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), 1.0); + gl_FragData[2] = vec4(encodeVec2(TangentNormal), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), 1.0); //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECULARS ///////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// - vec3 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rga; + //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// DIFFUSE LIGHTING ////////////////////////////// //////////////////////////////////////////////////////////////////////////////// @@ -534,12 +594,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #else vec3 playerCamPos = cameraPosition; #endif - - if(HELD_ITEM_BRIGHTNESS > 0.0){ - float pointLight = clamp(1.0-length((feetPlayerPos+cameraPosition)-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0); - lightmap.x = mix(lightmap.x , HELD_ITEM_BRIGHTNESS, pointLight*pointLight); - } - + lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS*clamp( pow(max(1.0-length((feetPlayerPos+cameraPosition) - playerCamPos)/HANDHELD_LIGHT_RANGE,0.0),1.5),0.0,1.0)); #endif vec3 Indirect_lighting = vec3(0.0); @@ -549,7 +604,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER - vec3 DirectLightColor = lightCol.rgb/2400.0; + vec3 DirectLightColor = lightCol.rgb/80.0; float NdotL = clamp(dot(normal, normalize(WsunVec*mat3(gbufferModelViewInverse))),0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); float Shadows = 1.0; @@ -564,13 +619,11 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) Shadows = mix(LM_shadowMapFallback, Shadows, shadowMapFalloff2); - #ifdef CLOUDS_SHADOWS - Shadows *= GetCloudShadow(feetPlayerPos+cameraPosition, WsunVec); - #endif + Shadows *= pow(GetCloudShadow(feetPlayerPos),3); Direct_lighting = DirectLightColor * NdotL * Shadows; - vec3 AmbientLightColor = averageSkyCol_Clouds/900.0; + vec3 AmbientLightColor = averageSkyCol_Clouds/30.0; vec3 ambientcoefs = worldSpaceNormal / dot(abs(worldSpaceNormal), vec3(1.0)); float SkylightDir = ambientcoefs.y*1.5; @@ -582,41 +635,26 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #endif #ifdef NETHER_SHADER - Indirect_lighting = volumetricsFromTex(normalize(worldSpaceNormal), colortex4, 0).rgb / 1200.0 / 1.5; + Indirect_lighting = skyCloudsFromTexLOD2(worldSpaceNormal, colortex4, 6).rgb / 30.0 ; #endif #ifdef END_SHADER - // float vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0); - // vec3 lightPos = LightSourcePosition(feetPlayerPos+cameraPosition, cameraPosition,vortexBounds); - - - // float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; - // vec3 lightColors = LightSourceColors(vortexBounds, lightningflash); - - // float NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); - - // NdotL *= NdotL; - - // Direct_lighting = lightColors * endFogPhase(lightPos) * NdotL; - float vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0); vec3 lightPos = LightSourcePosition(feetPlayerPos+cameraPosition, cameraPosition,vortexBounds); + float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; vec3 lightColors = LightSourceColors(vortexBounds, lightningflash); + + float NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); - float end_NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); - end_NdotL *= end_NdotL; + NdotL *= NdotL; - float fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos); - float endPhase = endFogPhase(lightPos); + Direct_lighting = lightColors * endFogPhase(lightPos) * NdotL; - Direct_lighting += lightColors * endPhase * end_NdotL * fogShadow; - - vec3 AmbientLightColor = vec3(0.3,0.6,1.0) ; + vec3 AmbientLightColor = vec3(0.3,0.6,1.0) * 0.5; Indirect_lighting = AmbientLightColor + 0.7 * AmbientLightColor * dot(worldSpaceNormal, normalize(feetPlayerPos)); - Indirect_lighting *= 0.1; #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING @@ -642,66 +680,136 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo; - #if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3 - Emission(FinalColor, Albedo, SpecularTex.b, exposure); - #endif - //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECULAR LIGHTING ///////////////////////////// //////////////////////////////////////////////////////////////////////////////// #ifdef DAMAGE_BLOCK_EFFECT - #undef FORWARD_SPECULAR + #undef WATER_REFLECTIONS #endif - #ifdef FORWARD_SPECULAR + #ifndef OVERWORLD_SHADER + #undef WATER_SUN_SPECULAR + #endif - float harcodedF0 = 0.02; + #ifdef WATER_REFLECTIONS + // vec2 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rg; // if nothing is chosen, no smoothness and no reflectance vec2 specularValues = vec2(1.0, 0.0); - + // hardcode specular values for select blocks like glass, water, and slime - if(isReflective) specularValues = vec2(1.0, harcodedF0); + if(isReflective) specularValues = vec2(1.0, 0.02); // detect if the specular texture is used, if it is, overwrite hardcoded values if(SpecularTex.r > 0.0 && SpecularTex.g <= 1.0) specularValues = SpecularTex.rg; - float f0 = isReflective ? max(specularValues.g, harcodedF0) : specularValues.g; + float roughness = pow(1.0-specularValues.r,2.0); + float f0 = isReflective ? max(specularValues.g, 0.02) : specularValues.g; #ifdef HAND - f0 = max(specularValues.g, harcodedF0); + f0 = max(specularValues.g, 0.02); #endif - - float roughness = specularValues.r; - + + // f0 = SpecularTex.g; + // roughness = pow(1.0-specularValues.r,2.0); + // f0 = 0.9; + // roughness = 0.0; + + vec3 Metals = f0 > 229.5/255.0 ? normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3) : vec3(1.0); + + // make sure zero alpha is not forced to be full alpha by fresnel on items with funny normal padding if(UnchangedAlpha <= 0.0 && !isReflective) f0 = 0.0; - + if (f0 > 0.0){ - if(isReflective) f0 = max(f0, harcodedF0); - - float reflectance = 0.0; - #if !defined OVERWORLD_SHADER - - vec3 WsunVec = vec3(0.0); - vec3 DirectLightColor = WsunVec; - float Shadows = 0.0; + if(isReflective) f0 = max(f0, 0.02); + + vec3 Reflections_Final = vec3(0.0); + vec4 Reflections = vec4(0.0); + vec3 BackgroundReflection = FinalColor; + vec3 SunReflection = vec3(0.0); + float indoors = pow(1.0-pow(1.0-min(max(lightmap.y-0.6,0.0)*3.0,1.0),0.5),2.0); + + vec3 reflectedVector = reflect(normalize(viewPos), normal); + float normalDotEye = dot(normal, normalize(viewPos)); + + float fresnel = pow(clamp(1.0 + normalDotEye, 0.0, 1.0),5.0); + + /* + int seed = (frameCounter%40000) + frameCounter*2; + float noise = fract(R2_samples(seed).y + (1-blueNoise())); + mat3 Basis = CoordBase(viewToWorld(normal)); + vec3 ViewDir = -normalize(feetPlayerPos)*Basis; + vec3 SamplePoints = SampleVNDFGGX(ViewDir, vec2(roughness), noise); + vec3 Ln = reflect(-ViewDir, SamplePoints); + vec3 L = Basis * Ln; + fresnel = pow(clamp(1.0 + dot(-Ln, SamplePoints),0.0,1.0), 5.0); + */ + + #ifdef SNELLS_WINDOW + // snells window looking thing + if(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0); #endif - vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), WsunVec, vec3(blueNoise(), vec2(interleaved_gradientNoise_temporal())), viewToWorld(normal), roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * Shadows, lightmap.y, false, reflectance); - - gl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * reflectance; - - // invert the alpha blending darkening on the color so you can interpolate between diffuse and specular and keep buffer blending - gl_FragData[0].rgb = clamp(specularReflections / gl_FragData[0].a * 0.1,0.0,65000.0); - - }else{ - gl_FragData[0].rgb = clamp(FinalColor * 0.1,0.0,65000.0); + fresnel = mix(f0, 1.0, fresnel); + + // Sun, Sky, and screen-space reflections + #ifdef OVERWORLD_SHADER + #ifdef WATER_SUN_SPECULAR + SunReflection = Direct_lighting * GGX(normal, -normalize(viewPos), WsunVec*mat3(gbufferModelViewInverse), max(roughness,0.035), f0) * Metals; + #endif + #ifdef WATER_BACKGROUND_SPECULAR + if(isEyeInWater == 0 && !isReflectiveEntity) BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 30.0 * Metals; + #endif + + if(isEyeInWater == 1 && isWater) BackgroundReflection.rgb = exp(-8.0 * vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B)) * clamp(WsunVec.y*lightCol.a,0,1); + #else + #ifdef WATER_BACKGROUND_SPECULAR + if(isEyeInWater == 0) BackgroundReflection = skyCloudsFromTexLOD2(mat3(gbufferModelViewInverse) * reflectedVector, colortex4, 0).rgb / 30.0 * Metals; + #endif + #endif + + #ifdef SCREENSPACE_REFLECTIONS + float reflectLength = 0.0; + vec3 rtPos = rayTrace(reflectedVector, viewPos.xyz, interleaved_gradientNoise_temporal(), fresnel, isEyeInWater == 1,reflectLength); + if (rtPos.z < 1.0){ + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + Reflections.a = 1.0; + Reflections.rgb = texture2D(colortex5, previousPosition.xy).rgb * Metals; + } + } + #endif + + float visibilityFactor = clamp(exp2((pow(roughness,3.0) / f0) * -4),0,1); + + Reflections_Final = mix(mix(FinalColor, BackgroundReflection, indoors), Reflections.rgb, Reflections.a) * fresnel * visibilityFactor; + Reflections_Final += SunReflection; + + //correct alpha channel with fresnel + float alpha0 = gl_FragData[0].a; + + gl_FragData[0].a = -gl_FragData[0].a * fresnel + gl_FragData[0].a + fresnel; + + // prevent reflections from being darkened by buffer blending + gl_FragData[0].rgb = clamp(FinalColor / gl_FragData[0].a*alpha0*(1.0-fresnel) * 0.1 + Reflections_Final / gl_FragData[0].a * 0.1,0.0,65100.0); + + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.0); + + } else { + gl_FragData[0].rgb = FinalColor*0.1; } + #else gl_FragData[0].rgb = FinalColor*0.1; #endif + + #if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3 + Emission(gl_FragData[0].rgb, Albedo, SpecularTex.b, exposure); + #endif #if defined DISTANT_HORIZONS && defined DH_OVERDRAW_PREVENTION && !defined HAND bool WATER = texture2D(colortex7, gl_FragCoord.xy*texelSize).a > 0.0 && length(feetPlayerPos) > far-16*4 && texture2D(depthtex1, gl_FragCoord.xy*texelSize).x >= 1.0; @@ -716,20 +824,16 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) if(gl_FragCoord.x*texelSize.x < 0.47) gl_FragData[0] = vec4(0.0); #endif #if DEBUG_VIEW == debug_NORMALS - gl_FragData[0].rgb = viewToWorld(normalize(normal.xyz)) * 0.1; - gl_FragData[0].a = 1; + gl_FragData[0].rgb = normalize(normal.xyz) * 0.1; #endif #if DEBUG_VIEW == debug_INDIRECT - gl_FragData[0].rgb = Indirect_lighting * 0.1; + gl_FragData[0].rgb = Indirect_lighting* 0.1; #endif #if DEBUG_VIEW == debug_DIRECT gl_FragData[0].rgb = Direct_lighting * 0.1; #endif - // gl_FragData[3].a = clamp(lightmap.y,0.0,1.0); - - gl_FragData[3] = vec4(encodeVec2(lightmap.x, lightmap.y), 1, 1, 1); - + gl_FragData[3].a = clamp(lightmap.y,0.0,1.0); } } \ No newline at end of file diff --git a/shaders/dimensions/all_translucent.vsh b/shaders/dimensions/all_translucent.vsh index fb10c20..db0fdf6 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -25,11 +25,10 @@ flat varying float exposure; flat varying vec4 lightCol; flat varying vec3 WsunVec; - #ifdef Daily_Weather + #if defined Daily_Weather flat varying vec4 dailyWeatherParams0; flat varying vec4 dailyWeatherParams1; #endif - #endif varying vec4 normalMat; @@ -133,15 +132,6 @@ void main() { position = mat3(gbufferModelView) * (displacedPos - cameraPosition) + gbufferModelView[3].xyz; } #endif - - // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; - vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz; - #ifdef PLANET_CURVATURE - float curvature = length(worldpos) / (16*8); - worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; - #endif - position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; - gl_Position = toClipSpace3(position); HELD_ITEM_BRIGHTNESS = 0.0; @@ -159,6 +149,7 @@ void main() { // water mask if(mc_Entity.x == 8.0) { mat = 1.0; + gl_Position.z -= 1e-4; } // translucent entities @@ -202,8 +193,8 @@ void main() { // WsunVec = normalize(LightDir); #if defined Daily_Weather - dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); #endif #endif diff --git a/shaders/dimensions/all_vanilla_emissives.fsh b/shaders/dimensions/all_vanilla_emissives.fsh index 925a79c..e3f4828 100644 --- a/shaders/dimensions/all_vanilla_emissives.fsh +++ b/shaders/dimensions/all_vanilla_emissives.fsh @@ -69,20 +69,20 @@ void main() { minimumBrightness = 10.0; #endif - // float autoBrightnessAdjust = mix(minimumBrightness, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + float autoBrightnessAdjust = mix(minimumBrightness, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); #ifdef DISABLE_VANILLA_EMISSIVES vec3 emissiveColor = vec3(0.0); Albedo.a = 0.0; #else - vec3 emissiveColor = Albedo.rgb * color.a ;//* autoBrightnessAdjust; + vec3 emissiveColor = Albedo.rgb * color.a * autoBrightnessAdjust; #endif gl_FragData[0] = vec4(emissiveColor*0.1, Albedo.a * sqrt(color.a)); #endif #ifdef ENCHANT_GLINT - // float autoBrightnessAdjust = mix(0.1, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + float autoBrightnessAdjust = mix(0.1, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); Albedo.rgb = clamp(Albedo.rgb ,0.0,1.0); // for safety @@ -90,7 +90,7 @@ void main() { vec3 GlintColor = vec3(0.0); Albedo.a = 0.0; #else - vec3 GlintColor = Albedo.rgb * Emissive_Brightness; + vec3 GlintColor = Albedo.rgb * autoBrightnessAdjust * Emissive_Brightness; #endif diff --git a/shaders/dimensions/composite.fsh b/shaders/dimensions/composite.fsh index 87e83b7..ebe5d79 100644 --- a/shaders/dimensions/composite.fsh +++ b/shaders/dimensions/composite.fsh @@ -21,14 +21,11 @@ uniform sampler2D depthtex1; uniform sampler2D colortex1; uniform sampler2D colortex3; // Noise uniform sampler2D colortex6; // Noise -uniform sampler2D colortex7; // Noise uniform sampler2D colortex8; // Noise uniform sampler2D colortex14; // Noise -uniform sampler2D colortex10; // Noise uniform sampler2D colortex12; // Noise -uniform sampler2D colortex13; // Noise uniform sampler2D colortex15; // Noise -uniform int isEyeInWater; + uniform sampler2D shadow; #ifdef TRANSLUCENT_COLORED_SHADOWS @@ -124,39 +121,30 @@ vec2 decodeVec2(float a){ } -float interleaved_gradientNoise_temporal(){ - vec2 coord = gl_FragCoord.xy; - - #ifdef TAA - coord += (frameCounter*9)%40000; - #endif - return fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); +float interleaved_gradientNoise_temporal(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } -float R2_dither(){ - vec2 coord = gl_FragCoord.xy ; - #ifdef TAA - coord += (frameCounter*2)%40000; +float R2_dither(){ + #ifdef TAA + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + #else + vec2 coord = gl_FragCoord.xy; #endif - vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } float blueNoise(){ - #ifdef TAA - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); - #else - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); - #endif + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); } vec4 blueNoise(vec2 coord){ - return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); } vec2 R2_samples(int n){ vec2 alpha = vec2(0.75487765, 0.56984026); @@ -248,53 +236,63 @@ float convertHandDepth_2(in float depth, bool hand) { ndcDepth /= MC_HAND_DEPTH; return ndcDepth * 0.5 + 0.5; } - vec2 SSAO( vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise ){ + // if(hand) return vec2(1.0,0.0); int samples = 7; float occlusion = 0.0; float sss = 0.0; - vec3 normalizedNormals = normalize(normal); - vec2 jitterOffsets = TAA_Offset*texelSize*0.5 * RENDER_SCALE - texelSize*0.5; - // scale the offset radius down as distance increases. - float linearViewDistance = length(viewPos); - float distanceScale = hand ? 30.0 : mix(40.0, 10.0, pow(clamp(1.0 - linearViewDistance/50.0,0.0,1.0),2.0)); - float depthCancelation = (linearViewDistance*linearViewDistance) / distanceScale * 0.5; + float dist = 1.0 + clamp(viewPos.z*viewPos.z/50.0,0,5); // shrink sample size as distance increases + float mulfov2 = gbufferProjection[1][1]/(3 * dist); + float maxR2 = viewPos.z*viewPos.z*mulfov2*2.0 * 5.0 / mix(4.0, 50.0, clamp(viewPos.z*viewPos.z - 0.1,0,1)); + + #ifdef Ambient_SSS + float maxR2_2 = viewPos.z;//*viewPos.z*mulfov2*2.*2./4.0; + + float dist3 = clamp(1-exp( viewPos.z*viewPos.z / -50),0,1); + // if(leaves) maxR2_2 = 0.1; + // if(leaves) maxR2_2 = mix(10, maxR2_2, dist3); + #endif + + vec2 acc = -(TAA_Offset*(texelSize/2.0))*RENDER_SCALE ; - float leaf = leaves ? -0.5 : 0.0; + // vec2 BLUENOISE = blueNoise(gl_FragCoord.xy).rg; int n = 0; + + float leaf = leaves ? -0.5 : 0.0; + for (int i = 0; i < samples; i++) { - vec2 offsets = CleanSample(i, samples - 1, noise) / distanceScale; + // vec2 sampleOffset = (SpiralSample(i, 7, 8 , noise)) * mulfov2 * clamp(0.05 + i*0.095, 0.0,0.3) ; + vec2 sampleOffset = CleanSample(i, samples - 1, noise) * mulfov2 * 0.3 ; - ivec2 offsetUV = ivec2(gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE); - - if (offsetUV.x >= 0 && offsetUV.y >= 0 && offsetUV.x < viewWidth*RENDER_SCALE.x && offsetUV.y < viewHeight*RENDER_SCALE.y ) { - - float sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, offsetUV, 0).x, hand); + ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)*RENDER_SCALE); + if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth*RENDER_SCALE.x && offset.y < viewHeight*RENDER_SCALE.y ) { #ifdef DISTANT_HORIZONS - float sampleDHDepth = texelFetch2D(dhDepthTex1, offsetUV, 0).x; - vec3 offsetViewPos = toScreenSpace_DH((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth, sampleDHDepth); + float dhdepth = texelFetch2D(dhDepthTex1, offset,0).x; #else - vec3 offsetViewPos = toScreenSpace(vec3((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth)); + float dhdepth = 0.0; #endif - vec3 viewPosDiff = offsetViewPos - viewPos; - float viewPosDiffSquared = dot(viewPosDiff, viewPosDiff); + vec3 t0 = toScreenSpace_DH((offset*texelSize+acc+0.5*texelSize) * (1.0/RENDER_SCALE), convertHandDepth_2(texelFetch2D(depthtex1, offset,0).x, hand), dhdepth); + + vec3 vec = (t0.xyz - viewPos); + float dsquared = dot(vec, vec); - if (viewPosDiffSquared > 1e-5){ - if(viewPosDiffSquared < depthCancelation){ - float NdotV = clamp(dot(viewPosDiff*inversesqrt(viewPosDiffSquared), normalizedNormals),0.0,1.0); - occlusion += NdotV * clamp(1.0-(viewPosDiffSquared/depthCancelation),0.0,1.0); - } + if (dsquared > 1e-5){ + if( dsquared < maxR2){ + float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal)),0.,1.); + occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); + } + #ifdef Ambient_SSS - sss += clamp(0.0 - dot(viewPosDiff, normalizedNormals),0.0,1.0) * exp(-10.0 * occlusion); + sss += clamp(leaf - dot(vec, normalize(normal)),0.0,1.0); #endif n += 1; @@ -304,52 +302,6 @@ vec2 SSAO( return max(1.0 - vec2(occlusion*AO_Strength, sss)/n, 0.0); } -float ScreenSpace_SSS( - vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise -){ - int samples = 7; - float occlusion = 0.0; - float sss = 0.0; - - vec3 normalizedNormals = normalize(normal); - vec2 jitterOffsets = TAA_Offset*texelSize*0.5 * RENDER_SCALE - texelSize*0.5; - - // scale the offset radius down as distance increases. - float linearViewDistance = length(viewPos); - float distanceScale = hand ? 30.0 : mix(40.0, 10.0, pow(clamp(1.0 - linearViewDistance/50.0,0.0,1.0),2.0)); - - float leaf = leaves ? -0.5 : 0.0; - - int n = 0; - for (int i = 0; i < samples; i++) { - - vec2 offsets = CleanSample(i, samples - 1, noise) / distanceScale; - - ivec2 offsetUV = ivec2(gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE); - - if (offsetUV.x >= 0 && offsetUV.y >= 0 && offsetUV.x < viewWidth*RENDER_SCALE.x && offsetUV.y < viewHeight*RENDER_SCALE.y ) { - - float sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, offsetUV, 0).x, hand); - - #ifdef DISTANT_HORIZONS - float sampleDHDepth = texelFetch2D(dhDepthTex1, offsetUV, 0).x; - vec3 offsetViewPos = toScreenSpace_DH((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth, sampleDHDepth); - #else - vec3 offsetViewPos = toScreenSpace(vec3((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth)); - #endif - - vec3 viewPosDiff = offsetViewPos - viewPos; - float viewPosDiffSquared = dot(viewPosDiff, viewPosDiff); - - if (viewPosDiffSquared > 1e-5){ - sss += clamp(leaf - dot(viewPosDiff, normalizedNormals),0.0,1.0); - n += 1; - } - } - } - return max(1.0 - sss/n, 0.0); -} - vec4 encode (vec3 n, vec2 lightmaps){ n.xy = n.xy / dot(abs(n), vec3(1.0)); n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; @@ -414,59 +366,14 @@ float sampleDepth(sampler2D depthTex, vec2 texcoord, bool hand){ return convertHandDepth_2(texture2D(depthTex, texcoord).r, hand); } -flat varying vec3 zMults; - -vec4 BilateralUpscale_VLFOG(sampler2D tex, sampler2D depth, vec2 coord, float referenceDepth){ - ivec2 scaling = ivec2(1.0/VL_RENDER_RESOLUTION); - ivec2 posDepth = ivec2(coord*VL_RENDER_RESOLUTION) * scaling; - ivec2 posColor = ivec2(coord*VL_RENDER_RESOLUTION); - ivec2 pos = ivec2(gl_FragCoord.xy*texelSize + 1); - - ivec2 getRadius[5] = ivec2[]( - ivec2(-1,-1), - ivec2( 1, 1), - ivec2(-1, 1), - ivec2( 1,-1), - ivec2( 0, 0) - ); - - #ifdef DISTANT_HORIZONS - float diffThreshold = 0.01; - #else - float diffThreshold = zMults.x; - #endif - - vec4 RESULT = vec4(0.0); - float SUM = 0.0; - - for (int i = 0; i < 4; i++) { - - ivec2 radius = getRadius[i]; - - #ifdef DISTANT_HORIZONS - float offsetDepth = sqrt(texelFetch2D(depth, posDepth + radius * scaling + pos * scaling,0).a/65000.0); - #else - float offsetDepth = ld(texelFetch2D(depth, posDepth + radius * scaling + pos * scaling, 0).r); - #endif - - float EDGES = abs(offsetDepth - referenceDepth) < diffThreshold ? 1.0 : 1e-5; - - RESULT += texelFetch2D(tex, posColor + radius + pos, 0) * EDGES; - - SUM += EDGES; - } - - return RESULT / SUM; -} -#include "/lib/sky_gradient.glsl" - -/* RENDERTARGETS:3,14,12,10*/ +/* RENDERTARGETS:3,14,12*/ void main() { float noise = R2_dither(); + vec2 texcoord = gl_FragCoord.xy*texelSize; float z = texture2D(depthtex1,texcoord).x; @@ -482,7 +389,7 @@ void main() { vec4 SHADOWDATA = vec4(0.0); - vec4 data = texelFetch2D(colortex1,ivec2(gl_FragCoord.xy),0); + vec4 data = texture2D(colortex1,texcoord); vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); vec3 normal = mat3(gbufferModelViewInverse) * clamp(worldToView( decode(dataUnpacked0.yw) ),-1.,1.); @@ -530,11 +437,13 @@ void main() { gl_FragData[2] = vec4(vec3(0.0), 65000.0); - vec3 FlatNormals = normalize(texture2D(colortex15,texcoord).rgb * 2.0 - 1.0); - if(z >= 1.0) FlatNormals = normal; + vec3 FlatNormals = texture2D(colortex15,texcoord).rgb * 2.0 - 1.0; + + if(z >= 1.0){ + FlatNormals = normal; + } - - vec2 SSAO_SSS = SSAO(viewPos, worldToView(FlatNormals), hand, isLeaf, noise); + vec2 SSAO_SSS = SSAO(viewPos, FlatNormals, hand, isLeaf, noise); if(swappedDepth >= 1.0) SSAO_SSS = vec2(1.0,0.0); @@ -544,21 +453,6 @@ void main() { #endif - - /*------------- VOLUMETRICS BEHIND TRANSLUCENTS PASS-THROUGH -------------*/ - // colortex10 is the history buffer used in reprojection of volumetrics, i can just hijack that. - gl_FragData[3] = texture2D(colortex10, texcoord); - - // if(texture2D(colortex7,texcoord).a > 0.0) { - // vec4 VL = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); - - // // gl_FragData[3].rgb += VL.rgb * gl_FragData[3].a; - // // gl_FragData[3].a *= VL.a; - // } - - - - #ifdef OVERWORLD_SHADER float SpecularTex = texture2D(colortex8,texcoord).z; float LabSSS = clamp((-64.0 + SpecularTex * 255.0) / 191.0 ,0.0,1.0); @@ -569,7 +463,9 @@ void main() { float minshadowfilt = Min_Shadow_Filter_Radius; float maxshadowfilt = Max_Shadow_Filter_Radius; - if(lightmap.y < 0.1) maxshadowfilt = min(maxshadowfilt, minshadowfilt); + // if(lightmap.y < 0.1 && !entities){ + // maxshadowfilt = mix(minshadowfilt, maxshadowfilt, vanillAO); + // } #ifdef BASIC_SHADOW_FILTER if (LabSSS > 0.0 && NdotL < 0.001){ diff --git a/shaders/dimensions/composite.vsh b/shaders/dimensions/composite.vsh index 524b7ba..785dc42 100644 --- a/shaders/dimensions/composite.vsh +++ b/shaders/dimensions/composite.vsh @@ -12,10 +12,6 @@ uniform vec3 sunPosition; uniform mat4 gbufferModelViewInverse; -flat varying vec3 zMults; - -uniform float far; -uniform float near; #include "/lib/util.glsl" #include "/lib/res_params.glsl" @@ -30,8 +26,6 @@ void main() { WsunVec = (float(sunElevation > 1e-5)*2-1.)*normalize(mat3(gbufferModelViewInverse) * sunPosition); - zMults = vec3(1.0/(far * near),far+near,far-near); - #ifdef TAA TAA_Offset = offsets[framemod8]; #else diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index e87d11b..3bbc665 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -17,7 +17,6 @@ #define projMAD_old(m, v) (diagonal3_old(m) * (v) + (m)[3].xyz) const bool colortex5MipmapEnabled = true; -uniform float nightVision; #ifdef OVERWORLD_SHADER const bool shadowHardwareFiltering = true; @@ -40,16 +39,18 @@ uniform float nightVision; #endif #ifdef NETHER_SHADER + uniform float nightVision; const bool colortex4MipmapEnabled = true; uniform vec3 lightningEffect; - #undef LIGHTSOURCE_REFLECTION + // #define LIGHTSOURCE_REFLECTION #endif #ifdef END_SHADER + uniform float nightVision; uniform vec3 lightningEffect; flat varying float Flashing; - #undef LIGHTSOURCE_REFLECTION + // #define LIGHTSOURCE_REFLECTION #endif uniform int hideGUI; @@ -87,18 +88,18 @@ uniform sampler2D colortex15; // flat normals(rgb), vanillaAO(alpha) #endif -// uniform mat4 shadowModelView; -// uniform mat4 shadowModelViewInverse; -// uniform mat4 shadowProjection; -// uniform mat4 shadowProjectionInverse; -// uniform mat4 gbufferProjection; -// uniform mat4 gbufferProjectionInverse; -// uniform mat4 gbufferModelView; -// uniform mat4 gbufferModelViewInverse; -// uniform mat4 gbufferPreviousProjection; +uniform mat4 shadowModelView; +uniform mat4 shadowModelViewInverse; +uniform mat4 shadowProjection; +uniform mat4 shadowProjectionInverse; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferPreviousProjection; uniform mat4 gbufferPreviousModelView; -// uniform vec3 cameraPosition; +uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; // uniform float far; @@ -148,14 +149,12 @@ float convertHandDepth_2(in float depth, bool hand) { return ndcDepth * 0.5 + 0.5; } -#include "/lib/projections.glsl" - -// vec3 toScreenSpace(vec3 p) { -// vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); -// vec3 feetPlayerPos = p * 2. - 1.; -// vec4 viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; -// return viewPos.xyz / viewPos.w; -// } +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 feetPlayerPos = p * 2. - 1.; + vec4 viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; + return viewPos.xyz / viewPos.w; +} @@ -169,15 +168,7 @@ float convertHandDepth_2(in float depth, bool hand) { #include "/lib/stars.glsl" #ifdef OVERWORLD_SHADER - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - + #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #define CLOUDS_INTERSECT_TERRAIN @@ -213,13 +204,6 @@ vec2 decodeVec2(float a){ #include "/lib/end_fog.glsl" - - -#define DEFERRED_SPECULAR -#define DEFERRED_ENVIORNMENT_REFLECTION -#define DEFERRED_BACKGROUND_REFLECTION -#define DEFERRED_ROUGH_REFLECTION - #include "/lib/specular.glsl" @@ -291,60 +275,33 @@ vec3 BilateralFiltering(sampler2D tex, sampler2D depth,vec2 coord,float frDepth, return vec3(sampled.x,sampled.yz/sampled.w); } - -float interleaved_gradientNoise_temporal(){ - #ifdef TAA - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); - #else - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); - #endif -} float interleaved_gradientNoise(){ - vec2 coord = gl_FragCoord.xy; - float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); - return noise; + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; + float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715) ) ); + return noise ; } float R2_dither(){ - vec2 coord = gl_FragCoord.xy ; - - #ifdef TAA - coord += (frameCounter%40000) * 2.0; - #endif - - vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha.x * coord.x + alpha.y * coord.y ) ; -} -float R2_dither2(){ - vec2 coord = gl_FragCoord.xy ; - - #ifdef TAA - coord += (frameCounter*8)%40000; - #endif - + vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } float blueNoise(){ - #ifdef TAA - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); - #else - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); - #endif + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); } vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } -// vec3 toShadowSpaceProjected(vec3 feetPlayerPos){ +vec3 toShadowSpaceProjected(vec3 feetPlayerPos){ -// mat4 DH_shadowProjection = DH_shadowProjectionTweak(shadowProjection); + mat4 DH_shadowProjection = DH_shadowProjectionTweak(shadowProjection); -// feetPlayerPos = mat3(gbufferModelViewInverse) * feetPlayerPos + gbufferModelViewInverse[3].xyz; -// feetPlayerPos = mat3(shadowModelView) * feetPlayerPos + shadowModelView[3].xyz; -// feetPlayerPos = diagonal3_old(DH_shadowProjection) * feetPlayerPos + DH_shadowProjection[3].xyz; + feetPlayerPos = mat3(gbufferModelViewInverse) * feetPlayerPos + gbufferModelViewInverse[3].xyz; + feetPlayerPos = mat3(shadowModelView) * feetPlayerPos + shadowModelView[3].xyz; + feetPlayerPos = diagonal3_old(DH_shadowProjection) * feetPlayerPos + DH_shadowProjection[3].xyz; -// return feetPlayerPos; -// } + return feetPlayerPos; +} vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot,float r0) { @@ -384,7 +341,7 @@ vec2 CleanSample( // for every sample, the sample position must change its distance from the origin. // otherwise, you will just have a circle. - float spiralShape = sqrt(variedSamples / (totalSamples + variance)); + float spiralShape = pow(variedSamples / (totalSamples + variance),0.5); float shape = 2.26; // this is very important. 2.26 is very specific float theta = variedSamples * (PI * shape); @@ -431,7 +388,7 @@ vec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, boo _far = dhFarPlane; } - vec3 worldpos = mat3(gbufferModelViewInverse) * viewPos ; + vec3 worldpos = mat3(gbufferModelViewInverse) * viewPos; float dist = 1.0 + length(worldpos)/(_far/2.0); // step length as distance increases vec3 clipPosition = toClipSpace3_DH(viewPos, depthCheck); @@ -484,8 +441,8 @@ void Emission( float Emission, float exposure ){ - // float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); - if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); // old method.... idk why + float autoBrightnessAdjust = mix(5.0, 100.0, clamp(exp(-10.0*exposure),0.0,1.0)); + if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * Emissive_Brightness * autoBrightnessAdjust, pow(Emission, Emissive_Curve)); // old method.... idk why // if( Emission < 254.5/255.0 ) Lighting += (Albedo * Emissive_Brightness) * pow(Emission, Emissive_Curve); } @@ -588,10 +545,6 @@ void BilateralUpscale_REUSE_Z(sampler2D tex1, sampler2D tex2, sampler2D depth, v ivec2( 1,-1), ivec2( 1, 1), ivec2(-1, 1) - // ivec2( 0, 1), - // ivec2( 0,-1), - // ivec2(-1, 0), - // ivec2( 1, 0) ); #ifdef DISTANT_HORIZONS @@ -743,59 +696,6 @@ float ComputeShadowMap(in vec3 projectedShadowPosition, float distortFactor, flo // return mix(1.0, shadowmap / samples, maxDistFade); } - - -vec3 ComputeShadowMap_COLOR(in vec3 projectedShadowPosition, float distortFactor, float noise, float shadowBlockerDepth, float NdotL, float maxDistFade, vec3 directLightColor, inout float FUNNYSHADOW, inout vec3 tintedSunlight, bool isSSS){ - - // if(maxDistFade <= 0.0) return 1.0; - float backface = NdotL <= 0.0 ? 1.0 : 0.0; - - vec3 shadowColor = vec3(0.0); - vec3 translucentTint = vec3(0.0); - - #ifdef BASIC_SHADOW_FILTER - int samples = SHADOW_FILTER_SAMPLE_COUNT; - float rdMul = (shadowBlockerDepth*distortFactor*d0*k/shadowMapResolution) * 0.3; - - for(int i = 0; i < samples; i++){ - vec2 offsetS = CleanSample(i, samples - 1, noise) * rdMul; - projectedShadowPosition.xy += offsetS; - #else - int samples = 1; - #endif - - #ifdef TRANSLUCENT_COLORED_SHADOWS - float opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x; - float opaqueShadowT = shadow2D(shadowtex1, projectedShadowPosition).x; - vec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy); - - float shadowAlpha = pow(1.0-pow(1.0-translucentShadow.a,2.0),5.0); - translucentShadow.rgb = normalize(translucentShadow.rgb*translucentShadow.rgb + 0.0001) * (1.0-shadowAlpha); - - // translucentTint += mix(translucentShadow.rgb * mix(opaqueShadowT, 1.0, backface), vec3(1.0), max(opaqueShadow, backface * (shadowAlpha < 1.0 ? 0.0 : 1.0))); - - shadowColor += directLightColor * mix(translucentShadow.rgb * opaqueShadowT, vec3(1.0), opaqueShadow); - - translucentTint += mix(translucentShadow.rgb, vec3(1.0), max(opaqueShadow, backface * (shadowAlpha < 1.0 ? 0.0 : 1.0))); - FUNNYSHADOW += ((1.0-shadowAlpha) * opaqueShadowT)/samples; - #else - shadowColor += directLightColor * shadow2D(shadow, projectedShadowPosition).x; - #endif - - #ifdef BASIC_SHADOW_FILTER - } - #endif - - // #ifdef TRANSLUCENT_COLORED_SHADOWS - // directLightColor *= mix(vec3(1.0), translucentTint.rgb / samples, maxDistFade); - tintedSunlight *= translucentTint.rgb / samples; - // #endif - - return mix(directLightColor, shadowColor.rgb / samples, maxDistFade); - // return 1.0; - // return mix(1.0, shadow / samples, maxDistFade); -} - #endif float CustomPhase(float LightPos){ @@ -809,143 +709,44 @@ float CustomPhase(float LightPos){ vec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, float lightPos, float shadows, float distantSSS){ - // Scattering *= sss_density_multiplier; + Scattering *= sss_density_multiplier; - // float density = 0.0001 + Density*2.0; + float density = 0.0001 + Density*2.0; - // float scatterDepth = max(1.0 - Scattering/density,0.0); - // scatterDepth = exp((1.0-scatterDepth) * -7.0); - - // scatterDepth = mix(exp(Scattering * -10.0), scatterDepth, distantSSS); - - // // this is for SSS when there is no shadow blocker depth - // #if defined BASIC_SHADOW_FILTER && defined Variable_Penumbra_Shadows - // scatterDepth = max(scatterDepth, pow(shadows, 0.5 + (1.0-Density) * 2.0) ); - // #else - // scatterDepth = exp(-7.0 * pow(1.0-shadows,3.0))*min(2.0-sss_density_multiplier,1.0); - // #endif - - // // PBR at its finest :clueless: - // vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(20.0 - 19*scatterDepth) * sss_absorbance_multiplier); - - // vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); - - // scatter *= 1.0 + CustomPhase(lightPos)*6.0; // ~10x brighter at the peak - - // return scatter; - - - // Scattering *= sss_density_multiplier; - - float density = 1e-6 + Density * 2.0; - - // float scatterDepth = Scattering;//max(1.0 - Scattering/density,0.0); - - float scatterDepth = max(1.0 - Scattering/density, 0.0); - scatterDepth *= exp(-7.0 * (1.0-scatterDepth)); - - vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(20.0 - 19*scatterDepth) * sss_absorbance_multiplier); + float scatterDepth = max(1.0 - Scattering/density,0.0); + scatterDepth = exp((1.0-scatterDepth) * -7.0); scatterDepth = mix(exp(Scattering * -10.0), scatterDepth, distantSSS); - vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve);// * vec3(1.0); - - - scatter *= 1.0 + CustomPhase(lightPos)*6.0; // ~10x brighter at the peak - - return scatter; -} - -vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){ - - // Scattering *= sss_density_multiplier; - - float scatterDepth = 1.0 - pow(Scattering, 0.5 + Density * 2.5); - // float scatterDepth = 1.0 - Scattering; + // this is for SSS when there is no shadow blocker depth + #if defined BASIC_SHADOW_FILTER && defined Variable_Penumbra_Shadows + scatterDepth = max(scatterDepth, pow(shadows, 0.5 + (1.0-Density) * 2.0) ); + #else + scatterDepth = exp(-7.0 * pow(1.0-shadows,3.0))*min(2.0-sss_density_multiplier,1.0); + #endif // PBR at its finest :clueless: - // vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -20.0 * sss_absorbance_multiplier); - - // vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.0,1.2), 0.0) * -20.0); - vec3 absorbColor = vec3(1.0) * exp(-(15.0 - 10.0*scatterDepth) * sss_absorbance_multiplier * 0.01); + vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(20.0 - 19*scatterDepth) * sss_absorbance_multiplier); vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); + scatter *= 1.0 + CustomPhase(lightPos)*6.0; // ~10x brighter at the peak + return scatter; } - - -vec3 blurredAlbedo( float noise, float lineardistance){ - - int samples = 7; - vec3 blurredColor = vec3(0.0); - - for (int i = 0; i < samples; i++) { - - vec2 offsets = CleanSample(i, samples - 1, noise)*0.02 / lineardistance; - - ivec2 offsetUV = ivec2(gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE); - - vec3 SAMPLE = texelFetch2D(colortex1, offsetUV, 0).xyz; - - blurredColor += toLinear(vec3(decodeVec2(SAMPLE.x).x, decodeVec2(SAMPLE.y).x, decodeVec2(SAMPLE.z).x)); - - } - - return blurredColor/samples; -} -uniform float wetnessAmount; -uniform float wetness; - -void applyPuddles( - in vec3 worldPos, in vec3 flatNormals, in float lightmap, in bool isWater, inout vec3 albedo, inout vec3 normals, inout float roughness, inout float f0 -){ - - float halfWet = min(wetnessAmount,1.0); - float fullWet = clamp(wetnessAmount - 2.0,0.0,1.0); - // halfWet = 1.0; - // fullWet = 0.0; - float noise = texture2D(noisetex, worldPos.xz * 0.02).b; - - float puddles = max(halfWet - noise,0.0); - puddles = clamp(halfWet - exp(-20.0 * puddles*puddles*puddles*puddles*puddles),0.0,1.0); - // puddles *= halfWet; - - float lightmapMax = min(max(lightmap - 0.9,0.0) * 10.0,1.0); - float lightmapMin = min(max(lightmap - 0.8,0.0) * 5.0,1.0); - lightmap = clamp(lightmapMax + noise*lightmapMin*2.0,0.0,1.0); - - lightmap = pow(1.0-pow(1.0-lightmap,3.0),2.0); - - float wetnessStages = mix(puddles, 1.0, fullWet) * lightmap; - - // if(isWater || (!isWater && isEyeInWater == 1)) wetnessStages = 1.0; +vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){ - normals = mix(normals, flatNormals, puddles * lightmap * clamp(flatNormals.y,0.0,1.0)); - roughness = mix(roughness, 1.0, wetnessStages); - - if(f0 < 229.5/255.0 ) albedo = pow(albedo * (1.0 - 0.08*wetnessStages), vec3(1.0 + 0.7*wetnessStages)); - -} - -vec2 smoothfilterUV(in vec2 uv) -{ - vec2 textureResolution = vec2(viewWidth,viewHeight); - uv = uv*textureResolution + 0.5; - vec2 iuv = floor( uv ); - vec2 fuv = fract( uv ); - - #ifndef SMOOTHESTSTEP_INTERPOLATION - uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); - #endif - #ifdef SMOOTHESTSTEP_INTERPOLATION - uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); - #endif - - uv = (uv - 0.5)/textureResolution; + Scattering *= sss_density_multiplier; - return uv; + float scatterDepth = 1.0 - pow(Scattering, 0.5 + Density * 2.5); + + // PBR at its finest :clueless: + vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -(15.0 - 10.0*scatterDepth) * sss_absorbance_multiplier * 0.01); + + vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); + + return scatter; } void main() { @@ -953,18 +754,12 @@ void main() { vec3 DEBUG = vec3(1.0); ////// --------------- SETUP STUFF --------------- ////// - vec2 texcoord = (gl_FragCoord.xy*texelSize); + vec2 texcoord = gl_FragCoord.xy*texelSize; + vec2 bnoise = blueNoise(gl_FragCoord.xy).rg; + int seed = (frameCounter%40000) + frameCounter*2; + float noise = fract(R2_samples(seed).y + bnoise.y); float noise_2 = R2_dither(); - vec2 bnoise = blueNoise(gl_FragCoord.xy ).rg; - // #ifdef TAA - int seed = (frameCounter*5)%40000; - vec2 r2_sequence = R2_samples(seed).xy; - vec2 BN = fract(r2_sequence + bnoise); - float noise = BN.y; - // #else - // float noise = fract(R2_samples(3).y + bnoise.y); - // #endif float z0 = texture2D(depthtex0,texcoord).x; float z = texture2D(depthtex1,texcoord).x; @@ -1001,7 +796,7 @@ void main() { ////// --------------- UNPACK OPAQUE GBUFFERS --------------- ////// - vec4 data = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy), 0); + vec4 data = texture2D(colortex1,texcoord); vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); // albedo, masks vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); // normals, lightmaps @@ -1010,7 +805,7 @@ void main() { vec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x)); vec3 normal = decode(dataUnpacked0.yw); vec2 lightmap = dataUnpacked1.yz; - + lightmap.xy = min(max(lightmap.xy - 0.05,0.0)*1.06,1.0); // small offset to hide flickering from precision error in the encoding/decoding on values close to 1.0 or 0.0 #if !defined OVERWORLD_SHADER @@ -1023,11 +818,11 @@ void main() { ////// --------------- UNPACK MISC --------------- ////// - vec4 SpecularTex = texelFetch2D(colortex8, ivec2(gl_FragCoord.xy), 0); + vec4 SpecularTex = texture2D(colortex8,texcoord); float LabSSS = clamp((-65.0 + SpecularTex.z * 255.0) / 190.0 ,0.0,1.0); vec4 normalAndAO = texture2D(colortex15,texcoord); - vec3 FlatNormals = normalize(normalAndAO.rgb * 2.0 - 1.0); + vec3 FlatNormals = normalAndAO.rgb * 2.0 - 1.0; vec3 slopednormal = normal; float vanilla_AO = z < 1.0 ? clamp(normalAndAO.a,0,1) : 0.0; @@ -1035,6 +830,7 @@ void main() { if(isDHrange){ FlatNormals = normal; + normal = viewToWorld(normal); slopednormal = normal; } @@ -1072,9 +868,9 @@ void main() { } #ifdef DISTANT_HORIZONS - vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z, DH_depth1); + vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z, DH_depth1); #else - vec3 viewPos = toScreenSpace(vec3(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z)); + vec3 viewPos = toScreenSpace(vec3(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5,z)); #endif vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos; @@ -1088,48 +884,38 @@ void main() { #endif ////// --------------- COLORS --------------- ////// - - float dirtAmount = Dirt_Amount; - // float dirtAmount = Dirt_Amount + 0.01; + float dirtAmount = Dirt_Amount + 0.01; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); - vec3 totEpsilon = dirtEpsilon * dirtAmount + waterEpsilon; - // vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; vec3 Absorbtion = vec3(1.0); vec3 AmbientLightColor = vec3(0.0); vec3 MinimumLightColor = vec3(1.0); vec3 Indirect_lighting = vec3(0.0); vec3 Indirect_SSS = vec3(0.0); - vec2 SSAO_SSS = vec2(1.0); vec3 DirectLightColor = vec3(0.0); vec3 Direct_lighting = vec3(0.0); vec3 Direct_SSS = vec3(0.0); float cloudShadow = 1.0; float Shadows = 1.0; - - vec3 shadowColor = vec3(1.0); - vec3 SSSColor = vec3(1.0); - vec3 filteredShadow = vec3(Min_Shadow_Filter_Radius,1.0,0.0); - float NdotL = 1.0; float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0); #ifdef OVERWORLD_SHADER - DirectLightColor = lightCol.rgb / 2400.0;//mix(900.0, 2400.0, lightmap.y); - AmbientLightColor = averageSkyCol_Clouds / 900.0; - shadowColor = DirectLightColor; + DirectLightColor = lightCol.rgb / 80.0; + AmbientLightColor = averageSkyCol_Clouds / 30.0; - // #ifdef PER_BIOME_ENVIRONMENT - // // BiomeSunlightColor(DirectLightColor); - // vec3 biomeDirect = DirectLightColor; - // vec3 biomeIndirect = AmbientLightColor; - // float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); + #ifdef PER_BIOME_ENVIRONMENT + // BiomeSunlightColor(DirectLightColor); + vec3 biomeDirect = DirectLightColor; + vec3 biomeIndirect = AmbientLightColor; + float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); - // float maxDistance = inBiome * min(max(1.0 - length(feetPlayerPos)/(32*8),0.0)*2.0,1.0); - // DirectLightColor = mix(DirectLightColor, biomeDirect, maxDistance); - // #endif + float maxDistance = inBiome * min(max(1.0 - length(feetPlayerPos)/(32*8),0.0)*2.0,1.0); + DirectLightColor = mix(DirectLightColor, biomeDirect, maxDistance); + #endif bool inShadowmapBounds = false; #endif @@ -1139,93 +925,91 @@ void main() { //////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// START DRAW //////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// - - + if (swappedDepth >= 1.0) { + vec3 Background = vec3(0.0); - //////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////// UNDER WATER SHADING //////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////// + #ifdef OVERWORLD_SHADER + float atmosphereGround = 1.0 - exp2(-50.0 * pow(clamp(feetPlayerPos_normalized.y+0.025,0.0,1.0),2.0) ); // darken the ground in the sky. + + #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 3 + // vec3 orbitstar = vec3(feetPlayerPos_normalized.x,abs(feetPlayerPos_normalized.y),feetPlayerPos_normalized.z); orbitstar.x -= WsunVec.x*0.2; + vec3 orbitstar = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE,1.0))); + float radiance = 2.39996 - (worldTime + worldDay*24000.0) / 24000.0; + // float radiance = 2.39996 + frameTimeCounter; + mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); + + orbitstar.xy *= rotationMatrix; - if ((isEyeInWater == 0 && isWater) || (isEyeInWater == 1 && !isWater)){ - - feetPlayerPos += gbufferModelViewInverse[3].xyz; - - #ifdef DISTANT_HORIZONS - vec3 playerPos0 = mat3(gbufferModelViewInverse) * toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z0, DH_depth0) + gbufferModelViewInverse[3].xyz; - #else - vec3 playerPos0 = mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0)) + gbufferModelViewInverse[3].xyz; + Background += stars(orbitstar) * 10.0 * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0); + + #if !defined ambientLight_only && (RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0) + Background += drawSun(dot(lightCol.a * WsunVec, feetPlayerPos_normalized),0, DirectLightColor,vec3(0.0)); + Background += drawMoon(feetPlayerPos_normalized, lightCol.a * WsunVec, DirectLightColor*20, Background); + #endif + + Background *= atmosphereGround; + #endif + + vec3 Sky = skyFromTex(feetPlayerPos_normalized, colortex4)/30.0 * Sky_Brightness; + Background += Sky; + #endif - float Vdiff = distance(feetPlayerPos, playerPos0); - float estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y);// assuming water plane - - float viewerWaterDepth = Vdiff * (1.0 - clamp(exp(-Vdiff),0.0,1.0)); + #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3 + vec3 resourcePackskyBox = toLinear(texture2D(colortex10, texcoord).rgb * 5.0) * 15.0 * clamp(unsigned_WsunVec.y*2.0,0.1,1.0); - // force the absorbance to start way closer to the water surface in low light areas, so the water is visible in caves and such. - #if MINIMUM_WATER_ABSORBANCE > -1 - float minimumAbsorbance = MINIMUM_WATER_ABSORBANCE*0.1; - #else - float minimumAbsorbance = (1.0 - lightLeakFix)*0.75; + #ifdef SKY_GROUND + resourcePackskyBox *= atmosphereGround; + #endif + + Background += resourcePackskyBox; #endif - viewerWaterDepth += max(estimatedDepth - 1.0, minimumAbsorbance); + #if defined OVERWORLD_SHADER && defined VOLUMETRIC_CLOUDS && !defined CLOUDS_INTERSECT_TERRAIN + vec4 Clouds = texture2D_bicubic_offset(colortex0, texcoord*CLOUDS_QUALITY, noise, RENDER_SCALE.x); + Background = Background * Clouds.a + Clouds.rgb; + #endif - Absorbtion = exp( -2.0 * totEpsilon * viewerWaterDepth); + gl_FragData[0].rgb = clamp(fp10Dither(Background, triangularize(noise_2)), 0.0, 65000.); - // brighten up the fully absorbed parts of water when night vision activates. - // if( nightVision > 0.0 ) Absorbtion += exp( -50.0 * totEpsilon) * 50.0 * 7.0 * nightVision; - if( nightVision > 0.0 ) Absorbtion += exp( -30.0 * totEpsilon) * 10.0 * nightVision * 10.0; + } else { - if (isEyeInWater == 1){ - estimatedDepth = 1.0; - viewerWaterDepth = max(0.9-lightmap.y,0.0)*3.0; - Absorbtion = exp( -2.0 * totEpsilon * viewerWaterDepth); - - DirectLightColor *= Absorbtion; - } - - // apply caustics to the lighting, and make sure they dont look weird - DirectLightColor *= mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS + 0.25, clamp(estimatedDepth,0,1)); - } - - - if (swappedDepth < 1.0) { - - // idk why this do feetPlayerPos += gbufferModelViewInverse[3].xyz; + //////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// FILTER STUFF ////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// - + + vec3 filteredShadow = vec3(1.412,1.0,0.0); + vec2 SSAO_SSS = vec2(1.0); + #if defined DISTANT_HORIZONS && defined DH_AMBIENT_OCCLUSION BilateralUpscale_REUSE_Z(colortex3, colortex14, colortex12, gl_FragCoord.xy-1.5, DH_mixedLinearZ, SSAO_SSS, filteredShadow, hand); #else BilateralUpscale_REUSE_Z(colortex3, colortex14, depthtex0, gl_FragCoord.xy-1.5, ld(z0), SSAO_SSS, filteredShadow, hand); #endif - + float ShadowBlockerDepth = filteredShadow.y; + //////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// MAJOR LIGHTSOURCE STUFF //////////////////////// //////////////////////////////////////////////////////////////////////////////////// #ifdef OVERWORLD_SHADER - - float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 5.0,1.0); + float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0); float LightningPhase = 0.0; vec3 LightningFlashLighting = Iris_Lightningflash(feetPlayerPos, lightningBoltPosition.xyz, slopednormal, LightningPhase) * pow(lightmap.y,10); NdotL = clamp((-15 + dot(slopednormal, WsunVec)*255.0) / 240.0 ,0.0,1.0); - // NdotL = 1; - float flatNormNdotL = clamp((-15 + dot((FlatNormals), WsunVec)*255.0) / 240.0 ,0.0,1.0); + float flatNormNdotL = clamp((-15 + dot(viewToWorld(FlatNormals), WsunVec)*255.0) / 240.0 ,0.0,1.0); - //////////////////////////////// SHADOWMAP //////////////////////////////// // setup shadow projection vec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; - if(!hand) GriAndEminShadowFix(shadowPlayerPos, FlatNormals, vanilla_AO, lightmap.y); + if(!hand) GriAndEminShadowFix(shadowPlayerPos, viewToWorld(FlatNormals), vanilla_AO, lightmap.y); vec3 projectedShadowPosition = mat3(shadowModelView) * shadowPlayerPos + shadowModelView[3].xyz; projectedShadowPosition = diagonal3_old(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; @@ -1248,9 +1032,6 @@ void main() { float shadowMapFalloff2 = shadowmapFade; #endif - // shadowMapFalloff = 1.0; - // shadowMapFalloff2 = 1.0; - // un-distort #ifdef DISTORT_SHADOWMAP float distortFactor = calcDistort(projectedShadowPosition.xy); @@ -1258,66 +1039,48 @@ void main() { #else float distortFactor = 1.0; #endif - + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5) ; float ShadowAlpha = 0.0; // this is for subsurface scattering later. - vec3 tintedSunlight = DirectLightColor; // this is for subsurface scattering later. - - shadowColor = ComputeShadowMap_COLOR(projectedShadowPosition, distortFactor, noise_2, filteredShadow.x, flatNormNdotL, shadowMapFalloff, DirectLightColor, ShadowAlpha, tintedSunlight, LabSSS > 0.0); + Shadows = ComputeShadowMap(projectedShadowPosition, distortFactor, noise_2, filteredShadow.x, flatNormNdotL, shadowMapFalloff, DirectLightColor, ShadowAlpha, LabSSS > 0.0); - // transition to fallback lightmap shadow mask. - shadowColor *= mix(isWater ? lightLeakFix : LM_shadowMapFallback, 1.0, shadowMapFalloff2); + Shadows = mix(isWater ? lightLeakFix : LM_shadowMapFallback, Shadows, shadowMapFalloff); - // #ifdef OLD_LIGHTLEAK_FIX - // if (isEyeInWater == 0) Shadows *= lightLeakFix; // light leak fix - // #endif - - //////////////////////////////// SUN SSS //////////////////////////////// - #if SSS_TYPE != 0 - - float sunSSS_density = LabSSS; - float SSS_shadow = ShadowAlpha; - - #ifdef DISTANT_HORIZONS - shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / min(shadowDistance, max(far-32.0,32.0)),0.0)*5.0,1.0)); - #endif - - #ifndef RENDER_ENTITY_SHADOWS - if(entities) sunSSS_density = 0.0; - #endif - - #ifdef SCREENSPACE_CONTACT_SHADOWS - vec2 SS_directLight = SSRT_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, normalize(WsunVec*mat3(gbufferModelViewInverse)), interleaved_gradientNoise_temporal(), sunSSS_density > 0.0 && shadowMapFalloff2 < 1.0, hand); - - // combine shadowmap with a minumum shadow determined by the screenspace shadows. - shadowColor *= SS_directLight.r; - - // combine shadowmap blocker depth with a minumum determined by the screenspace shadows, starting after the shadowmap ends - ShadowBlockerDepth = mix(SS_directLight.g, ShadowBlockerDepth, shadowMapFalloff2); - #endif - #ifdef TRANSLUCENT_COLORED_SHADOWS - SSSColor = tintedSunlight; - #else - SSSColor = DirectLightColor; - #endif - - SSSColor *= SubsurfaceScattering_sun(albedo, ShadowBlockerDepth, sunSSS_density, clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), SSS_shadow, shadowMapFalloff2); - - if(isEyeInWater != 1)SSSColor *= lightLeakFix; - - #ifndef SCREENSPACE_CONTACT_SHADOWS - SSSColor = mix(vec3(0.0), SSSColor, shadowMapFalloff2); - #endif - - #ifdef CLOUDS_SHADOWS - float cloudShadows = GetCloudShadow(feetPlayerPos.xyz + cameraPosition, WsunVec); - shadowColor *= cloudShadows; - SSSColor *= cloudShadow*cloudShadows; - #endif + #ifdef OLD_LIGHTLEAK_FIX + if (isEyeInWater == 0) Shadows *= lightLeakFix; // light leak fix #endif #endif + + //////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////// UNDER WATER SHADING //////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////// + + if ((isEyeInWater == 0 && isWater) || (isEyeInWater == 1 && !isWater)){ + #ifdef DISTANT_HORIZONS + vec3 viewPos0 = toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z0, DH_depth0); + #else + vec3 viewPos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0)); + #endif + + float Vdiff = distance(viewPos, viewPos0)*mix(5.0,2.0,clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0)); + float estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y); //assuming water plane + + // make it such that the estimated depth flips to be correct when entering water. + if (isEyeInWater == 1){ + estimatedDepth = 40.0 * pow(max(1.0-lightmap.y,0.0),2.0); + MinimumLightColor = vec3(10.0); + } + + float depthfalloff = 1.0 - clamp(exp(-0.1*estimatedDepth),0.0,1.0); + + float estimatedSunDepth = Vdiff; //assuming water plane + Absorbtion = mix(exp(-2.0 * totEpsilon * estimatedDepth), exp(-8.0 * totEpsilon), depthfalloff); + + // apply caustics to the lighting, and make sure they dont look weird + DirectLightColor *= mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS + 0.25, clamp(estimatedDepth,0,1)); + } #ifdef END_SHADER float vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0); @@ -1329,10 +1092,11 @@ void main() { float end_NdotL = clamp(dot(slopednormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); end_NdotL *= end_NdotL; - float fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos); + float fogShadow = GetCloudShadow(feetPlayerPos+cameraPosition, lightPos); float endPhase = endFogPhase(lightPos); Direct_lighting += lightColors * endPhase * end_NdotL * fogShadow; + AmbientLightColor += lightColors * (endPhase*endPhase) * (1.0-exp(vec3(0.6,2.0,2) * -(endPhase*0.1))) ; #endif @@ -1347,7 +1111,7 @@ void main() { float SkylightDir = (slopednormal / dot(abs(slopednormal),vec3(1.0))).y*1.5; if(isGrass) SkylightDir = 1.5; - skylight = max(pow((FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); + skylight = max(pow(viewToWorld(FlatNormals).y*0.5+0.5,0.1) + SkylightDir, 0.2 + (1-lightmap.y)*0.8); #if indirect_effect == 1 skylight = min(skylight, mix(0.95, 2.5, pow(1-pow(1-SSAO_SSS.x, 0.5),2.0) )); @@ -1363,30 +1127,27 @@ void main() { #endif #ifdef NETHER_SHADER - Indirect_lighting = volumetricsFromTex(normalize(normal), colortex4, 6).rgb / 1200.0; - vec3 up = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0; + Indirect_lighting = skyCloudsFromTexLOD2(normal, colortex4, 6).rgb / 30.0; + vec3 up = skyCloudsFromTexLOD2(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 30.0; #if indirect_effect == 1 Indirect_lighting = mix(up, Indirect_lighting, clamp(pow(1.0-pow(1.0-SSAO_SSS.x, 0.5),2.0),0.0,1.0)); #endif - AmbientLightColor = Indirect_lighting; + AmbientLightColor = Indirect_lighting / 5.0; #endif #ifdef END_SHADER - Indirect_lighting = vec3(0.3,0.6,1.0); + Indirect_lighting = vec3(0.3,0.6,1.0) * 0.5; Indirect_lighting = Indirect_lighting + 0.7*mix(-Indirect_lighting, Indirect_lighting * dot(slopednormal, feetPlayerPos_normalized), clamp(pow(1.0-pow(1.0-SSAO_SSS.x, 0.5),2.0),0.0,1.0)); - Indirect_lighting *= 0.1; - - Indirect_lighting += lightColors * (endPhase*endPhase) * (1.0-exp(vec3(0.6,2.0,2.0) * -(endPhase*0.01))) /1000.0; #endif #ifdef IS_LPV_ENABLED vec3 normalOffset = vec3(0.0); if (any(greaterThan(abs(FlatNormals), vec3(1.0e-6)))) - normalOffset = 0.5*(FlatNormals); + normalOffset = 0.5*viewToWorld(FlatNormals); #if LPV_NORMAL_STRENGTH > 0 vec3 texNormalOffset = -normalOffset + slopednormal; @@ -1397,6 +1158,7 @@ void main() { #else const vec3 lpvPos = vec3(0.0); #endif + vec3 blockLightColor = doBlockLightLighting( vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, exposure, feetPlayerPos, lpvPos); Indirect_lighting += blockLightColor; @@ -1440,7 +1202,9 @@ void main() { if(!hand) Indirect_lighting = ApplySSRT(Indirect_lighting, blockLightColor, MinimumLightColor, viewPos, normal, vec3(bnoise, noise_2), lightmap.y, isGrass, isDHrange); #endif - + #if defined END_SHADER + Direct_lighting *= AO; + #endif //////////////////////////////////////////////////////////////////////////////// ///////////////////////// SUB SURFACE SCATTERING //////////////////////////// @@ -1449,10 +1213,11 @@ void main() { ///////////////////////////// SKY SSS ///////////////////////////// #if defined Ambient_SSS && defined OVERWORLD_SHADER && indirect_effect == 1 if (!hand){ - vec3 ambientColor = AmbientLightColor * mix(0.2,2.5,lightmap.y*lightmap.y) * ambient_brightness; // x2.5 to match the brightness of upfacing skylight + vec3 ambientColor = (AmbientLightColor*2.5) * ambient_brightness; // x2.5 to match the brightness of upfacing skylight Indirect_SSS = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS); - Indirect_SSS *= lightmap.y*lightmap.y;//*lightmap.y; + Indirect_SSS *= lightmap.y*lightmap.y*lightmap.y; + Indirect_SSS *= AO; // apply to ambient light. Indirect_lighting = max(Indirect_lighting, Indirect_SSS * ambientColor * ambientsss_brightness); @@ -1463,6 +1228,49 @@ void main() { } #endif + //////////////////////////////// SUN SSS //////////////////////////////// + #if SSS_TYPE != 0 && defined OVERWORLD_SHADER + + float sunSSS_density = LabSSS; + float SSS_shadow = ShadowAlpha * Shadows; + + #ifdef DISTANT_HORIZONS + shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / min(shadowDistance, max(far-32.0,32.0)),0.0)*5.0,1.0)); + #endif + + #ifndef RENDER_ENTITY_SHADOWS + if(entities) sunSSS_density = 0.0; + #endif + + #ifdef SCREENSPACE_CONTACT_SHADOWS + vec2 SS_directLight = SSRT_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, normalize(WsunVec*mat3(gbufferModelViewInverse)), interleaved_gradientNoise(), sunSSS_density > 0.0 && shadowMapFalloff2 < 1.0, hand); + + // combine shadowmap with a minumum shadow determined by the screenspace shadows. + Shadows = min(Shadows, SS_directLight.r); + // Shadows = SS_directLight.r; + + // combine shadowmap blocker depth with a minumum determined by the screenspace shadows, starting after the shadowmap ends + ShadowBlockerDepth = mix(SS_directLight.g, ShadowBlockerDepth, shadowMapFalloff2); + // ShadowBlockerDepth = max( SS_directLight.g,0.0); + #endif + + + Direct_SSS = SubsurfaceScattering_sun(albedo, ShadowBlockerDepth, sunSSS_density, clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), SSS_shadow, shadowMapFalloff2); + + Direct_SSS *= lightLeakFix; + + #ifndef SCREENSPACE_CONTACT_SHADOWS + Direct_SSS = mix(vec3(0.0), Direct_SSS, shadowMapFalloff2); + #endif + + #ifdef CLOUDS_SHADOWS + cloudShadow = GetCloudShadow(feetPlayerPos); + Shadows *= cloudShadow; + Direct_SSS *= cloudShadow; + #endif + + #endif + ///////////////////////////////////////////////////////////////////////// ///////////////////////////// FINALIZE ///////////////////////////// ///////////////////////////////////////////////////////////////////////// @@ -1472,104 +1280,35 @@ void main() { albedo = vec3(1); NdotL = 0; #endif - #if defined END_SHADER - Direct_lighting *= AO; - #endif - #ifdef OVERWORLD_SHADER - // Direct_lighting = max(shadowColor*NdotL, SSSColor); - #ifdef AO_in_sunlight - Direct_lighting = shadowColor*NdotL*(AO*0.7+0.3) + SSSColor; - #else - Direct_lighting = shadowColor*NdotL + SSSColor; - #endif - #endif - - #if defined OVERWORLD_SHADER && defined DEFERRED_SPECULAR - if(!hand && !entities) applyPuddles(feetPlayerPos + cameraPosition, FlatNormals, lightmap.y, isWater, albedo, normal, SpecularTex.r, SpecularTex.g); - #endif - - vec3 FINAL_COLOR = (Indirect_lighting + Direct_lighting) * albedo; - - Emission(FINAL_COLOR, albedo, SpecularTex.a, exposure); - - if(lightningBolt) FINAL_COLOR = vec3(77.0, 153.0, 255.0); - - #if defined DEFERRED_SPECULAR - vec3 specularNoises = vec3(BN.xy, blueNoise()); - // DoSpecularReflections(FINAL_COLOR, viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, normal, SpecularTex.r, SpecularTex.g, albedo, shadowColor, lightmap.y, hand); - - FINAL_COLOR = specularReflections(viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, normal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, shadowColor, lightmap.y, hand, isWater || (!isWater && isEyeInWater == 1)); - #endif - - - gl_FragData[0].rgb = FINAL_COLOR; - // gl_FragData[0].rgb = vec3(1) * Absorbtion; - - - - - }else{ - vec3 Background = vec3(0.0); #ifdef OVERWORLD_SHADER - - float atmosphereGround = 1.0 - exp2(-50.0 * pow(clamp(feetPlayerPos_normalized.y+0.025,0.0,1.0),2.0) ); // darken the ground in the sky. - - #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 3 - // vec3 orbitstar = vec3(feetPlayerPos_normalized.x,abs(feetPlayerPos_normalized.y),feetPlayerPos_normalized.z); orbitstar.x -= WsunVec.x*0.2; - vec3 orbitstar = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE,1.0))); - // float radiance = 2.39996 - (worldTime + worldDay*24000.0) / 24000.0; - float radiance = 2.39996 ; - // float radiance = 2.39996 + frameTimeCounter; - mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); - - orbitstar.xy *= rotationMatrix; - - Background += stars(orbitstar) * 10.0 * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0); - - #if !defined ambientLight_only && (RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 0) - Background += drawSun(dot(lightCol.a * WsunVec, feetPlayerPos_normalized),0, DirectLightColor,vec3(0.0)); - Background += drawMoon(feetPlayerPos_normalized, lightCol.a * WsunVec, DirectLightColor, Background); - #endif - - Background *= atmosphereGround; - #endif - - vec3 Sky = skyFromTex(feetPlayerPos_normalized, colortex4)/1200.0 * Sky_Brightness; - Background += Sky; - + Direct_lighting = max(DirectLightColor * NdotL * Shadows, DirectLightColor * Direct_SSS); #endif - // #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3 - // vec3 resourcePackskyBox = toLinear(texture2D(colortex10, texcoord).rgb * 5.0) * 15.0 * clamp(unsigned_WsunVec.y*2.0,0.1,1.0); + gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * albedo; - // #ifdef SKY_GROUND - // resourcePackskyBox *= atmosphereGround; - // #endif - - // Background += resourcePackskyBox; - // #endif - - #if defined OVERWORLD_SHADER && defined VOLUMETRIC_CLOUDS && !defined CLOUDS_INTERSECT_TERRAIN - vec4 Clouds = texture2D_bicubic_offset(colortex0, texcoord*CLOUDS_QUALITY, noise, RENDER_SCALE.x); - Background = Background * Clouds.a + Clouds.rgb; + #ifdef Specular_Reflections + vec2 specularNoises = vec2(noise, R2_dither()); + DoSpecularReflections(gl_FragData[0].rgb, viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, normal, SpecularTex.r, SpecularTex.g, albedo, DirectLightColor*Shadows*NdotL, lightmap.y, hand); #endif + + Emission(gl_FragData[0].rgb, albedo, SpecularTex.a, exposure); + + if(lightningBolt) gl_FragData[0].rgb = vec3(77.0, 153.0, 255.0); - gl_FragData[0].rgb = clamp(fp10Dither(Background, triangularize(noise_2)), 0.0, 65000.); + gl_FragData[0].rgb *= Absorbtion; } - - if(translucentMasks > 0.0 && isEyeInWater != 1){ - - // water absorbtion will impact ALL light coming up from terrain underwater. - gl_FragData[0].rgb *= Absorbtion; - - vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); + if(translucentMasks > 0.0){ + #ifdef DISTANT_HORIZONS + vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, colortex12, gl_FragCoord.xy - 1.5, sqrt(texture2D(colortex12,texcoord).a/65000.0)); + #else + vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, gl_FragCoord.xy - 1.5, ld(z)); + #endif gl_FragData[0].rgb = gl_FragData[0].rgb * vlBehingTranslucents.a + vlBehingTranslucents.rgb; - } - + ////// DEBUG VIEW STUFF #if DEBUG_VIEW == debug_SHADOWMAP gl_FragData[0].rgb = vec3(0.5) + vec3(1.0) * Shadows * 30.0; @@ -1587,29 +1326,24 @@ void main() { gl_FragData[0].rgb = Indirect_lighting; #endif #if DEBUG_VIEW == debug_DIRECT - if(swappedDepth >= 1.0) Direct_lighting = vec3(1.0); - gl_FragData[0].rgb = Direct_lighting; + if(swappedDepth >= 1.0) Direct_lighting = vec3(15.0); + gl_FragData[0].rgb = Direct_lighting + 0.5; #endif #if DEBUG_VIEW == debug_VIEW_POSITION gl_FragData[0].rgb = viewPos * 0.001; #endif #if DEBUG_VIEW == debug_FILTERED_STUFF - - // gl_FragData[0].rgb = texture2D(colortex14, texcoord).xyz; - if(hideGUI == 1) gl_FragData[0].rgb = vec3(1) * (1.0 - SSAO_SSS.y); - if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * pow(SSAO_SSS.x,6.0); - if(swappedDepth >= 1.0) gl_FragData[0].rgb = vec3(0.5); - // if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * exp(-10*filteredShadow.y);//exp(-7*(1-clamp(1.0 - filteredShadow.x,0.0,1.0))); + // if(hideGUI == 1) gl_FragData[0].rgb = vec3(1) * (1.0 - SSAO_SSS.y); + // if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * (1.0 - SSAO_SSS.x); + if(hideGUI == 0) gl_FragData[0].rgb = vec3(1) * exp(-10*filteredShadow.y);//exp(-7*(1-clamp(1.0 - filteredShadow.x,0.0,1.0))); #endif // gl_FragData[0].rgb = albedo*30; // gl_FragData[0].rgb = vec3(1) * Shadows; // if(swappedDepth >= 1.0) gl_FragData[0].rgb = vec3(0.1); - // gl_FragData[0].rgb = vec3(1) * ld(texture2D(depthtex1, texcoord).r); - // if(texcoord.x > 0.5 ) - - // gl_FragData[0].rgb = vec3(1) * filteredShadow.y; - // if(swappedDepth >= 1.0) gl_FragData[0].rgb += vec3(0.5); + // if(texcoord.x > 0.5 )gl_FragData[0].rgb = vec3(1) * ld(texture2D(depthtex0, texcoord).r); - /* RENDERTARGETS:3 */ + + + /* DRAWBUFFERS:3 */ } \ No newline at end of file diff --git a/shaders/dimensions/composite1.vsh b/shaders/dimensions/composite1.vsh index a77e3e9..39df506 100644 --- a/shaders/dimensions/composite1.vsh +++ b/shaders/dimensions/composite1.vsh @@ -5,11 +5,10 @@ flat varying float Flashing; #endif - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #endif - +#if defined Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; +#endif flat varying vec3 WsunVec; flat varying vec3 unsigned_WsunVec; @@ -54,14 +53,14 @@ void main() { averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) * sunPosition); unsigned_WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); - WsunVec = lightCol.a*unsigned_WsunVec; exposure = texelFetch2D(colortex4,ivec2(10,37),0).r; #if defined Daily_Weather - dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); #endif #ifdef TAA diff --git a/shaders/dimensions/composite10.fsh b/shaders/dimensions/composite10.fsh index 8f1de2b..8e5c48b 100644 --- a/shaders/dimensions/composite10.fsh +++ b/shaders/dimensions/composite10.fsh @@ -106,7 +106,7 @@ vec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize; bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb * weights[5]; //1/128 res bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb * weights[6]; //1/256 res - gl_FragData[0].rgb = bloom * 2.0; + gl_FragData[0].rgb = bloom * 3.0; #endif gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); diff --git a/shaders/dimensions/composite11.fsh b/shaders/dimensions/composite11.fsh index 2e5ed7c..5c98b4d 100644 --- a/shaders/dimensions/composite11.fsh +++ b/shaders/dimensions/composite11.fsh @@ -14,7 +14,7 @@ uniform sampler2D colortex3; // uniform sampler2D colortex6; uniform sampler2D colortex7; // uniform sampler2D colortex8; // specular -uniform sampler2D colortex9; // specular +// uniform sampler2D colortex9; // specular uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D noisetex; @@ -72,6 +72,12 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo return (near * far) / (depth * (near - far) + far); } + + + + + + float bloomWeight(){ float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 ); @@ -85,102 +91,9 @@ float bloomWeight(){ return result; } -vec3 invTonemap(vec3 col){ - return col/(1-luma(col)); -} + #define linear_to_srgb(x) (pow(x, vec3(1.0/2.2))) -uniform sampler2D colortex6; - - -float w0(float a) -{ - return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); -} - -float w1(float a) -{ - return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); -} - -float w2(float a) -{ - return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); -} - -float w3(float a) -{ - return (1.0/6.0)*(a*a*a); -} - -float g0(float a) -{ - return w0(a) + w1(a); -} - -float g1(float a) -{ - return w2(a) + w3(a); -} - -float h0(float a) -{ - return -1.0 + w1(a) / (w0(a) + w1(a)); -} - -float h1(float a) -{ - return 1.0 + w3(a) / (w2(a) + w3(a)); -} - -vec4 texture2D_bicubic(sampler2D tex, vec2 uv) -{ - vec4 texelSize = vec4(texelSize,1.0/texelSize); - uv = uv*texelSize.zw; - vec2 iuv = floor( uv ); - vec2 fuv = fract( uv ); - - float g0x = g0(fuv.x); - float g1x = g1(fuv.x); - float h0x = h0(fuv.x); - float h1x = h1(fuv.x); - float h0y = h0(fuv.y); - float h1y = h1(fuv.y); - - vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; - vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; - vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; - vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; - - return g0(fuv.y) * (g0x * texture2D(tex, p0) + - g1x * texture2D(tex, p1)) + - g1(fuv.y) * (g0x * texture2D(tex, p2) + - g1x * texture2D(tex, p3)); -} - -// vec3 lenseFlare(vec2 UV){ -// float noise = blueNoise(); - -// float vignetteLength = 0.2; -// float vignette = 0.5+length(texcoord-0.5);//min(max(length(texcoord-0.5) - vignetteLength,0.0) / (1.0/(1.0-vignetteLength)),1.0); - -// float aberrationStrength = vignette;//clamp(CHROMATIC_ABERRATION_STRENGTH * 0.01 * (1.0 - vignette),0.0,0.9) * vignette * 0.75; - -// vec2 centeredUV = texcoord - 0.5; - -// vec3 color = vec3(0.0); -// color = texture2D(colortex7, texcoord).rgb; - -// vec2 distortedUV = (centeredUV - (centeredUV ) * aberrationStrength) + 0.5; - -// color += texture2D(colortex7, distortedUV).rgb; -// // color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r; -// // color.g = texture2D(colortex7, texcoord).g; -// // color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b; - -// return color; -// } - void main() { /* DRAWBUFFERS:7 */ float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); @@ -219,21 +132,16 @@ void main() { vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); - vec2 resScale = vec2(1920.,1080.)/clampedRes; - vec2 bloomTileUV = (((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.); - vec3 bloomTile0 = texture2D_bicubic(colortex3, bloomTileUV/2.).rgb; //1/4 res - vec3 bloomTile1 = texture2D_bicubic(colortex6, bloomTileUV/4.).rgb; //1/8 res - vec3 bloomTile2 = texture2D_bicubic(colortex6, bloomTileUV/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res - vec3 bloomTile3 = texture2D_bicubic(colortex6, bloomTileUV/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res - vec3 bloomTile4 = texture2D_bicubic(colortex6, bloomTileUV/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res - vec3 bloomTile5 = texture2D_bicubic(colortex6, bloomTileUV/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res - vec3 bloomTile6 = texture2D_bicubic(colortex6, bloomTileUV/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res - - float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 ); - vec3 bloom = (bloomTile0*weights[0] + bloomTile1*weights[1] + bloomTile2*weights[2] + bloomTile3*weights[3] + bloomTile4*weights[4] + bloomTile5*weights[5] + bloomTile6*weights[6]) / bloomWeight(); - vec3 fogBloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0; + #ifdef OLD_BLOOM + vec3 bloom = texture2D(colortex3, texcoord/clampedRes*vec2(1920.,1080.)*BLOOM_QUALITY ).rgb / 2.0 / 7.0; + float lightScat = clamp((BLOOM_STRENGTH+3) * 0.05 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette; + #else + vec3 bloom = texture2D(colortex3, texcoord/clampedRes*vec2(1920.,1080.)*BLOOM_QUALITY ).rgb / 3.0 / bloomWeight(); + float lightScat = clamp(BLOOM_STRENGTH * 0.5 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette; + #endif + float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r; #ifdef AUTO_EXPOSURE float purkinje = clamp(exposure.a*exposure.a,0.0,1.0) * clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*Purkinje_strength,0,1); @@ -241,12 +149,9 @@ void main() { float purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*Purkinje_strength,0,1); #endif - float lightScat = clamp(BLOOM_STRENGTH * 0.3,0.0,1.0) * vignette; - float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r; - VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength) * (1.0-purkinje*0.3),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); - col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb; + col = (mix(col, bloom, VL_abs) + bloom * lightScat) * exposure.rgb; float lum = dot(col, vec3(0.15,0.3,0.55)); float lum2 = dot(col, vec3(0.85,0.7,0.45)); diff --git a/shaders/dimensions/composite12.fsh b/shaders/dimensions/composite12.fsh index e163cf2..06a6e0a 100644 --- a/shaders/dimensions/composite12.fsh +++ b/shaders/dimensions/composite12.fsh @@ -13,7 +13,6 @@ uniform float viewWidth; uniform float aspectRatio; uniform float frameTimeCounter; -uniform int frameCounter; uniform int hideGUI; @@ -135,41 +134,11 @@ vec3 saturationAndCrosstalk(vec3 color){ return color; } -float interleaved_gradientNoise(){ - vec2 coord = gl_FragCoord.xy; - float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); - return noise; -} -float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); -} - -vec3 chromaticAberration(vec2 UV){ - float noise = blueNoise() - 0.5; - - vec2 centeredUV = (texcoord - 0.5); - // not stretched by aspect ratio; circular by choice :) it makes most the abberation on the left/right of the screen. - float vignette = 1.0 - clamp(1.0 - length(centeredUV * vec2(aspectRatio,1.0)) / 200.0,0.0,1.0); - - float aberrationStrength = CHROMATIC_ABERRATION_STRENGTH * vignette; - - vec3 color = vec3(0.0); - color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r; - color.g = texture2D(colortex7, texcoord).g; - color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b; - - return color; -} - void main() { /* DRAWBUFFERS:7 */ - - #ifdef CHROMATIC_ABERRATION - vec3 color = chromaticAberration(texcoord); - #else - vec3 color = texture2D(colortex7,texcoord).rgb; - #endif + + vec3 color = texture2D(colortex7,texcoord).rgb; #ifdef CONTRAST_ADAPTATIVE_SHARPENING color = contrastAdaptiveSharpening(color, texcoord); @@ -184,6 +153,6 @@ void main() { #ifdef COLOR_GRADING_ENABLED color = colorGrading(color); #endif - + gl_FragData[0].rgb = clamp(int8Dither(color, texcoord),0.0,1.0); } diff --git a/shaders/dimensions/composite2.fsh b/shaders/dimensions/composite2.fsh index c3c866d..0fad316 100644 --- a/shaders/dimensions/composite2.fsh +++ b/shaders/dimensions/composite2.fsh @@ -22,7 +22,6 @@ uniform sampler2D colortex3; // uniform sampler2D colortex4; uniform sampler2D colortex6; uniform sampler2D colortex7; -uniform sampler2D colortex10; flat varying vec3 WsunVec; uniform vec3 sunVec; @@ -33,21 +32,12 @@ uniform float near; uniform float dhFarPlane; uniform float dhNearPlane; -// uniform mat4 gbufferModelViewInverse; -// uniform mat4 gbufferModelView; -uniform mat4 gbufferPreviousModelView; -// uniform mat4 gbufferProjectionInverse; -// uniform mat4 gbufferProjection; -// uniform mat4 gbufferPreviousProjection; -// uniform vec3 cameraPosition; -uniform vec3 previousCameraPosition; - uniform int frameCounter; uniform float frameTimeCounter; // varying vec2 texcoord; uniform vec2 texelSize; -flat varying vec2 TAA_Offset; +// flat varying vec2 TAA_Offset; uniform int isEyeInWater; uniform float rainStrength; @@ -120,17 +110,17 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z; if(LpvFadeF > 0.0){ - // if(length(lpvSample.xyz) > 1e-5){ - vec3 lighting = SampleLpvLinear(lpvPos).rgb * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0); - // float density = exp(-5.0 * clamp( 1.0 - length(lpvSample.xyz) / 16.0,0.0,1.0)) * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0) * LpvFadeF; - float density = exp(-5.0 * (1.0-length(lighting.xyz))) * LpvFadeF; - // float density = (1-exp(-1.0-clamp(length(lighting.rgb),0.0,1.0),25) )* LpvFadeF; + vec4 lpvSample = SampleLpvLinear(lpvPos); - // float density = 0.01 * LpvFadeF; + if(length(lpvSample.xyz) > 1e-5){ + vec3 LpvTorchLight = GetLpvBlockLight(lpvSample); + + vec3 lighting = LpvTorchLight; + float density = exp(-5.0 * clamp( 1.0 - length(lpvSample.xyz) / 16.0,0.0,1.0)) * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0) * LpvFadeF; color = lighting - lighting * exp(-density*dd*dL); - // } + } } return color; @@ -140,38 +130,21 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } - -uniform float nightVision; - #ifdef OVERWORLD_SHADER const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; - #ifdef TRANSLUCENT_COLORED_SHADOWS uniform sampler2D shadowcolor0; uniform sampler2DShadow shadowtex0; uniform sampler2DShadow shadowtex1; #endif flat varying vec3 refractedSunVec; - - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - - + // uniform int dhRenderDistance; #define TIMEOFDAYFOG #include "/lib/lightning_stuff.glsl" - - // #define CLOUDS_INTERSECT_TERRAIN + #define CLOUDS_INTERSECT_TERRAIN #include "/lib/volumetricClouds.glsl" - - #include "/lib/climate_settings.glsl" #include "/lib/overworld_fog.glsl" #endif #ifdef NETHER_SHADER @@ -186,9 +159,7 @@ uniform sampler2D colortex4; #define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) float interleaved_gradientNoise_temporal(){ - vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; - float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); - return noise; + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); } float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; @@ -197,15 +168,15 @@ float interleaved_gradientNoise(){ } float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter ); + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a+ 1.0/1.6180339887 * frameCounter ); } float R2_dither(){ - // #ifdef TAA + #ifdef TAA vec2 coord = gl_FragCoord.xy + (frameCounter%40000) * 2.0; - // #else - // vec2 coord = gl_FragCoord.xy; - // #endif + #else + vec2 coord = gl_FragCoord.xy; + #endif vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha.x * coord.x + alpha.y * coord.y ) ; } @@ -255,7 +226,7 @@ void waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEn } -vec3 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ +void waterVolumetrics(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estEyeDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ int spCount = 8; vec3 start = toShadowSpaceProjected(rayStart); @@ -265,29 +236,35 @@ vec3 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, //limit ray length at 32 blocks for performance and reducing integration error //you can't see above this anyway float maxZ = min(rayLength,32.0)/(1e-8+rayLength); - dV *= maxZ; - rayLength *= maxZ; - vec3 dVWorld = mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; + rayLength *= maxZ; + float dY = normalize(mat3(gbufferModelViewInverse) * rayEnd).y * rayLength; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + + #ifdef OVERWORLD_SHADER + float phase = fogPhase(VdotL) * 5.0; + #endif + vec3 absorbance = vec3(1.0); vec3 vL = vec3(0.0); + float YFade = pow(normalize(dVWorld).y*0.3+0.7,1.5); + #ifdef OVERWORLD_SHADER - float lowlightlevel = clamp(eyeBrightnessSmooth.y/240.0,0.1,1.0); - float phase = fogPhase(VdotL) * 5.0; + float lowlightlevel = clamp(eyeBrightnessSmooth.y/240.0,0.1,1.0); #else - float lowlightlevel = 1.0; - float phase = 0.0; + float lowlightlevel = 1.0; #endif + // lowlightlevel = pow(lowlightlevel,0.5); float expFactor = 11.0; for (int i=0;i pos.z && sh.x < 1.0){ - vec4 translucentShadow = texture2D(shadowcolor0, pos.xy); - if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); + sh = normalize(texture2D(shadowcolor0, pos.xy).rgb+0.0001); } #else sh = vec3(shadow2D(shadow, pos).x); @@ -318,28 +292,38 @@ vec3 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, } #ifdef VL_CLOUDS_SHADOWS - sh *= GetCloudShadow(progressW, WsunVec); + sh *= GetCloudShadow_VLFOG(progressW, WsunVec); #endif + + + // float bubble = 1.0 - pow(1.0-pow(1.0-min(max(1.0 - length(d*dVWorld) / (16),0.0)*5.0,1.0),2.0),2.0); + float bubble = exp( -7.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0) ); + float bubble2 = max(pow(length(d*dVWorld)/24,5)*100.0,0.0) + 1; + + float sunCaustics = (waterCaustics(progressW, WsunVec)) * mix(0.25,10.0,bubble) + 0.75; + + vec3 sunMul = exp(-1 * d * waterCoefs * 1.1); + vec3 Directlight = ((lightSource* sh) * phase * sunMul * sunCaustics) * lowlightlevel * pow(abs(WsunVec.y),1); + #else + vec3 Directlight = vec3(0.0); #endif + vec3 ambientMul = exp(-1 * d * waterCoefs); + vec3 Indirectlight = ambient * ambientMul * YFade * lowlightlevel; - float bubble = exp2(-10.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0)); - float caustics = mix(max(max(waterCaustics(progressW, WsunVec), phase*0.5) * mix(0.5, 200.0, bubble), phase), 1.0, lowlightlevel); + vec3 light = (Indirectlight + Directlight) * scatterCoef; - vec3 Directlight = lightSource * sh * phase * caustics*abs(WsunVec.y) * lowlightlevel; - vec3 Indirectlight = ambient * lowlightlevel; + vL += (light - light * exp(-waterCoefs * dd * rayLength)) / waterCoefs * absorbance; + absorbance *= exp(-waterCoefs * dd * rayLength); - vec3 WaterAbsorbance = exp(-waterCoefs * rayLength * d); - - vec3 light = (Indirectlight + Directlight) * WaterAbsorbance * scatterCoef; - - vec3 volumeCoeff = exp(-waterCoefs * rayLength * dd); - vL += (light - light * volumeCoeff) / waterCoefs * absorbance; - absorbance *= volumeCoeff; + #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT + vL += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, 1.0); + #endif } - return vL; + inColor += vL; } +// #endif vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; @@ -367,130 +351,9 @@ float encodeVec2(vec2 a){ -uniform int framemod8; -#include "/lib/TAA_jitter.glsl" +// uniform int framemod8; +// #include "/lib/TAA_jitter.glsl" - - - -vec3 toClipSpace3Prev(vec3 viewSpacePosition) { - return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; -} - -vec3 closestToCamera5taps(vec2 texcoord, sampler2D depth) -{ - vec2 du = vec2(texelSize.x*2., 0.0); - vec2 dv = vec2(0.0, texelSize.y*2.); - - vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depth, texcoord - dv - du).x); - vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depth, texcoord - dv + du).x); - vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depth, texcoord).x); - vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depth, texcoord + dv - du).x); - vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depth, texcoord + dv + du).x); - - vec3 dmin = dmc; - dmin = dmin.z > dtr.z ? dtr : dmin; - dmin = dmin.z > dtl.z ? dtl : dmin; - dmin = dmin.z > dbl.z ? dbl : dmin; - dmin = dmin.z > dbr.z ? dbr : dmin; - - #ifdef TAA_UPSCALING - dmin.xy = dmin.xy/RENDER_SCALE; - #endif - - return dmin; -} - -vec3 toClipSpace3Prev_DH( vec3 viewSpacePosition, bool depthCheck ) { - - #ifdef DISTANT_HORIZONS - mat4 projectionMatrix = depthCheck ? dhPreviousProjection : gbufferPreviousProjection; - return projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; - #else - return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; - #endif -} - -vec3 toScreenSpace_DH_special(vec3 POS, bool depthCheck ) { - - vec4 viewPos = vec4(0.0); - vec3 feetPlayerPos = vec3(0.0); - vec4 iProjDiag = vec4(0.0); - - #ifdef DISTANT_HORIZONS - if (depthCheck) { - iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw); - - feetPlayerPos = POS * 2.0 - 1.0; - viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3]; - viewPos.xyz /= viewPos.w; - - } else { - #endif - iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); - - feetPlayerPos = POS * 2.0 - 1.0; - viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; - viewPos.xyz /= viewPos.w; - - #ifdef DISTANT_HORIZONS - } - #endif - - return viewPos.xyz; -} -vec4 VLTemporalFiltering(vec3 viewPos, bool depthCheck, vec4 color){ - vec2 texcoord = gl_FragCoord.xy * texelSize; - - vec2 VLtexCoord = texcoord/VL_RENDER_RESOLUTION; - - // vec3 closestToCamera = closestToCamera5taps(texcoord, depthtex0); - // vec3 viewPos_5tap = toScreenSpace(closestToCamera); - - // get previous frames position stuff for UV - vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); - vec3 previousPosition = mat3(gbufferPreviousModelView) * playerPos + gbufferPreviousModelView[3].xyz; - previousPosition = toClipSpace3Prev(previousPosition); - - vec2 velocity = previousPosition.xy - VLtexCoord/RENDER_SCALE; - previousPosition.xy = VLtexCoord + velocity; - - vec4 currentFrame = color; - if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return currentFrame; - - // vec4 col0 = currentFrame; // can use this because its the center sample. - // vec4 col1 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, texelSize.y)); - // vec4 col2 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, -texelSize.y)); - // vec4 col3 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, -texelSize.y)); - // vec4 col4 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, texelSize.y)); - // vec4 col5 = texture2D(colortex0, VLtexCoord + vec2( 0.0, texelSize.y)); - // vec4 col6 = texture2D(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y)); - // vec4 col7 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0)); - // vec4 col8 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, 0.0)); - - // vec4 colMax = max(col0,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8)))))))); - // vec4 colMin = min(col0,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8)))))))); - - // // colMin = 0.5 * (colMin + min(col0,min(col5,min(col6,min(col7,col8))))); - // // colMax = 0.5 * (colMax + max(col0,max(col5,max(col6,max(col7,col8))))); - - vec4 frameHistory = texture2D(colortex10, previousPosition.xy*VL_RENDER_RESOLUTION); - vec4 clampedFrameHistory = frameHistory; - // vec4 clampedFrameHistory = clamp(frameHistory, colMin, colMax); - - float blendFactor = 0.25; - blendFactor = clamp(length(velocity/texelSize),blendFactor,0.2); - - // if(min(frameHistory.a,rejection) > 0.0) blendFactor = 1.0; - - return mix(clampedFrameHistory, currentFrame, blendFactor); -} - -float convertHandDepth(float depth) { - float ndcDepth = depth * 2.0 - 1.0; - ndcDepth /= MC_HAND_DEPTH; - return ndcDepth * 0.5 + 0.5; -} //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// @@ -499,95 +362,88 @@ float convertHandDepth(float depth) { void main() { - +#if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN + /* RENDERTARGETS:0,14 */ +#else /* RENDERTARGETS:0 */ +#endif - float noise_2 = blueNoise(); float noise_1 = max(1.0 - R2_dither(),0.0015); - // float noise_2 = interleaved_gradientNoise_temporal(); - vec2 bnoise = blueNoise(gl_FragCoord.xy ).rg; - - int seed = (frameCounter*5)%40000; - vec2 r2_sequence = R2_samples(seed).xy; - vec2 BN = fract(r2_sequence + bnoise); - - // vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize + texelSize*0.5; - vec2 tc = gl_FragCoord.xy/VL_RENDER_RESOLUTION*texelSize;// + texelSize*0.5; + float noise_2 = blueNoise(); + + vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize + texelSize*0.5; bool iswater = texture2D(colortex7,tc).a > 0.99; - vec2 jitter = TAA_Offset/VL_RENDER_RESOLUTION*texelSize*0.5; - - float depth = texture2D(depthtex0, tc + jitter).x; + float z0 = texture2D(depthtex0, tc).x; - float z0 = depth < 0.56 ? convertHandDepth(depth) : depth; - #ifdef DISTANT_HORIZONS float DH_z0 = texture2D(dhDepthTex,tc).x; #else float DH_z0 = 0.0; #endif - vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); - vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos0 + gbufferModelViewInverse[3].xyz; - vec3 playerPos_normalized = normalize(playerPos); + vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE , z0, DH_z0); + vec3 playerPos_normalized = normalize(mat3(gbufferModelViewInverse) * viewPos0 + gbufferModelViewInverse[3].xyz); - float dirtAmount = Dirt_Amount; + + + float dirtAmount = Dirt_Amount + 0.01; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; - vec3 directLightColor = lightCol.rgb / 2400.0; - vec3 indirectLightColor = averageSkyCol / 1200.0; - vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0; - - // indirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02; + vec3 directLightColor = lightCol.rgb/80.0; + vec3 indirectLightColor = averageSkyCol/30.0; + vec3 indirectLightColor_dynamic = averageSkyCol_Clouds/30.0; - #if defined OVERWORLD_SHADER - // z0 = texture2D(depthtex0, tc + jitter/VL_RENDER_RESOLUTION).x; - // viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); - vec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WsunVec, directLightColor, indirectLightColor); + vec3 cloudDepth = vec3(0.0); + vec3 fogDepth = vec3(0.0); + + #if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN + vec4 VolumetricClouds = renderClouds(viewPos0, vec2(noise_1,noise_2), directLightColor, indirectLightColor, cloudDepth); #ifdef CAVE_FOG - - float skyhole = pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2)* caveDetection; - VolumetricClouds.rgb *= 1.0-skyhole; - VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, skyhole); + float skyhole = (1.0-pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2)* caveDetection) ; + VolumetricClouds.rgb *= skyhole; + VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, (1.0-skyhole) * caveDetection); #endif #endif #ifdef OVERWORLD_SHADER float atmosphereAlpha = 1.0; - - vec3 sceneColor = texelFetch2D(colortex3,ivec2(tc/texelSize),0).rgb * VolumetricClouds.a + VolumetricClouds.rgb; - vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN, directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb); - + vec4 VolumetricFog = GetVolumetricFog(viewPos0, vec2(noise_2,noise_1), directLightColor, indirectLightColor, averageSkyCol_Clouds/30.0, atmosphereAlpha); + VolumetricClouds.a *= atmosphereAlpha; #endif #if defined NETHER_SHADER || defined END_SHADER - vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN.x, BN.y); + vec4 VolumetricFog = GetVolumetricFog(viewPos0, noise_1, noise_2); #endif - - #if defined OVERWORLD_SHADER - VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a); - // VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a); + + #if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN + VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a * atmosphereAlpha + VolumetricFog.rgb, VolumetricFog.a); #endif - if (isEyeInWater == 1){ - vec3 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0, length(viewPos0), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0), normalize(sunVec* lightCol.a ) )); - - VolumetricFog = vec4(underWaterFog, 1.0); - } - gl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0); - - // vec4 currentFrame = VolumetricFog; - // vec4 previousFrame = texture2D(colortex10, gl_FragCoord.xy * texelSize); - // vec4 temporallyFilteredVL = VLTemporalFiltering(viewPos0, z0 >= 1.0, VolumetricFog); + if (isEyeInWater == 1){ - // gl_FragData[1] = temporallyFilteredVL; + float estEyeDepth = clamp(eyeBrightnessSmooth.y/240.0,0.,1.0); + // estEyeDepth = pow(estEyeDepth,3.0) * 32.0; + estEyeDepth = 0.0; + // vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.); + + vec3 vl = vec3(0.0); + waterVolumetrics(vl, vec3(0.0), viewPos0, estEyeDepth, estEyeDepth, length(viewPos0), noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0), normalize(sunVec* lightCol.a ) )); + + gl_FragData[0] = clamp(vec4(vl,1.0),0.000001,65000.); + + } + + #if defined OVERWORLD_SHADER && defined CLOUDS_INTERSECT_TERRAIN + gl_FragData[1] = vec4(VolumetricClouds.a,0.0,0.0,0.0); + #endif } \ No newline at end of file diff --git a/shaders/dimensions/composite2.vsh b/shaders/dimensions/composite2.vsh index b7de7d9..3f1c92f 100644 --- a/shaders/dimensions/composite2.vsh +++ b/shaders/dimensions/composite2.vsh @@ -10,11 +10,10 @@ flat varying vec3 averageSkyCol_Clouds; flat varying float exposure; #endif - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #endif - +#if defined Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; +#endif @@ -50,7 +49,6 @@ void main() { gl_Position = ftransform(); gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0; - #ifdef OVERWORLD_SHADER lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; @@ -58,11 +56,11 @@ void main() { averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; #if defined Daily_Weather - dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams0.a = texelFetch2D(colortex4,ivec2(3,1),0).x/1500.0; - dailyWeatherParams1.a = texelFetch2D(colortex4,ivec2(3,1),0).y/1500.0; + dailyWeatherParams0.a = (texelFetch2D(colortex4,ivec2(3,1),0).x/150.0)/2.0; + dailyWeatherParams1.a = (texelFetch2D(colortex4,ivec2(3,1),0).y/150.0)/2.0; #endif #endif @@ -70,7 +68,7 @@ void main() { #ifdef NETHER_SHADER lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); - averageSkyCol_Clouds = vec3(0.0); + averageSkyCol_Clouds = vec3(2.0, 1.0, 0.5) * 10.0; #endif #ifdef END_SHADER @@ -80,7 +78,7 @@ void main() { #endif lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; - WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition) ; + WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); refractedSunVec = refract(WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333); diff --git a/shaders/dimensions/composite3.fsh b/shaders/dimensions/composite3.fsh index 30ac926..b5bdc22 100644 --- a/shaders/dimensions/composite3.fsh +++ b/shaders/dimensions/composite3.fsh @@ -13,7 +13,6 @@ uniform sampler2D noisetex; uniform sampler2D depthtex0; uniform sampler2D depthtex1; - // const bool colortex4MipmapEnabled = true; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; @@ -37,9 +36,8 @@ uniform sampler2D colortex15; uniform vec2 texelSize; uniform sampler2D colortex4; -uniform float viewHeight; -uniform float viewWidth; -uniform float nightVision; + + uniform vec3 sunVec; uniform float frameTimeCounter; uniform int frameCounter; @@ -58,8 +56,6 @@ uniform mat4 gbufferPreviousProjection; uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; -uniform int hideGUI; -uniform int dhRenderDistance; uniform int isEyeInWater; uniform ivec2 eyeBrightnessSmooth; uniform ivec2 eyeBrightness; @@ -73,12 +69,14 @@ uniform float caveDetection; #include "/lib/res_params.glsl" #ifdef OVERWORLD_SHADER + #include "/lib/sky_gradient.glsl" + #include "/lib/lightning_stuff.glsl" #include "/lib/climate_settings.glsl" + #define CLOUDS_INTERSECT_TERRAIN + // #define CLOUDSHADOWSONLY + // #include "/lib/volumetricClouds.glsl" #endif -#include "/lib/sky_gradient.glsl" - -uniform float eyeAltitude; #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) @@ -95,49 +93,28 @@ vec3 toLinear(vec3 sRGB){ } vec3 toScreenSpace(vec3 p) { vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); - vec3 playerPos = p * 2. - 1.; - vec4 fragposition = iProjDiag * playerPos.xyzz + gbufferProjectionInverse[3]; + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; return fragposition.xyz / fragposition.w; } #include "/lib/DistantHorizons_projections.glsl" - -float interleaved_gradientNoise_temporal(){ - #ifdef TAA - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887 * frameCounter); - #else - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y ) + 1.0/1.6180339887); - #endif +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); } +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); +} +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} + float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } -float R2_dither(){ - vec2 coord = gl_FragCoord.xy ; - - #ifdef TAA - coord += (frameCounter%40000) * 2.0; - #endif - - vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha.x * coord.x + alpha.y * coord.y ) ; -} -float blueNoise(){ - #ifdef TAA - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); - #else - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); - #endif -} -vec4 blueNoise(vec2 coord){ - return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; -} -vec3 normVec (vec3 vec){ - return vec*inversesqrt(dot(vec,vec)); -} float DH_ld(float dist) { return (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - dist * (dhFarPlane - dhNearPlane)); @@ -239,8 +216,7 @@ void ApplyDistortion(inout vec2 Texcoord, vec2 TangentNormals, float lineardista float refractionStrength = isTranslucentEntity ? 0.25 : 1.0 ; // Texcoord = abs(Texcoord + (TangentNormals * clamp((ld(depths.x) - ld(depths.y)) * 0.5,0.0,0.15)) * RENDER_SCALE * refractionStrength ); - // Texcoord = abs(Texcoord + (TangentNormals * mix(0.01, 0.1, pow(clamp(1.0-lineardistance/(32*4),0.0,1.0),2))) * RENDER_SCALE * refractionStrength ); - Texcoord = abs(Texcoord + TangentNormals * RENDER_SCALE * 0.1 ); + Texcoord = abs(Texcoord + (TangentNormals * mix(0.01, 0.1, pow(clamp(1.0-lineardistance/(32*4),0.0,1.0),2))) * RENDER_SCALE * refractionStrength ); float DistortedAlpha = decodeVec2(texture2D(colortex11,Texcoord).b).g; // float DistortedAlpha = decodeVec2(texelFetch2D(colortex11,ivec2(Texcoord/texelSize),0).b).g; @@ -249,201 +225,17 @@ void ApplyDistortion(inout vec2 Texcoord, vec2 TangentNormals, float lineardista Texcoord = mix(Texcoord, UnalteredTexcoord, min(max(0.1-DistortedAlpha,0.0) * 1000.0,1.0)); // remove distortion on non-translucents } -vec3 doRefractionEffect( inout vec2 texcoord, vec2 normal, float linearDistance){ - - // make the tangent space normals match the directions of the texcoord UV, this greatly improves the refraction effect. - vec2 UVNormal = vec2(normal.x,-normal.y); - - float refractionMult = 0.3 / (1.0 + linearDistance); - float diffractionMult = 0.035; - float smudgeMult = 1.0; - - // for diffraction, i wanted to know *when* normals were at an angle, not what the - float clampValue = 0.2; - vec2 abberationOffset = (clamp(UVNormal,-clampValue, clampValue)/clampValue) * diffractionMult; - - // return vec3(abs(abberationOffset), 0.0); - - #ifdef REFRACTION_SMUDGE - vec2 directionalSmudge = abberationOffset * (blueNoise()-0.5) * smudgeMult; - #else - vec2 directionalSmudge = vec2(0.0); - #endif - - vec2 refractedUV = texcoord - (UVNormal + directionalSmudge)*refractionMult; - - // a max bound around screen edges and edges of the refracted screen - vec2 vignetteSides = clamp(min((1.0 - refractedUV)/0.05, refractedUV/0.05)+0.5,0.0,1.0); - float vignette = vignetteSides.x*vignetteSides.y; - - refractionMult *= decodeVec2(texelFetch2D(colortex11, ivec2(refractedUV/texelSize),0).b).g > 0.0 ? 1.0 : 0.0; - - vec3 color = vec3(0.0); - - #ifdef FAKE_DISPERSION_EFFECT - //// RED - refractedUV = clamp(texcoord - ((UVNormal + abberationOffset) + directionalSmudge)*refractionMult ,0.0,1.0); - color.r = texelFetch2D(colortex3, ivec2(refractedUV/texelSize),0).r; - //// GREEN - refractedUV = clamp(texcoord - (UVNormal + directionalSmudge)*refractionMult ,0,1); - color.g = texelFetch2D(colortex3, ivec2(refractedUV/texelSize),0).g; - //// BLUE - refractedUV = clamp(texcoord - ((UVNormal - abberationOffset) + directionalSmudge)*refractionMult ,0.0,1.0); - color.b = texelFetch2D(colortex3, ivec2(refractedUV/texelSize),0).b; - - #else - refractedUV = clamp(texcoord - UVNormal,0.0,1.0); - color = texture2D(colortex3, refractedUV).rgb; - #endif - - // texcoord = texcoord - (UVNormal+directionalSmudge)*refractionMult*vignette; - return color; -} - -vec3 toClipSpace3Prev(vec3 viewSpacePosition) { - return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; -} - -vec3 closestToCamera5taps(vec2 texcoord, sampler2D depth) -{ - vec2 du = vec2(texelSize.x*2., 0.0); - vec2 dv = vec2(0.0, texelSize.y*2.); - - vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depth, texcoord - dv - du).x); - vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depth, texcoord - dv + du).x); - vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depth, texcoord).x); - vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depth, texcoord + dv - du).x); - vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depth, texcoord + dv + du).x); - - vec3 dmin = dmc; - dmin = dmin.z > dtr.z ? dtr : dmin; - dmin = dmin.z > dtl.z ? dtl : dmin; - dmin = dmin.z > dbl.z ? dbl : dmin; - dmin = dmin.z > dbr.z ? dbr : dmin; - - #ifdef TAA_UPSCALING - dmin.xy = dmin.xy/RENDER_SCALE; - #endif - - return dmin; -} - -vec3 toClipSpace3Prev_DH( vec3 viewSpacePosition, bool depthCheck ) { - - #ifdef DISTANT_HORIZONS - mat4 projectionMatrix = depthCheck ? dhPreviousProjection : gbufferPreviousProjection; - return projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; - #else - return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; - #endif -} - -vec3 toScreenSpace_DH_special(vec3 POS, bool depthCheck ) { - - vec4 viewPos = vec4(0.0); - vec3 feetPlayerPos = vec3(0.0); - vec4 iProjDiag = vec4(0.0); - - #ifdef DISTANT_HORIZONS - if (depthCheck) { - iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw); - - feetPlayerPos = POS * 2.0 - 1.0; - viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3]; - viewPos.xyz /= viewPos.w; - - } else { - #endif - iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); - - feetPlayerPos = POS * 2.0 - 1.0; - viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; - viewPos.xyz /= viewPos.w; - - #ifdef DISTANT_HORIZONS - } - #endif - - return viewPos.xyz; -} -vec3 tonemap(vec3 col){ - return col/(1+luma(col)); -} -vec3 invTonemap(vec3 col){ - return col/(1-luma(col)); -} - -vec4 VLTemporalFiltering(vec3 viewPos, bool depthCheck, out float DEBUG){ - vec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0; - - vec2 VLtexCoord = texcoord * VL_RENDER_RESOLUTION; - - // vec3 closestToCamera = closestToCamera5taps(texcoord, depthtex0); - // vec3 viewPos_5tap = toScreenSpace(closestToCamera); - - // get previous frames position stuff for UV - vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); - vec3 previousPosition = mat3(gbufferPreviousModelView) * playerPos + gbufferPreviousModelView[3].xyz; - previousPosition = toClipSpace3Prev(previousPosition); - - vec2 velocity = previousPosition.xy - texcoord/RENDER_SCALE; - previousPosition.xy = texcoord + velocity; - - // vec4 currentFrame = texture2D_bicubic(colortex0, VLtexCoord); - vec4 currentFrame = texture2D(colortex0, VLtexCoord ); - // vec4 currentFrame = texelFetch2D(colortex0, ivec2(VLtexCoord/texelSize),0); - - if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return currentFrame; - - vec4 col1 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, texelSize.y)); - vec4 col2 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, -texelSize.y)); - vec4 col3 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, -texelSize.y)); - vec4 col4 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, texelSize.y)); - vec4 col5 = texture2D(colortex0, VLtexCoord + vec2( 0.0, texelSize.y)); - vec4 col6 = texture2D(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y)); - vec4 col7 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0)); - vec4 col8 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, 0.0)); - - vec4 colMax = max(currentFrame,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8)))))))); - vec4 colMin = min(currentFrame,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8)))))))); - - // colMin = 0.5 * (colMin + min(currentFrame,min(col5,min(col6,min(col7,col8))))); - // colMax = 0.5 * (colMax + max(currentFrame,max(col5,max(col6,max(col7,col8))))); - - // vec4 col0 = texture(colortex0, VLtexCoord + vec2( texelSize.x, 0.0)); - // vec4 col1 = texture(colortex0, VLtexCoord + vec2( 0.0, texelSize.y)); - // vec4 col2 = texture(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0)); - // vec4 col3 = texture(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y)); - - // vec4 colMin = min(currentFrame, min(col0, min(col1, min(col2, col3)))); - // vec4 colMax = max(currentFrame, max(col0, max(col1, max(col2, col3)))); - - vec4 frameHistory = texture2D(colortex10, previousPosition.xy); - vec4 clampedFrameHistory = clamp(frameHistory, colMin, colMax); - - float blendingFactor = 0.1; - // if((min(max(clampedFrameHistory.a - frameHistory.a,0.0) / 0.0000001, 1.0)) > 0.0) blendingFactor = 1.0; - - // if(abs(clampedFrameHistory.a-frameHistory.a) > 0.1 && abs(currentFrame.a-frameHistory.a) > 0.1) blendingFactor = 1.0; - - // if(abs(currentFrame.a - frameHistory.a) > 0.6) blendingFactor = 1.0; - if(abs(clampedFrameHistory.a - frameHistory.a) > 0.1) blendingFactor = 1.0; - // blendingFactor = clamp(blendingFactor + abs(clampedFrameHistory.a - frameHistory.a),0.0,1.0); - - // DEBUG = abs(clampedFrameHistory.a - frameHistory.a) > 0.1 ? 0. : 1.0; - // DEBUG = clamp(abs(clampedFrameHistory.a - frameHistory.a),0.0,1.0); - - return clamp(mix(clampedFrameHistory, currentFrame, blendingFactor),0.0,65000.0); -} +uniform int dhRenderDistance; +uniform float eyeAltitude; void main() { - /* RENDERTARGETS:7,3,10 */ + /* DRAWBUFFERS:73 */ ////// --------------- SETUP STUFF --------------- ////// vec2 texcoord = gl_FragCoord.xy*texelSize; - float z = texture2D(depthtex0, texcoord).x; - float z2 = texture2D(depthtex1, texcoord).x; + float z = texture2D(depthtex0,texcoord).x; + float z2 = texture2D(depthtex1,texcoord).x; float frDepth = ld(z); float swappedDepth = z; @@ -466,13 +258,19 @@ void main() { float DH_depth0 = 0.0; #endif - vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth0); - vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; - vec3 playerPos_normalized = normVec(playerPos); - vec3 playerPos222 = mat3(gbufferModelViewInverse) * toScreenSpace_DH(texcoord/RENDER_SCALE, 1.0,1.0) + gbufferModelViewInverse[3].xyz ; + vec3 fragpos = toScreenSpace_DH(texcoord/RENDER_SCALE-vec2(TAA_Offset)*texelSize*0.5, z, DH_depth0); + + // vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(TAA_Offset)*texelSize*0.5,z)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 np3 = normVec(p3); + + float linearDistance = length(p3); + float linearDistance_cylinder = length(p3.xz); + + // vec3 fragpos_NODH = toScreenSpace(texcoord/RENDER_SCALE-vec2(TAA_Offset)*texelSize*0.5, z); + + // float linearDistance_NODH = length(p3); - float linearDistance = length(playerPos); - float linearDistance_cylinder = length(playerPos.xz); float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240.,2) ,0.0,1.0); float lightleakfixfast = clamp(eyeBrightness.y/240.,0.0,1.0); @@ -482,7 +280,7 @@ void main() { // bool isOpaque_entity = abs(opaqueMasks-0.45) < 0.01; ////// --------------- UNPACK TRANSLUCENT GBUFFERS --------------- ////// - vec4 data = texelFetch2D(colortex11,ivec2(texcoord/texelSize),0).rgba; + vec4 data = texture2D(colortex11,texcoord).rgba; vec4 unpack0 = vec4(decodeVec2(data.r),decodeVec2(data.g)) ; vec4 unpack1 = vec4(decodeVec2(data.b),0,0) ; @@ -490,6 +288,7 @@ void main() { vec2 tangentNormals = unpack0.xy*2.0-1.0; if(albedo.a < 0.01) tangentNormals = vec2(0.0); + vec4 TranslucentShader = texture2D(colortex2, texcoord); ////// --------------- UNPACK MISC --------------- ////// // 1.0 = water mask @@ -511,36 +310,25 @@ void main() { #else float cloudAlpha = 1.0; #endif - float DEBUG = 0.0; - vec4 temporallyFilteredVL = VLTemporalFiltering(viewPos, z >= 1.0,DEBUG); - gl_FragData[2] = temporallyFilteredVL; - - // #ifdef DISTANT_HORIZONS - // vec4 vl = BilateralUpscale(colortex0, colortex14, colortex12, gl_FragCoord.xy - 1.5, sqrt(texture2D(colortex12,texcoord).a/65000.0), cloudAlpha); - // #else - // vec4 vl = BilateralUpscale(colortex0, colortex14, depthtex0, gl_FragCoord.xy - 1.5, frDepth,cloudAlpha); - // #endif - // vec4 temporallyFilteredVL = vl; - - // vec4 temporallyFilteredVL = texture2D(colortex10, texcoord*VL_RENDER_RESOLUTION); + #ifdef DISTANT_HORIZONS + vec4 vl = BilateralUpscale(colortex0, colortex14, colortex12, gl_FragCoord.xy - 1.5, sqrt(texture2D(colortex12,texcoord).a/65000.0), cloudAlpha); + #else + vec4 vl = BilateralUpscale(colortex0, colortex14, depthtex0, gl_FragCoord.xy - 1.5, frDepth,cloudAlpha); + #endif float bloomyFogMult = 1.0; ////// --------------- distort texcoords as a refraction effect vec2 refractedCoord = texcoord; - ////// --------------- MAIN COLOR BUFFER - #ifdef FAKE_REFRACTION_EFFECT - // ApplyDistortion(refractedCoord, tangentNormals, linearDistance, isEntity); - // vec3 color = texture2D(colortex3, refractedCoord).rgb; - vec3 color = doRefractionEffect(refractedCoord, tangentNormals.xy, linearDistance); - #else - // vec3 color = texture2D(colortex3, refractedCoord).rgb; - vec3 color = texelFetch2D(colortex3, ivec2(refractedCoord/texelSize),0).rgb; + #ifdef Refraction + ApplyDistortion(refractedCoord, tangentNormals, linearDistance, isEntity); #endif - vec4 TranslucentShader = texture2D(colortex2, texcoord); - // color = vec3(texcoord-0.5,0.0) * mat3(gbufferModelViewInverse); + + ////// --------------- MAIN COLOR BUFFER + vec3 color = texture2D(colortex3, refractedCoord).rgb; + // apply block breaking effect. if(albedo.a > 0.01 && !isWater && TranslucentShader.a <= 0.0 && !isEntity) color = mix(color*6.0, color, luma(albedo.rgb)) * albedo.rgb; @@ -554,7 +342,7 @@ void main() { float fog = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance_cylinder / far,0.0)*3.0,1.0) ); #endif - fog *= exp(-10.0 * pow(clamp(playerPos_normalized.y,0.0,1.0)*4.0,2.0)); + fog *= exp(-10.0 * pow(clamp(np3.y,0.0,1.0)*4.0,2.0)); fog *= (1.0-caveDetection); @@ -563,7 +351,7 @@ void main() { #ifdef SKY_GROUND vec3 borderFogColor = skyGroundColor; #else - vec3 borderFogColor = skyFromTex(playerPos_normalized, colortex4)/30.0; + vec3 borderFogColor = skyFromTex(np3, colortex4)/30.0; #endif color.rgb = mix(color.rgb, borderFogColor, fog); @@ -573,7 +361,7 @@ void main() { if (TranslucentShader.a > 0.0){ #ifdef Glass_Tint - if(!isWater) color *= mix(normalize(albedo.rgb+1e-7), vec3(1.0), max(fog, min(max(0.1-albedo.a,0.0) * 10.0,1.0))) ; + if(!isWater) color *= mix(normalize(albedo.rgb+0.0001)*0.9+0.1, vec3(1.0), max(fog, min(max(0.1-albedo.a,0.0) * 1000.0,1.0))) ; #endif #ifdef BorderFog @@ -597,50 +385,58 @@ void main() { #endif cavefogCol *= 1.0-pow(1.0-pow(1.0 - max(1.0 - linearDistance/far,0.0),2.0),CaveFogFallOff); - cavefogCol *= exp(-7.0*clamp(normalize(playerPos_normalized).y*0.5+0.5,0.0,1.0)) * 0.999 + 0.001; + cavefogCol *= exp(-7.0*clamp(normalize(np3).y*0.5+0.5,0.0,1.0)) * 0.999 + 0.001; - cavefogCol *= 0.3; - - float skyhole = pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2); + float skyhole = pow(clamp(1.0-pow(max(np3.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2); color.rgb = mix(color.rgb + cavefogCol * caveDetection, cavefogCol, z >= 1.0 ? skyhole * caveDetection : 0.0); - } #endif +#ifdef END_SHADER + // create a point that "glows" but in worldspace. + + // this is not correct but whatever + float CenterdotV = dot(normalize(vec3(0.0,400.0,0.0) - cameraPosition), normalize(p3 + cameraPosition)); + + float distanceFadeOff = pow(min(max(length(cameraPosition)-300.0,0.0)/100.0,1.0),2.0); + + color.rgb += vec3(0.1,0.5,1.0) * (exp2(-10.0 * max(-CenterdotV*0.5+0.5,0.0)) + exp(-150.0 * max(-CenterdotV*0.5+0.5,0.0))) * distanceFadeOff; +#endif + ////// --------------- underwater fog if (isEyeInWater == 1){ - float dirtAmount = Dirt_Amount; + float dirtAmount = Dirt_Amount + 0.01; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; - vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; - vec3 absorption = exp(-2.0 * totEpsilon * linearDistance); - vec3 fixedAbsorption = exp(-30.0 * totEpsilon) ; - vec3 finalAbsorption = (absorption + fixedAbsorption * 5.0 * (1.0 + nightVision*10)); - // vec3 finalAbsorption = absorption; - - linearDistance = length(vec3(playerPos.x,max(-playerPos.y,0.0),playerPos.z)); - - // in vanilla, the water fog has a max distance of ~7 chunks - float fogfade = max(1.0 - linearDistance / min(far, 16.0*7.0), 0.0); - fogfade *= fogfade; - // fogfade = exp(-5.0* (1.0-fogfade)); - - color.rgb = mix(fixedAbsorption, color.rgb * finalAbsorption, fogfade); - // color.rgb = color.rgb * finalAbsorption; + vec3 absorbColor = exp(-totEpsilon*linearDistance); + vec3 maxAbsorb = exp(-8.0 * totEpsilon); + #ifdef OVERWORLD_SHADER + + linearDistance = length(vec3(p3.x,max(-p3.y,0.0),p3.z)); + float fogfade = exp(-0.001*(linearDistance*linearDistance)); + vec3 thresholdAbsorbedColor = mix(maxAbsorb, absorbColor, clamp(dot(absorbColor,vec3(0.33333)),0.0,1.0)); + color.rgb = mix(vec3(1.0) * clamp(WsunVec.y,0,1) * pow(normalize(np3).y*0.3+0.7,1.5) * maxAbsorb, color.rgb * thresholdAbsorbedColor, clamp(fogfade,0.0,1.0)); + + #else + + color.rgb *= absorbColor; + + #endif + bloomyFogMult *= 0.4; } ////// --------------- BLEND FOG INTO SCENE //////////// apply VL fog over opaque and translucents - bloomyFogMult *= temporallyFilteredVL.a; - color *= temporallyFilteredVL.a; - color += temporallyFilteredVL.rgb; + color *= vl.a*cloudAlpha ; + color += vl.rgb; + bloomyFogMult *= mix(vl.a,vl.a*0.5 + 0.5, rainStrength); ////// --------------- VARIOUS FOG EFFECTS (in front of volumetric fog) //////////// blindness, nightvision, liquid fogs and misc fogs @@ -653,13 +449,12 @@ void main() { ////// --------------- lava. if (isEyeInWater == 2){ - color.rgb = mix(color.rgb, vec3(0.1,0.0,0.0), 1.0-exp(-10.0*clamp(linearDistance*0.5,0.,1.))*0.5 ); - bloomyFogMult = 0.0; + color.rgb = vec3(4.0,0.5,0.1); } ///////// --------------- powdered snow if (isEyeInWater == 3){ - color.rgb = mix(color.rgb,vec3(0.5,0.75,1.0),clamp(linearDistance*0.5,0.,1.)); + color.rgb = mix(color.rgb,vec3(10,15,20),clamp(linearDistance*0.5,0.,1.)); bloomyFogMult = 0.0; } @@ -667,30 +462,23 @@ void main() { color.rgb *= mix(1.0,clamp( exp(pow(linearDistance*(blindness*0.2),2) * -5),0.,1.) , blindness); //////// --------------- darkness effect - color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(viewPos)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); + color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(fragpos)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); ////// --------------- FINALIZE #ifdef display_LUT + vec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb / 30; - // if(hideGUI == 0){ - vec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy/150),0).rgb /1200.0; - - if(luma(thingy) > 0.0){ - color.rgb = thingy; - // // vl.a = 1.0; - } - // } - #if defined OVERWORLD_SHADER - - if( hideGUI == 1) color.rgb = skyCloudsFromTex(playerPos_normalized, colortex4).rgb/1200.0; - #else - if( hideGUI == 1) color.rgb = volumetricsFromTex(playerPos_normalized, colortex4, 0.0).rgb/1200.0; - #endif + if(luma(thingy) > 0.0){ + color.rgb = thingy; + vl.a = 1.0; + } #endif -// color.rgb = vec3(DEBUG); + + // if(texcoord.x > 0.5 )color.rgb = skyCloudsFromTex(np3, colortex4).rgb/30.0; + gl_FragData[0].r = bloomyFogMult; // pass fog alpha so bloom can do bloomy fog gl_FragData[1].rgb = clamp(color.rgb, 0.0,68000.0); - // gl_FragData[1].rgb = vec3(tangentNormals.xy,0.0) * 0.1 ; + // gl_FragData[1].rgb = vec3(tangentNormals.xy,0.0) ; // gl_FragData[1].rgb = vec3(1.0) * ld( (data.a > 0.0 ? data.a : texture2D(depthtex0, texcoord).x ) ) ; // gl_FragData[1].rgb = gl_FragData[1].rgb * (1.0-TranslucentShader.a) + TranslucentShader.rgb*10.0; // gl_FragData[1].rgb = 1-(texcoord.x > 0.5 ? vec3(TranslucentShader.a) : vec3(data.a)); diff --git a/shaders/dimensions/composite3.vsh b/shaders/dimensions/composite3.vsh index 2b4c566..3b7d4d0 100644 --- a/shaders/dimensions/composite3.vsh +++ b/shaders/dimensions/composite3.vsh @@ -37,7 +37,7 @@ void main() { #ifdef OVERWORLD_SHADER #ifdef BorderFog - skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 1200.0 * Sky_Brightness; + skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 30.0 * Sky_Brightness; #endif WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); #endif diff --git a/shaders/dimensions/composite5.fsh b/shaders/dimensions/composite5.fsh index d060192..a9d9a1a 100644 --- a/shaders/dimensions/composite5.fsh +++ b/shaders/dimensions/composite5.fsh @@ -11,7 +11,7 @@ const int colortex6Format = R11F_G11F_B10F; // additionnal buffer for bloom (c const int colortex7Format = RGBA8; // Final output, transparencies id (gbuffer->composite4) const int colortex8Format = RGBA8; // Specular Texture const int colortex9Format = RGBA8; // rain in alpha -const int colortex10Format = RGBA16F; // resourcepack Skies +const int colortex10Format = RGBA16; // resourcepack Skies const int colortex11Format = RGBA16; // unchanged translucents albedo, alpha and tangent normals const int colortex12Format = RGBA16F; // DISTANT HORIZONS + VANILLA MIXED DEPTHs @@ -31,7 +31,7 @@ const bool colortex6Clear = false; const bool colortex7Clear = false; const bool colortex8Clear = false; const bool colortex9Clear = true; -const bool colortex10Clear = false; +const bool colortex10Clear = true; const bool colortex11Clear = true; const bool colortex12Clear = false; const bool colortex13Clear = false; @@ -41,11 +41,11 @@ const bool colortex15Clear = false; #ifdef SCREENSHOT_MODE /* - const int colortex5Format = RGBA32F; //TAA buffer (everything) + const int colortex5Format = RGBA32F;// TAA buffer (everything) */ #else /* - const int colortex5Format = RGBA16F; //TAA buffer (everything) + const int colortex5Format = R11F_G11F_B10F; // TAA buffer (everything) */ #endif @@ -67,7 +67,6 @@ uniform vec2 texelSize; uniform float frameTimeCounter; uniform float viewHeight; uniform float viewWidth; - uniform vec3 previousCameraPosition; uniform mat4 gbufferPreviousModelView; @@ -214,24 +213,6 @@ vec4 smoothfilter(in sampler2D tex, in vec2 uv) return texture2D(tex, uv); } -vec2 smoothfilterUV(in vec2 uv) -{ - vec2 textureResolution = vec2(viewWidth,viewHeight); - uv = uv*textureResolution + 0.5; - vec2 iuv = floor( uv ); - vec2 fuv = fract( uv ); - - #ifndef SMOOTHESTSTEP_INTERPOLATION - uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); - #endif - #ifdef SMOOTHESTSTEP_INTERPOLATION - uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); - #endif - - uv = (uv - 0.5)/textureResolution; - - return uv; -} //approximation from SMAA presentation from siggraph 2016 vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount) { @@ -250,14 +231,15 @@ vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float shar vec2 w12 = w1 + w2; vec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12); vec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb; + vec2 tc0 = rtMetrics.xy * (centerPosition - 1.0); vec2 tc3 = rtMetrics.xy * (centerPosition + 2.0); - vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + + vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + vec4(texture2D(colorTex, vec2(tc0.x, tc12.y)).rgb, 1.0) * (w0.x * w12.y) + vec4(centerColor, 1.0) * (w12.x * w12.y) + vec4(texture2D(colorTex, vec2(tc3.x, tc12.y)).rgb, 1.0) * (w3.x * w12.y) + vec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y ); - + return color.rgb/color.a; } @@ -332,24 +314,6 @@ vec3 closestToCamera5taps_DH(vec2 texcoord, sampler2D depth, sampler2D dhDepth, return dmin; } -vec3 RGB2YCoCg(vec3 RGB) -{ - vec3 o; - o.x = 0.25*RGB.r + 0.5*RGB.g + 0.25*RGB.b; - o.y = 0.5*RGB.r - 0.5*RGB.b; - o.z = -0.25*RGB.r + 0.5*RGB.g - 0.25*RGB.b; - return o; -} - -vec3 YCoCg2RGB(vec3 YCoCg) -{ - vec3 o; - o.r = YCoCg.x + YCoCg.y - YCoCg.z; - o.g = YCoCg.x + YCoCg.z; - o.b = YCoCg.x - YCoCg.y - YCoCg.z; - return o; -} - vec4 computeTAA(vec2 texcoord, bool hand){ vec2 jitter = offsets[framemod8]*texelSize*0.5; @@ -376,9 +340,9 @@ vec4 computeTAA(vec2 texcoord, bool hand){ vec2 velocity = previousPosition.xy - closestToCamera.xy; previousPosition.xy = texcoord + velocity; + // sample current frame, and make sure it is de-jittered - // vec3 currentFrame = smoothfilter(colortex3, adjTC + jitter).rgb; - vec3 currentFrame = texelFetch2D(colortex3, ivec2((adjTC + jitter)/texelSize), 0).rgb; + vec3 currentFrame = smoothfilter(colortex3, adjTC + jitter).rgb; //reject history if off-screen and early exit if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return vec4(currentFrame, 1.0); @@ -402,13 +366,14 @@ vec4 computeTAA(vec2 texcoord, bool hand){ vec3 colMax = max(col0,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8)))))))); vec3 colMin = min(col0,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8)))))))); - colMin = 0.5 * (colMin + min(col0,min(col5,min(col6,min(col7,col8))))); - colMax = 0.5 * (colMax + max(col0,max(col5,max(col6,max(col7,col8))))); + vec3 colMax5 = max(col0,max(col5,max(col6,max(col7,col8)))); + vec3 colMin5 = min(col0,min(col5,min(col6,min(col7,col8)))); + colMin = 0.5 * (colMin + colMin5); + colMax = 0.5 * (colMax + colMax5); #endif - #ifdef DAMAGE_TAKEN_EFFECT - ////// when this triggers, use current frame UV to sample history, for a funny trailing effect. + // when this triggers, use current frame UV to sample history, for a funny trailing effect. if(CriticalDamageTaken > 0.01) previousPosition.xy = texcoord; #endif @@ -418,17 +383,14 @@ vec4 computeTAA(vec2 texcoord, bool hand){ float blendingFactor = BLEND_FACTOR; if(hand) blendingFactor = clamp(length(velocity/texelSize),blendingFactor,1.0); - ////// Increases blending factor when far from AABB, reduces ghosting - // blendingFactor = min(blendingFactor + luma(min(max(clampedframeHistory-frameHistory,0.0) / frameHistory, 1.0)),1.0); - // blendingFactor = min(blendingFactor + luma(abs(clampedframeHistory - frameHistory)/clampedframeHistory) ,1.0); + //Increases blending factor when far from AABB, reduces ghosting + blendingFactor = min(blendingFactor + luma(min(max(clampedframeHistory - frameHistory,0.0) / frameHistory, 1.0)),1.0); - // if(luma(abs(clampedframeHistory - frameHistory)) > 0.01) blendingFactor = 1.0; - - ////// Blend current pixel with clamped history, apply fast tonemap beforehand to reduce flickering + // Blend current pixel with clamped history, apply fast tonemap beforehand to reduce flickering vec3 finalResult = invTonemap(mix(tonemap(clampedframeHistory), tonemap(currentFrame), blendingFactor)); #ifdef DAMAGE_TAKEN_EFFECT - ////// when this triggers, do a funny trailing effect. + // when this triggers, do a funny trailing effect. if(CriticalDamageTaken > 0.01) finalResult = mix(finalResult, frameHistory, sqrt(CriticalDamageTaken)*0.8); #endif #ifdef SCREENSHOT_MODE @@ -456,10 +418,14 @@ void main() { // vec4 color = TAA_hq(hand); - vec4 color = computeTAA(smoothfilterUV(texcoord), hand); + vec4 color = computeTAA(texcoord, hand); // gl_FragData[0] = clamp(color, 0.0, 65000.0); + #if DEBUG_VIEW == debug_TEMPORAL_REPROJECTION + color.rgb = texture2D(colortex3, taauTC).rgb; + #endif + #ifdef SCREENSHOT_MODE gl_FragData[0] = clamp(color, 0.0, 65000.0); #else diff --git a/shaders/dimensions/deferred.fsh b/shaders/dimensions/deferred.fsh index a65ccea..84b8232 100644 --- a/shaders/dimensions/deferred.fsh +++ b/shaders/dimensions/deferred.fsh @@ -64,18 +64,11 @@ vec3 toShadowSpaceProjected(vec3 p3){ return p3; } -float interleaved_gradientNoise_temporal(){ - return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y) + 1.0/1.6180339887 * frameCounter); -} float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; - float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+frameCounter/1.6180339887); return noise; } -float R2_dither(){ - vec2 alpha = vec2(0.75487765, 0.56984026); - return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; -} float blueNoise(){ return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); } @@ -130,7 +123,6 @@ float invLinZ (float lindepth){ } #ifdef OVERWORLD_SHADER - uniform sampler2D colortex4; // uniform sampler2D colortex12; // const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; @@ -143,27 +135,11 @@ float invLinZ (float lindepth){ uniform sampler2DShadow shadowtex1; #endif - // #define TEST + #define TEST #define TIMEOFDAYFOG #include "/lib/lightning_stuff.glsl" - - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - - flat varying vec4 CurrentFrame_dailyWeatherParams0; - flat varying vec4 CurrentFrame_dailyWeatherParams1; - - - #define VL_CLOUDS_DEFERRED - + #include "/lib/volumetricClouds.glsl" - #include "/lib/climate_settings.glsl" #include "/lib/overworld_fog.glsl" #endif @@ -189,16 +165,23 @@ vec2 R2_samples(float n){ return fract(alpha * n); } -uniform float dayChangeSmooth; -uniform bool worldTimeChangeCheck; - void main() { /* DRAWBUFFERS:4 */ gl_FragData[0] = vec4(0.0); - float mixhistory = 0.06; +float accumuteSpeed = texelFetch2D(colortex4, ivec2(5,5), 0).r/150.0; + +vec2 pixelPos6 = vec2(5,5); + +if (gl_FragCoord.x > pixelPos6.x && gl_FragCoord.x < pixelPos6.x + 1 && gl_FragCoord.y > pixelPos6.y && gl_FragCoord.y < pixelPos6.y + 1){ + mixhistory = 0.1; + gl_FragData[0] = vec4(1,0,0,1); +} + + + #ifdef OVERWORLD_SHADER @@ -211,12 +194,12 @@ float mixhistory = 0.06; #ifdef Daily_Weather ivec2 pixelPos = ivec2(0,0); if (gl_FragCoord.x > 1 && gl_FragCoord.x < 4 && gl_FragCoord.y > 1 && gl_FragCoord.y < 2){ - - mixhistory = clamp(dayChangeSmooth*dayChangeSmooth*dayChangeSmooth*0.1, frameTime*0.1, 1.0); - if(gl_FragCoord.x < 2) gl_FragData[0] = vec4(CurrentFrame_dailyWeatherParams0.rgb * 10.0,1.0); - if(gl_FragCoord.x > 2) gl_FragData[0] = vec4(CurrentFrame_dailyWeatherParams1.rgb * 10.0,1.0); - if(gl_FragCoord.x > 3) gl_FragData[0] = vec4(CurrentFrame_dailyWeatherParams0.a * 10.0, CurrentFrame_dailyWeatherParams1.a * 10.0, 0.0, 1.0); + mixhistory = 0.005; + + if(gl_FragCoord.x < 2) gl_FragData[0] = vec4(dailyWeatherParams0.rgb * 2.0,1.0); + if(gl_FragCoord.x > 2) gl_FragData[0] = vec4(dailyWeatherParams1.rgb * 2.0,1.0); + if(gl_FragCoord.x > 3) gl_FragData[0] = vec4(dailyWeatherParams0.a * 2.0, dailyWeatherParams1.a * 2.0, 0.0, 1.0); } #endif @@ -284,9 +267,7 @@ if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ sky *= vec3(0.0, 0.18, 0.35); #endif - gl_FragData[0] = vec4(sky / 4000.0 , 1.0); - - if(worldTimeChangeCheck) mixhistory = 1.0; + gl_FragData[0] = vec4(sky / 4000.0, 1.0); } /// --- Sky + clouds + fog @@ -294,31 +275,27 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.+tempOffsets/256.,0.0,1.0); vec3 viewVector = cartToSphere(p); - vec3 viewPos = mat3(gbufferModelView)*viewVector*1024.0; - float noise = interleaved_gradientNoise_temporal(); - - WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition + gbufferModelViewInverse[3].xyz) ;// * ( float(sunElevation > 1e-5)*2.0-1.0 ); + WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition) ;// * ( float(sunElevation > 1e-5)*2.0-1.0 ); vec3 sky = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy)-ivec2(257,0),0).rgb/150.0; - sky = mix(averageSkyCol_Clouds * AmbientLightTint * 0.25, sky, pow(clamp(viewVector.y+1.0,0.0,1.0),5.0)); + sky = mix(dot(sky, vec3(0.333)) * vec3(0.5), sky, pow(clamp(viewVector.y+1.0,0.0,1.0),5)); vec3 suncol = lightSourceColor; - #ifdef ambientLight_only suncol = vec3(0.0); #endif - float rejection = 1.0; - vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, suncol*2.5, skyGroundCol/30.0); - + + vec3 cloudDepth = vec3(0.0); + vec4 clouds = renderClouds(mat3(gbufferModelView)*viewVector*1024., vec2(fract(frameCounter/1.6180339887),1-fract(frameCounter/1.6180339887)), suncol*2.0, skyGroundCol/30.0, cloudDepth); + float atmosphereAlpha = 1.0; - vec4 volumetricFog = GetVolumetricFog(viewPos, vec2(noise, 1.0-noise), suncol*2.5, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha, volumetricClouds.rgb); + vec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*1024., vec2(fract(frameCounter/1.6180339887),1-fract(frameCounter/1.6180339887)), suncol*2.0, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha); - sky = sky * volumetricClouds.a + volumetricClouds.rgb / 5.0; - sky = sky * volumetricFog.a + volumetricFog.rgb / 5.0; + sky = sky*clouds.a + clouds.rgb / 5.0; + sky *= atmosphereAlpha; + sky = sky * VL_Fog.a + VL_Fog.rgb / 5.0; gl_FragData[0] = vec4(sky,1.0); - - if(worldTimeChangeCheck) mixhistory = 1.0; } #endif @@ -329,15 +306,14 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ if (gl_FragCoord.x > (fogPos.x - fogPos.x*0.22) && gl_FragCoord.y > 0.4 && gl_FragCoord.x < 535){ vec2 p = clamp(floor(gl_FragCoord.xy-fogPos)/256.+tempOffsets/256.,-0.2,1.2); vec3 viewVector = cartToSphere(p); - float noise = interleaved_gradientNoise_temporal(); vec3 BackgroundColor = vec3(0.0); - vec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*256., noise, 1.0-noise); + vec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*256., fract(frameCounter/1.6180339887), fract(frameCounter/2.6180339887)); - BackgroundColor += VL_Fog.rgb; + BackgroundColor += VL_Fog.rgb/5.0; - gl_FragData[0] = vec4(BackgroundColor*8.0, 1.0); + gl_FragData[0] = vec4(BackgroundColor, 1.0); } #endif @@ -395,11 +371,12 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+ //Temporally accumulate sky and light values -vec3 frameHistory = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; -vec3 currentFrame = gl_FragData[0].rgb*150.; +vec3 temp = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; +vec3 curr = gl_FragData[0].rgb*150.; +if(accumuteSpeed < 1.0) mixhistory = 1.0; -gl_FragData[0].rgb = clamp(mix(frameHistory, currentFrame, mixhistory),0.0,65000.); +gl_FragData[0].rgb = clamp(mix(temp, curr, mixhistory),0.0,65000.); //Exposure values if (gl_FragCoord.x > 10. && gl_FragCoord.x < 11. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) diff --git a/shaders/dimensions/deferred.vsh b/shaders/dimensions/deferred.vsh index 5378d88..02bf6ec 100644 --- a/shaders/dimensions/deferred.vsh +++ b/shaders/dimensions/deferred.vsh @@ -23,13 +23,8 @@ flat varying float rodExposure; flat varying float avgL2; flat varying float centerDepth; -#ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; -#endif -uniform int hideGUI; -flat varying vec4 CurrentFrame_dailyWeatherParams0; -flat varying vec4 CurrentFrame_dailyWeatherParams1; +flat varying vec4 dailyWeatherParams0; +flat varying vec4 dailyWeatherParams1; uniform sampler2D colortex4; uniform sampler2D colortex6; @@ -151,13 +146,10 @@ void main() { } // maximum control of color and luminance + vec3 minimumlight = vec3(0.5,0.75,1.0) * (min(MIN_LIGHT_AMOUNT,0.0025) + nightVision); // vec3 minimumlight = vec3(0.5,0.75,1.0) * nightVision; - // averageSkyCol_Clouds = max( normalize(averageSkyCol_Clouds) * min(luma(averageSkyCol_Clouds) * 3.0,2.5) * (1.0-rainStrength*0.7), minimumlight); - - - vec3 minimumlight = vec3(0.02) * 0.2 * MIN_LIGHT_AMOUNT + nightVision * 0.05; - averageSkyCol_Clouds = max(normalize(averageSkyCol_Clouds + 1e-6) * min(luma(averageSkyCol_Clouds) * 3.0,2.5),0.0); - averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS,0.0) + max(minimumlight, 0.02 * 0.2); + averageSkyCol_Clouds = max( normalize(averageSkyCol_Clouds) * min(luma(averageSkyCol_Clouds) * 3.0,2.5) * (1.0-rainStrength*0.7), minimumlight); + averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS, minimumlight); //////////////////////////////////////// /// --- SUNLIGHT/MOONLIGHT STUFF --- /// @@ -173,8 +165,7 @@ void main() { sunColor = sunColorBase/4000.0 * skyAbsorb; moonColor = moonColorBase/4000.0; - // lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis; - lightSourceColor = sunColor * sunVis + moonColor * moonVis; + lightSourceColor = (sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis) ; #endif @@ -222,39 +213,8 @@ void main() { vec4(DAY9_l0_density, DAY9_l1_density, DAY9_l2_density, DAY9_cfog_density) ); - - - CurrentFrame_dailyWeatherParams0 = weatherParameters_A[dayCounter]; - CurrentFrame_dailyWeatherParams1 = weatherParameters_B[dayCounter]; - - vec4 rainyWeatherParameters_A[3] = vec4[]( - // vec4(DAY0_l0_coverage, DAY0_l1_coverage, DAY0_l2_coverage, DAY0_ufog_density), - vec4(1.3,0.0,0.0,0.0), - vec4(0.5,0.0,0.0,0.0), - vec4(0.0,0.0,0.0,0.0) - ); - vec4 rainyWeatherParameters_B[3] = vec4[]( - // vec4(DAY7_l0_density, DAY7_l1_density, DAY7_l2_density, DAY7_cfog_density), - vec4(0.1,0.0,0.0,0.0), - vec4(0.1,0.0,0.0,0.0), - vec4(0.0,0.0,0.0,0.0) - ); - - // if(hideGUI == 1){ - // CurrentFrame_dailyWeatherParams0 = rainyWeatherParameters_A[worldDay%2]; - // CurrentFrame_dailyWeatherParams1 = rainyWeatherParameters_B[worldDay%2]; - // } else { - // CurrentFrame_dailyWeatherParams0 = vec4(0.5,0.0,0.0,0.0); - // CurrentFrame_dailyWeatherParams1 = vec4(0.1,0.5,0.0,0.0); - // } - - #if defined Daily_Weather - dailyWeatherParams0 = vec4(sqrt(texelFetch2D(colortex4,ivec2(1,1),0).rgb/ 1500.0), 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); - - dailyWeatherParams0.a = texelFetch2D(colortex4,ivec2(3,1),0).x/1500.0; - dailyWeatherParams1.a = texelFetch2D(colortex4,ivec2(3,1),0).y/1500.0; - #endif + dailyWeatherParams0 = weatherParameters_A[dayCounter]; + dailyWeatherParams1 = weatherParameters_B[dayCounter]; #endif @@ -275,7 +235,7 @@ void main() { vec2 ij = R2_samples((frameCounter%2000)*maxITexp+i); vec2 tc = 0.5 + (ij-0.5) * 0.7; vec3 sp = texture2D(colortex6, tc/16. * resScale+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; - avgExp += log(sqrt(luma(sp))); + avgExp += log(luma(sp)); avgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2)); } @@ -287,16 +247,13 @@ void main() { float L = max(avgBrightness,1e-8); float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); float expFunc = 0.5+0.5*tanh(log(L)); - - float targetExposure = 1.0/log(L+1.05); - // float targetExposure = 0.35/log(L+1.05); - // float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; + float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; - exposure = max(targetExposure, 0.0); + exposure = max(targetExposure*EXPOSURE_MULTIPLIER, 0.0); // exposure = mix(0.0, 1.0, min(targetExposure,1.0)); // exposure = 1; diff --git a/shaders/dimensions/deferred2.fsh b/shaders/dimensions/deferred2.fsh index 60c584b..b2d8c55 100644 --- a/shaders/dimensions/deferred2.fsh +++ b/shaders/dimensions/deferred2.fsh @@ -100,17 +100,6 @@ uniform int dhRenderDistance; #define CLOUDS_INTERSECT_TERRAIN uniform float eyeAltitude; - - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - - #include "/lib/volumetricClouds.glsl" @@ -127,6 +116,7 @@ uniform float eyeAltitude; void main() { +/* DRAWBUFFERS:0 */ diff --git a/shaders/dimensions/deferred2.vsh b/shaders/dimensions/deferred2.vsh index 8dd15ea..cc7f26b 100644 --- a/shaders/dimensions/deferred2.vsh +++ b/shaders/dimensions/deferred2.vsh @@ -1,12 +1,10 @@ #include "/lib/settings.glsl" // uniform int dhRenderDistance; - - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #endif - +#if defined Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; +#endif flat varying vec3 averageSkyCol; flat varying vec3 sunColor; @@ -34,8 +32,8 @@ void main() { gl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(CLOUDS_QUALITY+0.01,0.0,1.0)*2.0-1.0; #if defined Daily_Weather - dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); #endif averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb; diff --git a/shaders/dimensions/final.fsh b/shaders/dimensions/final.fsh index b97b76e..12d3420 100644 --- a/shaders/dimensions/final.fsh +++ b/shaders/dimensions/final.fsh @@ -1,18 +1,14 @@ #include "/lib/settings.glsl" uniform sampler2D colortex7; -uniform sampler2D colortex5; -uniform sampler2D colortex6; uniform sampler2D colortex14; uniform sampler2D depthtex0; -uniform sampler2D depthtex1; uniform sampler2D depthtex2; uniform sampler2D noisetex; varying vec2 texcoord; uniform vec2 texelSize; uniform float frameTimeCounter; -uniform int frameCounter; uniform float viewHeight; uniform float viewWidth; uniform float aspectRatio; @@ -23,19 +19,12 @@ uniform int hideGUI; #include "/lib/color_dither.glsl" #include "/lib/res_params.glsl" -uniform float near; -uniform float far; -float ld(float dist) { - return (2.0 * near) / (far + near - dist * (far - near)); -} + float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); return noise; } -float blueNoise(){ - return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); -} #include "/lib/gameplay_effects.glsl" @@ -64,20 +53,14 @@ uniform mat4 gbufferPreviousModelView; #include "/lib/util.glsl" #include "/lib/projections.glsl" -vec3 tonemap(vec3 col){ - return col/(1+luma(col)); -} -vec3 invTonemap(vec3 col){ - return col/(1-luma(col)); -} -vec3 doMotionBlur(vec2 texcoord, float depth, float noise, bool hand){ +vec3 doMotionBlur(vec2 texcoord, float depth, float noise){ float samples = 4.0; vec3 color = vec3(0.0); float blurMult = 1.0; - if(hand) blurMult = 0.0; + if(depth < 0.56) blurMult = 0.0; vec3 viewPos = toScreenSpace(vec3(texcoord, depth)); viewPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); @@ -88,9 +71,8 @@ vec3 doMotionBlur(vec2 texcoord, float depth, float noise, bool hand){ vec2 velocity = texcoord - previousPosition.xy; // thank you Capt Tatsu for letting me use these - velocity = (velocity / (1.0 + length(velocity)) ) * 0.05 * blurMult * MOTION_BLUR_STRENGTH; + velocity = (velocity / (1.0 + length(velocity))) * 0.05 * blurMult * MOTION_BLUR_STRENGTH; texcoord = texcoord - velocity*(samples*0.5 + noise); - vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight); for (int i = 0; i < int(samples); i++) { @@ -99,53 +81,23 @@ vec3 doMotionBlur(vec2 texcoord, float depth, float noise, bool hand){ color += texture2D(colortex7, clamp(texcoord, screenEdges, 1.0-screenEdges)).rgb; } - + // return vec3(texcoord,0.0); return color / samples; } -float convertHandDepth_2(in float depth, bool hand) { - if(!hand) return depth; - - float ndcDepth = depth * 2.0 - 1.0; - ndcDepth /= MC_HAND_DEPTH; - return ndcDepth * 0.5 + 0.5; -} - uniform sampler2D shadowcolor1; -float doVignette( in vec2 texcoord, in float noise){ - - float vignette = 1.0-clamp(1.0-length(texcoord-0.5),0.0,1.0); - - // vignette = pow(1.0-pow(1.0-vignette,3),5); - vignette *= vignette*vignette; - vignette = 1.0-vignette; - vignette *= vignette*vignette*vignette*vignette; - - // stop banding - vignette = vignette + vignette*(noise-0.5)*0.01; - - return mix(1.0, vignette, VIGNETTE_STRENGTH); -} - void main() { - float noise = blueNoise(); + float depth = texture2D(depthtex0,texcoord*RENDER_SCALE).r; + float noise = interleaved_gradientNoise(); #ifdef MOTION_BLUR - float depth = texture2D(depthtex0, texcoord*RENDER_SCALE).r; - bool hand = depth < 0.56; - float depth2 = convertHandDepth_2(depth, hand); - - vec3 COLOR = doMotionBlur(texcoord, depth2, noise, hand); + vec3 COLOR = doMotionBlur(texcoord, depth, noise); #else vec3 COLOR = texture2D(colortex7,texcoord).rgb; #endif - - #ifdef VIGNETTE - COLOR *= doVignette(texcoord, noise); - #endif - + #if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT || defined WATER_ON_CAMERA_EFFECT // for making the fun, more fun applyGameplayEffects(COLOR, texcoord, noise); @@ -156,19 +108,10 @@ void main() { #endif #if DEBUG_VIEW == debug_SHADOWMAP - vec2 shadowUV = texcoord * vec2(2.0, 1.0) ; - // shadowUV -= vec2(0.5,0.0); - // float zoom = 0.1; - // shadowUV = ((shadowUV-0.5) - (shadowUV-0.5)*zoom) + 0.5; + vec2 shadowUV = texcoord * vec2(2.0, 1.0); - if(shadowUV.x < 1.0 && shadowUV.y < 1.0 && hideGUI == 1) COLOR = texture2D(shadowcolor1,shadowUV).rgb; - #endif - #if DEBUG_VIEW == debug_DEPTHTEX0 - COLOR = vec3(ld(texture2D(depthtex0, texcoord*RENDER_SCALE).r)); - #endif - #if DEBUG_VIEW == debug_DEPTHTEX1 - COLOR = vec3(ld(texture2D(depthtex1, texcoord*RENDER_SCALE).r)); + if(shadowUV.x < 1.0 && shadowUV.y < 1.0 && hideGUI == 1)COLOR = texture2D(shadowcolor1,shadowUV).rgb; #endif diff --git a/shaders/dimensions/fogBehindTranslucent_pass.fsh b/shaders/dimensions/fogBehindTranslucent_pass.fsh index 51cad85..87ceb60 100644 --- a/shaders/dimensions/fogBehindTranslucent_pass.fsh +++ b/shaders/dimensions/fogBehindTranslucent_pass.fsh @@ -2,7 +2,9 @@ // #if defined END_SHADER || defined NETHER_SHADER #undef IS_LPV_ENABLED // #endif +#ifndef OVERWORLD_SHADER uniform float nightVision; +#endif flat varying vec4 lightCol; flat varying vec3 averageSkyCol; @@ -88,33 +90,14 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo flat varying vec3 refractedSunVec; - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #else - vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); - vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); - #endif - - #define TIMEOFDAYFOG #include "/lib/lightning_stuff.glsl" #define CLOUDS_INTERSECT_TERRAIN // #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" - #include "/lib/climate_settings.glsl" #include "/lib/overworld_fog.glsl" - -// float fogPhase(float lightPoint){ -// float linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0); -// float linear2 = 1.0 - clamp(lightPoint,0.0,1.0); -// float exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5; -// exponential += sqrt(exp2(sqrt(linear) * -12.5)); - -// return exponential; -// } #endif #ifdef NETHER_SHADER uniform sampler2D colortex4; @@ -207,7 +190,7 @@ float fogPhase2(float lightPoint){ return exponential; } -vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL, float lightleakFix){ +vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ int spCount = rayMarchSampleCount; vec3 start = toShadowSpaceProjected(rayStart); @@ -224,12 +207,8 @@ vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float vec3 wpos = mat3(gbufferModelViewInverse) * rayStart + gbufferModelViewInverse[3].xyz; vec3 dVWorld = (wpos - gbufferModelViewInverse[3].xyz); - - // vec3 dVWorld = -mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; - // vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; - - + vec3 newabsorbance = exp(-rayLength * waterCoefs); // No need to take the integrated value #ifdef OVERWORLD_SHADER float phase = fogPhase(VdotL) * 5.0; #else @@ -239,14 +218,13 @@ vec4 waterVolumetrics_test( vec3 rayStart, vec3 rayEnd, float estEndDepth, float vec3 vL = vec3(0.0); ambient = max(ambient * (normalize(wpos).y*0.3+0.7),0.0); + float expFactor = 11.0; for (int i=0;i 0.99; - - bool iswater = alpha > 0.99; ////////////////////////////////////////////////////////// ///////////////// BEHIND OF TRANSLUCENTS ///////////////// ////////////////////////////////////////////////////////// - if(blendedAlpha > 0.0 || iswater){ + if(texture2D(colortex2, tc).a > 0.0 || iswater){ float noise_1 = R2_dither(); float noise_2 = blueNoise(); @@ -390,106 +322,78 @@ void main() { // vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.); - float dirtAmount = Dirt_Amount ; + float dirtAmount = Dirt_Amount + 0.1; // float dirtAmount = Dirt_Amount + 0.01; vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); - vec3 totEpsilon = dirtEpsilon * dirtAmount + waterEpsilon; + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; #ifdef BIOME_TINT_WATER // yoink the biome tint written in this buffer for water only. if(iswater){ - vec2 translucentdata = texelFetch2D(colortex11,ivec2(tc/texelSize),0).gb; + vec2 translucentdata = texture2D(colortex11,tc).gb; vec3 wateralbedo = normalize(vec3(decodeVec2(translucentdata.x),decodeVec2(translucentdata.y).x)+0.00001) * 0.5 + 0.5; scatterCoef = dirtAmount * wateralbedo / 3.14; } #endif - // vec3 directLightColor = lightCol.rgb / 2400.0; - // vec3 indirectLightColor = averageSkyCol / 1500.0; - // vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 900.0; - - vec3 directLightColor = lightCol.rgb / 2400.0; - vec3 indirectLightColor = averageSkyCol / 1200.0; - vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 900.0; - + vec3 directLightColor = lightCol.rgb/80.0; + vec3 indirectLightColor = averageSkyCol/30.0; + vec3 indirectLightColor_dynamic = averageSkyCol_Clouds/30.0; vec3 viewPos1 = toScreenSpace_DH(tc/RENDER_SCALE, z, DH_z); vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); - - vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos1; - vec3 playerPos0 = mat3(gbufferModelViewInverse) * viewPos0; + vec3 playerPos = normalize(mat3(gbufferModelViewInverse) * viewPos1); #ifdef OVERWORLD_SHADER // vec2 lightmap = decodeVec2(texture2D(colortex14, tc).a); - // vec2 lightmap = vec2(0.0,texture2D(colortex14, tc).a); - - vec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).x); - - + vec2 lightmap = vec2(0.0,texture2D(colortex14, tc).a); #ifdef DISTANT_HORIZONS if(z >= 1.0) lightmap.y = 0.99; #endif #else - vec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).a); + vec2 lightmap = decodeVec2(texture2D(colortex14, tc).a); lightmap.y = 1.0; #endif - // float Vdiff = distance(viewPos1, viewPos0) * 2.0; - // float VdotU = playerPos.y; - // float estimatedDepth = Vdiff * abs(VdotU); //assuming water plane + float Vdiff = distance(viewPos1, viewPos0) * 2.0; + float VdotU = playerPos.y; + float estimatedDepth = Vdiff * abs(VdotU) ; //assuming water plane + float estimatedSunDepth = estimatedDepth / abs(WsunVec.y); //assuming water plane - float Vdiff = distance(viewPos1, viewPos0); - float estimatedDepth = Vdiff * abs(normalize(playerPos).y); - float estimatedSunDepth = (Vdiff * 0.5) / abs(WsunVec.y); //assuming water plane - Vdiff *= 2.0; + indirectLightColor_dynamic *= ambient_brightness * pow(1.0-pow(1.0-lightmap.y,0.5),3.0) ; + // float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) ; + // indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * TorchBrightness_autoAdjust * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) * 2.0; + + vec3 cloudDepth = vec3(0.0); + vec4 VolumetricFog2 = vec4(0,0,0,1); + vec4 VolumetricClouds = vec4(0,0,0,1); - // Vdiff = Vdiff * (1.0 - clamp(exp(-Vdiff),0.0,1.0)) + max(estimatedDepth - 1.0,0.0); - // estimatedDepth = max(estimatedDepth - 1.0,0.0); - - indirectLightColor_dynamic *= ambient_brightness * lightmap.y*lightmap.y; + #ifdef OVERWORLD_SHADER + if(!iswater){ - indirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02; - - indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) ; - - vec4 finalVolumetrics = vec4(0.0,0.0,0.0,1.0); - - if(!iswater){ - #ifdef OVERWORLD_SHADER - vec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WsunVec, directLightColor, indirectLightColor); - + #if defined CLOUDS_INTERSECT_TERRAIN + VolumetricClouds = renderClouds(viewPos1, vec2(noise_1,noise_2), directLightColor, indirectLightColor, cloudDepth); + #endif float atmosphereAlpha = 1.0; - vec4 VolumetricFog = GetVolumetricFog(viewPos1, vec2(noise_1, noise_2), directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb); - - finalVolumetrics = VolumetricClouds; - - // VolumetricClouds.a *= atmosphereAlpha; - #endif + VolumetricFog2 = GetVolumetricFog(viewPos1, vec2(noise_1, noise_2), directLightColor, indirectLightColor,indirectLightColor_dynamic, atmosphereAlpha); + VolumetricClouds.a *= atmosphereAlpha; - #if defined NETHER_SHADER || defined END_SHADER - vec4 VolumetricFog = GetVolumetricFog(viewPos1, noise_1, noise_2); - #endif - - // #if defined OVERWORLD_SHADER - // vec4 VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a); - // #endif - - finalVolumetrics.rgb = finalVolumetrics.rgb * VolumetricFog.a + VolumetricFog.rgb; - finalVolumetrics.a *= VolumetricFog.a; - } + #if defined CLOUDS_INTERSECT_TERRAIN + VolumetricFog2 = vec4(VolumetricClouds.rgb * VolumetricFog2.a * atmosphereAlpha + VolumetricFog2.rgb, VolumetricFog2.a*VolumetricClouds.a); + #endif + } + #endif vec4 underwaterVlFog = vec4(0,0,0,1); + if(iswater) underwaterVlFog = waterVolumetrics_test(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor* (1.0-caveDetection), dot(normalize(viewPos1), normalize(sunVec*lightCol.a)) ); - float lightleakfix = clamp(lightmap.y + (1-caveDetection),0.0,1.0); - if(iswater && isEyeInWater != 1) underwaterVlFog = waterVolumetrics_test(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos1), normalize(sunVec*lightCol.a)) ,lightleakfix); - - finalVolumetrics.rgb += underwaterVlFog.rgb; + vec4 fogFinal = vec4(underwaterVlFog.rgb * VolumetricFog2.a + VolumetricFog2.rgb, VolumetricFog2.a * underwaterVlFog.a); - gl_FragData[0] = clamp(finalVolumetrics, 0.0, 65000.0); + gl_FragData[0] = clamp(fogFinal, 0.0, 65000.0); } } \ No newline at end of file diff --git a/shaders/dimensions/fogBehindTranslucent_pass.vsh b/shaders/dimensions/fogBehindTranslucent_pass.vsh index d74ae93..1b6f513 100644 --- a/shaders/dimensions/fogBehindTranslucent_pass.vsh +++ b/shaders/dimensions/fogBehindTranslucent_pass.vsh @@ -6,11 +6,10 @@ flat varying vec4 lightCol; flat varying vec3 averageSkyCol; flat varying vec3 averageSkyCol_Clouds; - #ifdef Daily_Weather - flat varying vec4 dailyWeatherParams0; - flat varying vec4 dailyWeatherParams1; - #endif - +#if defined Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; +#endif flat varying vec3 WsunVec; flat varying vec3 refractedSunVec; @@ -57,11 +56,11 @@ void main() { averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; #if defined Daily_Weather - dailyWeatherParams0 = vec4(texelFetch2D(colortex4,ivec2(1,1),0).rgb / 1500.0, 0.0); - dailyWeatherParams1 = vec4(texelFetch2D(colortex4,ivec2(2,1),0).rgb / 1500.0, 0.0); + dailyWeatherParams0 = vec4((texelFetch2D(colortex4,ivec2(1,1),0).rgb/150.0)/2.0, 0.0); + dailyWeatherParams1 = vec4((texelFetch2D(colortex4,ivec2(2,1),0).rgb/150.0)/2.0, 0.0); - dailyWeatherParams0.a = texelFetch2D(colortex4,ivec2(3,1),0).x/1500.0; - dailyWeatherParams1.a = texelFetch2D(colortex4,ivec2(3,1),0).y/1500.0; + dailyWeatherParams0.a = (texelFetch2D(colortex4,ivec2(3,1),0).x/150.0)/2.0; + dailyWeatherParams1.a = (texelFetch2D(colortex4,ivec2(3,1),0).y/150.0)/2.0; #endif #endif @@ -69,7 +68,7 @@ void main() { #ifdef NETHER_SHADER lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); - averageSkyCol_Clouds = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb; + averageSkyCol_Clouds = vec3(2.0, 1.0, 0.5) * 5.0; #endif #ifdef END_SHADER diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 63564b5..54ba5b5 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -389,14 +389,12 @@ screen.World = World option.SSR_STEPS = SSR Quality option.WATER_SUN_SPECULAR = Sun/Moon Reflections option.WATER_BACKGROUND_SPECULAR = Sky/Fog Reflections - option.FAKE_REFRACTION_EFFECT = Refraction In Water/Glass + option.Refraction = Refraction In Water/Glass option.Dirt_Amount = Dirt Amount option.Water_Top_Layer = Ocean Y coordinate option.WATER_WAVE_STRENGTH = Wave Strength option.SNELLS_WINDOW = Snell's Window - option.MINIMUM_WATER_ABSORBANCE = Minimum Water Absorbance - value.MINIMUM_WATER_ABSORBANCE.-1 = AUTO - + screen.Water_fog_color = Water Fog Settings option.Dirt_Scatter_R = Scatter Red (dirt) option.Dirt_Scatter_G = Scatter Green (dirt) @@ -419,7 +417,6 @@ screen.Post_Processing = Post Processing screen.TAA_OPTIONS = Anti-Aliasing Settings option.SCREENSHOT_MODE = Screenshot Mode option.TAA = TAA - option.RESPONSIVE_TAA = Responsive TAA §a(SET BLEND FACTOR TO 0.25 WHEN THIS IS ENABLED) option.BLEND_FACTOR = Blend Factor option.TAA_UPSCALING = Temporal Upscaling option.SCALE_FACTOR = Scale Factor @@ -630,7 +627,7 @@ screen.World.comment = Configure settings for various things that happen in the option.SSR_STEPS.comment = Configure the quality of the screen-space reflections on translucent things. §aPERFORMANCE COST:§r medium to high option.WATER_SUN_SPECULAR.comment = Toggle the sun and moon reflections on translucent things. §aPERFORMANCE COST:§r low option.WATER_BACKGROUND_SPECULAR.comment = Toggle the sky and fog reflections on translucent things. §aPERFORMANCE COST:§r low to medium - option.FAKE_REFRACTION_EFFECT.comment = Toggle refraction on translucent things. §bWhat is this?§r If you look at water, you can see the light refracting distorts what is in it. §aPERFORMANCE COST:§r low + option.Refraction.comment = Toggle refraction on translucent things. §bWhat is this?§r If you look at water, you can see the light refracting distorts what is in it. §aPERFORMANCE COST:§r low option.Dirt_Amount.comment = Configure how much dirt is in water. This controls how much fog is within water. option.Water_Top_Layer.comment = Configure the Y coordinate at which the ocean should be in the world. @@ -738,5 +735,4 @@ option.DISTANT_HORIZONS_SHADOWMAP.comment = §cTHIS SETTING WILL DESTROY PERFOR option.TOGGLE_VL_FOG = Toggle Volumetric Fog option.TOGGLE_VL_FOG.comment = one big button to just turn all the fog off. -option.TRANSLUCENT_COLORED_SHADOWS.comment = §bWhat is this?§r This effect allows translucent things like stained glass to color the sunlight as it passes through it. §aPERFORMANCE COST:§r medium -option.MINIMUM_WATER_ABSORBANCE.comment = §bWhat is this?§r This controls how "clear" the water is in shallow areas. AUTO allows water to be clear outdoors, but adjust to be at a minimum value of 7 when indoors, to make it clearly visible. §dTHIS SETTING DOES NOT IMPACT UNDER-WATER VISUALS. \ No newline at end of file +option.TRANSLUCENT_COLORED_SHADOWS.comment = §bWhat is this?§r This effect allows translucent things like stained glass to color the sunlight as it passes through it. §aPERFORMANCE COST:§r medium \ No newline at end of file diff --git a/shaders/lang/pt_br.lang b/shaders/lang/pt_br.lang index d204370..ef7718c 100644 --- a/shaders/lang/pt_br.lang +++ b/shaders/lang/pt_br.lang @@ -216,7 +216,7 @@ screen.World = Mundo option.SSR_STEPS = Qualidade do SSR option.WATER_SUN_SPECULAR = Reflexos do Sol/Lua option.WATER_BACKGROUND_SPECULAR = Reflexos do Céu/Névoa - option.FAKE_REFRACTION_EFFECT = Refração na Água/Vidro + option.Refraction = Refração na Água/Vidro option.Dirt_Amount = Quantidade de Sujeira option.Water_Top_Layer = Coordenada Y do Oceano @@ -451,7 +451,7 @@ screen.World.comment = Ajuste configurações para váriadas coisas que acontece option.SSR_STEPS.comment = Ajuste a qualiade dos reflexos em coisas translúcidas. §aCUSTO DE PERFORMANCE:§r Médio pra Alto option.WATER_SUN_SPECULAR.comment = Habilita reflexos da lua e do sol em coisas translúcidas. §aCUSTO DE PERFORMANCE:§r Baixo option.WATER_BACKGROUND_SPECULAR.comment = Habilita reflexos do céu e névoa em coisas translúcidas. §aCUSTO DE PERFORMANCE:§r Baixo para Médio - option.FAKE_REFRACTION_EFFECT.comment = Habilita refração em coisas translúcidas. §bO Que é Isso?§r Olhe para a água e você vai perceber a refração da luz distorcendo as coisas dentro dela. §aCUSTO DE PERFORMANCE:§r Baixo + option.Refraction.comment = Habilita refração em coisas translúcidas. §bO Que é Isso?§r Olhe para a água e você vai perceber a refração da luz distorcendo as coisas dentro dela. §aCUSTO DE PERFORMANCE:§r Baixo option.Dirt_Amount.comment = Ajusta quanta sujeira tem na água. Isso controla quanta névoa tem dentro da água. option.Water_Top_Layer.comment = Ajusta a coordenada Y que oceano deve estar no mundo. diff --git a/shaders/lang/ru_RU.lang b/shaders/lang/ru_RU.lang index 7a15d6c..d612ebd 100644 --- a/shaders/lang/ru_RU.lang +++ b/shaders/lang/ru_RU.lang @@ -363,7 +363,7 @@ screen.World = Мир option.SSR_STEPS = Качество SSR option.WATER_SUN_SPECULAR = Отражения солнца/луны option.WATER_BACKGROUND_SPECULAR = Отражения неба/тумана - option.FAKE_REFRACTION_EFFECT = Преломление в воде/стекле + option.Refraction = Преломление в воде/стекле option.Dirt_Amount = Количество грязи option.Water_Top_Layer = Координата океана Y option.WATER_WAVE_STRENGTH = Сила волны @@ -653,7 +653,7 @@ screen.World.comment = Настраивайте параметры для раз option.SSR_STEPS.comment = Настройте качество отражения в пространстве экрана на полупрозрачных объектах. §aНАГРУЗКА:§r от средней до высокой option.WATER_SUN_SPECULAR.comment = Переключайте отражения солнца и луны на полупрозрачных объектах. §aНАГРУЗКА:§r низкая option.WATER_BACKGROUND_SPECULAR.comment = Переключайте отражения неба и тумана на полупрозрачных объектах. §aНАГРУЗКА:§r от низкой до средней - option.FAKE_REFRACTION_EFFECT.comment = Переключите преломление на полупрозрачных объектах. §bЧто это?§r Если вы посмотрите на воду, то увидите, что преломление света искажает то, что в ней находится. §aНАГРУЗКА:§r низкая + option.Refraction.comment = Переключите преломление на полупрозрачных объектах. §bЧто это?§r Если вы посмотрите на воду, то увидите, что преломление света искажает то, что в ней находится. §aНАГРУЗКА:§r низкая option.Dirt_Amount.comment = Настройте количество грязи в воде. Это определяет количество тумана в воде option.Water_Top_Layer.comment = Настройте координату Y, в которой должен находиться океан в мире diff --git a/shaders/lang/zh_cn.lang b/shaders/lang/zh_cn.lang index b2b4def..148158f 100644 --- a/shaders/lang/zh_cn.lang +++ b/shaders/lang/zh_cn.lang @@ -373,7 +373,7 @@ screen.World = 世界 option.SSR_STEPS = SSR 采样值 option.WATER_SUN_SPECULAR = 日月反射 option.WATER_BACKGROUND_SPECULAR = 天空/雾气反射 - option.FAKE_REFRACTION_EFFECT = 折射 (水体/玻璃) + option.Refraction = 折射 (水体/玻璃) option.Dirt_Amount = 水体浑浊程度 option.Water_Top_Layer = 海平面 Y 轴坐标 option.WATER_WAVE_STRENGTH = 水波强度 @@ -599,7 +599,7 @@ screen.World.comment = 配置多种会在主世界发生的效果, 从摇摆植 option.SSR_STEPS.comment = 配置半透明方块的屏幕空间反射质量. §a性能消耗水平:§r 中偏高. option.WATER_SUN_SPECULAR.comment = 半透明方块的日月反射开关. §a性能消耗水平:§r 低. option.WATER_BACKGROUND_SPECULAR.comment = 半透明方块的天空和雾气反射开关. §a性能消耗水平:§r 低偏中. - option.FAKE_REFRACTION_EFFECT.comment = 半透明折射开关. §b这啥?§r 如果你观察水体, 可以看到光的折射会扭曲了水中的内容. §a性能消耗水平:§r 低. + option.Refraction.comment = 半透明折射开关. §b这啥?§r 如果你观察水体, 可以看到光的折射会扭曲了水中的内容. §a性能消耗水平:§r 低. option.Dirt_Amount.comment = 配置水中污物含量. 这可以控制水雾量. option.Water_Top_Layer.comment = 配置海平面在世界中的 Y 坐标. diff --git a/shaders/lib/ROBOBO_sky.glsl b/shaders/lib/ROBOBO_sky.glsl index e5f23f6..d7e9c0b 100644 --- a/shaders/lib/ROBOBO_sky.glsl +++ b/shaders/lib/ROBOBO_sky.glsl @@ -119,7 +119,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s position += increment * (0.34*noise); vec2 phaseSun = sky_phase(dot(viewVector, sunVector), 0.8); - vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), 0.8) ; + vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), 0.8); vec3 scatteringSun = vec3(0.0); vec3 scatteringMoon = vec3(0.0); @@ -128,7 +128,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s transmittance = vec3(1.0); float high_sun = clamp(pow(sunVector.y+0.6,5),0.0,1.0) * 3.0; // make sunrise less blue, and allow sunset to be bluer - float low_sun = clamp(((1.0-abs(sunVector.y))*3.) - high_sun,1.0,2.0) ; + float low_sun = clamp(((1.0-abs(sunVector.y))*3.) - high_sun,1.0,1.8) ; for (int i = 0; i < iSteps; ++i, position += increment) { @@ -144,7 +144,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s #ifdef ORIGINAL_CHOCAPIC_SKY scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun) * stepScatteringVisible * sky_transmittance(position, sunVector, jSteps) * planetGround; #else - scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun) * stepScatteringVisible * sky_transmittance(position, sunVector, jSteps) * planetGround; + scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun) * stepScatteringVisible * sky_transmittance(position, sunVector*0.5+0.1, jSteps) * planetGround; #endif scatteringMoon += sky_coefficientsScattering * (stepAirmass.xy * phaseMoon) * stepScatteringVisible * sky_transmittance(position, moonVector, jSteps) * planetGround; @@ -159,7 +159,7 @@ vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 s transmittance *= stepTransmittance; } - vec3 scattering = scatteringAmbient * background + scatteringSun * sunColorBase + scatteringMoon*moonColorBase * 0.5; + vec3 scattering = scatteringSun * sunColorBase + scatteringAmbient * background + scatteringMoon*moonColorBase ; return scattering; } diff --git a/shaders/lib/Shadows.glsl b/shaders/lib/Shadows.glsl index c5cf4d5..07cb5a7 100644 --- a/shaders/lib/Shadows.glsl +++ b/shaders/lib/Shadows.glsl @@ -11,19 +11,16 @@ void GriAndEminShadowFix( float MinimumValue = 0.05; // give a tiny boost to the distance mulitplier when shadowmap resolution is below 2048.0 - // float ResMultiplier = 1.0 + (shadowDistance/8.0)*(1.0 - min(shadowMapResolution,2048)/2048.0)*0.3; + float ResMultiplier = 1.0 + (shadowDistance/8.0)*(1.0 - min(shadowMapResolution,2048)/2048.0)*0.3; - // float DistanceMultiplier = max(1.0 - max(1.0 - length(WorldPos) / shadowDistance, 0.0), MinimumValue) * ResMultiplier; - float theDistance = max(1.0 - length(WorldPos) / shadowDistance,0.0); - float DistanceMultiplier = mix(0.5, 0.05, theDistance); - float DistanceMultiplier2 = mix(1.0, 0.02, theDistance); - - vec3 Bias = (FlatNormal * DistanceMultiplier + WsunVec * DistanceMultiplier2); + float DistanceMultiplier = max(1.0 - max(1.0 - length(WorldPos) / shadowDistance, 0.0), MinimumValue) * ResMultiplier; + + vec3 Bias = FlatNormal * DistanceMultiplier; // stop lightleaking by zooming up, centered on blocks vec2 scale = vec2(0.5); scale.y *= 0.5; - vec3 zoomShadow = scale.y - scale.x * fract(WorldPos + cameraPosition + Bias*scale.y*0.1); - if(SkyLightmap < 0.1 && isEyeInWater != 1 && VanillaAO > 0.0) Bias = zoomShadow; + vec3 zoomShadow = scale.y - scale.x * fract(WorldPos + cameraPosition + Bias*scale.y); + if(SkyLightmap < 0.1) Bias = zoomShadow; WorldPos += Bias; } \ No newline at end of file diff --git a/shaders/lib/TAA_jitter.glsl b/shaders/lib/TAA_jitter.glsl index ff5c988..6e36ea9 100644 --- a/shaders/lib/TAA_jitter.glsl +++ b/shaders/lib/TAA_jitter.glsl @@ -1,40 +1,33 @@ -// swap out jitter pattern to be a 4 frame pattern instead of an 8 frame halton sequence -#ifdef RESPONSIVE_TAA - const vec2[4] offsets = vec2[4]( +const vec2[8] offsets = vec2[8]( + vec2( 1.0, -3.0)/8.0, + vec2(-1.0, 3.0)/8.0, + vec2( 5.0, 1.0)/8.0, + vec2(-3.0, -5.0)/8.0, + vec2(-5.0, 5.0)/8.0, + vec2(-7.0, -1.0)/8.0, + vec2( 3.0, 7.0)/8.0, + vec2( 7.0, 7.0)/8.0 +); - // vec2( 0.0, -1.0), - // vec2( 1.0, 0.0), - // vec2( 0.0, 1.0), - // vec2(-1.0, 0.0) - - // vec2(-1.0, -7.0)/8.0, - // vec2( 7.0, -1.0)/8.0, - // vec2( 1.0, 7.0)/8.0, - // vec2(-7.0, 1.0)/8.0 - - vec2(-0.125, -0.875), - vec2( 0.875, -0.125), - vec2( 0.125, 0.875), - vec2(-0.875, 0.125) - - - // vec2(-7.0, 1.0)/8.0, - // vec2( 7.0, -1.0)/8.0, - // vec2( 1.0, 7.0)/8.0, - // vec2(-1.0, -7.0)/8.0 - - ); -#else - - const vec2[8] offsets = vec2[8]( - vec2( 1.0, -3.0)/8.0, - vec2(-1.0, 3.0)/8.0, - vec2( 5.0, 1.0)/8.0, - vec2(-3.0, -5.0)/8.0, - vec2(-5.0, 5.0)/8.0, - vec2(-7.0, -1.0)/8.0, - vec2( 3.0, 7.0)/8.0, - vec2( 7.0, 7.0)/8.0 - ); - -#endif \ No newline at end of file +// const vec2[4] offsets = vec2[4]( +// vec2( 0.0, -1.0), // right bottom +// vec2( 1.0, 0.0), // left top +// vec2( 0.0, 1.0), // right top +// vec2(-1.0, 0.0) // left bottom +// ); +// const vec2[4] offsets = vec2[4]( +// vec2(0.0), +// vec2(0.0), +// vec2(0.0), +// vec2(0.0) +// ); +// const vec2[8] offsets = vec2[8]( +// vec2(0.0), +// vec2(0.0), +// vec2(0.0), +// vec2(0.0), +// vec2(0.0), +// vec2(0.0), +// vec2(0.0), +// vec2(0.0) +// ); \ No newline at end of file diff --git a/shaders/lib/climate_settings.glsl b/shaders/lib/climate_settings.glsl index 2121437..d952f5b 100644 --- a/shaders/lib/climate_settings.glsl +++ b/shaders/lib/climate_settings.glsl @@ -122,6 +122,7 @@ ///////////////////////////// BIOME SPECIFICS ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////// + uniform float nightVision; uniform float isJungles; uniform float isSwamps; @@ -143,7 +144,7 @@ BiomeColors.b = isSwamps*SWAMP_B + isJungles*JUNGLE_B + isDarkForests*DARKFOREST_B + sandStorm*0.3 + snowStorm*1.0; // insure the biome colors are locked to the fog shape and lighting, but not its orignal color. - BiomeColors *= max(dot(FinalFogColor,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025); + BiomeColors *= max(dot(FinalFogColor,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); // these range 0.0-1.0. they will never overlap. float Inbiome = isJungles+isSwamps+isDarkForests+sandStorm+snowStorm; @@ -183,8 +184,8 @@ // DirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); // IndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); - DirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 ); - IndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 ); + DirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); + IndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025 + nightVision*0.2); // these range 0.0-1.0. they will never overlap. float Inbiome = isJungles+isSwamps+isDarkForests+sandStorm+snowStorm; diff --git a/shaders/lib/color_transforms.glsl b/shaders/lib/color_transforms.glsl index 42224f6..99c5370 100644 --- a/shaders/lib/color_transforms.glsl +++ b/shaders/lib/color_transforms.glsl @@ -70,17 +70,11 @@ return x/(1.0+x); vec3 ACESFilm( vec3 x ) { x*=0.9; - // float a = 2.51f; - // float b = 0.03f; - // float c = 2.43f; - // float d = 0.59f; - // float e = 0.14f; - // slower rate to bright color float a = 2.51f; float b = 0.03f; float c = 2.43f; - float d = 0.95f; - float e = 0.12f; + float d = 0.59f; + float e = 0.14f; return (x*(a*x+b))/(x*(c*x+d)+e); } @@ -247,7 +241,7 @@ vec3 agxLook(vec3 val) { vec3 slope = vec3(1.0); vec3 power = vec3(1.0); float sat = 1.25; - + // ASC CDL val = pow(val * slope + offset, power); return luma + sat * (val - luma); diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index 94140a7..6044852 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -25,29 +25,13 @@ vec3 doBlockLightLighting( vec3 lightColor, float lightmap, float exposureValue, vec3 playerPos, vec3 lpvPos ){ - lightmap = clamp(lightmap,0.0,1.0); - float lightmapBrightspot = min(max(lightmap-0.7,0.0)*3.3333,1.0); - lightmapBrightspot *= lightmapBrightspot*lightmapBrightspot; - - float lightmapLight = 1.0-sqrt(1.0-lightmap); - lightmapLight *= lightmapLight; - - float lightmapCurve = mix(lightmapLight, 2.0, lightmapBrightspot); - - // lightmapCurve = lightmap*lightmap; - - // float lightmapCurve = (exp(-15.0 * (1.0-lightmap))*10.0 + lightmap*pow(1.0-pow(1.0-lightmap,2.0),2.0))*0.5; - // float lightmapCurve = (pow(min(max(lightmap-0.6, 0.0) * 2.5,1.0),4.0) * 10.0 + lightmap*pow(1.0-pow(1.0-lightmap,2.0),2.0))*0.5; - // float lightmapCurve = pow(1.0-pow(1.0-lightmap,2.0),2.0); + float lightmapCurve = pow(1.0-sqrt(1.0-clamp(lightmap,0.0,1.0)),2.0) * 2.0; - vec3 blockLight = lightColor * lightmapCurve; + vec3 blockLight = lightColor * lightmapCurve; //; #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store vec4 lpvSample = SampleLpvLinear(lpvPos); - #ifdef VANILLA_LIGHTMAP_MASK - lpvSample.rgb *= lightmapCurve; - #endif vec3 lpvBlockLight = GetLpvBlockLight(lpvSample); // create a smooth falloff at the edges of the voxel volume. @@ -57,7 +41,7 @@ vec3 doBlockLightLighting( voxelRangeFalloff = 1.0 - pow(1.0-pow(voxelRangeFalloff,1.5),3.0); // outside the voxel volume, lerp to vanilla lighting as a fallback - blockLight = mix(blockLight, lpvSample.rgb, voxelRangeFalloff); + blockLight = mix(blockLight, lpvBlockLight/5.0, voxelRangeFalloff); #ifdef Hand_Held_lights // create handheld lightsources @@ -72,8 +56,8 @@ vec3 doBlockLightLighting( #endif // try to make blocklight have consistent visiblity in different light levels. - // float autoBrightness = mix(0.5, 1.0, clamp(exp(-10.0*exposureValue),0.0,1.0)); - // blockLight *= autoBrightness; + float autoBrightness = mix(1.0, 30.0, clamp(exp(-10.0*exposureValue),0.0,1.0)); + blockLight *= autoBrightness; return blockLight * TORCH_AMOUNT; } @@ -82,14 +66,11 @@ vec3 doIndirectLighting( vec3 lightColor, vec3 minimumLightColor, float lightmap ){ - // float lightmapCurve = pow(1.0-pow(1.0-lightmap,2.0),2.0); - // float lightmapCurve = lightmap*lightmap; float lightmapCurve = (pow(lightmap,15.0)*2.0 + pow(lightmap,2.5))*0.5; vec3 indirectLight = lightColor * lightmapCurve * ambient_brightness * 0.7; - // indirectLight = max(indirectLight, minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision)); - indirectLight += minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02); + indirectLight += minimumLightColor * max(MIN_LIGHT_AMOUNT*0.01, nightVision * 0.1); return indirectLight; } \ No newline at end of file diff --git a/shaders/lib/end_fog.glsl b/shaders/lib/end_fog.glsl index 9840e56..d076c63 100644 --- a/shaders/lib/end_fog.glsl +++ b/shaders/lib/end_fog.glsl @@ -168,15 +168,12 @@ float fogShape(in vec3 pos){ float endFogPhase(vec3 LightPos){ - // float mie = exp(length(LightPos) / -150); - // mie *= mie; - // mie *= mie; - // mie *= 100; + float mie = exp(length(LightPos) / -150); + mie *= mie; + mie *= mie; + mie *= 100; - // float mie = 1.0 - clamp(1.0 - length(LightPos) / 100.0,0.0,1.0); - float mie = exp(length(LightPos) / -50.0); - - return (mie*10.0)*(mie*10.0); + return mie; } vec3 LightSourceColors(float vortexBounds, float lightningflash){ @@ -200,13 +197,13 @@ vec3 LightSourceLighting(vec3 startPos, vec3 lightPos, float noise, float densit float shadow = 0.0; for (int j = 0; j < 3; j++){ - vec3 shadowSamplePos = startPos - lightPos * (0.05 + j * (0.25 + 0*0.15)); + vec3 shadowSamplePos = startPos - lightPos * (0.05 + j * (0.25 + noise*0.15)); shadow += fogShape(shadowSamplePos); } + vec3 finalLighting = lightColor * phase * exp(shadow * -10.0); - vec3 finalLighting = lightColor * phase * exp(-7.0 * shadow) ; - finalLighting += lightColor * phase*phase * (1.0 - exp( -shadow * vec3(0.6,2.0,2))) * (1.0 - exp(-density*density)); + finalLighting += lightColor * phase*phase * (1.0-exp((shadow*shadow*shadow) * vec3(0.6,2.0,2) * -1)) * (1.0 - exp(-density*density)); return finalLighting; } @@ -249,9 +246,9 @@ vec4 GetVolumetricFog( // float phsething = phaseEND(CenterdotV, 0.35) + phaseEND(CenterdotV, 0.85) ; - float skyPhase = (0.5 + pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0) * 0.1; + float skyPhase = 0.5 + pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; - vec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.1; + vec3 hazeColor = normalize(gl_Fog.color.rgb) * 0.1; float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; @@ -261,7 +258,7 @@ vec4 GetVolumetricFog( for (int i = 0; i < SAMPLECOUNT; i++) { float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); - float dd = pow(expFactor, float(i+dither2)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); + float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition + d*dVWorld; @@ -271,7 +268,7 @@ vec4 GetVolumetricFog( // determine where the vortex area ends and chaotic lightning area begins. float vortexBounds = clamp(vortexBoundRange - length(progressW), 0.0,1.0); vec3 lightPosition = LightSourcePosition(progressW, cameraPosition, vortexBounds); - vec3 lightColors = LightSourceColors(vortexBounds, lightningflash) * 0.25; + vec3 lightColors = LightSourceColors(vortexBounds, lightningflash); float volumeDensity = fogShape(progressW); @@ -284,9 +281,9 @@ vec4 GetVolumetricFog( float volumeCoeff = exp(-stormDensity*dd*dL); - vec3 lightsources = LightSourceLighting(progressW, lightPosition, dither, volumeDensity, lightColors, vortexBounds); - vec3 indirect = vec3(0.5,0.75,1.0) * 0.2 * (exp((volumeDensity*volumeDensity) * -50) * 0.9 + 0.1) * 0.1; - + + vec3 lightsources = LightSourceLighting(progressW, lightPosition, dither2, volumeDensity, lightColors, vortexBounds); + vec3 indirect = vec3(0.5,0.75,1.0) * 0.2 * (exp((volumeDensity*volumeDensity) * -50) * 0.9 + 0.1); vec3 stormLighting = indirect + lightsources; color += (stormLighting - stormLighting*volumeCoeff) * absorbance; @@ -340,7 +337,7 @@ vec4 GetVolumetricFog( return vec4(color, absorbance); } -float GetEndFogShadow(vec3 WorldPos, vec3 LightPos){ +float GetCloudShadow(vec3 WorldPos, vec3 LightPos){ float Shadow = 0.0; for (int i=0; i < 3; i++){ @@ -350,5 +347,5 @@ float GetEndFogShadow(vec3 WorldPos, vec3 LightPos){ Shadow += fogShape(shadowSamplePos)*END_STORM_DENSTIY; } - return clamp(exp2(Shadow * -10.0),0.0,1.0); + return clamp(exp2(Shadow * -5.0),0.0,1.0); } \ No newline at end of file diff --git a/shaders/lib/indirect_lighting_effects.glsl b/shaders/lib/indirect_lighting_effects.glsl index f128ca1..de824bf 100644 --- a/shaders/lib/indirect_lighting_effects.glsl +++ b/shaders/lib/indirect_lighting_effects.glsl @@ -13,7 +13,7 @@ vec3 cosineHemisphereSample(vec2 Xi){ return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); } -vec3 TangentToWorld(vec3 N, vec3 H){ +vec3 TangentToWorld(vec3 N, vec3 H, float roughness){ vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); vec3 T = normalize(cross(UpVector, N)); vec3 B = cross(N, T); @@ -92,6 +92,67 @@ vec4 BilateralUpscale_SSAO(sampler2D tex, sampler2D depth, vec2 coord, float ref return RESULT / SUM; } +vec2 SSAO( + vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise +){ + if(hand) return vec2(1.0,0.0); + int samples = 7; + float occlusion = 0.0; + float sss = 0.0; + + + float dist = 1.0 + clamp(viewPos.z*viewPos.z/50.0,0,5); // shrink sample size as distance increases + float mulfov2 = gbufferProjection[1][1]/(3 * dist); + float maxR2 = viewPos.z*viewPos.z*mulfov2*2.*5/50.0; + + #ifdef Ambient_SSS + float maxR2_2 = viewPos.z*viewPos.z*mulfov2*2.*2./50.0; + + float dist3 = clamp(1-exp( viewPos.z*viewPos.z / -50),0,1); + if(leaves) maxR2_2 = mix(10, maxR2_2, dist3); + #endif + + vec2 acc = -(TAA_Offset*(texelSize/2))*RENDER_SCALE ; + + int n = 0; + for (int i = 0; i < samples; i++) { + + // vec2 sampleOffset = SpiralSample(i, 7, 8, noise) * 0.2 * mulfov2; + + vec2 sampleOffset = SpiralSample(i, 7, 8, noise) * clamp(0.05 + i*0.095, 0.0,0.3) * mulfov2; + + ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)*RENDER_SCALE); + + if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth*RENDER_SCALE.x && offset.y < viewHeight*RENDER_SCALE.y ) { + #ifdef DISTANT_HORIZONS + float dhdepth = texelFetch2D(dhDepthTex1, offset,0).x; + #else + float dhdepth = 0.0; + #endif + + vec3 t0 = toScreenSpace_DH((offset*texelSize+acc+0.5*texelSize) * (1.0/RENDER_SCALE), texelFetch2D(depthtex1, offset,0).x, dhdepth); + vec3 vec = (t0.xyz - viewPos); + float dsquared = dot(vec, vec); + + if (dsquared > 1e-5){ + if (dsquared < maxR2){ + float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal)),0.,1.); + occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); + } + + #ifdef Ambient_SSS + if(dsquared > maxR2_2){ + float NdotV = 1.0 - clamp(dot(vec*dsquared, normalize(normal)),0.,1.); + sss += max((NdotV - (1.0-NdotV)) * clamp(1.0-maxR2_2/dsquared,0.0,1.0) ,0.0); + } + #endif + + n += 1; + } + } + } + return max(1.0 - vec2(occlusion, sss)/n, 0.0); +} float ScreenSpace_SSS( vec3 viewPos, vec3 normal, bool hand, bool leaves, float noise ){ @@ -149,79 +210,40 @@ vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ direction.xy = normalize(direction.xy); //get at which length the ray intersects with the edge of the screen - vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; - float mult = maxLengths.y; + vec3 maxLengths = (step(0.0,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); - vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) ; + vec3 stepv = (direction * mult) / quality*vec3(RENDER_SCALE,1.0); + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; - spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; + spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE ; - spos += stepv*dither; - - float biasdist = clamp(position.z*position.z/50.0,1,2); // shrink sample size as distance increases + float minZ = spos.z; + float maxZ = spos.z; for(int i = 0; i < int(quality); i++){ - #ifdef UseQuarterResDepth - float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0); - #else - float sp = linZ(texelFetch2D(depthtex1,ivec2(spos.xy/ texelSize),0).r); - #endif - float currZ = linZ(spos.z); + if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); + + #ifdef UseQuarterResDepth + float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0)); + #else + float sp = texelFetch2D(depthtex1,ivec2(spos.xy/ texelSize),0).r; + #endif + + float currZ = linZ(spos.z); + float nextZ = linZ(sp); + + if(nextZ < currZ && (sp <= max(minZ,maxZ) && sp >= min(minZ,maxZ))) return vec3(spos.xy/RENDER_SCALE,sp); + + float biasamount = 0.00005; + + minZ = maxZ - biasamount / currZ; + maxZ += stepv.z; - if( sp < currZ) { - float dist = abs(sp-currZ)/currZ; - if (abs(dist) < biasdist*0.05) return vec3(spos.xy, invLinZ(sp))/vec3(RENDER_SCALE,1.0); - } spos += stepv; } return vec3(1.1); } -// vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ - -// vec3 clipPosition = toClipSpace3(position); -// float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? -// (-near -position.z) / dir.z : far*sqrt(3.); -// vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space -// direction.xy = normalize(direction.xy); - -// //get at which length the ray intersects with the edge of the screen -// vec3 maxLengths = (step(0.0,direction)-clipPosition) / direction; -// float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); - -// vec3 stepv = (direction * mult) / quality*vec3(RENDER_SCALE,1.0); -// vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0); - -// spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE ; - -// spos += stepv*dither; - -// float minZ = spos.z; -// float maxZ = spos.z; - -// for(int i = 0; i < int(quality); i++){ -// if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); - -// #ifdef UseQuarterResDepth -// float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0)); -// #else -// float sp = texelFetch2D(depthtex1,ivec2(spos.xy/ texelSize),0).r; -// #endif - -// float currZ = linZ(spos.z); -// float nextZ = linZ(sp); - -// if(nextZ < currZ && (sp <= max(minZ,maxZ) && sp >= min(minZ,maxZ))) return vec3(spos.xy/RENDER_SCALE,sp); - -// float biasamount = 0.00005; - -// minZ = maxZ - biasamount / currZ; -// maxZ += stepv.z; - -// spos += stepv; -// } -// return vec3(1.1); -// } float convertHandDepth_3(in float depth, bool hand) { if(!hand) return depth; @@ -279,7 +301,7 @@ vec3 RT(vec3 dir, vec3 position, float noise, float stepsizes, bool hand){ return vec3(1.1); } -vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool hand, inout float CURVE ){ +vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool hand){ vec3 worldpos = mat3(gbufferModelViewInverse) * position; @@ -302,12 +324,12 @@ vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool ha int iterations = min(int(min(len, mult*len)-2), maxSteps); - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*(noise-0.5); + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0);// + stepv*noise; spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE; - + float minZ = spos.z; float maxZ = spos.z; - CURVE = 0.0; + for(int i = 0; i < iterations; i++){ if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); @@ -327,9 +349,8 @@ vec3 RT_alternate(vec3 dir, vec3 position, float noise, float stepsizes, bool ha minZ = maxZ-biasamount / currZ; maxZ += stepv.z; - spos += stepv; - - CURVE += 1.0/iterations; + spos += stepv*(noise*0.25+0.75); + } return vec3(1.1); } @@ -357,30 +378,24 @@ vec3 ApplySSRT( vec3 radiance2 = vec3(0.0); vec3 occlusion2 = vec3(0.0); vec3 skycontribution2 = unchangedIndirect; - float CURVE = 1.0; + vec3 bouncedLight = vec3(0.0); for (int i = 0; i < nrays; i++){ int seed = (frameCounter%40000)*nrays+i; vec2 ij = fract(R2_samples(seed) + noise.xy); - vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij))); + vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij)), lightmap); #ifdef HQ_SSGI vec3 rayHit = rayTrace_GI( mat3(gbufferModelView) * rayDir, viewPos, noise.z, 50.); // ssr rt #else - vec3 rayHit = RT_alternate(mat3(gbufferModelView)*rayDir, viewPos, noise.z, 10., isLOD, CURVE); // choc sspt - - - /// RAAAAAAAAAAAAAAAAAAAAAAAAGHH - // CURVE = (1.0-exp(-5.0*(1.0-CURVE))); - CURVE = 1.0-pow(1.0-pow(1.0-CURVE,2.0),5.0); + vec3 rayHit = RT_alternate(mat3(gbufferModelView)*rayDir, viewPos, noise.z, 10., isLOD); // choc sspt #endif #ifdef SKY_CONTRIBUTION_IN_SSRT #ifdef OVERWORLD_SHADER - // skycontribution = doIndirectLighting(pow(skyCloudsFromTexLOD(rayDir, colortex4, 0).rgb/1200.0, vec3(0.7)) * 2.5, minimumLightColor, lightmap) + blockLightColor; - skycontribution = doIndirectLighting(skyCloudsFromTex(rayDir, colortex4).rgb/1200.0, minimumLightColor, lightmap) + blockLightColor; + skycontribution = doIndirectLighting(pow(skyCloudsFromTexLOD(rayDir, colortex4, 0).rgb/30.0, vec3(0.7)) * 2.5, minimumLightColor, lightmap) + blockLightColor; #else - skycontribution = volumetricsFromTex(rayDir, colortex4, 6).rgb / 1200.0 + blockLightColor; + skycontribution = pow(skyCloudsFromTexLOD2(rayDir, colortex4, 6).rgb / 30.0, vec3(0.7)) + blockLightColor; #endif #else #ifdef OVERWORLD_SHADER @@ -398,18 +413,18 @@ vec3 ApplySSRT( previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0){ - bouncedLight = texture2D(colortex5, previousPosition.xy).rgb * GI_Strength * CURVE; + bouncedLight = texture2D(colortex5, previousPosition.xy).rgb * GI_Strength; radiance += bouncedLight; radiance2 += bouncedLight; } #endif - occlusion += skycontribution * CURVE; - occlusion2 += skycontribution2 * CURVE; + occlusion += skycontribution; + occlusion2 += skycontribution2; } } - // return unchangedIndirect * CURVE; + if(isLOD) return max(radiance/nrays, 0.0); #ifdef SKY_CONTRIBUTION_IN_SSRT diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index a1d4a05..d5d127b 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,13 +1,10 @@ -// LPV block brightness scale. just 1.0/15.0 -const float LpvBlockBrightness = 0.066666; +// LPV block brightness scale +const float LpvBlockBrightness = 1.0; float lpvCurve(float values) { - #ifdef VANILLA_LIGHTMAP_MASK - return sqrt(values); - #else - return values*values; - #endif + // return values; + return pow(1.0 - sqrt(1.0-values), 2.0); } vec4 SampleLpvLinear(const in vec3 lpvPos) { @@ -20,8 +17,6 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec3 hsv = RgbToHsv(lpvSample.rgb); hsv.z = lpvCurve(hsv.b) * LpvBlockSkyRange.x; lpvSample.rgb = HsvToRgb(hsv); - - lpvSample.rgb = clamp(lpvSample.rgb/15.0,0.0,1.0); return lpvSample; } diff --git a/shaders/lib/nether_fog.glsl b/shaders/lib/nether_fog.glsl index 2e88ef2..aa3f0a1 100644 --- a/shaders/lib/nether_fog.glsl +++ b/shaders/lib/nether_fog.glsl @@ -43,7 +43,7 @@ vec4 GetVolumetricFog( /// ------------- RAYMARCHING STUFF ------------- \\\ - int SAMPLECOUNT = 16; + int SAMPLECOUNT = 10; vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz; vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); @@ -62,14 +62,14 @@ vec4 GetVolumetricFog( vec3 color = vec3(0.0); float absorbance = 1.0; - vec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.25; + vec3 hazeColor = normalize(gl_Fog.color.rgb); #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0; #endif for (int i = 0; i < SAMPLECOUNT; i++) { - float d = (pow(expFactor, float(i+dither2)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); + float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld; @@ -80,7 +80,7 @@ vec4 GetVolumetricFog( float plumeDensity = min(densityVol * pow(min(max(100.0-progressW.y,0.0)/30.0,1.0),4.0), pow(clamp(1.0 - length(progressW-cameraPosition)/far,0.0,1.0),5.0) * NETHER_PLUME_DENSITY); float plumeVolumeCoeff = exp(-plumeDensity*dd*dL); - vec3 lighting = vec3(1.0,0.4,0.2)*0.25 * exp(-15.0*densityVol); + vec3 lighting = vec3(1.0,0.4,0.2) * exp(-15.0*densityVol); color += (lighting - lighting * plumeVolumeCoeff) * absorbance; absorbance *= plumeVolumeCoeff; @@ -98,7 +98,7 @@ vec4 GetVolumetricFog( float ceilingSmokeDensity = 0.001 * pow(min(max(progressW.y-40.0,0.0)/50.0,1.0),3.0); float ceilingSmokeVolumeCoeff = exp(-ceilingSmokeDensity*dd*dL); - vec3 ceilingSmoke = vec3(0.1); + vec3 ceilingSmoke = vec3(1.0); color += (ceilingSmoke - ceilingSmoke*ceilingSmokeVolumeCoeff) * (absorbance*0.5+0.5); absorbance *= ceilingSmokeVolumeCoeff; diff --git a/shaders/lib/overworld_fog.glsl b/shaders/lib/overworld_fog.glsl index f468c48..5a3159b 100644 --- a/shaders/lib/overworld_fog.glsl +++ b/shaders/lib/overworld_fog.glsl @@ -44,7 +44,7 @@ float cloudVol(in vec3 pos, float maxDistance ){ FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, dailyWeatherParams0.a, dailyWeatherParams1.a); - return uniformFog + medium_gradientFog + cloudyFog; + return uniformFog + medium_gradientFog + cloudyFog + rainyFog; } float phaseRayleigh(float cosTheta) { @@ -52,29 +52,23 @@ float phaseRayleigh(float cosTheta) { return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation } float fogPhase(float lightPoint){ - float linear = clamp(-lightPoint*0.5+0.5,0.0,1.0); + float linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0); float linear2 = 1.0 - clamp(lightPoint,0.0,1.0); float exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5; exponential += sqrt(exp2(sqrt(linear) * -12.5)); - // float exponential = 1.0 / (linear * 10.0 + 0.05); - return exponential; } -float phaseCloudFog(float x, float g){ - float gg = g * g; - return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14; -} + uniform ivec2 eyeBrightness; vec4 GetVolumetricFog( - in vec3 viewPosition, - in vec2 dither, - in vec3 LightColor, - in vec3 AmbientColor, - in vec3 AveragedAmbientColor, - inout float atmosphereAlpha, - inout vec3 sceneColor + vec3 viewPosition, + vec2 dither, + vec3 LightColor, + vec3 AmbientColor, + vec3 AveragedAmbientColor, + inout float atmosphereAlpha ){ #ifndef TOGGLE_VL_FOG return vec4(0.0,0.0,0.0,1.0); @@ -107,7 +101,8 @@ vec4 GetVolumetricFog( dV *= maxLength; dVWorld *= maxLength; - float dL = length(dVWorld)/8.0; + float dL_alternate = length(dVWorld); + float dL = dL_alternate/8.0; vec3 progress = start.xyz; vec3 progressW = vec3(0.0); @@ -116,23 +111,17 @@ vec4 GetVolumetricFog( /// ------------- COLOR/LIGHTING STUFF ------------- \\\ vec3 color = vec3(0.0); - vec3 finalAbsorbance = vec3(1.0); - - // float totalAbsorbance = 1.0; - vec3 totalAbsorbance = vec3(1.0); - + float totalAbsorbance = 1.0; float fogAbsorbance = 1.0; - // float atmosphereAbsorbance = 1.0; - vec3 atmosphereAbsorbance = vec3(1.0); + float atmosphereAbsorbance = 1.0; vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec; float SdotV = dot(sunVec, normalize(viewPosition))*lightCol.a; ///// ----- fog lighting //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) - float sunPhase = fogPhase(SdotV)*5.0;// phaseCloudFog(SdotV, 0.9) + phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5) * 5.0; - float sunPhase2 = (phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5)) * 5.0; - float skyPhase = 2.0 + pow(1.0-pow(1.0-clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0 ;//pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; + float sunPhase = fogPhase(SdotV) * 5.0; + float skyPhase = pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0; float rayL = phaseRayleigh(SdotV); vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) ; @@ -141,7 +130,7 @@ vec4 GetVolumetricFog( vec3 skyLightPhased = AmbientColor; vec3 LightSourcePhased = LightColor; - skyLightPhased *= skyPhase; + skyLightPhased *= 1.0 + skyPhase; LightSourcePhased *= sunPhase; #ifdef ambientLight_only @@ -154,6 +143,12 @@ vec4 GetVolumetricFog( float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); #endif + #ifdef DISTANT_HORIZONS + float atmosphereMult = 1.0; + #else + float atmosphereMult = 1.5; + #endif + #ifdef RAYMARCH_CLOUDS_WITH_FOG vec3 SkyLightColor = AmbientColor; vec3 LightSourceColor = LightColor; @@ -179,16 +174,14 @@ vec4 GetVolumetricFog( float lightLevelZero = pow(clamp(eyeBrightnessSmooth.y/240.0 ,0.0,1.0),3.0); // SkyLightColor *= lightLevelZero*0.9 + 0.1; - vec3 finalsceneColor = vec3(0.0); for (int i = 0; i < SAMPLECOUNT; i++) { float d = (pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); - float dd = pow(expFactor, float(i+dither.y)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); + float dd = pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); progress = start.xyz + d*dV; progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld; - // if(length(progressW-cameraPosition) > cloudDepth) break; //------------------------------------ //------ SAMPLE SHADOWS FOR FOG EFFECTS //------------------------------------ @@ -219,7 +212,7 @@ vec4 GetVolumetricFog( #endif #ifdef VL_CLOUDS_SHADOWS - sh *= GetCloudShadow(progressW, WsunVec*lightCol.a); + sh *= GetCloudShadow_VLFOG(progressW, WsunVec * lightCol.a); #endif #ifdef PER_BIOME_ENVIRONMENT @@ -244,9 +237,10 @@ vec4 GetVolumetricFog( #endif vec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz); - vec3 lighting = DirectLight + indirectLight;// * (lightLevelZero*0.99 + 0.01) + Lightning; - - color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance; + vec3 lighting = DirectLight + indirectLight * (lightLevelZero*0.99 + 0.01) + Lightning; + + color += (lighting - lighting * fogVolumeCoeff) * fogAbsorbance; + fogAbsorbance *= fogVolumeCoeff; // kill fog absorbance when in caves. totalAbsorbance *= mix(1.0, fogVolumeCoeff, lightLevelZero); @@ -258,32 +252,26 @@ vec4 GetVolumetricFog( #else float cloudPlaneCutoff = 1.0; #endif - // maximum range for atmosphere haze, basically. - float planetVolume = 1.0 - exp(clamp(1.0 - length(progressW-cameraPosition) / (16*150), 0.0,1.0) * -10); // just air - vec2 airCoef = (exp2(-max(progressW.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.,7.0)) * 192.0 * Haze_amount) * cloudPlaneCutoff * planetVolume; + vec2 airCoef = exp2(-max(progressW.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.,7.0)) * (24.0 * atmosphereMult) * Haze_amount * cloudPlaneCutoff; // Pbr for air, yolo mix between mie and rayleigh for water droplets vec3 rL = rC*airCoef.x; vec3 m = mC*(airCoef.y+densityVol*300.0); // calculate the atmosphere haze seperately and purely additive to color, do not contribute to absorbtion. - vec3 atmosphereVolumeCoeff = exp(-(rL+m)*dd*dL); - // vec3 Atmosphere = LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m); + vec3 atmosphereVolumeCoeff = exp(-(rL+m)*dd*dL_alternate); + vec3 Atmosphere = (LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m) * (lightLevelZero*0.99 + 0.01)) * inACave; - color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6) * atmosphereAbsorbance; + color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6) * atmosphereAbsorbance * totalAbsorbance; + atmosphereAbsorbance *= dot(atmosphereVolumeCoeff, vec3(0.33333)); - // finalsceneColor = sceneColor * totalAbsorbance; - - atmosphereAbsorbance *= atmosphereVolumeCoeff*fogVolumeCoeff; - - //------------------------------------ //------ LPV FOG EFFECT //------------------------------------ #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT - color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * totalAbsorbance; + color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * totalAbsorbance; #endif //------------------------------------ //------ STUPID RENDER CLOUDS AS FOG EFFECT @@ -345,13 +333,271 @@ vec4 GetVolumetricFog( } } #else - // if (totalAbsorbance < 1e-5) break; + if (totalAbsorbance < 1e-5) break; #endif } - - // sceneColor = finalsceneColor; - - // atmosphereAlpha = atmosphereAbsorbance; - + atmosphereAlpha = atmosphereAbsorbance; return vec4(color, totalAbsorbance); -} \ No newline at end of file +} + + + + + + + + + + + + + + + + + + + +// vec4 GetVolumetricFog( +// vec3 viewPosition, +// vec2 dither, +// vec3 LightColor, +// vec3 AmbientColor +// ){ + +// #ifndef TOGGLE_VL_FOG +// return vec4(0.0,0.0,0.0,1.0); +// #endif +// int SAMPLECOUNT = VL_SAMPLES; +// /// ------------- RAYMARCHING STUFF ------------- \\\ + +// //project pixel position into projected shadowmap space + +// vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz; +// vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; +// fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + +// //project view origin into projected shadowmap space +// vec3 start = toShadowSpaceProjected(vec3(0.0)); + +// //rayvector into projected shadow map space +// //we can use a projected vector because its orthographic projection +// //however we still have to send it to curved shadow map space every step +// vec3 dV = fragposition - start; +// vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + +// #ifdef DISTANT_HORIZONS +// float maxLength = min(length(dVWorld), max(dhFarPlane-1000,0.0))/length(dVWorld); +// SAMPLECOUNT += SAMPLECOUNT; +// #else +// float maxLength = min(length(dVWorld), far)/length(dVWorld); +// #endif + +// dV *= maxLength; +// dVWorld *= maxLength; + +// float dL = length(dVWorld); +// float mult = length(dVWorld)/25; + +// vec3 progress = start.xyz; +// vec3 progressW = gbufferModelViewInverse[3].xyz + cameraPosition; + +// vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec * lightCol.a; +// float SdotV = dot(sunVec,normalize(viewPosition))*lightCol.a; + + +// /// ------------- COLOR/LIGHTING STUFF ------------- \\\ + +// vec3 color = vec3(0.0); +// vec3 absorbance = vec3(1.0); + +// ///// ----- fog lighting +// //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) +// float mie = fogPhase(SdotV) * 5.0; +// float rayL = phaseRayleigh(SdotV); + +// vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5); +// vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); + +// vec3 skyLightPhased = AmbientColor; +// vec3 LightSourcePhased = LightColor; + +// #ifdef ambientLight_only +// LightSourcePhased = vec3(0.0); +// #endif +// #ifdef PER_BIOME_ENVIRONMENT +// vec3 biomeDirect = LightSourcePhased; +// vec3 biomeIndirect = skyLightPhased; +// float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); +// #endif + +// skyLightPhased = max(skyLightPhased + skyLightPhased*(normalize(wpos).y*0.9+0.1),0.0); +// LightSourcePhased *= mie; + +// // float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240.,2) ,0.0,1.0); + +// float lightleakfix = 1.0 - caveDetection; + +// #ifdef RAYMARCH_CLOUDS_WITH_FOG +// vec3 SkyLightColor = AmbientColor; +// vec3 LightSourceColor = LightColor; + +// #ifdef ambientLight_only +// LightSourceColor = vec3(0.0); +// #endif + +// float shadowStep = 200.0; + +// vec3 dV_Sun = WsunVec*shadowStep; + +// float mieDay = phaseg(SdotV, 0.75); +// float mieDayMulti = (phaseg(SdotV, 0.35) + phaseg(-SdotV, 0.35) * 0.5) ; + +// vec3 directScattering = LightSourceColor * mieDay * 3.14; +// vec3 directMultiScattering = LightSourceColor * mieDayMulti * 3.14; + +// vec3 sunIndirectScattering = LightSourceColor * phaseg(dot(mat3(gbufferModelView)*vec3(0,1,0),normalize(viewPosition)), 0.5) * 3.14; +// #endif + + +// #ifdef DISTANT_HORIZONS +// float atmosphereMult = 1.0; +// #else +// float atmosphereMult = 1.5; +// #endif + +// float expFactor = 11.0; +// for (int i=0;i pos.z && sh.x < 1.0){ +// vec4 translucentShadow = texture2D(shadowcolor0, pos.xy); +// if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); +// } +// #else +// sh = vec3(shadow2D(shadow, pos).x); +// #endif + +// } +// vec3 sh2 = sh; + +// #ifdef VL_CLOUDS_SHADOWS +// // if(clamp(progressW.y - CloudLayer1_height,0.0,1.0) < 1.0 && clamp(progressW.y-50,0.0,1.0) > 0.0) +// sh *= GetCloudShadow_VLFOG(progressW, WsunVec); +// #endif + + +// #ifdef PER_BIOME_ENVIRONMENT +// float maxDistance = inBiome * min(max(1.0 - length(d*dVWorld.xz)/(32*8),0.0)*2.0,1.0); +// float densityVol = cloudVol(progressW, maxDistance) * lightleakfix; +// #else +// float densityVol = cloudVol(progressW, 0.0) * lightleakfix; +// #endif + +// //Water droplets(fog) +// float density = densityVol*300.0; + +// ///// ----- main fog lighting + +// //Just air +// vec2 airCoef = exp(-max(progressW.y - SEA_LEVEL, 0.0) / vec2(8.0e3, 1.2e3) * vec2(6.,7.0)) * (atmosphereMult * 24.0) * Haze_amount * clamp(CloudLayer0_height - progressW.y + max(eyeAltitude-(CloudLayer0_height-50),0),0.0,1.0); + +// //Pbr for air, yolo mix between mie and rayleigh for water droplets +// vec3 rL = rC*airCoef.x; +// vec3 m = (airCoef.y+density) * mC; + +// #ifdef PER_BIOME_ENVIRONMENT +// vec3 Atmosphere = mix(skyLightPhased, biomeDirect, maxDistance) * (rL + m); // not pbr so just make the atmosphere also dense fog heh +// vec3 DirectLight = mix(LightSourcePhased, biomeIndirect, maxDistance) * sh * (rL*rayL + m); +// #else +// vec3 Atmosphere = skyLightPhased * (rL + m); // not pbr so just make the atmosphere also dense fog heh +// vec3 DirectLight = LightSourcePhased * sh * (rL*rayL + m); +// #endif +// vec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz) * (rL + m); + +// vec3 foglighting = (Atmosphere + DirectLight + Lightning) * lightleakfix; + + + +// color += (foglighting - foglighting * exp(-(rL+m)*dd*dL)) / ((rL+m)+0.00000001)*absorbance; +// absorbance *= clamp(exp(-(rL+m)*dd*dL),0.0,1.0); + +// #ifdef RAYMARCH_CLOUDS_WITH_FOG +// ////////////////////////////////////////// +// ///// ----- cloud part +// ////////////////////////////////////////// +// // curvature = clamp(1.0 - length(progressW - cameraPosition)/(32*128),0.0,1.0); + + +// float otherlayer = max(progressW.y - (CloudLayer0_height+99.5), 0.0) > 0.0 ? 0.0 : 1.0; + +// float DUAL_MIN_HEIGHT = otherlayer > 0.0 ? CloudLayer0_height : CloudLayer1_height; +// float DUAL_MAX_HEIGHT = DUAL_MIN_HEIGHT + 100.0; + +// float DUAL_DENSITY = otherlayer > 0.0 ? CloudLayer0_density : CloudLayer1_density; + +// if(clamp(progressW.y - DUAL_MAX_HEIGHT,0.0,1.0) < 1.0 && clamp(progressW.y - DUAL_MIN_HEIGHT,0.0,1.0) > 0.0){ + +// float DUAL_MIN_HEIGHT_2 = otherlayer > 0.0 ? CloudLayer0_height : CloudLayer1_height; +// float DUAL_MAX_HEIGHT_2 = DUAL_MIN_HEIGHT + 100.0; + +// float cumulus = GetCumulusDensity(-1, progressW, 1, CloudLayer0_height, CloudLayer1_height); +// float fadedDensity = DUAL_DENSITY * clamp(exp( (progressW.y - (DUAL_MAX_HEIGHT - 75)) / 9.0 ),0.0,1.0); + +// float muE = cumulus*fadedDensity; +// float directLight = 0.0; +// for (int j=0; j < 3; j++){ +// vec3 shadowSamplePos = progressW + dV_Sun * (0.1 + j * (0.1 + dither.y*0.05)); +// float shadow = GetCumulusDensity(-1, shadowSamplePos, 0, DUAL_MIN_HEIGHT, DUAL_MAX_HEIGHT) * DUAL_DENSITY; + +// directLight += shadow; +// } + +// /// shadows cast from one layer to another +// /// large cumulus -> small cumulus +// #if defined CloudLayer1 && defined CloudLayer0 +// if(otherlayer > 0.0) directLight += LAYER1_DENSITY * 2.0 * GetCumulusDensity(1, progressW + dV_Sun/abs(dV_Sun.y) * max((LAYER1_minHEIGHT+70*dither.y) - progressW.y,0.0), 0, LAYER1_minHEIGHT, LAYER1_maxHEIGHT); +// #endif +// // // altostratus -> cumulus +// // #ifdef CloudLayer2 +// // vec3 HighAlt_shadowPos = rayProgress + dV_Sun/abs(dV_Sun.y) * max(LAYER2_HEIGHT - rayProgress.y,0.0); +// // float HighAlt_shadow = GetAltostratusDensity(HighAlt_shadowPos) * CloudLayer2_density; +// // directLight += HighAlt_shadow; +// // #endif + + +// float skyScatter = clamp(((DUAL_MAX_HEIGHT - 20 - progressW.y) / 275.0) * (0.5+DUAL_DENSITY),0.0,1.0); +// float distantfade = 1- exp( -10*pow(clamp(1.0 - length(progressW - cameraPosition)/(32*65),0.0,1.0),2)); +// vec3 cloudlighting = DoCloudLighting(cloudDensity * cumulus, SkyLightColor, skyScatter, directLight, directScattering*sh2, directMultiScattering*sh2, 1); + +// color += max(cloudlighting - cloudlighting*exp(-muE*dd*dL),0.0) * absorbance; +// absorbance *= max(exp(-muE*dd*dL),0.0); +// } + +// #endif + +// if (min(dot(absorbance,vec3(0.335)),1.0) < 1e-5) break; +// } +// return vec4(color, min(dot(absorbance,vec3(0.335)),1.0)); +// } \ No newline at end of file diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 1eabc33..79d19f4 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -9,28 +9,31 @@ // #define Vanilla_like_water #define WATER_WAVE_STRENGTH 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define WATER_WAVE_SPEED 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] -#define Dirt_Amount 0.14 // [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] +#define Dirt_Amount 0.14 // [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] -#define Dirt_Scatter_R 0.6 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] -#define Dirt_Scatter_G 0.9 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] -#define Dirt_Scatter_B 0.9 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] -#define Dirt_Absorb_R 1.0 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] -#define Dirt_Absorb_G 1.0 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] -#define Dirt_Absorb_B 1.0 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] -#define Water_Absorb_R 0.25 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] -#define Water_Absorb_G 0.05 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] -#define Water_Absorb_B 0.01 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Dirt_Scatter_R 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Absorb_R 0.65 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 0.85 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 1.05 // [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Water_Absorb_R 0.2629 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.0565 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01011 // [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] -#define MINIMUM_WATER_ABSORBANCE -1 // [-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 60 70 80 90 100] #define rayMarchSampleCount 2 // [1 2 3 4 6 8 12 16 32 64] #define Water_Top_Layer 62.90 // [0.90 1.90 2.90 3.90 4.90 5.90 6.90 7.90 8.90 9.90 10.90 11.90 12.90 13.90 14.90 15.90 16.90 17.90 18.90 19.90 20.90 21.90 22.90 23.90 24.90 25.90 26.90 27.90 28.90 29.90 30.90 31.90 32.90 33.90 34.90 35.90 36.90 37.90 38.90 39.90 40.90 41.90 42.90 43.90 44.90 45.90 46.90 47.90 48.90 49.90 50.90 51.90 52.90 53.90 54.90 55.90 56.90 57.90 58.90 59.90 60.90 61.90 62.90 63.90 64.90 65.90 66.90 67.90 68.90 69.90 70.90 71.90 72.90 73.90 74.90 75.90 76.90 77.90 78.90 79.90 80.90 81.90 82.90 83.90 84.90 85.90 86.90 87.90 88.90 89.90 90.90 91.90 92.90 93.90 94.90 95.90 96.90 97.90 98.90 99.90 100.90 101.90 102.90 103.90 104.90 105.90 106.90 107.90 108.90 109.90 110.90 111.90 112.90 113.90 114.90 115.90 116.90 117.90 118.90 119.90 120.90 121.90 122.90 123.90 124.90 125.90 126.90 127.90 128.90 129.90 130.90 131.90 132.90 133.90 134.90 135.90 136.90 137.90 138.90 139.90 140.90 141.90 142.90 143.90 144.90 145.90 146.90 147.90 148.90 149.90 150.90 151.90 152.90 153.90 154.90 155.90 156.90 157.90 158.90 159.90 160.90 161.90 162.90 163.90 164.90 165.90 166.90 167.90 168.90 169.90 170.90 171.90 172.90 173.90 174.90 175.90 176.90 177.90 178.90 179.90 180.90 181.90 182.90 183.90 184.90 185.90 186.90 187.90 188.90 189.90 190.90 191.90 192.90 193.90 194.90 195.90 196.90 197.90 198.90 199.90] -#define FAKE_REFRACTION_EFFECT -#define FAKE_DISPERSION_EFFECT -#define REFRACTION_SMUDGE +#define Refraction #define SSR_STEPS 30 // [10 15 20 25 30 35 40 50 100 200 400] #define USE_QUARTER_RES_DEPTH +#define WATER_REFLECTIONS +#define WATER_BACKGROUND_SPECULAR +#define WATER_SUN_SPECULAR +#define SCREENSPACE_REFLECTIONS +// #define WATER_HQ_SMOOTHNESS + #define SNELLS_WINDOW //////////////////////////////////////// @@ -77,7 +80,7 @@ // ----- INDIRECT LIGHT RELATED SETTINGS ----- // ///////////////////////////////////////////////// -#define MIN_LIGHT_AMOUNT 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ] +#define MIN_LIGHT_AMOUNT 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ] #define ambient_brightness 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] #define AmbientLight_R 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] @@ -91,11 +94,11 @@ #define TORCH_B 0.65 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define Hand_Held_lights -#define HANDHELD_LIGHT_RANGE 16 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245 250 255] +#define HANDHELD_LIGHT_RANGE 10 // [1 2 3 4 5 6 7 8 9 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245 250 255] #define indirect_effect 1 // [0 1 2 3 4] -// #define AO_in_sunlight +#define AO_in_sunlight #define AO_Strength 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0] // #define SKY_CONTRIBUTION_IN_SSRT @@ -142,7 +145,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define VPS_Search_Samples 4 // [4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32] #define Min_Shadow_Filter_Radius 5.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] #define Max_Shadow_Filter_Radius 30.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] -#define Max_Filter_Depth 15.0 // [0.1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 220.0] +#define Max_Filter_Depth 35.0 // [0.1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 220.0] #define BASIC_SHADOW_FILTER #define SHADOW_FILTER_SAMPLE_COUNT 13 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ] @@ -188,7 +191,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define RainFog_amount 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] -#define BLOOMY_FOG 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] +#define BLOOMY_FOG 1.5 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] #define BLOOM_STRENGTH 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 50.0 75.0 100.0] #define CAVE_FOG @@ -257,9 +260,14 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. // ----- LABPBR MATERIALS RELATED SETTINGS ----- // /////////////////////////////////////////////////// +// #define Specular_Reflections +// #define Screen_Space_Reflections +// #define Sky_reflection +// #define Rough_reflections +#define Dynamic_SSR_quality #define Sun_specular_Strength 1 // [0 1 2 3 4 5 6 7 8 9 10] #define reflection_quality 30 // [6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 55.0 60.0 65.0 70.0 75.0 80.0 85.0 90.0 95.0 100.0 ] -#define Roughness_Threshold 0.3 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] +#define Roughness_Threshold 1.5 // [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] #ifdef Specular_Reflections #define LIGHTSOURCE_REFLECTION @@ -318,7 +326,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0. #define sunColorG 0.91 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] #define sunColorB 0.81 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] -#define moon_illuminance 600.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 150.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0 1000.0 2000.0 3000.0 4000.0 5000.0 6000.0 7000.0 8000.0 9000.0 10000.0 11000.0 12000.0 13000.0 14000.0 15000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 150000.0 200000.0 250000.0 300000.0 400000.0 500000.0] +#define moon_illuminance 50.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 150.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0 1000.0 2000.0 3000.0 4000.0 5000.0 6000.0 7000.0 8000.0 9000.0 10000.0 11000.0 12000.0 13000.0 14000.0 15000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 150000.0 200000.0 250000.0 300000.0 400000.0 500000.0] #define Moon_temp 15000 // [1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 4500 5600 5700 5800 5900 6000 6100 6200 6300 6400 6500 6600 6700 6800 6900 7000 7100 7200 7300 7400 7500 7600 7700 7800 7900 8000 8100 8200 8300 8400 8500 8600 8700 8800 8900 9000 9100 9200 9300 9400 9500 9600 9700 9800 9900 10000 15000 20000 25000 50000] #define moonColorR 0.9080 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] #define moonColorG 0.9121 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] @@ -504,14 +512,12 @@ uniform int moonPhase; ////////////////////////////////////// #define TAA -// #define RESPONSIVE_TAA -// #define TAA_UPSCALING // #define SCREENSHOT_MODE -#ifdef SCREENSHOT_MODE - #undef RESPONSIVE_TAA -#endif +// #define TAA_UPSCALING +#define BLEND_FACTOR 0.12 // [0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00] +#define CLOSEST_VELOCITY +//#define NO_CLIP -#define BLEND_FACTOR 0.125 // [0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.125 0.14 0.16 0.18 0.20 0.25 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00] ///////////////////////////////////////////////// @@ -576,9 +582,6 @@ const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_ #define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] #define Exposure_Speed 1.0 // [0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] -#define MINUMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] -#define MAXIMUM_EXPOSURE 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] - #define Fake_purkinje #define Purkinje_strength 1.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] #define Purkinje_R 0.4 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] @@ -590,19 +593,12 @@ const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_ // #define AEROCHROME_WOOL_ENABLED // Technically wool things should be affected but it affects a lot of builds and stuff #define AEROCHROME_PINKNESS 0.3 // How pink it is from red [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631), AEROCHROME_PINKNESS); + // #define CAMERA_GRIDLINES - - // #define MOTION_BLUR #define MOTION_BLUR_STRENGTH 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0] -// #define CHROMATIC_ABERRATION -#define CHROMATIC_ABERRATION_STRENGTH 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0] - -// #define VIGNETTE -#define VIGNETTE_STRENGTH 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] - /////////////////////////////////////////////////////// // ----- GAMEPLAY POST EFFECT RELATED SETTINGS ----- // /////////////////////////////////////////////////////// @@ -703,10 +699,6 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define SELECT_BOX_COL_B 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define OLD_CAVE_DETECTION -#define FORCE_TRANSLUCENT_GLASS - -// #define PLANET_CURVATURE -#define CURVATURE_AMOUNT 1.0 // [-10.0 -9.0 -8.0 -7.0 -6.0 -5.0 -4.0 -3.0 -2.0 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] /////////////////////////////////////////// // ----- DISTANT HORIZONS SETTINGS ----- // @@ -716,7 +708,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define DISTORT_SHADOWMAP // #define DISTANT_HORIZONS_SHADOWMAP #ifdef DISTANT_HORIZONS_SHADOWMAP - #undef DISTORT_SHADOWMAP + // #undef DISTORT_SHADOWMAP const float shadowNearPlane = -1.0; const float shadowFarPlane = -1.0; @@ -724,12 +716,11 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) // #define DH_SHADOWPROJECTIONTWEAK #define DH_OVERDRAW_PREVENTION -#define OVERDRAW_MAX_DISTANCE 128 // [0 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256] +#define OVERDRAW_MAX_DISTANCE 0 // [0 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256] #define DH_AMBIENT_OCCLUSION #define DH_SUBSURFACE_SCATTERING #define DH_SCREENSPACE_REFLECTIONS -#define DH_NOISE_TEXTURE /////////////////////////////////////////// // ----- FLOODFILL [LPV] SETTINGS ----- // @@ -737,7 +728,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) //#define LPV_ENABLED #define LPV_SIZE 7 // [6 7 8] -#define LPV_SATURATION 50 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] +#define LPV_SATURATION 100 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] #define LPV_TINT_SATURATION 100 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] #define LPV_NORMAL_STRENGTH 50 // [0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] #define LPV_NORMAL_OFFSET @@ -758,8 +749,6 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #endif #endif -// ruining parts of the effect to make it more like vanilla floodfill -// #define VANILLA_LIGHTMAP_MASK //////////////////////////////// // ----- DEBUG SETTINGS ----- // @@ -774,13 +763,10 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define debug_VIEW_POSITION 6 #define debug_DH_WATER_BLENDING 7 #define debug_FILTERED_STUFF 8 -#define debug_DEPTHTEX0 9 -#define debug_DEPTHTEX1 10 -#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_DEPTHTEX0 debug_DEPTHTEX1] +#define debug_TEMPORAL_REPROJECTION 9 +#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_TEMPORAL_REPROJECTION] + -#if DEBUG_VIEW == debug_DEPTHTEX0 || DEBUG_VIEW == debug_DEPTHTEX1 - #undef TAA -#endif // fix settings #ifdef DH_SCREENSPACE_REFLECTIONS #endif @@ -807,6 +793,4 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #ifdef LPV_VL_FOG_ILLUMINATION #endif #ifdef OLD_CAVE_DETECTION -#endif -#ifdef FORCE_TRANSLUCENT_GLASS #endif \ No newline at end of file diff --git a/shaders/lib/sky_gradient.glsl b/shaders/lib/sky_gradient.glsl index 6429948..2656274 100644 --- a/shaders/lib/sky_gradient.glsl +++ b/shaders/lib/sky_gradient.glsl @@ -28,7 +28,7 @@ vec3 drawMoon(vec3 PlayerPos, vec3 WorldSunVec, vec3 Color, inout vec3 occludeSt vec3 LightDir = phase[moonPhase]; - return Shape * pow(clamp(dot(sunNormal,LightDir)/5,0.0,1.5),5) * Color * 10.0 + clamp(Shape * 4.0 * pow(shape2/200,2.0),0.0,1.0)*0.004; + return Shape * pow(clamp(dot(sunNormal,LightDir)/5,0.0,1.5),5) * Color + clamp(Shape * 4.0 * pow(shape2/200,2.0),0.0,1.0)*0.004; } const float pi = 3.141592653589793238462643383279502884197169; @@ -134,73 +134,27 @@ vec4 texture2D_bicubic_offset(sampler2D tex, vec2 uv, float noise, float scale) vec2 sphereToCarte(vec3 dir) { float lonlat = clamp(atan(-dir.x, -dir.z), -pi, pi); - return vec2(lonlat * (0.5/pi) +0.5, 0.5*dir.y+0.5); + return vec2(lonlat * (0.5/pi) +0.5,0.5*dir.y+0.5); } vec3 skyFromTex(vec3 pos,sampler2D sampler){ - vec2 p = sphereToCarte(pos); - - vec2 clampUV = vec2(1.0); - p = clamp(p*2.0-1.0, -clampUV, clampUV)*0.5+0.5; - return texture2D(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize).rgb; } vec3 skyFromTexLOD(vec3 pos,sampler2D sampler, float LOD){ vec2 p = sphereToCarte(pos); - return texture2DLod(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize,LOD).rgb; } - vec4 skyCloudsFromTex(vec3 pos,sampler2D sampler){ - vec2 p = sphereToCarte(pos); - - vec2 uv = clamp(p, 0.0, 1.0) * texelSize*256. + vec2(18.5+257.,1.5)*texelSize; - - return texture2D(sampler, uv); + return texture2D(sampler,p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize); +} +vec4 skyCloudsFromTexLOD(vec3 pos,sampler2D sampler, float LOD){ + vec2 p = sphereToCarte(pos); + return texture2DLod(sampler,p*texelSize*256. + vec2(18.5 + 257., 1.5)*texelSize,LOD); } -vec4 skyCloudsFromTexBLUR(vec3 pos,sampler2D sampler, float scaler){ - +vec4 skyCloudsFromTexLOD2(vec3 pos,sampler2D sampler, float LOD){ vec2 p = sphereToCarte(pos); - vec2 scaleA = texelSize*256.; - vec2 scaleB = vec2(18.5+257.,1.5)*texelSize; - vec2 posi = p; - - vec2 uv = clamp(posi, 0.0, 1.0)*scaleA + scaleB; - - - vec4 color = texture2D(sampler, uv); - - return color; -} - -vec4 skyCloudsFromTexLOD(vec3 pos,sampler2D sampler, float roughness){ - vec2 p = sphereToCarte(pos); - - roughness = (1-pow(1-roughness,3)); - - float Y = min(max(p.y-0.5,0)*50.0,1); - p = mix(p, ((p-0.5) - (p-0.5)*roughness) + 0.5, Y); - - // p = ((p-0.5) - (p-0.5)*roughness) + 0.5; - - vec2 clampUV = vec2(1.0); - p = clamp(p*2.0-1.0, -clampUV, clampUV)*0.5+0.5; - - vec2 uv = p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize; - - return texture2D(sampler, uv); -} - - -vec4 volumetricsFromTex(vec3 pos,sampler2D sampler, float LOD){ - vec2 p = sphereToCarte(pos); - - p = clamp(p, 0.0, 1.0); - - vec2 uv = p*texelSize*256. + vec2(256.0 - 256.0*0.12,1.5)*texelSize; - - return texture2DLod(sampler, uv, LOD); + return texture2DLod(sampler,p*texelSize*256. + vec2(256.0 - 256.0*0.12,1.5)*texelSize,LOD); } \ No newline at end of file diff --git a/shaders/lib/specular.glsl b/shaders/lib/specular.glsl index ba3ab89..ee44e96 100644 --- a/shaders/lib/specular.glsl +++ b/shaders/lib/specular.glsl @@ -1,13 +1,13 @@ -// uniform int framemod8; +uniform int framemod8; -// const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), -// vec2(-1.,3.)/8., -// vec2(5.0,1.)/8., -// vec2(-3,-5.)/8., -// vec2(-5.,5.)/8., -// vec2(-7.,-1.)/8., -// vec2(3,7.)/8., -// vec2(7.,-7.)/8.); +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); vec3 lerp(vec3 X, vec3 Y, float A){ return X * (1.0 - A) + Y * A; @@ -23,9 +23,9 @@ float square(float x){ -// vec3 toClipSpace3(vec3 viewSpacePosition) { -// return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; -// } +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } @@ -61,89 +61,7 @@ vec2 R2_Sample(int n){ return fract(alpha * n); } -float fma(float a,float b,float c){ - return a * b + c; -} - -vec3 SampleVNDFGGX( - vec3 viewerDirection, // Direction pointing towards the viewer, oriented such that +Z corresponds to the surface normal - float alpha, // Roughness parameter along X and Y of the distribution - vec2 xy // Pair of uniformly distributed numbers in [0, 1) -) { - - // Transform viewer direction to the hemisphere configuration - viewerDirection = normalize(vec3( alpha * 0.5 * viewerDirection.xy, viewerDirection.z)); - - // Sample a reflection direction off the hemisphere - const float tau = 6.2831853; // 2 * pi - float phi = tau * xy.x; - - float cosTheta = fma(1.0 - xy.y, 1.0 + viewerDirection.z, -viewerDirection.z); - float sinTheta = sqrt(clamp(1.0 - cosTheta * cosTheta, 0.0, 1.0)); - - sinTheta = clamp(sinTheta,0.0,1.0); - cosTheta = clamp(cosTheta,sinTheta*0.5,1.0); - - - vec3 reflected = vec3(vec2(cos(phi), sin(phi)) * sinTheta, cosTheta); - - // Evaluate halfway direction - // This gives the normal on the hemisphere - vec3 halfway = reflected + viewerDirection; - - // Transform the halfway direction back to hemiellispoid configuation - // This gives the final sampled normal - return normalize(vec3(alpha * halfway.xy, halfway.z)); -} - -vec3 GGX(vec3 n, vec3 v, vec3 l, float r, vec3 f0, vec3 metalAlbedoTint) { - r = max(pow(r,2.5), 0.0001); - - vec3 h = normalize(l + v); - float hn = inversesqrt(dot(h, h)); - - float dotLH = clamp(dot(h,l)*hn,0.,1.); - float dotNH = clamp(dot(h,n)*hn,0.,1.) ; - float dotNL = clamp(dot(n,l),0.,1.); - float dotNHsq = dotNH*dotNH; - - float denom = dotNHsq * r - dotNHsq + 1.; - float D = r / (3.141592653589793 * denom * denom); - - vec3 F = (f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH)) * metalAlbedoTint; - float k2 = .25 * r; - - return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); -} - -float shlickFresnelRoughness(float XdotN, float roughness){ - - float shlickFresnel = clamp(1.0 + XdotN,0.0,1.0); - - // shlickFresnel = pow(1.0-pow(1.0-shlickFresnel, mix(1.0,2.1,roughness)), mix(5.0,3.0,roughness)); - // shlickFresnel = mix(0.0, mix(1.0,0.065,1-pow(1-roughness,3.5)), shlickFresnel); - - - // float curves = 1.0-exp(-1.3*roughness); - // float brightness = 1.0-exp(-4.0*roughness); - - float curves = exp(-4.0*pow(1-(roughness),2.5)); - float brightness = exp(-3.0*pow(1-sqrt(roughness),3.50)); - - - shlickFresnel = pow(1.0-pow(1.0-shlickFresnel, mix(1.0, 1.9, curves)),mix(5.0, 2.6, curves)); - - - - - shlickFresnel = mix(0.0, mix(1.0,0.065, brightness) , clamp(shlickFresnel,0.0,1.0)); - - return shlickFresnel; -} - -vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, bool hand, inout float reflectionLength, float fresnel){ - - float biasAmount = 0.00005;//mix(0.00035, 0.00005, pow(fresnel,0.01)); +vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, bool hand, inout float reflectLength){ vec3 clipPosition = toClipSpace3(position); float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? @@ -157,282 +75,108 @@ vec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, boo vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); - vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*(dither-0.5); - - #ifndef FORWARD_SPECULAR - spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; - #endif + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; float minZ = spos.z; float maxZ = spos.z; + spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; + float depthcancleoffset = pow(1.0-(quality/reflection_quality),1.0); - + float dist = 1.0 + clamp(position.z*position.z/50.0,0.0,2.0); // shrink sample size as distance increases for (int i = 0; i <= int(quality); i++) { + // float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4.0),0).a/65000.0)); + + // if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ) ) return vec3(spos.xy/RENDER_SCALE,sp); + + // spos += stepv; + + // //small bias + // float biasamount = (0.0002 + 0.0015*pow(depthcancleoffset,5) ) / dist; + + // if(hand) biasamount = 0.00035; + + // minZ = maxZ-biasamount / ld(spos.z); + // maxZ += stepv.z; + + float sp = invLinZ(sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4.0),0).a/65000.0)); float currZ = linZ(spos.z); float nextZ = linZ(sp); - // if(abs(nextZ-currZ) < mix(0.005,0.5,currZ*currZ) && sp < max(minZ,maxZ) && sp > min(minZ,maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); - if(sp < max(minZ,maxZ) && sp > min(minZ,maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); - - minZ = maxZ-biasAmount / currZ; + // if(nextZ < currZ) { + if(abs(nextZ-currZ)/currZ < 0.15 && sp <= max(minZ,maxZ) && sp >= min(minZ,maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); + // } + float biasamount = 0.005; + minZ = maxZ-biasamount / linZ(spos.z); maxZ += stepv.z; spos += stepv; - reflectionLength += 1.0 / quality; - + reflectLength += 1.0 / quality; // for shit } return vec3(1.1); } -vec4 screenSpaceReflections( - vec3 reflectedVector, - vec3 viewPos, - float noise, - - bool isHand, - float roughness, - float fresnel - -){ - vec4 reflection = vec4(0.0); - - float reflectionLength = 0.0; - float quality = 30.0f;//mix(10.0f, 30.0f, fresnel); - - vec3 raytracePos = rayTraceSpeculars(reflectedVector, viewPos, noise, quality, isHand, reflectionLength, fresnel); - - if (raytracePos.z >= 1.0) return reflection; - - // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. - - float value = 0.1; - reflectionLength = min(max(reflectionLength - value, 0.0)/(1.0-value), 1.0); - - float LOD = mix(0.0, 6.0*(1.0-exp(-15.0*sqrt(roughness))), 1.0-pow(1.0-reflectionLength,5.0)); - // float LOD = mix(0.0, 6.0*pow(roughness,0.1), 1.0-pow(1.0-reflectionLength,5.0)); - - // float LOD = clamp(pow(reflectionLength, pow(1.0-sqrt(roughness),5.0) * 3.0) * 6.0, 0.0, 6.0*pow(roughness,0.1)); - - - vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(raytracePos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; - previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; - previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; - - if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { - reflection.a = 1.0; - - #ifdef FORWARD_RENDERED_SPECULAR - // vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); - // vec2 resScale = vec2(1920.,1080.)/clampedRes; - // vec2 bloomTileUV = (((previousPosition.xy/texelSize)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.); - // reflection.rgb = texture2D(colortex6, bloomTileUV / 4.0).rgb; - reflection.rgb = texture2D(colortex5, previousPosition.xy).rgb; - #else - reflection.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb; - #endif - - } - - // reflection.rgb = vec3(LOD/6); - -// vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); -// vec2 resScale = vec2(1920.,1080.)/clampedRes; -// vec2 bloomTileUV = (((previousPosition.xy/texelSize)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.); - -// vec2 bloomTileoffsetUV[6] = vec2[]( -// bloomTileUV / 4., -// bloomTileUV / 8. + vec2(0.25*resScale.x+2.5*texelSize.x, .0), -// bloomTileUV / 16. + vec2(0.375*resScale.x+4.5*texelSize.x, .0), -// bloomTileUV / 32. + vec2(0.4375*resScale.x+6.5*texelSize.x, .0), -// bloomTileUV / 64. + vec2(0.46875*resScale.x+8.5*texelSize.x, .0), -// bloomTileUV / 128. + vec2(0.484375*resScale.x+10.5*texelSize.x, .0) -// ); -// // reflectLength = pow(1-pow(1-reflectLength,2),5) * 6; -// reflectLength = (exp(-4*(1-reflectLength))) * 6; -// Reflections.rgb = texture2D(colortex6, bloomTileoffsetUV[0]).rgb; - - return reflection; +float fma(float a,float b,float c){ + return a * b + c; } -float getReflectionVisibility(float f0, float roughness){ +//// thank you Zombye | the paper: https://ggx-research.github.io/publication/2023/06/09/publication-ggx.html +vec3 SampleVNDFGGX( + vec3 viewerDirection, // Direction pointing towards the viewer, oriented such that +Z corresponds to the surface normal + vec2 alpha, // Roughness parameter along X and Y of the distribution + float xy // Pair of uniformly distributed numbers in [0, 1) +) { + // alpha *= alpha; + // Transform viewer direction to the hemisphere configuration + viewerDirection = normalize(vec3(alpha * viewerDirection.xy, viewerDirection.z)); - // the goal is to determine if the reflection is even visible. - // if it reaches a point in smoothness or reflectance where it is not visible, allow it to interpolate to diffuse lighting. - float thresholdValue = Roughness_Threshold; + // Sample a reflection direction off the hemisphere + const float tau = 6.2831853; // 2 * pi + float phi = tau * xy; - if(thresholdValue < 0.01) return 0.0; + float cosTheta = fma(1.0 - xy, 1.0 + viewerDirection.z, -viewerDirection.z) ; + float sinTheta = sqrt(clamp(1.0 - cosTheta * cosTheta, 0.0, 1.0)); - // the visibility gradient should only happen for dialectric materials. because metal is always shiny i guess or something - float dialectrics = max(f0*255.0 - 26.0,0.0)/229.0; - float value = 0.35; // so to a value you think is good enough. - float thresholdA = min(max( (1.0-dialectrics) - value, 0.0)/value, 1.0); + // xonk note, i dont know what im doing but this kinda does what i want so whatever + float attemptTailClamp = clamp(sinTheta,max(cosTheta-0.25,0), cosTheta); + float attemptTailClamp2 = clamp(cosTheta,max(sinTheta-0.25,0), sinTheta); - // use perceptual smoothness instead of linear roughness. it just works better i guess - float smoothness = 1.0-sqrt(roughness); - value = thresholdValue; // this one is typically want you want to scale. - float thresholdB = min(max(smoothness - value, 0.0)/value, 1.0); - - // preserve super smooth reflections. if thresholdB's value is really high, then fully smooth, low f0 materials would be removed (like water). - value = 0.1; // super low so only the smoothest of materials are includes. - float thresholdC = 1.0-min(max(value - (1.0-smoothness), 0.0)/value, 1.0); - - float visibilityGradient = max(thresholdA*thresholdC - thresholdB,0.0); + vec3 reflected = vec3(vec2(cos(phi), sin(phi)) * attemptTailClamp2, attemptTailClamp); + // vec3 reflected = vec3(vec2(cos(phi), sin(phi)) * sinTheta, cosTheta); - // a curve to make the gradient look smooth/nonlinear. just preference - visibilityGradient = 1.0-visibilityGradient; - visibilityGradient *=visibilityGradient; - visibilityGradient = 1.0-visibilityGradient; - visibilityGradient *=visibilityGradient; + // Evaluate halfway direction + // This gives the normal on the hemisphere + vec3 halfway = reflected + viewerDirection; - return visibilityGradient; + // Transform the halfway direction back to hemiellispoid configuation + // This gives the final sampled normal + return normalize(vec3(alpha * halfway.xy, halfway.z)); } -// derived from N and K from labPBR wiki https://shaderlabs.org/wiki/LabPBR_Material_Standard -// using ((1.0 - N)^2 + K^2) / ((1.0 + N)^2 + K^2) -vec3 HCM_F0 [8] = vec3[]( - vec3(0.531228825312, 0.51235724246, 0.495828545714),// iron - vec3(0.944229966045, 0.77610211732, 0.373402004593),// gold - vec3(0.912298031535, 0.91385063144, 0.919680580954),// Aluminum - vec3(0.55559681715, 0.55453707574, 0.554779427513),// Chrome - vec3(0.925952196272, 0.72090163805, 0.504154241735),// Copper - vec3(0.632483812932, 0.62593707362, 0.641478899539),// Lead - vec3(0.678849234658, 0.64240055565, 0.588409633571),// Platinum - vec3(0.961999998804, 0.94946811207, 0.922115710997) // Silver -); +float GGX(vec3 n, vec3 v, vec3 l, float r, float f0) { + r = max(pow(r,2.5), 0.0001); -vec3 specularReflections( + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); - in vec3 viewPos, // toScreenspace(vec3(screenUV, depth) - in vec3 playerPos, // normalized - in vec3 lightPos, // should be in world space - in vec3 noise, // x = bluenoise y = interleaved gradient noise + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.) ; + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; - in vec3 normal, // normals in world space - in float roughness, // red channel of specular texture _S - in float f0, // green channel of specular texture _S - in vec3 albedo, - in vec3 diffuseLighting, - in vec3 lightColor, // should contain the light's color and shadows. + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); - in float lightmap, // in anything other than world0, this should be 1.0; - in bool isHand // mask for the hand + float F = f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; - #ifdef FORWARD_SPECULAR - , inout float reflectanceForAlpha - #else - , bool isWater - #endif -){ - #ifdef FORWARD_RENDERED_SPECULAR - lightmap = pow(min(max(lightmap-0.6,0.0)*2.5,1.0),2.0); - #else - lightmap = clamp((lightmap-0.8)*7.0, 0.0,1.0); - #endif - - roughness = 1.0 - roughness; - roughness *= roughness; - - f0 = f0 == 0.0 ? 0.02 : f0; - - // f0 = 0.9; - // roughness = 0.0; - - bool isMetal = f0 > 229.5/255.0; - - // #ifndef FORWARD_RENDERED_SPECULAR - // // underwater, convert from f0 air, to ior, then back to f0 water - // if(!isMetal || isWater){ - // f0 = 2.0 / (1.0 - sqrt(f0)) - 1.0; - // f0 = clamp(pow((1.33 - f0) / (1.33 + f0), 2.0),0.0,1.0); - // } - // #endif - - // get reflected vector - mat3 basis = CoordBase(normal); - vec3 viewDir = -playerPos*basis; - - #if defined FORWARD_ROUGH_REFLECTION || defined DEFERRED_ROUGH_REFLECTION - vec3 samplePoints = SampleVNDFGGX(viewDir, roughness, noise.xy); - vec3 reflectedVector_L = basis * reflect(-normalize(viewDir), samplePoints); - - // get reflectance and f0/HCM values - // float shlickFresnel = pow(clamp(1.0 + dot(-reflectedVector, samplePoints),0.0,1.0),5.0); - #else - vec3 reflectedVector_L = reflect(playerPos, normal); - #endif - - float shlickFresnel = shlickFresnelRoughness(dot(-normalize(viewDir), vec3(0.0,0.0,1.0)), roughness); - - // #if defined FORWARD_RENDERED_SPECULAR && defined SNELLS_WINDOW - // if(isEyeInWater == 1) shlickFresnel = mix(shlickFresnel, 1.0, min(max(0.97 - (1-shlickFresnel),0.0)/(1-0.97),1.0)); - // #endif - - // F0 < 230 dialectrics - // F0 >= 230 hardcoded metal f0 - // F0 == 255 use albedo for f0 - albedo = f0 == 1.0 ? sqrt(albedo) : albedo; - vec3 metalAlbedoTint = isMetal ? albedo : vec3(1.0); - // get F0 values for hardcoded metals. - vec3 hardCodedMetalsF0 = f0 == 1.0 ? albedo : HCM_F0[int(clamp(f0*255.0 - 229.5,0.0,7.0))]; - vec3 reflectance = isMetal ? hardCodedMetalsF0 : vec3(f0); - vec3 F0 = (reflectance + (1.0-reflectance) * shlickFresnel) * metalAlbedoTint; - - #if defined FORWARD_SPECULAR - reflectanceForAlpha = clamp(dot(F0, vec3(0.3333333)), 0.0,1.0); - #endif - - vec3 specularReflections = diffuseLighting; - - float reflectionVisibilty = getReflectionVisibility(f0, roughness); - - #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION || defined DEFERRED_ENVIORNMENT_REFLECTION || defined FORWARD_ENVIORNMENT_REFLECTION - if(reflectionVisibilty < 1.0){ - #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION - #if !defined OVERWORLD_SHADER && !defined FORWARD_SPECULAR - vec3 backgroundReflection = volumetricsFromTex(reflectedVector_L, colortex4, roughness).rgb / 1200.0; - #else - vec3 backgroundReflection = skyCloudsFromTex(reflectedVector_L, colortex4).rgb / 1200.0; - #endif - #endif - - #if defined DEFERRED_ENVIORNMENT_REFLECTION || defined FORWARD_ENVIORNMENT_REFLECTION - vec4 enviornmentReflection = screenSpaceReflections(mat3(gbufferModelView) * reflectedVector_L, viewPos, noise.y, isHand, roughness, shlickFresnel); - // darkening for metals. - vec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-enviornmentReflection.a) * (1.0-lightmap) : diffuseLighting; - #else - // darkening for metals. - vec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-lightmap) : diffuseLighting; - #endif - - // composite all the different reflections together - #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION - specularReflections = mix(DarkenedDiffuseLighting, backgroundReflection, lightmap); - #endif - - #if defined DEFERRED_ENVIORNMENT_REFLECTION || defined FORWARD_ENVIORNMENT_REFLECTION - specularReflections = mix(specularReflections, enviornmentReflection.rgb, enviornmentReflection.a); - #endif - - specularReflections = mix(DarkenedDiffuseLighting, specularReflections, F0); - - // lerp back to diffuse lighting if the reflection has not been deemed visible enough - specularReflections = mix(specularReflections, diffuseLighting, reflectionVisibilty); - } - #endif - - #if defined OVERWORLD_SHADER - vec3 lightSourceReflection = Sun_specular_Strength * lightColor * GGX(normal, -playerPos, lightPos, roughness, reflectance, metalAlbedoTint); - specularReflections += lightSourceReflection; - #endif - - return specularReflections; + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); } -/* + void DoSpecularReflections( inout vec3 Output, @@ -455,70 +199,43 @@ void DoSpecularReflections( vec3 Background_Reflection = Output; vec3 Lightsource_Reflection = vec3(0.0); vec4 SS_Reflections = vec4(0.0); - float reflectLength = 0.0; Lightmap = clamp((Lightmap-0.8)*7.0, 0.0,1.0); Roughness = 1.0 - Roughness; Roughness *= Roughness; F0 = F0 == 0.0 ? 0.02 : F0; - - // F0 = 230.0/255.0; - // Roughness = 0.0; - // F0 = 230.0/255.0; - bool isMetal = F0 > 229.5/255.0; - - // underwater, convert from f0 air, to ior, then back to f0 water - // if(!isMetal){ - // F0 = 2.0 / (1.0 - sqrt(F0)) - 1.0; - // F0 = clamp(pow((1.33 - F0) / (1.33 + F0), 2.0),0.0,1.0); - // } // Roughness = 0.0; + // F0 = 0.9; mat3 Basis = CoordBase(Normal); vec3 ViewDir = -WorldPos*Basis; #ifdef Rough_reflections - vec3 SamplePoints = SampleVNDFGGX(ViewDir, Roughness, Noise.xy); - // vec3 SamplePoints = SampleVNDFGGX(ViewDir, vec2(0.1), Noise.x); + vec3 SamplePoints = SampleVNDFGGX(ViewDir, vec2(Roughness), Noise.x); if(Hand) SamplePoints = vec3(0.0,0.0,1.0); #else vec3 SamplePoints = vec3(0.0,0.0,1.0); #endif - vec3 Ln = reflect(-ViewDir, SamplePoints); vec3 L = Basis * Ln; - float Fresnel = pow(clamp(1.0 + dot(-Ln, SamplePoints),0.0,1.0),5.0); // Schlick's approximation - // F0 < 230 dialectrics - // F0 >= 230 hardcoded metal f0 - // F0 == 255 use albedo for f0 - Albedo = F0 == 1.0 ? sqrt(Albedo) : Albedo; + float Fresnel = pow(clamp(1.0 + dot(-Ln, SamplePoints),0.0,1.0), 5.0); // Schlick's approximation - vec3 metalAlbedoTint = isMetal ? Albedo : vec3(1.0); - // metalAlbedoTint = vec3(1.0); - // get F0 values for hardcoded metals. - vec3 hardCodedMetalsF0 = F0 == 1.0 ? Albedo : HCM_F0[int(max(F0*255.0 - 229.5,0.0))]; + float RayContribution = lerp(F0, 1.0, Fresnel); // ensure that when the angle is 0 that the correct F0 is used. - vec3 reflectance = isMetal ? hardCodedMetalsF0 : vec3(F0); - - vec3 f0 = (reflectance + (1.0-reflectance) * Fresnel) * metalAlbedoTint; - - // reflectance = mix(vec3(F0), vec3(1.0), Fresnel); - - // vec3 reflectance = mix(R0, vec3(1.0), Fresnel); // ensure that when the angle is 0 that the correct F0 is used. - - // #ifdef Rough_reflections - // if(Hand) Fresnel = Fresnel * pow(1.0-Roughness,F0 > 229.5/255.0 ? 1.0 : 3.0); - // #else - // Fresnel = Fresnel * pow(1.0-Roughness,3.0); - // #endif + #ifdef Rough_reflections + if(Hand) RayContribution = RayContribution * pow(1.0-Roughness,F0 > 229.5/255.0 ? 1.0 : 3.0); + #else + RayContribution = RayContribution * pow(1.0-Roughness,3.0); + #endif bool hasReflections = Roughness_Threshold == 1.0 ? true : F0 * (1.0 - Roughness * Roughness_Threshold) > 0.01; // mulitply all reflections by the albedo if it is a metal. - // vec3 Metals = F0 > 229.5/255.0 ? normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3) : vec3(1.0); + // vec3 Metals = F0 > 229.5/255.0 ? lerp(normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3), vec3(1.0), Fresnel * pow(1.0-Roughness,25.0)) : vec3(1.0); + vec3 Metals = F0 > 229.5/255.0 ? normalize(Albedo+1e-7) * (dot(Albedo,vec3(0.21, 0.72, 0.07)) * 0.7 + 0.3) : vec3(1.0); // vec3 Metals = F0 > 229.5/255.0 ? Albedo : vec3(1.0); // --------------- BACKGROUND REFLECTIONS @@ -526,33 +243,31 @@ void DoSpecularReflections( #ifdef Sky_reflection #ifdef OVERWORLD_SHADER - if(hasReflections) Background_Reflection = (skyCloudsFromTex(L, colortex4).rgb / 1200.0) ; + if(hasReflections) Background_Reflection = (skyCloudsFromTex(L, colortex4).rgb / 30.0) * Metals ; #else - if(hasReflections) Background_Reflection = (volumetricsFromTex(L, colortex4, sqrt(Roughness) * 6.0).rgb / 1200.0) ; + if(hasReflections) Background_Reflection = (skyCloudsFromTexLOD2(L, colortex4, sqrt(Roughness) * 6.0).rgb / 30.0) * Metals; #endif // take fresnel and lightmap levels into account and write to the final color - // the minimum color being the output is for when the background reflection color is close to dark, it will fallback to a dimmed diffuse - // Final_Reflection = mix(Output, Background_Reflection, Lightmap * reflectance); - Final_Reflection = mix(Output, mix(isMetal ? vec3(0.0) : Output, Background_Reflection, f0 * Lightmap), Lightmap); - // Final_Reflection = Background_Reflection * reflectance; + Final_Reflection = lerp(Output, Background_Reflection, Lightmap * RayContribution); #endif // --------------- SCREENSPACE REFLECTIONS // apply screenspace reflections to the final color and mask out background reflections. #ifdef Screen_Space_Reflections if(hasReflections){ - - float SSR_Quality =reflection_quality;// mix(6.0, reflection_quality, Fresnel); // Scale quality with fresnel + #ifdef Dynamic_SSR_quality + float SSR_Quality = lerp(reflection_quality, 6.0, RayContribution); // Scale quality with ray contribution + #else + float SSR_Quality = reflection_quality; + #endif + float reflectLength = 0.0; vec3 RaytracePos = rayTraceSpeculars(mat3(gbufferModelView) * L, FragPos, Noise.y, float(SSR_Quality), Hand, reflectLength); float LOD = clamp(pow(reflectLength, pow(1.0-sqrt(Roughness),5.0) * 3.0) * 6.0, 0.0, 6.0); // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. - // float LOD = clamp((1-pow(clamp(1.0-reflectLength,0,1),5.0)) * 6.0, 0.0, 6.0); // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. if(Roughness <= 0.0) LOD = 0.0; - // LOD = 0.0; - if (RaytracePos.z < 1.0){ vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(RaytracePos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; @@ -560,26 +275,25 @@ void DoSpecularReflections( if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { SS_Reflections.a = 1.0; - SS_Reflections.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb; + SS_Reflections.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb * Metals; } } // make sure it takes the fresnel into account for SSR. - SS_Reflections.rgb = mix(isMetal ? vec3(0.0) : Output, SS_Reflections.rgb, f0); + SS_Reflections.rgb = lerp(Output, SS_Reflections.rgb, RayContribution); // occlude the background with the SSR and write to the final color. - Final_Reflection = mix(Final_Reflection, SS_Reflections.rgb, SS_Reflections.a); + Final_Reflection = lerp(Final_Reflection, SS_Reflections.rgb, SS_Reflections.a); } #endif + // Final_Reflection = mix(mix(Output,Background_Reflection,Lightmap), SS_Reflections.rgb, SS_Reflections.a) * RayContribution; + // --------------- LIGHTSOURCE REFLECTIONS // slap the main lightsource reflections to the final color. #ifdef LIGHTSOURCE_REFLECTION - Lightsource_Reflection = Diffuse * GGX(Normal, -WorldPos, LightPos, Roughness, reflectance, metalAlbedoTint) * Sun_specular_Strength; - Final_Reflection += Lightsource_Reflection; + Lightsource_Reflection = Diffuse * GGX(Normal, -WorldPos, LightPos, Roughness, F0) * Metals; + Final_Reflection += Lightsource_Reflection * Sun_specular_Strength ; #endif - - Output = Final_Reflection; - // Output = exp(-100 * (reflectLength*reflectLength*reflectLength)) * vec3(1.0); -} -*/ \ No newline at end of file + Output = Final_Reflection; +} \ No newline at end of file diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl index a90c8b9..901aea5 100644 --- a/shaders/lib/volumetricClouds.glsl +++ b/shaders/lib/volumetricClouds.glsl @@ -1,11 +1,56 @@ -#define ALTOSTRATUS_LAYER 2 -#define LARGECUMULUS_LAYER 1 -#define SMALLCUMULUS_LAYER 0 +#ifdef HQ_CLOUDS + int maxIT_clouds = minRayMarchSteps; + int maxIT = maxRayMarchSteps; + + const int cloudLoD = cloud_LevelOfDetail; + const int cloudShadowLoD = cloud_ShadowLevelOfDetail; +#else + int maxIT_clouds = minRayMarchStepsLQ; + int maxIT = maxRayMarchStepsLQ; + + const int cloudLoD = cloud_LevelOfDetailLQ; + const int cloudShadowLoD = cloud_ShadowLevelOfDetailLQ; +#endif + +uniform int worldTime; +#define WEATHERCLOUDS +#include "/lib/climate_settings.glsl" + +#if defined Daily_Weather + flat varying vec4 dailyWeatherParams0; + flat varying vec4 dailyWeatherParams1; +#else + vec4 dailyWeatherParams0 = vec4(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage, 0.0); + vec4 dailyWeatherParams1 = vec4(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density, 0.0); +#endif + +float LAYER0_width = 100.0; +float LAYER0_minHEIGHT = CloudLayer0_height; +float LAYER0_maxHEIGHT = LAYER0_width + LAYER0_minHEIGHT; + +float LAYER1_width = 100.0; +float LAYER1_minHEIGHT = max(CloudLayer1_height, LAYER0_maxHEIGHT); +float LAYER1_maxHEIGHT = LAYER1_width + LAYER1_minHEIGHT; + +float LAYER2_HEIGHT = max(CloudLayer2_height, LAYER1_maxHEIGHT); + +// float LAYER0_COVERAGE = mix(pow(dailyWeatherParams0.x*2.0,0.2), 0.9, rainStrength); +// float LAYER1_COVERAGE = mix(pow(dailyWeatherParams0.y*2.0,0.2), 0.8, rainStrength); +// float LAYER2_COVERAGE = mix(pow(dailyWeatherParams0.z*2.0,0.2), 1.3, rainStrength); + +float LAYER0_COVERAGE = mix(dailyWeatherParams0.x, 0.95, rainStrength); +float LAYER1_COVERAGE = mix(dailyWeatherParams0.y, 0.0, rainStrength); +float LAYER2_COVERAGE = mix(dailyWeatherParams0.z, 1.5, rainStrength); + +float LAYER0_DENSITY = mix(dailyWeatherParams1.x,1.0,rainStrength); +float LAYER1_DENSITY = mix(dailyWeatherParams1.y,0.0,rainStrength); +float LAYER2_DENSITY = mix(dailyWeatherParams1.z,0.05,rainStrength); uniform int worldDay; -uniform int worldTime; + float cloud_movement = (worldTime + mod(worldDay,100)*24000.0) / 24.0 * Cloud_Speed; +//3D noise from 2d texture float densityAtPos(in vec3 pos){ pos /= 18.; pos.xz *= 0.5; @@ -20,331 +65,341 @@ float densityAtPos(in vec3 pos){ return mix(xy.r,xy.g, f.y); } -float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, float maxHeight){ - vec3 samplePos = position*vec3(1.0, 1.0/48.0, 1.0)/4.0; +float GetAltostratusDensity(vec3 pos){ + + float large = 1.0 - texture2D(noisetex, (pos.xz + cloud_movement)/100000.).b; + large = max(large + LAYER2_COVERAGE - 0.7, 0.0); + float medium = 1.0 - texture2D(noisetex, (pos.xz - cloud_movement)/7500. + vec2(-large,1.0-large)/5.0).b; + + float shape = max(large - medium*0.4 * clamp(1.5-large,0.0,1.0),0.0); + + return shape*shape; +} + +float cloudCov(int layer, in vec3 pos, vec3 samplePos, float minHeight, float maxHeight){ + float FinalCloudCoverage = 0.0; float coverage = 0.0; - float shape = 0.0; - float largeCloud = 0.0; - float smallCloud = 0.0; + float Topshape = 0.0; + float Baseshape = 0.0; - if(LayerIndex == ALTOSTRATUS_LAYER){ - - coverage = dailyWeatherParams0.z; + float LAYER0_minHEIGHT_FOG = CloudLayer0_height; + float LAYER0_maxHEIGHT_FOG = 100 + LAYER0_minHEIGHT_FOG; + LAYER0_minHEIGHT_FOG = LAYER0_minHEIGHT; + LAYER0_maxHEIGHT_FOG = LAYER0_maxHEIGHT; - largeCloud = texture2D(noisetex, (position.xz + cloud_movement)/100000.).b; - smallCloud = 1.0 - texture2D(noisetex, (position.xz - cloud_movement)/7500. - vec2(1.0-largeCloud, -largeCloud)/5.0).b; + float LAYER1_minHEIGHT_FOG = max(CloudLayer1_height, LAYER0_maxHEIGHT); + float LAYER1_maxHEIGHT_FOG = 100 + LAYER1_minHEIGHT_FOG; + LAYER1_minHEIGHT_FOG = LAYER1_minHEIGHT; + LAYER1_maxHEIGHT_FOG = LAYER1_maxHEIGHT; - smallCloud = largeCloud + smallCloud * 0.4 * clamp(1.5-largeCloud,0.0,1.0); - - float val = coverage; - shape = min(max(val - smallCloud,0.0)/sqrt(val),1.0); - shape *= shape; - return shape; - } - if(LayerIndex == LARGECUMULUS_LAYER){ - coverage = dailyWeatherParams0.y; - - largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0).b; - smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0).b; - - smallCloud = abs(largeCloud* -0.7) + smallCloud; + vec2 SampleCoords0 = vec2(0.0); vec2 SampleCoords1 = vec2(0.0); - float val = coverage; - shape = min(max(val - smallCloud,0.0)/sqrt(val),1.0) ; - - - } - if(LayerIndex == SMALLCUMULUS_LAYER){ - coverage = dailyWeatherParams0.x; - - largeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0).b; - smallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0).r; - - smallCloud = abs(largeCloud-0.6) + smallCloud*smallCloud; - - float val = coverage; - shape = min(max(val - smallCloud,0.0)/sqrt(val),1.0) ; - - // shape = abs(largeCloud*2.0 - 1.2)*0.5 - (1.0-smallCloud); + float CloudSmall = 0.0; + if(layer == 0){ + SampleCoords0 = (samplePos.xz + cloud_movement) / 5000 ; + SampleCoords1 = (samplePos.xz - cloud_movement) / 500 ; + CloudSmall = texture2D(noisetex, SampleCoords1 ).r; } - // clamp density of the cloud within its upper/lower bounds - shape = min(min(shape, clamp(maxHeight - position.y,0,1)), 1.0 - clamp(minHeight - position.y,0,1)); + if(layer == 1){ + SampleCoords0 = -( (samplePos.zx + cloud_movement*2) / 10000); + SampleCoords1 = -( (samplePos.zx - cloud_movement*2) / 2500); + CloudSmall = texture2D(noisetex, SampleCoords1 ).b; + } - // carve out the upper part of clouds. make sure it rounds out at its upper bound - float topShape = min(max(maxHeight-position.y,0.0) / max(maxHeight-minHeight,1.0),1.0); - topShape = min(exp(-0.5 * (1.0-topShape)), 1.0-pow(1.0-topShape,5.0)); - - // round out the bottom part slightly - float bottomShape = 1.0-pow(1.0-min(max(position.y-minHeight,0.0) / 25.0, 1.0), 5.0); - shape = max((shape - 1.0) + topShape * bottomShape,0.0); - - /// erosion noise - if(shape > 0.001){ - - float erodeAmount = 0.5; - // shrink the coverage slightly so it is a similar shape to clouds with erosion. this helps cloud lighting and cloud shadows. - if (LOD < 1) return max(shape - 0.27*erodeAmount,0.0); - - samplePos.xz -= cloud_movement/4.0; - - // da wind - // if(LayerIndex == SMALLCUMULUS_LAYER) - samplePos.xz += pow( max(position.y - (minHeight+20.0), 0.0) / (max(maxHeight-minHeight,1.0)*0.20), 1.5); - - float erosion = 0.0; - - if(LayerIndex == SMALLCUMULUS_LAYER){ - erosion += (1.0-densityAtPos(samplePos * 200.0)) * sqrt(1.0-shape); - - float falloff = 1.0 - clamp((maxHeight - position.y)/100.0,0.0,1.0); - erosion += abs(densityAtPos(samplePos * 600.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25); - - erosion = erosion*erosion*erosion*erosion; + if(layer == -1){ + float otherlayer = max(pos.y - (LAYER0_minHEIGHT_FOG+99.5), 0.0) > 0 ? 0.0 : 1.0; + if(otherlayer > 0.0){ + SampleCoords0 = (samplePos.xz + cloud_movement) / 5000 ; + SampleCoords1 = (samplePos.xz - cloud_movement) / 500 ; + CloudSmall = texture2D(noisetex, SampleCoords1 ).r; + }else{ + SampleCoords0 = -( (samplePos.zx + cloud_movement*2) / 10000); + SampleCoords1 = -( (samplePos.zx - cloud_movement*2) / 2500); + CloudSmall = texture2D(noisetex, SampleCoords1 ).b; } - if(LayerIndex == LARGECUMULUS_LAYER){ - erosion += (1.0 - densityAtPos(samplePos * 100.0)) * sqrt(1.0-shape); + } - float falloff = 1.0 - clamp((maxHeight - position.y)/200.0,0.0,1.0); - erosion += abs(densityAtPos(samplePos * 450.0) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); + float CloudLarge = texture2D(noisetex, SampleCoords0).b; - erosion = erosion*erosion*erosion*erosion; - } + if(layer == 0){ + coverage = abs(CloudLarge*2.0 - 1.2)*0.5 - (1.0-CloudSmall); - return max(shape - erosion*erodeAmount,0.0); + float layer0 = min(min(coverage + LAYER0_COVERAGE, clamp(LAYER0_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER0_minHEIGHT_FOG - pos.y,0,1)); + Topshape = max(pos.y - (LAYER0_maxHEIGHT_FOG - 75),0.0) / 200.0; + Topshape += max(pos.y - (LAYER0_maxHEIGHT_FOG - 10),0.0) / 15.0; + Baseshape = max(LAYER0_minHEIGHT_FOG + 12.5 - pos.y, 0.0) / 50.0; + + FinalCloudCoverage = max(layer0 - Topshape - Baseshape * (1.0-rainStrength),0.0); + } + + if(layer == 1){ + + coverage = abs(CloudLarge-0.8) - CloudSmall; + + float layer1 = min(min(coverage + LAYER1_COVERAGE - 0.5,clamp(LAYER1_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER1_minHEIGHT_FOG - pos.y,0,1)); + + Topshape = max(pos.y - (LAYER1_maxHEIGHT_FOG - 75),0.0) / 200.0; + Topshape += max(pos.y - (LAYER1_maxHEIGHT_FOG - 10), 0.0) / 15.0; + Baseshape = max(LAYER1_minHEIGHT_FOG + 15.5 - pos.y, 0.0) / 50.0; + + FinalCloudCoverage = max(layer1 - Topshape*Topshape - Baseshape * (1.0-rainStrength), 0.0); + } + + + if(layer == -1){ + + #ifdef CloudLayer0 + float layer0_coverage = abs(CloudLarge*2.0 - 1.2)*0.5 - (1.0-CloudSmall); + float layer0 = min(min(layer0_coverage + LAYER0_COVERAGE, clamp(LAYER0_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER0_minHEIGHT_FOG - pos.y,0,1)); + + Topshape = max(pos.y - (LAYER0_maxHEIGHT_FOG - 75),0.0) / 200.0; + Topshape += max(pos.y - (LAYER0_maxHEIGHT_FOG - 10),0.0) / 15.0; + Baseshape = max(LAYER0_minHEIGHT_FOG + 12.5 - pos.y, 0.0) / 50.0; + + FinalCloudCoverage = max(layer0 - Topshape - Baseshape * (1.0-rainStrength),0.0); + #endif + + #ifdef CloudLayer1 + float layer1_coverage = abs(CloudLarge-0.8) - CloudSmall; + float layer1 = min(min(layer1_coverage + LAYER1_COVERAGE - 0.5,clamp(LAYER1_maxHEIGHT_FOG - pos.y,0,1)), 1.0 - clamp(LAYER1_minHEIGHT_FOG - pos.y,0,1)); + + Topshape = max(pos.y - (LAYER1_maxHEIGHT_FOG - 75), 0.0) / 200; + Topshape += max(pos.y - (LAYER1_maxHEIGHT_FOG - 10 ), 0.0) / 50; + Baseshape = max(LAYER1_minHEIGHT_FOG + 12.5 - pos.y, 0.0) / 50.0; + + FinalCloudCoverage += max(layer1 - Topshape*Topshape - Baseshape * (1.0-rainStrength), 0.0); + #endif + } + + return FinalCloudCoverage; +} + +//Erode cloud with 3d Perlin-worley noise, actual cloud value +float cloudVol(int layer, in vec3 pos, in vec3 samplePos, in float cov, in int LoD, float minHeight, float maxHeight){ + + // float curvature = 1-exp(-25*pow(clamp(1.0 - length(pos - cameraPosition)/(32*80),0.0,1.0),2)); + // curvature = clamp(1.0 - length(pos - cameraPosition)/(32*128),0.0,1.0); + + float otherlayer = max(pos.y - (CloudLayer0_height+99.5), 0.0) > 0 ? 0.0 : 1.0; + float upperPlane = otherlayer; + + float noise = 0.0 ; + float totalWeights = 0.0; + float pw = log(fbmPower1); + float pw2 = log(fbmPower2); + + samplePos.xz -= cloud_movement/4; + + samplePos.xz += pow( max(pos.y - (minHeight+20), 0.0) / 20.0,1.50) ; + + noise += (1.0-densityAtPos(samplePos * mix(100.0,200.0,upperPlane)) ) * sqrt(1.0-cov); + + if (LoD > 0){ + noise += abs( densityAtPos(samplePos * mix(450.0,600.0,upperPlane) ) - (1.0-clamp(((maxHeight - pos.y) / 100.0),0.0,1.0))) * 0.75 * (1.0-cov); + } + + noise = noise*noise; + float cloud = max(cov - noise*noise*fbmAmount,0.0); + + return cloud; +} + +float GetCumulusDensity(int layer, in vec3 pos, in int LoD, float minHeight, float maxHeight){ + + vec3 samplePos = pos*vec3(1.0,1./48.,1.0)/4; + + float coverageSP = cloudCov(layer, pos,samplePos, minHeight, maxHeight); + + // return coverageSP; + if (coverageSP > 0.001) { + if (LoD < 0) return max(coverageSP - 0.27*fbmAmount,0.0); + return cloudVol(layer, pos,samplePos,coverageSP,LoD ,minHeight, maxHeight) ; } else return 0.0; - } -float getPlanetShadow(vec3 playerPos, vec3 WsunVec){ - float planetShadow = min(max(playerPos.y - (-100.0 + 1.0 / abs(WsunVec.y*0.1)),0.0) / 100.0, 1.0); - - planetShadow = mix(pow(1.0-pow(1.0-planetShadow,2.0),2.0), 1.0, pow(abs(WsunVec.y),2.0)); - - return planetShadow; -} - -float GetCloudShadow(vec3 playerPos, vec3 sunVector){ - - float totalShadow = getPlanetShadow(playerPos, sunVector); - - vec3 startPosition = playerPos; - - float cloudShadows = 0.0; - - #ifdef CloudLayer0 - startPosition = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer0_height + 20.0) - playerPos.y, 0.0); - cloudShadows = getCloudShape(SMALLCUMULUS_LAYER, 0, startPosition, CloudLayer0_height, CloudLayer0_height+100.0)*dailyWeatherParams1.x; - #endif - #ifdef CloudLayer1 - startPosition = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 20.0) - playerPos.y, 0.0); - cloudShadows += getCloudShape(LARGECUMULUS_LAYER, 0, startPosition, CloudLayer1_height, CloudLayer1_height+100.0)*dailyWeatherParams1.y; - #endif - #ifdef CloudLayer2 - startPosition = playerPos + sunVector / abs(sunVector.y) * max(CloudLayer2_height - playerPos.y, 0.0); - cloudShadows += getCloudShape(ALTOSTRATUS_LAYER, 0, startPosition, CloudLayer2_height, CloudLayer2_height)*dailyWeatherParams1.z * (1.0-abs(WsunVec.y)); - #endif - #if defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2 - totalShadow *= exp((cloudShadows*cloudShadows) * -200.0); - #endif - - return totalShadow; -} #ifndef CLOUDSHADOWSONLY +uniform sampler2D colortex4; //Skybox -float phaseCloud(float x, float g){ +//Mie phase function +float phaseg(float x, float g){ float gg = g * g; return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14; } -float getCloudScattering( - int LayerIndex, - vec3 rayPosition, - vec3 sunVector, - float dither, - float minHeight, - float maxHeight, - float density +vec3 DoCloudLighting( + float density, + + vec3 skyLightCol, + float skyScatter, + + float sunShadows, + vec3 sunScatter, + vec3 sunMultiScatter, + float distantfog ){ - int samples = 3; - int LOD = 0; + float powder = 1.0 - exp(-10.0 * density); + vec3 directLight = sunScatter * exp(-10.0 * sunShadows) + sunMultiScatter * exp(-3.0 * sunShadows) * powder; - if(LayerIndex == ALTOSTRATUS_LAYER) samples = 2; - - float shadow = 0.0; - vec3 shadowRayPosition = vec3(0.0); - - for (int i = 0; i < samples; i++){ - - if(LayerIndex == ALTOSTRATUS_LAYER){ - shadowRayPosition = rayPosition + sunVector * (1.0 + i * dither) / (pow(abs(sunVector.y*0.5),3.0) * 0.995 + 0.005); - }else{ - shadowRayPosition = rayPosition + sunVector * (1.0 + i + dither)*20.0; - } - // float fadeddensity = density * pow(clamp((shadowRayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0); - - shadow += getCloudShape(LayerIndex, LOD, shadowRayPosition, minHeight, maxHeight) * density; - } - - return shadow; + vec3 indirectLight = skyLightCol * mix(1.0, 2.0 * (1.0 - sqrt((skyScatter*skyScatter*skyScatter)*density)) , pow(distantfog,1.0 - rainStrength*0.5)); + + // return directLight; + // #ifndef TEST + // return indirectLight; + // #endif + return directLight + indirectLight; } -vec3 getCloudLighting( - float shape, - float shapeFaded, - - float sunShadowMask, - vec3 directLightCol, - vec3 directLightCol_multi, - - float indirectShadowMask, - vec3 indirectLightCol, - - float distanceFade -){ - float powderEffect = 1.0 - exp(-3.0*shapeFaded); - - vec3 directScattering = directLightCol * exp(-10.0*sunShadowMask) + directLightCol_multi * exp(-3.0*(sunShadowMask - (1.0-indirectShadowMask*indirectShadowMask)*0.5)) * powderEffect; - vec3 indirectScattering = indirectLightCol * mix(1.0, exp2(-5.0*shape), (indirectShadowMask*indirectShadowMask) * distanceFade); - - // return indirectScattering; - // return directScattering; - return indirectScattering + directScattering; -} - -vec4 raymarchCloud( - int LayerIndex, - float samples, - vec3 rayPosition, - vec3 rayDirection, - float dither, +vec4 renderLayer( + int layer, + in vec3 POSITION, + in vec3 rayProgress, + in vec3 dV_view, + in float mult, + in float dither, + int QUALITY, + float minHeight, float maxHeight, - vec3 sunVector, - vec3 sunScattering, - vec3 sunMultiScattering, - vec3 skyScattering, - float distanceFade, + in vec3 dV_Sun, - float referenceDistance + float cloudDensity, + in vec3 skyLightCol, + in vec3 sunScatter, + in vec3 sunMultiScatter, + in vec3 indirectScatter, + in float distantfog, + bool notVisible, + vec3 FragPosition, + inout vec3 cloudDepth ){ - vec3 color = vec3(0.0); - float totalAbsorbance = 1.0; - - float planetShadow = getPlanetShadow(rayPosition, sunVector); - sunScattering *= planetShadow; - sunMultiScattering *= planetShadow; + vec3 COLOR = vec3(0.0); + float TOTAL_EXTINCTION = 1.0; + bool IntersecTerrain = false; - float distanceFactor = length(rayDirection); - - if(LayerIndex == ALTOSTRATUS_LAYER){ - float density = dailyWeatherParams1.z; - - bool ifAboveOrBelowPlane = max(mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight,0.0,1.0)) * normalize(rayDirection).y,0.0) > 0.0; - - // check if the ray staring position is going farther than the reference distance, if yes, dont begin marching. this is to check for intersections with the world. - // check if the camera is above or below the cloud plane, so it doesnt waste work on the opposite hemisphere - #ifndef VL_CLOUDS_DEFERRED - if(length(rayPosition - cameraPosition) > referenceDistance || ifAboveOrBelowPlane) return vec4(color, totalAbsorbance); + #ifdef CLOUDS_INTERSECT_TERRAIN + // thank you emin for this world intersection thing + #if defined DISTANT_HORIZONS + float maxdist = dhRenderDistance + 16 * 32; #else - if(ifAboveOrBelowPlane) return vec4(color, totalAbsorbance); + float maxdist = far + 16*5; #endif - float shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight); - float shapeWithDensity = shape*density; + float lViewPosM = length(FragPosition) < maxdist ? length(FragPosition) - 1.0 : 100000000.0; + #endif - // check if the pixel has visible clouds before doing work. - if(shapeWithDensity > 1e-5){ - // can add the initial cloud shape sample for a free shadow starting step :D - float sunShadowMask = (shapeWithDensity + getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density)) * (1.0-abs(WsunVec.y)); - float indirectShadowMask = 0.5; +if(layer == 2){ + + #ifdef CLOUDS_INTERSECT_TERRAIN + IntersecTerrain = length(rayProgress - cameraPosition) > lViewPosM; + #endif - vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensity, sunShadowMask, sunScattering, sunMultiScattering, indirectShadowMask, skyScattering, distanceFade); + if(notVisible || IntersecTerrain) return vec4(COLOR, TOTAL_EXTINCTION); + + float signFlip = mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight,0.0,1.0)); + + if(max(signFlip * normalize(dV_view).y,0.0) <= 0.0){ + float altostratus = GetAltostratusDensity(rayProgress); - float densityCoeff = exp(-distanceFactor*shapeWithDensity); - color += (lighting - lighting * densityCoeff) * totalAbsorbance; - totalAbsorbance *= densityCoeff; - } - - return vec4(color, totalAbsorbance); - } - - if(LayerIndex < ALTOSTRATUS_LAYER){ - float density = dailyWeatherParams1.x; - - if(LayerIndex == LARGECUMULUS_LAYER) density = dailyWeatherParams1.y; + float AltoWithDensity = altostratus * cloudDensity; - float skylightOcclusion = 1.0; - #if defined CloudLayer1 && defined CloudLayer0 - if(LayerIndex == SMALLCUMULUS_LAYER) { - float upperLayerOcclusion = getCloudShape(LARGECUMULUS_LAYER, 0, rayPosition + vec3(0.0,1.0,0.0) * max((CloudLayer1_height+20) - rayPosition.y,0.0), CloudLayer1_height, CloudLayer1_height+100.0); - skylightOcclusion = mix(mix(0.0,0.2,dailyWeatherParams1.y), 1.0, pow(1.0 - upperLayerOcclusion*dailyWeatherParams1.y,2)); + if(altostratus > 1e-5){ + float muE = altostratus * cloudDensity; + + float directLight = 0.0; + for (int j = 0; j < 2; j++){ + + // lower the step size as the sun gets higher in the sky + vec3 shadowSamplePos_high = rayProgress + dV_Sun * (1.0 + j * dither) / (pow(abs(dV_Sun.y*0.5),3.0) * 0.995 + 0.005); + + // lower density as the sun gets higher in the sky to simulate.... multiscattering or something idk it looks better this way + directLight += GetAltostratusDensity(shadowSamplePos_high) * cloudDensity * (1.0-abs(dV_Sun.y)); } - skylightOcclusion = mix(1.0, skylightOcclusion, distanceFade); - #endif + vec3 lighting = DoCloudLighting(AltoWithDensity, skyLightCol, 0.5, directLight, sunScatter, sunMultiScatter, distantfog); - for(int i = 0; i < int(samples); i++) { - - // check if the ray staring position is going farther than the reference distance, if yes, dont begin marching. this is to check for intersections with the world. - #ifndef VL_CLOUDS_DEFERRED - if(length(rayPosition - cameraPosition) > referenceDistance) break; - #endif - - // check if the pixel is in the bounding box before doing work. - if(clamp(rayPosition.y - maxHeight,0.0,1.0) < 1.0 && clamp(rayPosition.y - minHeight,0.0,1.0) > 0.0){ - - float shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight); - float shapeWithDensity = shape*density; - float shapeWithDensityFaded = shape*density * pow(clamp((rayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0); - - // check if the pixel has visible clouds before doing work. - if(shapeWithDensityFaded > 1e-5){ - // can add the initial cloud shape sample for a free shadow starting step :D - float indirectShadowMask = 1.0 - min(max(rayPosition.y - minHeight,0.0) / max(maxHeight-minHeight,1.0), 1.0); - float sunShadowMask = shapeWithDensity + getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density); - - // do cloud shadows from one layer to another - // large cumulus layer -> small cumulus layer - #if defined CloudLayer0 && defined CloudLayer1 - if(LayerIndex == SMALLCUMULUS_LAYER){ - vec3 shadowStartPos = rayPosition + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 20.0) - rayPosition.y, 0.0); - sunShadowMask += 3.0 * getCloudShape(LARGECUMULUS_LAYER, 0, shadowStartPos, CloudLayer1_height, CloudLayer1_height+100.0)*dailyWeatherParams1.y; - } - #endif - // altostratus layer -> all cumulus layers - #if defined CloudLayer2 - vec3 shadowStartPos = rayPosition + sunVector / abs(sunVector.y) * max(CloudLayer2_height - rayPosition.y, 0.0); - sunShadowMask += getCloudShape(ALTOSTRATUS_LAYER, 0, shadowStartPos, CloudLayer2_height, CloudLayer2_height) * dailyWeatherParams1.z * (1.0-abs(sunVector.y)); - #endif - - vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering, sunMultiScattering, indirectShadowMask, skyScattering * skylightOcclusion, distanceFade); - - float densityCoeff = exp(-distanceFactor*shapeWithDensityFaded); - color += (lighting - lighting * densityCoeff) * totalAbsorbance; - totalAbsorbance *= densityCoeff; - - // check if you can see through the cloud on the pixel before doing the next iteration - if (totalAbsorbance < 1e-5) break; - } - } - rayPosition += rayDirection; + COLOR += max(lighting - lighting*exp(-mult*muE),0.0) * TOTAL_EXTINCTION; + TOTAL_EXTINCTION *= max(exp(-mult*muE),0.0); } - - return vec4(color, totalAbsorbance); } + + return vec4(COLOR, TOTAL_EXTINCTION); +}else{ + #if defined CloudLayer1 && defined CloudLayer0 + float upperLayerOcclusion = layer == 0 ? GetCumulusDensity(1, rayProgress + vec3(0.0,1.0,0.0) * max((LAYER1_minHEIGHT+70*dither) - rayProgress.y,0.0), 0, LAYER1_minHEIGHT, LAYER1_maxHEIGHT) : 0.0; + float skylightOcclusion = mix(1.0, (1.0 - LAYER1_DENSITY)*0.8 + 0.2, (1.0 - exp2(-5.0 * (upperLayerOcclusion*upperLayerOcclusion))) * distantfog); + #else + float skylightOcclusion = 1.0; + #endif + + float expFactor = 11.0; + for(int i = 0; i < QUALITY; i++) { + + #ifdef CLOUDS_INTERSECT_TERRAIN + IntersecTerrain = length(rayProgress - cameraPosition) > lViewPosM; + #endif + + /// avoid overdraw + if(notVisible || IntersecTerrain) break; + + // do not sample anything unless within a clouds bounding box + if(clamp(rayProgress.y - maxHeight,0.0,1.0) < 1.0 && clamp(rayProgress.y - minHeight,0.0,1.0) > 0.0){ + + float cumulus = GetCumulusDensity(layer, rayProgress, 1, minHeight, maxHeight); + float fadedDensity = cloudDensity * pow(clamp((rayProgress.y - minHeight)/25,0.0,1.0),2.0); + float CumulusWithDensity = cloudDensity * cumulus; + + + if(CumulusWithDensity > 1e-5 ){ // make sure no work is done on pixels with no densities + float muE = cumulus * fadedDensity; + + float directLight = 0.0; + for (int j=0; j < 3; j++){ + vec3 shadowSamplePos = rayProgress + dV_Sun * (20.0 + j * (20.0 + dither*20.0)); + directLight += GetCumulusDensity(layer, shadowSamplePos, 0, minHeight, maxHeight) * cloudDensity; + } + + /// shadows cast from one layer to another + /// large cumulus -> small cumulus + #if defined CloudLayer1 && defined CloudLayer0 + if(layer == 0) directLight += LAYER1_DENSITY * 2.0 * GetCumulusDensity(1, rayProgress + dV_Sun/abs(dV_Sun.y) * max((LAYER1_minHEIGHT+70*dither) - rayProgress.y,0.0), 0, LAYER1_minHEIGHT, LAYER1_maxHEIGHT); + #endif + // altostratus -> cumulus + #ifdef CloudLayer2 + vec3 HighAlt_shadowPos = rayProgress + dV_Sun/abs(dV_Sun.y) * max(LAYER2_HEIGHT - rayProgress.y,0.0); + float HighAlt_shadow = GetAltostratusDensity(HighAlt_shadowPos) * CloudLayer2_density * (1.0-abs(WsunVec.y)); + directLight += HighAlt_shadow; + #endif + + float skyScatter = clamp(((maxHeight - rayProgress.y) / 100.0),0.0,1.0); // linear gradient from bottom to top of cloud layer + vec3 lighting = DoCloudLighting(CumulusWithDensity, skyLightCol * skylightOcclusion, skyScatter, directLight, sunScatter, sunMultiScatter, distantfog); + + COLOR += max(lighting - lighting*exp(-mult*muE),0.0) * TOTAL_EXTINCTION; + TOTAL_EXTINCTION *= max(exp(-mult*muE),0.0); + + if (TOTAL_EXTINCTION < 1e-5) break; + + } + + } + + rayProgress += dV_view; + } + + return vec4(COLOR, TOTAL_EXTINCTION); +} } -vec3 getRayOrigin( - vec3 rayStartPos, +vec3 layerStartingPosition( + vec3 dV_view, vec3 cameraPos, float dither, @@ -352,132 +407,263 @@ vec3 getRayOrigin( float maxHeight ){ // allow passing through/above/below the plane without limits - float flip = mix(max(cameraPos.y - maxHeight,0.0), max(minHeight - cameraPos.y,0.0), clamp(rayStartPos.y,0.0,1.0)); + float flip = mix(max(cameraPos.y - maxHeight,0.0), max(minHeight - cameraPos.y,0.0), clamp(dV_view.y,0.0,1.0)); // orient the ray to be a flat plane facing up/down - vec3 position = rayStartPos*dither + cameraPos + (rayStartPos/abs(rayStartPos.y)) * flip; + vec3 position = dV_view*dither + cameraPos + (dV_view/abs(dV_view.y)) * flip; return position; } - -vec4 GetVolumetricClouds( - vec3 viewPos, - vec2 dither, - vec3 sunVector, - vec3 directLightCol, - vec3 indirectLightCol +float invLinZ_cloud (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +vec4 renderClouds( + vec3 FragPosition, + vec2 Dither, + vec3 LightColor, + vec3 SkyColor, + inout vec3 cloudDepth ){ + vec3 SignedWsunvec = WsunVec; + vec3 WsunVec = WsunVec * (float(sunElevation > 1e-5)*2.0-1.0); + #ifndef VOLUMETRIC_CLOUDS return vec4(0.0,0.0,0.0,1.0); #endif + float total_extinction = 1.0; vec3 color = vec3(0.0); - float totalAbsorbance = 1.0; - vec4 cloudColor = vec4(color, totalAbsorbance); - float cloudheight = 100.0; - float minHeight = CloudLayer0_height; - float maxHeight = cloudheight + minHeight; + float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - LAYER0_minHEIGHT,0.0) / 100.0 ,0.0,1.0); - float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - minHeight,0.0) / 100.0 ,0.0,1.0); +////////////////////////////////////////// +////// Raymarching stuff +////////////////////////////////////////// + //project pixel position into projected shadowmap space + vec4 viewPos = normalize(gbufferModelViewInverse * vec4(FragPosition,1.0) ); + maxIT_clouds = int(clamp(maxIT_clouds / sqrt(exp2(viewPos.y)),0.0, maxIT)); + // maxIT_clouds = 30; - #if defined DISTANT_HORIZONS - float maxdist = dhRenderDistance + 16 * 32; + vec3 dV_view = normalize(viewPos.xyz); + + // this is the cloud curvature. + dV_view.y += 0.025 * heightRelativeToClouds; + + vec3 dV_view_Alto = dV_view; + + dV_view_Alto *= 5.0/abs(dV_view_Alto.y); + float mult_alto = length(dV_view_Alto); + + // dV_view *= (LAYER0_maxHEIGHT - LAYER0_minHEIGHT)/abs(dV_view.y)/maxIT_clouds; + + vec3 dV_viewTEST = dV_view * (90.0/abs(dV_view.y)/maxIT_clouds); + float mult = length(dV_viewTEST); + + + +////////////////////////////////////////// +////// lighting stuff +////////////////////////////////////////// + + vec3 dV_Sun = WsunVec; + #ifdef EXCLUDE_WRITE_TO_LUT + dV_Sun *= lightCol.a; + #endif + + float SdotV = dot(WsunVec, normalize(mat3(gbufferModelViewInverse)*FragPosition + gbufferModelViewInverse[3].xyz)); + + float mieDay = phaseg(SdotV, 0.85) + phaseg(SdotV, 0.75); + float mieDayMulti = (phaseg(SdotV, 0.35) + phaseg(-SdotV, 0.35) * 0.5) ; + + vec3 directScattering = LightColor * mieDay * 3.14 ; + vec3 directMultiScattering = LightColor * mieDayMulti * 3.14 * 2.0; + vec3 sunIndirectScattering = LightColor;// * phaseg(dot(mat3(gbufferModelView)*vec3(0,1,0),normalize(FragPosition)), 0.5) * 3.14; + + // use this to blend into the atmosphere's ground. + vec3 approxdistance = normalize(dV_viewTEST); + #ifdef SKY_GROUND + float distantfog = mix(1.0, max(1.0 - clamp(exp2(pow(abs(approxdistance.y),mix(1.5, 4.0, rainStrength)) * -mix(100.0, 35.0, rainStrength)),0.0,1.0),0.0), heightRelativeToClouds); #else - float maxdist = far + 16*5.0; + float distantfog = 1.0; + float distantfog2 = mix(1.0, max(1.0 - clamp(exp(pow(abs(approxdistance.y),1.5) * -35.0),0.0,1.0),0.0), heightRelativeToClouds); + #endif + + // terrible fake rayleigh scattering + vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5)*3.0; + float atmosphere = exp(abs(approxdistance.y) * -5.0); + vec3 scatter = distantfog * exp(-10000.0 * rC * atmosphere); + + directScattering *= scatter; + directMultiScattering *= scatter; + + SkyColor *= mix(1.0* Sky_Brightness, 1.0-pow(1.0-clamp(SignedWsunvec.y,0.0,1.0),5.0) * 0.75 + 0.25, distantfog); + +////////////////////////////////////////// +////// render Cloud layers and do blending orders +////////////////////////////////////////// + + // first cloud layer + float MinHeight = LAYER0_minHEIGHT; + float MaxHeight = LAYER0_maxHEIGHT; + + float MinHeight1 = LAYER1_minHEIGHT; + float MaxHeight1 = LAYER1_maxHEIGHT; + + float Height2 = LAYER2_HEIGHT; + + // int above_Layer0 = int(clamp(cameraPosition.y - MaxHeight,0.0,1.0)); + int below_Layer0 = int(clamp(MaxHeight - cameraPosition.y,0.0,1.0)); + int above_Layer1 = int(clamp(MaxHeight1 - cameraPosition.y,0.0,1.0)); + bool below_Layer1 = clamp(cameraPosition.y - MinHeight1,0.0,1.0) < 1.0; + bool below_Layer2 = clamp(cameraPosition.y - Height2,0.0,1.0) < 1.0; + // bool layer1_below_layer0 = MinHeight1 < MinHeight; + + bool altoNotVisible = false; + + + #ifdef CloudLayer0 + vec3 layer0_dV_view = dV_view * (LAYER0_width/abs(dV_view.y)/maxIT_clouds); + vec3 layer0_start = layerStartingPosition(layer0_dV_view, cameraPosition, Dither.y, MinHeight, MaxHeight); + #endif - float lViewPosM = length(viewPos) < maxdist ? length(viewPos) - 1.0 : 100000000.0; - vec4 NormPlayerPos = normalize(gbufferModelViewInverse * vec4(viewPos, 1.0) + vec4(gbufferModelViewInverse[3].xyz,0.0)); + #ifdef CloudLayer1 + vec3 layer1_dV_view = dV_view * (LAYER1_width/abs(dV_view.y)/maxIT_clouds); + vec3 layer1_start = layerStartingPosition(layer1_dV_view, cameraPosition, Dither.y, MinHeight1, MaxHeight1); + #endif + #ifdef CloudLayer2 + vec3 layer2_start = layerStartingPosition(dV_view_Alto, cameraPosition, Dither.y, Height2, Height2); + #endif - vec3 signedSunVec = sunVector; - vec3 unignedSunVec = sunVector * (float(sunElevation > 1e-5)*2.0-1.0); - float SdotV = dot(unignedSunVec, NormPlayerPos.xyz); + #ifdef CloudLayer0 + vec4 layer0 = renderLayer(0,dV_view, layer0_start, layer0_dV_view, mult, Dither.x, maxIT_clouds, MinHeight, MaxHeight, dV_Sun, LAYER0_DENSITY, SkyColor, directScattering, directMultiScattering, sunIndirectScattering, distantfog, false, FragPosition, cloudDepth); + total_extinction *= layer0.a; - NormPlayerPos.y += 0.025*heightRelativeToClouds; + // stop overdraw. + bool notVisible = layer0.a < 1e-5 && below_Layer1; + altoNotVisible = notVisible; + #else + // stop overdraw. + bool notVisible = false; + #endif - int maxSamples = 15; - int minSamples = 10; - int samples = int(clamp(maxSamples / sqrt(exp2(NormPlayerPos.y)),0.0, minSamples)); - // int samples = 30; - - ///------- setup the ray - vec3 rayDirection = NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)/samples); - vec3 rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); - - ///------- do color stuff outside of the raymarcher loop - vec3 sunScattering = directLightCol * (phaseCloud(SdotV, 0.85) + phaseCloud(SdotV, 0.75)) * 3.14; - vec3 sunMultiScattering = directLightCol * 0.8;// * (phaseCloud(SdotV, 0.35) + phaseCloud(-SdotV, 0.35) * 0.5) * 6.28; - vec3 skyScattering = indirectLightCol; - - vec3 distanceEstimation = normalize(NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)/samples)); + #ifdef CloudLayer1 + vec4 layer1 = renderLayer(1,dV_view, layer1_start, layer1_dV_view, mult, Dither.x, maxIT_clouds, MinHeight1, MaxHeight1, dV_Sun, LAYER1_DENSITY, SkyColor, directScattering, directMultiScattering, sunIndirectScattering, distantfog, notVisible, FragPosition, cloudDepth); + total_extinction *= layer1.a; - // terrible fake rayleigh scattering - // vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5)*3.0; - // vec3 rayleighScatter = exp(-10000.0 * rC * exp(abs(distanceEstimation.y) * -5.0)); - // sunMultiScattering *= rayleighScatter; - // sunScattering *= rayleighScatter; - - float distanceFade = 1.0 - clamp(exp2(pow(abs(distanceEstimation.y),1.5) * -100.0),0.0,1.0)*heightRelativeToClouds; -// - pow(1.0-clamp(signedSunVec.y,0.0,1.0),5.0) - skyScattering *= mix(1.0, 2.0, distanceFade); - sunScattering *= distanceFade; - sunMultiScattering *= distanceFade; - - ////------- RENDER SMALL CUMULUS CLOUDS - vec4 smallCumulusClouds = cloudColor; - - #ifdef CloudLayer0 - smallCumulusClouds = raymarchCloud(SMALLCUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unignedSunVec, sunScattering, sunMultiScattering, skyScattering, distanceFade, lViewPosM); - #endif - - ////------- RENDER LARGE CUMULUS CLOUDS - vec4 largeCumulusClouds = cloudColor; - - #ifdef CloudLayer1 - cloudheight = 200.0; - minHeight = CloudLayer1_height; - maxHeight = cloudheight + minHeight; - - rayDirection = NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)/samples); - rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); - - if(smallCumulusClouds.a > 1e-5) largeCumulusClouds = raymarchCloud(LARGECUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unignedSunVec, sunScattering, sunMultiScattering, skyScattering, distanceFade, lViewPosM); - #endif - - ////------- RENDER ALTOSTRATUS CLOUDS - vec4 altoStratusClouds = cloudColor; - - #ifdef CloudLayer2 - cloudheight = 5.0; - minHeight = CloudLayer2_height; - maxHeight = cloudheight + minHeight; - - rayDirection = NormPlayerPos.xyz * (cloudheight/abs(NormPlayerPos.y)); - rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); - - if(smallCumulusClouds.a > 1e-5 || largeCumulusClouds.a > 1e-5) altoStratusClouds = raymarchCloud(ALTOSTRATUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unignedSunVec, sunScattering, sunMultiScattering, skyScattering, distanceFade, lViewPosM); - #endif - - ////------- BLEND LAYERS + // stop overdraw. + altoNotVisible = (layer1.a < 1e-5 || notVisible) && below_Layer1; + #endif #ifdef CloudLayer2 - cloudColor = altoStratusClouds; + vec4 layer2 = renderLayer(2,dV_view,layer2_start, dV_view_Alto, mult_alto, Dither.x, maxIT_clouds, Height2, Height2, dV_Sun, LAYER2_DENSITY, SkyColor, directScattering * (1.0 + rainStrength*3), directMultiScattering* (1.0 + rainStrength*3), sunIndirectScattering, distantfog, altoNotVisible, FragPosition, cloudDepth); + total_extinction *= layer2.a; + #endif + + /// i know this looks confusing + /// it is changing blending order based on the players position relative to the clouds. + /// to keep it simple for myself, it all revolves around layer0, the lowest cloud layer. + /// for layer1, swap between back to front and front to back blending if you are above or below layer0 + /// for layer2, swap between back to front and front to back blending if you are above or below layer1 + + + /// blend the altostratus clouds first, so it is BEHIND all the cumulus clouds, if the player postion is below the cumulus clouds. + /// handle the case if one of the cloud layers is disabled. + #if !defined CloudLayer1 && defined CloudLayer2 + if(below_Layer2) color = color * layer2.a + layer2.rgb; + #endif + #if defined CloudLayer1 && defined CloudLayer2 + if(below_Layer2) layer1.rgb = layer2.rgb * layer1.a + layer1.rgb; + #endif + + /// blend the cumulus clouds together. swap the blending order from (BACK TO FRONT -> FRONT TO BACK) depending on the player position relative to the lowest cloud layer. + #if defined CloudLayer0 && defined CloudLayer1 + color = mix(layer0.rgb, layer1.rgb, float(below_Layer0)); + color = mix(color * layer1.a + layer1.rgb, color * layer0.a + layer0.rgb, float(below_Layer0)); + #endif + + /// handle the case of one of the cloud layers being disabled. + #if defined CloudLayer0 && !defined CloudLayer1 + color = color * layer0.a + layer0.rgb; + #endif + #if !defined CloudLayer0 && defined CloudLayer1 + color = color * layer1.a + layer1.rgb; + #endif + + /// blend the altostratus clouds last, so it is IN FRONT of all the cumulus clouds when the player position is above them. + #ifdef CloudLayer2 + if(!below_Layer2) color = color * layer2.a + layer2.rgb; + #endif + + #ifndef SKY_GROUND + + // return mix(fogcolor, vec4(color, total_extinction), clamp(distantfog2,0.0,1.0)); + return mix(vec4(vec3(0.0),1.0), vec4(color, total_extinction), clamp(distantfog2,0.0,1.0)); + #else + return vec4(color, total_extinction); + #endif + +} + +#endif + +float GetCloudShadow(vec3 feetPlayerPos){ +#ifdef CLOUDS_SHADOWS + vec3 playerPos = feetPlayerPos + cameraPosition; + + float shadow = 0.0; + + // assume a flat layer of cloud, and stretch the sampled density along the sunvector, starting from some vertical layer in the cloud. + #ifdef CloudLayer0 + vec3 lowShadowStart = playerPos + (WsunVec / max(abs(WsunVec.y),0.0)) * max((CloudLayer0_height + 30) - playerPos.y,0.0) ; + shadow += GetCumulusDensity(0, lowShadowStart, 0, CloudLayer0_height, CloudLayer0_height+100)*LAYER0_DENSITY; #endif #ifdef CloudLayer1 - cloudColor.rgb *= largeCumulusClouds.a; - cloudColor.rgb += largeCumulusClouds.rgb; - cloudColor.a *= largeCumulusClouds.a; + vec3 higherShadowStart = playerPos + (WsunVec / max(abs(WsunVec.y),0.0)) * max((CloudLayer1_height + 50) - playerPos.y,0.0) ; + shadow += GetCumulusDensity(1, higherShadowStart, 0, CloudLayer1_height, CloudLayer1_height+100)*LAYER1_DENSITY; #endif - #ifdef CloudLayer0 - cloudColor.rgb *= smallCumulusClouds.a; - cloudColor.rgb += smallCumulusClouds.rgb; - cloudColor.a *= smallCumulusClouds.a; + #ifdef CloudLayer2 + vec3 highShadowStart = playerPos + (WsunVec / max(abs(WsunVec.y),0.0)) * max(CloudLayer2_height - playerPos.y,0.0); + shadow += GetAltostratusDensity(highShadowStart) * CloudLayer2_density * (1.0-abs(WsunVec.y)); #endif - color = cloudColor.rgb; - totalAbsorbance = cloudColor.a; + shadow = clamp(shadow,0.0,1.0); - return vec4(color, totalAbsorbance); + shadow = exp2((shadow*shadow) * -100.0); + + return mix(1.0, shadow, CLOUD_SHADOW_STRENGTH); + +#else + return 1.0; +#endif } -#endif \ No newline at end of file + + +float GetCloudShadow_VLFOG(vec3 WorldPos, vec3 WorldSpace_sunVec){ +#ifdef CLOUDS_SHADOWS + + float shadow = 0.0; + + #ifdef CloudLayer0 + vec3 lowShadowStart = WorldPos + (WorldSpace_sunVec / max(abs(WorldSpace_sunVec.y),0.0)) * max((CloudLayer0_height + 30) - WorldPos.y,0.0) ; + shadow += max(GetCumulusDensity(0, lowShadowStart, 0, CloudLayer0_height, CloudLayer0_height+100),0.0)*LAYER0_DENSITY; + #endif + #ifdef CloudLayer1 + vec3 higherShadowStart = WorldPos + (WorldSpace_sunVec / max(abs(WorldSpace_sunVec.y),0.0)) * max((CloudLayer1_height + 30) - WorldPos.y,0.0) ; + shadow += max(GetCumulusDensity(1,higherShadowStart, 0, CloudLayer1_height,CloudLayer1_height+100) ,0.0)*LAYER1_DENSITY; + #endif + #ifdef CloudLayer2 + vec3 highShadowStart = WorldPos + (WorldSpace_sunVec / max(abs(WorldSpace_sunVec.y),0.0)) * max(CloudLayer2_height - WorldPos.y,0.0); + shadow += GetAltostratusDensity(highShadowStart)*LAYER2_DENSITY * (1.0-abs(WorldSpace_sunVec.y)); + #endif + + shadow = clamp(shadow,0.0,1.0); + + shadow = exp((shadow*shadow) * -100.0); + + return mix(1.0, shadow, CLOUD_SHADOW_STRENGTH); + +#else + return 1.0; +#endif +} \ No newline at end of file diff --git a/shaders/shaders.properties b/shaders/shaders.properties index b6da807..23e1316 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,7 +1,6 @@ clouds=off stars=false vignette=false - underwaterOverlay=false dynamicHandLight=true oldLighting=false @@ -85,10 +84,7 @@ program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_I program.world-1/deferred2.enabled = false #endif -program.world0/composite11.enabled = false -program.world0/composite5.enabled = TAA_UPSCALING -program.world1/composite5.enabled = TAA_UPSCALING -program.world-1/composite5.enabled = TAA_UPSCALING +program.composite5.enabled = TAA_UPSCALING # SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE ZERO # SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE @@ -107,7 +103,7 @@ blend.gbuffers_beaconbeam = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ON blend.gbuffers_entities_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_spidereyes = ONE ONE ONE ONE blend.gbuffers_skytextured = ONE ONE ONE ZERO -blend.shadow = ONE ZERO ONE ZERO +blend.shadow = SRC_COLOR ZERO ONE ZERO # Disable blending blend.gbuffers_terrain = off @@ -134,7 +130,7 @@ alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false -sliders =VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_STRENGTH CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ @@ -176,7 +172,7 @@ SHADER_VERSION_LABEL \ screen.Ambient_light = [LPV] [Torch_Colors] [Ambient_Colors] \ MIN_LIGHT_AMOUNT indirect_effect \ \ - AO_Strength AO_in_sunlight GI_Strength \ + AO_Strength GI_Strength \ ambientOcclusionLevel HQ_SSGI \ Hand_Held_lights SKY_CONTRIBUTION_IN_SSRT \ HANDHELD_LIGHT_RANGE UseQuarterResDepth @@ -213,11 +209,11 @@ SHADER_VERSION_LABEL \ LPV_TINT_SATURATION LPV_REDSTONE_LIGHTS \ LPV_NORMAL_STRENGTH LPV_ENTITY_LIGHTS \ LPV_NOSHADOW_HACK \ - LPV_VL_FOG_ILLUMINATION LPV_VL_FOG_ILLUMINATION_BRIGHTNESS VANILLA_LIGHTMAP_MASK + LPV_VL_FOG_ILLUMINATION LPV_VL_FOG_ILLUMINATION_BRIGHTNESS ######## WORLD screen.World.columns=1 - screen.World = [Water] [Waving_Stuff] PLANET_CURVATURE CURVATURE_AMOUNT [Sky_coefficients] SKY_GROUND AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED + screen.World = [Water] [Waving_Stuff] [Sky_coefficients] SKY_GROUND AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED ### WAVING STUFF screen.Waving_Stuff.columns=1 screen.Waving_Stuff = WAVY_PLANTS WAVY_STRENGTH WAVY_SPEED @@ -294,23 +290,22 @@ SHADER_VERSION_LABEL \ ### WATER screen.Water.columns=2 - screen.Water = WATER_REFLECTIONS FAKE_REFRACTION_EFFECT \ + screen.Water = WATER_REFLECTIONS Refraction \ WATER_SUN_SPECULAR Vanilla_like_water \ SCREENSPACE_REFLECTIONS SSR_STEPS \ WATER_BACKGROUND_SPECULAR Dirt_Amount \ - MINIMUM_WATER_ABSORBANCE [Water_fog_color] \ - Water_Top_Layer SNELLS_WINDOW \ - WATER_WAVE_STRENGTH WATER_WAVE_SPEED \ + [Water_fog_color] Water_Top_Layer \ + SNELLS_WINDOW WATER_WAVE_STRENGTH WATER_WAVE_SPEED LARGE_WAVE_DISPLACEMENT screen.Water_fog_color.columns=1 screen.Water_fog_color = Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B ######## POST screen.Post_Processing.columns=2 - screen.Post_Processing = [TAA_OPTIONS] [Tonemapping] [Exposure] [DepthOfField] [Purkinje_effect] [COLOR_GRADING] [GAMEPLAY_EFFECTS] CAMERA_GRIDLINES BLOOM_STRENGTH SHARPENING MOTION_BLUR MOTION_BLUR_STRENGTH CHROMATIC_ABERRATION CHROMATIC_ABERRATION_STRENGTH VIGNETTE VIGNETTE_STRENGTH + screen.Post_Processing = [TAA_OPTIONS] [Tonemapping] [Exposure] [DepthOfField] [Purkinje_effect] [COLOR_GRADING] [GAMEPLAY_EFFECTS] SHARPENING BLOOM_STRENGTH CAMERA_GRIDLINES MOTION_BLUR MOTION_BLUR_STRENGTH ### TAA screen.TAA_OPTIONS.columns = 1 - screen.TAA_OPTIONS= SCREENSHOT_MODE TAA RESPONSIVE_TAA BLEND_FACTOR TAA_UPSCALING SCALE_FACTOR + screen.TAA_OPTIONS= SCREENSHOT_MODE TAA BLEND_FACTOR TAA_UPSCALING SCALE_FACTOR ### DOF screen.DepthOfField.columns = 1 screen.DepthOfField = DOF_QUALITY DOF_ANAMORPHIC_RATIO focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY [JITTER_DOF] @@ -345,13 +340,13 @@ SHADER_VERSION_LABEL \ screen.Mod_support = [DISTANT_HORIZONS_SETTINGS] screen.DISTANT_HORIZONS_SETTINGS.columns = 1 - screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DH_NOISE_TEXTURE DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution TOGGLE_VL_FOG VOLUMETRIC_CLOUDS + screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution TOGGLE_VL_FOG VOLUMETRIC_CLOUDS ######## MISC SETTINGS screen.Misc_Settings = [EXPERIMENTAL_STUFF] DEBUG_VIEW [the_end_orb] display_LUT WhiteWorld SSS_view ambientLight_only LIGHTNING_FLASH DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX TRANSLUCENT_ENTITIES LIGHTING_EFFECTS_BLUR_FILTER [selection_box_outline] - screen.EXPERIMENTAL_STUFF = CLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER HYPER_DETAILED_WAVES OLD_BLOOM PLANET_GROUND_BRIGHTNESS LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS OLD_CAVE_DETECTION FORCE_TRANSLUCENT_GLASS LARGE_WAVE_DISPLACEMENT + screen.EXPERIMENTAL_STUFF = CLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES ORIGINAL_CHOCAPIC_SKY BIOME_TINT_WATER HYPER_DETAILED_WAVES OLD_BLOOM PLANET_GROUND_BRIGHTNESS LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS OLD_CAVE_DETECTION screen.the_end_orb.columns = 1 screen.the_end_orb = THE_ORB ORB_X ORB_Y ORB_Z ORB_ColMult ORB_R ORB_G ORB_B @@ -459,10 +454,6 @@ uniform.float.noPuddleAreas = smooth(if(in(biome, 3, 4, 16, 37, 39, 48, 49, 31, ############################ ####### RANDOM STUFF ####### ############################ -# force LUT accumulation to have a high blend factor after a certain amount of time -uniform.float.dayChangeSmooth = smooth(if(abs(smooth(worldDay, 0.05, 0.05) - worldDay) > 0.01, 0.0, 1.0), 300.0, 0.0) - -uniform.bool.worldTimeChangeCheck = abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) > 0.01 #if defined WATER_ON_CAMERA_EFFECT uniform.float.exitWater = smooth(if(isEyeInWater == 1,1,0),0.0,5.0) @@ -475,7 +466,7 @@ uniform.bool.worldTimeChangeCheck = abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) uniform.float.threeHeart = smooth(if(Currenthealth <= 6.0 && currentPlayerHealth > -1.0, 1,0), 0.0,1.0) variable.float.interpolatedHealth = smooth(if(is_hurt, 0.0, Currenthealth), 0.0, 1.0) - + # detect over 5 hearts of damage taken variable.bool.largeHealthDifference = (interpolatedHealth - Currenthealth) >= 7.0 variable.bool.delayedCritDamage = smooth(if(largeHealthDifference, 1.0, 0.0), 0.0, 1.0) > 0.01 @@ -515,8 +506,6 @@ uniform.bool.worldTimeChangeCheck = abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) #endif -uniform.float.wetnessAmount = smooth(if(rainStrength>0.01, 3.0, 0.0), 100.0, 100.0) - # photon stuff uniform.vec2.view_res = vec2(viewWidth, viewHeight) uniform.vec2.view_pixel_size = vec2(1.0 / viewWidth, 1.0 / viewHeight) @@ -528,28 +517,20 @@ variable.float.texelSizeX = 1.0/viewWidth variable.float.texelSizeY = 1.0/viewHeight uniform.vec2.texelSize = vec2(texelSizeX,texelSizeY) -#if defined RESPONSIVE_TAA - uniform.int.framemod8 = frameCounter%4 -#else - uniform.int.framemod8 = frameCounter%8 -#endif +uniform.int.framemod8 = frameCounter%8 -variable.float.sunPosXSTEUFF = sunPosition.x -variable.float.sunPosYSTEUFF = sunPosition.y -variable.float.sunPosZSTEUFF = sunPosition.z - -variable.float.normSunVec = sqrt(sunPosXSTEUFF*sunPosXSTEUFF+sunPosYSTEUFF*sunPosYSTEUFF+sunPosZSTEUFF*sunPosZSTEUFF) +variable.float.normSunVec = sqrt(sunPosition.x*sunPosition.x+sunPosition.y*sunPosition.y+sunPosition.z*sunPosition.z) variable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z) -variable.float.sunPosX = (sunPosition.x/normSunVec) -variable.float.sunPosY = (sunPosition.y/normSunVec) -variable.float.sunPosZ = (sunPosition.z/normSunVec) +variable.float.sunPosX = sunPosition.x/normSunVec +variable.float.sunPosY = sunPosition.y/normSunVec +variable.float.sunPosZ = sunPosition.z/normSunVec uniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ) -variable.float.upPosX =(upPosition.x)/normUpVec -variable.float.upPosY =(upPosition.y)/normUpVec -variable.float.upPosZ =(upPosition.z)/normUpVec +variable.float.upPosX = upPosition.x/normUpVec +variable.float.upPosY = upPosition.y/normUpVec +variable.float.upPosZ = upPosition.z/normUpVec uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ) uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ diff --git a/shaders/world0/dh_generic.fsh b/shaders/world0/dh_generic.fsh deleted file mode 100644 index 51531cb..0000000 --- a/shaders/world0/dh_generic.fsh +++ /dev/null @@ -1,5 +0,0 @@ -#version 330 compatibility - -#define OVERWORLD_SHADER - -#include "/dimensions/DH_generic.fsh" \ No newline at end of file diff --git a/shaders/world0/dh_generic.vsh b/shaders/world0/dh_generic.vsh deleted file mode 100644 index 32f39b8..0000000 --- a/shaders/world0/dh_generic.vsh +++ /dev/null @@ -1,5 +0,0 @@ -#version 330 compatibility - -#define OVERWORLD_SHADER - -#include "/dimensions/DH_generic.vsh" \ No newline at end of file diff --git a/shaders/world0/shadow.fsh b/shaders/world0/shadow.fsh index 5a1d6cc..801129d 100644 --- a/shaders/world0/shadow.fsh +++ b/shaders/world0/shadow.fsh @@ -20,16 +20,7 @@ float blueNoise(){ void main() { - - vec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); - - #ifdef TRANSLUCENT_COLORED_SHADOWS - if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); - #endif - - gl_FragData[0] = shadowColor; - - // gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); + gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); #ifdef Stochastic_Transparent_Shadows if(gl_FragData[0].a < blueNoise()) { discard; return;} diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 647346b..7c0970e 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -152,8 +152,6 @@ void main() { color = gl_Color; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; - - // playerpos = vec4(0.0); // playerpos = gbufferModelViewInverse * (gl_ModelViewMatrix * gl_Vertex); @@ -204,9 +202,9 @@ void main() { // } // #endif - // #if defined IS_LPV_ENABLED || defined WAVY_PLANTS || !defined PLANET_CURVATURE + #if defined IS_LPV_ENABLED || defined WAVY_PLANTS vec3 playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; - // #endif + #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store PopulateShadowVoxel(playerpos); @@ -233,7 +231,6 @@ void main() { int blockId = int(mc_Entity.x + 0.5); - vec3 worldpos = playerpos; #ifdef WAVY_PLANTS // also use normal, so up/down facing geometry does not get detatched from its model parts. bool InterpolateFromBase = gl_MultiTexCoord0.t < max(mc_midTexCoord.t, abs(viewToWorld(normalize(gl_NormalMatrix * gl_Normal)).y)); @@ -251,6 +248,7 @@ void main() { ) && length(position.xy) < 24.0 ){ + vec3 worldpos = playerpos; // apply displacement for waving plant blocks worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5); @@ -258,16 +256,11 @@ void main() { // apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly if(blockId == BLOCK_AIR_WAVING) worldpos = playerpos + calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz; } #endif - #ifdef PLANET_CURVATURE - float curvature = length(worldpos) / (16*8); - worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; - #endif - - position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz; - + #ifdef DISTORT_SHADOWMAP if (entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SLIME) position.xyz = position.xyz - normalize(gl_NormalMatrix * gl_Normal) * 0.25; From 9241f126390602d2e24fac249ddb68f8fc692943 Mon Sep 17 00:00:00 2001 From: MikiP98 <79966387+MikiP98@users.noreply.github.com> Date: Sun, 17 Nov 2024 00:13:16 +0100 Subject: [PATCH 101/101] Updated `Boe's Earth` support (vines) --- shaders/block.properties | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/shaders/block.properties b/shaders/block.properties index 1478726..a5135ba 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -26,7 +26,11 @@ block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling +#ifdef BOES_EARTH_BLOCKSTATES +block.16=vine:is_on_leaves=false +#else block.16=vine +#endif block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:berries=false @@ -87,7 +91,7 @@ block.55=minecraft:fern \ ## air waving ## add a newline to organize for modded blocks #ifdef BOES_EARTH_BLOCKSTATES -block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves snow:is_on_leaves=true \ +block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves snow:is_on_leaves=true vine:is_on_leaves=true \ #else block.56=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves \ #endif