Repository: WATERFORCE99/Bliss-Shader-BSPT Branch: main Commit: 5a7a4f092085 Files: 556 Total size: 1.9 MB Directory structure: gitextract_rbiyxufh/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── ask-a-question.md │ ├── bug-report.md │ └── feature-suggestion.md ├── CREDITS.txt ├── Changelog_v1.9.txt ├── LICENSE.md ├── README.md └── shaders/ ├── block.properties ├── dimension.properties ├── dimensions/ │ ├── DH_generic.fsh │ ├── DH_generic.vsh │ ├── DH_solid.fsh │ ├── DH_solid.vsh │ ├── DH_translucent.fsh │ ├── DH_translucent.vsh │ ├── all_particles.fsh │ ├── all_particles.vsh │ ├── all_solid.fsh │ ├── all_solid.vsh │ ├── all_translucent.fsh │ ├── all_translucent.vsh │ ├── all_vanilla_emissives.fsh │ ├── all_vanilla_emissives.vsh │ ├── begin.csh │ ├── composite.fsh │ ├── composite.vsh │ ├── composite1.fsh │ ├── composite1.vsh │ ├── composite10.fsh │ ├── composite10.vsh │ ├── composite11.fsh │ ├── composite11.vsh │ ├── composite12.fsh │ ├── composite12.vsh │ ├── composite2.fsh │ ├── composite2.vsh │ ├── composite3.fsh │ ├── composite3.vsh │ ├── composite4.fsh │ ├── composite4.vsh │ ├── composite5.fsh │ ├── composite5.vsh │ ├── composite6.fsh │ ├── composite6.vsh │ ├── composite7.fsh │ ├── composite7.vsh │ ├── composite8.fsh │ ├── composite8.vsh │ ├── composite9.fsh │ ├── composite9.vsh │ ├── deferred.fsh │ ├── deferred.vsh │ ├── deferred1.fsh │ ├── deferred1.vsh │ ├── deferred2.fsh │ ├── deferred2.vsh │ ├── final.fsh │ ├── final.vsh │ ├── fogBehindTranslucent_pass.fsh │ ├── fogBehindTranslucent_pass.vsh │ ├── setup.csh │ ├── shadowcomp.csh │ ├── shadowcomp3.csh │ ├── shadowcomp4.csh │ └── shadowcomp5.csh ├── entity.properties ├── item.properties ├── lang/ │ ├── en_us.lang │ └── zh_cn.lang ├── lib/ │ ├── DistantHorizons_projections.glsl │ ├── PhotonGTAO.glsl │ ├── Shadow_Params.glsl │ ├── Shadows.glsl │ ├── TAA_jitter.glsl │ ├── atmosphere.glsl │ ├── aurora.glsl │ ├── blocks.glsl │ ├── bokeh.glsl │ ├── climate_settings.glsl │ ├── color_dither.glsl │ ├── cube/ │ │ ├── cubeData.glsl │ │ ├── emit.glsl │ │ └── lightData.glsl │ ├── diffuse_lighting.glsl │ ├── dither.glsl │ ├── end_fog.glsl │ ├── entities.glsl │ ├── gameplay_effects.glsl │ ├── hsv.glsl │ ├── indirect_lighting_effects.glsl │ ├── items.glsl │ ├── lensflare.glsl │ ├── lightning_stuff.glsl │ ├── lpv_blocks.glsl │ ├── lpv_buffer.glsl │ ├── lpv_common.glsl │ ├── lpv_render.glsl │ ├── nether_fog.glsl │ ├── oceans.glsl │ ├── overworld_fog.glsl │ ├── projections.glsl │ ├── rainbow.glsl │ ├── res_params.glsl │ ├── ripples.glsl │ ├── scene_controller.glsl │ ├── settings.glsl │ ├── sky_gradient.glsl │ ├── specular.glsl │ ├── stars.glsl │ ├── text.glsl │ ├── tonemaps.glsl │ ├── util.glsl │ ├── volumetricClouds.glsl │ ├── voxel_common.glsl │ ├── voxel_write.glsl │ └── waterBump.glsl ├── shaders.properties ├── template/ │ ├── .gitignore │ ├── block.properties │ ├── entity.properties │ ├── item.properties │ ├── readme.md │ └── update.sh ├── texture/ │ ├── blueNoise.png.mcmeta │ └── noises.png.mcmeta ├── world-1/ │ ├── composite.fsh │ ├── composite.vsh │ ├── composite1.fsh │ ├── composite1.vsh │ ├── composite10.fsh │ ├── composite10.vsh │ ├── composite11.fsh │ ├── composite11.vsh │ ├── composite12.fsh │ ├── composite12.vsh │ ├── composite13.fsh │ ├── composite13.vsh │ ├── composite2.fsh │ ├── composite2.vsh │ ├── composite3.fsh │ ├── composite3.vsh │ ├── composite4.fsh │ ├── composite4.vsh │ ├── composite5.fsh │ ├── composite5.vsh │ ├── composite6.fsh │ ├── composite6.vsh │ ├── composite7.fsh │ ├── composite7.vsh │ ├── composite8.fsh │ ├── composite8.vsh │ ├── composite9.fsh │ ├── composite9.vsh │ ├── deferred.fsh │ ├── deferred.vsh │ ├── deferred1.fsh │ ├── deferred1.vsh │ ├── dh_terrain.fsh │ ├── dh_terrain.vsh │ ├── dh_water.fsh │ ├── dh_water.vsh │ ├── final.fsh │ ├── final.vsh │ ├── gbuffers_armor_glint.fsh │ ├── gbuffers_armor_glint.vsh │ ├── gbuffers_basic.fsh │ ├── gbuffers_basic.vsh │ ├── gbuffers_beaconbeam.fsh │ ├── gbuffers_beaconbeam.vsh │ ├── gbuffers_block.fsh │ ├── gbuffers_block.vsh │ ├── gbuffers_block_translucent.fsh │ ├── gbuffers_block_translucent.vsh │ ├── gbuffers_damagedblock.fsh │ ├── gbuffers_damagedblock.vsh │ ├── gbuffers_entities.fsh │ ├── gbuffers_entities.vsh │ ├── gbuffers_entities_glowing.fsh │ ├── gbuffers_entities_glowing.vsh │ ├── gbuffers_entities_translucent.fsh │ ├── gbuffers_entities_translucent.vsh │ ├── gbuffers_hand.fsh │ ├── gbuffers_hand.vsh │ ├── gbuffers_hand_water.fsh │ ├── gbuffers_hand_water.vsh │ ├── gbuffers_lightning.fsh │ ├── gbuffers_lightning.vsh │ ├── gbuffers_skybasic.fsh │ ├── gbuffers_skybasic.vsh │ ├── gbuffers_skytextured.fsh │ ├── gbuffers_skytextured.vsh │ ├── gbuffers_spidereyes.fsh │ ├── gbuffers_spidereyes.vsh │ ├── gbuffers_terrain.fsh │ ├── gbuffers_terrain.vsh │ ├── gbuffers_textured.fsh │ ├── gbuffers_textured.vsh │ ├── gbuffers_textured_lit.fsh │ ├── gbuffers_textured_lit.vsh │ ├── gbuffers_water.fsh │ ├── gbuffers_water.vsh │ ├── gbuffers_weather.fsh │ ├── gbuffers_weather.vsh │ ├── setup.csh │ ├── shadow.fsh │ ├── shadow.vsh │ └── shadowcomp.csh ├── world0/ │ ├── begin.csh │ ├── composite.fsh │ ├── composite.vsh │ ├── composite1.fsh │ ├── composite1.vsh │ ├── composite10.fsh │ ├── composite10.vsh │ ├── composite11.fsh │ ├── composite11.vsh │ ├── composite12.fsh │ ├── composite12.vsh │ ├── composite13.fsh │ ├── composite13.vsh │ ├── composite2.fsh │ ├── composite2.vsh │ ├── composite3.fsh │ ├── composite3.vsh │ ├── composite4.fsh │ ├── composite4.vsh │ ├── composite5.fsh │ ├── composite5.vsh │ ├── composite6.fsh │ ├── composite6.vsh │ ├── composite7.fsh │ ├── composite7.vsh │ ├── composite8.fsh │ ├── composite8.vsh │ ├── composite9.fsh │ ├── composite9.vsh │ ├── deferred.fsh │ ├── deferred.vsh │ ├── deferred1.fsh │ ├── deferred1.vsh │ ├── deferred2.fsh │ ├── deferred2.vsh │ ├── dh_generic.fsh │ ├── dh_generic.vsh │ ├── dh_shadow.fsh │ ├── dh_shadow.vsh │ ├── dh_terrain.fsh │ ├── dh_terrain.vsh │ ├── dh_water.fsh │ ├── dh_water.vsh │ ├── final.fsh │ ├── final.vsh │ ├── gbuffers_armor_glint.fsh │ ├── gbuffers_armor_glint.vsh │ ├── gbuffers_basic.fsh │ ├── gbuffers_basic.vsh │ ├── gbuffers_beaconbeam.fsh │ ├── gbuffers_beaconbeam.vsh │ ├── gbuffers_block.fsh │ ├── gbuffers_block.vsh │ ├── gbuffers_block_translucent.fsh │ ├── gbuffers_block_translucent.vsh │ ├── gbuffers_damagedblock.fsh │ ├── gbuffers_damagedblock.vsh │ ├── gbuffers_entities.fsh │ ├── gbuffers_entities.vsh │ ├── gbuffers_entities_glowing.fsh │ ├── gbuffers_entities_glowing.vsh │ ├── gbuffers_entities_translucent.fsh │ ├── gbuffers_entities_translucent.vsh │ ├── gbuffers_hand.fsh │ ├── gbuffers_hand.vsh │ ├── gbuffers_hand_water.fsh │ ├── gbuffers_hand_water.vsh │ ├── gbuffers_lightning.fsh │ ├── gbuffers_lightning.vsh │ ├── gbuffers_skybasic.fsh │ ├── gbuffers_skybasic.vsh │ ├── gbuffers_skytextured.fsh │ ├── gbuffers_skytextured.vsh │ ├── gbuffers_spidereyes.fsh │ ├── gbuffers_spidereyes.vsh │ ├── gbuffers_terrain.fsh │ ├── gbuffers_terrain.vsh │ ├── gbuffers_textured.fsh │ ├── gbuffers_textured.vsh │ ├── gbuffers_textured_lit.fsh │ ├── gbuffers_textured_lit.vsh │ ├── gbuffers_water.fsh │ ├── gbuffers_water.vsh │ ├── gbuffers_weather.fsh │ ├── gbuffers_weather.vsh │ ├── physics_ocean.fsh │ ├── physics_ocean.vsh │ ├── setup.csh │ ├── shadow.fsh │ ├── shadow.gsh │ ├── shadow.vsh │ ├── shadowcomp.csh │ ├── shadowcomp3.csh │ ├── shadowcomp4.csh │ └── shadowcomp5.csh ├── world0_Aether/ │ ├── composite.fsh │ ├── composite.vsh │ ├── composite1.fsh │ ├── composite1.vsh │ ├── composite10.fsh │ ├── composite10.vsh │ ├── composite12.fsh │ ├── composite12.vsh │ ├── composite13.fsh │ ├── composite13.vsh │ ├── composite2.fsh │ ├── composite2.vsh │ ├── composite3.fsh │ ├── composite3.vsh │ ├── composite4.fsh │ ├── composite4.vsh │ ├── composite5.fsh │ ├── composite5.vsh │ ├── composite6.fsh │ ├── composite6.vsh │ ├── composite7.fsh │ ├── composite7.vsh │ ├── composite8.fsh │ ├── composite8.vsh │ ├── composite9.fsh │ ├── composite9.vsh │ ├── deferred.fsh │ ├── deferred.vsh │ ├── deferred1.fsh │ ├── deferred1.vsh │ ├── deferred2.fsh │ ├── deferred2.vsh │ ├── dh_generic.fsh │ ├── dh_generic.vsh │ ├── dh_shadow.fsh │ ├── dh_shadow.vsh │ ├── dh_terrain.fsh │ ├── dh_terrain.vsh │ ├── dh_water.fsh │ ├── dh_water.vsh │ ├── final.fsh │ ├── final.vsh │ ├── gbuffers_armor_glint.fsh │ ├── gbuffers_armor_glint.vsh │ ├── gbuffers_basic.fsh │ ├── gbuffers_basic.vsh │ ├── gbuffers_beaconbeam.fsh │ ├── gbuffers_beaconbeam.vsh │ ├── gbuffers_block.fsh │ ├── gbuffers_block.vsh │ ├── gbuffers_block_translucent.fsh │ ├── gbuffers_block_translucent.vsh │ ├── gbuffers_damagedblock.fsh │ ├── gbuffers_damagedblock.vsh │ ├── gbuffers_entities.fsh │ ├── gbuffers_entities.vsh │ ├── gbuffers_entities_glowing.fsh │ ├── gbuffers_entities_glowing.vsh │ ├── gbuffers_entities_translucent.fsh │ ├── gbuffers_entities_translucent.vsh │ ├── gbuffers_hand.fsh │ ├── gbuffers_hand.vsh │ ├── gbuffers_hand_water.fsh │ ├── gbuffers_hand_water.vsh │ ├── gbuffers_lightning.fsh │ ├── gbuffers_lightning.vsh │ ├── gbuffers_skybasic.fsh │ ├── gbuffers_skybasic.vsh │ ├── gbuffers_skytextured.fsh │ ├── gbuffers_skytextured.vsh │ ├── gbuffers_spidereyes.fsh │ ├── gbuffers_spidereyes.vsh │ ├── gbuffers_terrain.fsh │ ├── gbuffers_terrain.vsh │ ├── gbuffers_textured.fsh │ ├── gbuffers_textured.vsh │ ├── gbuffers_textured_lit.fsh │ ├── gbuffers_textured_lit.vsh │ ├── gbuffers_water.fsh │ ├── gbuffers_water.vsh │ ├── gbuffers_weather.fsh │ ├── gbuffers_weather.vsh │ ├── setup.csh │ ├── shadow.fsh │ ├── shadow.vsh │ └── shadowcomp.csh ├── world0_Twilight_Forest/ │ ├── composite.fsh │ ├── composite.vsh │ ├── composite1.fsh │ ├── composite1.vsh │ ├── composite10.fsh │ ├── composite10.vsh │ ├── composite12.fsh │ ├── composite12.vsh │ ├── composite13.fsh │ ├── composite13.vsh │ ├── composite2.fsh │ ├── composite2.vsh │ ├── composite3.fsh │ ├── composite3.vsh │ ├── composite4.fsh │ ├── composite4.vsh │ ├── composite5.fsh │ ├── composite5.vsh │ ├── composite6.fsh │ ├── composite6.vsh │ ├── composite7.fsh │ ├── composite7.vsh │ ├── composite8.fsh │ ├── composite8.vsh │ ├── composite9.fsh │ ├── composite9.vsh │ ├── deferred.fsh │ ├── deferred.vsh │ ├── deferred1.fsh │ ├── deferred1.vsh │ ├── deferred2.fsh │ ├── deferred2.vsh │ ├── dh_generic.fsh │ ├── dh_generic.vsh │ ├── dh_shadow.fsh │ ├── dh_shadow.vsh │ ├── dh_terrain.fsh │ ├── dh_terrain.vsh │ ├── dh_water.fsh │ ├── dh_water.vsh │ ├── final.fsh │ ├── final.vsh │ ├── gbuffers_armor_glint.fsh │ ├── gbuffers_armor_glint.vsh │ ├── gbuffers_basic.fsh │ ├── gbuffers_basic.vsh │ ├── gbuffers_beaconbeam.fsh │ ├── gbuffers_beaconbeam.vsh │ ├── gbuffers_block.fsh │ ├── gbuffers_block.vsh │ ├── gbuffers_block_translucent.fsh │ ├── gbuffers_block_translucent.vsh │ ├── gbuffers_damagedblock.fsh │ ├── gbuffers_damagedblock.vsh │ ├── gbuffers_entities.fsh │ ├── gbuffers_entities.vsh │ ├── gbuffers_entities_glowing.fsh │ ├── gbuffers_entities_glowing.vsh │ ├── gbuffers_entities_translucent.fsh │ ├── gbuffers_entities_translucent.vsh │ ├── gbuffers_hand.fsh │ ├── gbuffers_hand.vsh │ ├── gbuffers_hand_water.fsh │ ├── gbuffers_hand_water.vsh │ ├── gbuffers_lightning.fsh │ ├── gbuffers_lightning.vsh │ ├── gbuffers_skybasic.fsh │ ├── gbuffers_skybasic.vsh │ ├── gbuffers_skytextured.fsh │ ├── gbuffers_skytextured.vsh │ ├── gbuffers_spidereyes.fsh │ ├── gbuffers_spidereyes.vsh │ ├── gbuffers_terrain.fsh │ ├── gbuffers_terrain.vsh │ ├── gbuffers_textured.fsh │ ├── gbuffers_textured.vsh │ ├── gbuffers_textured_lit.fsh │ ├── gbuffers_textured_lit.vsh │ ├── gbuffers_water.fsh │ ├── gbuffers_water.vsh │ ├── gbuffers_weather.fsh │ ├── gbuffers_weather.vsh │ ├── setup.csh │ ├── shadow.fsh │ ├── shadow.vsh │ └── shadowcomp.csh └── world1/ ├── composite.fsh ├── composite.vsh ├── composite1.fsh ├── composite1.vsh ├── composite10.fsh ├── composite10.vsh ├── composite11.fsh ├── composite11.vsh ├── composite12.fsh ├── composite12.vsh ├── composite13.fsh ├── composite13.vsh ├── composite2.fsh ├── composite2.vsh ├── composite3.fsh ├── composite3.vsh ├── composite4.fsh ├── composite4.vsh ├── composite5.fsh ├── composite5.vsh ├── composite6.fsh ├── composite6.vsh ├── composite7.fsh ├── composite7.vsh ├── composite8.fsh ├── composite8.vsh ├── composite9.fsh ├── composite9.vsh ├── deferred.fsh ├── deferred.vsh ├── deferred1.fsh ├── deferred1.vsh ├── dh_terrain.fsh ├── dh_terrain.vsh ├── dh_water.fsh ├── dh_water.vsh ├── final.fsh ├── final.vsh ├── gbuffers_armor_glint.fsh ├── gbuffers_armor_glint.vsh ├── gbuffers_basic.fsh ├── gbuffers_basic.vsh ├── gbuffers_beaconbeam.fsh ├── gbuffers_beaconbeam.vsh ├── gbuffers_block.fsh ├── gbuffers_block.vsh ├── gbuffers_block_translucent.fsh ├── gbuffers_block_translucent.vsh ├── gbuffers_damagedblock.fsh ├── gbuffers_damagedblock.vsh ├── gbuffers_entities.fsh ├── gbuffers_entities.vsh ├── gbuffers_entities_glowing.fsh ├── gbuffers_entities_glowing.vsh ├── gbuffers_entities_translucent.fsh ├── gbuffers_entities_translucent.vsh ├── gbuffers_hand.fsh ├── gbuffers_hand.vsh ├── gbuffers_hand_water.fsh ├── gbuffers_hand_water.vsh ├── gbuffers_lightning.fsh ├── gbuffers_lightning.vsh ├── gbuffers_skybasic.fsh ├── gbuffers_skybasic.vsh ├── gbuffers_skytextured.fsh ├── gbuffers_skytextured.vsh ├── gbuffers_spidereyes.fsh ├── gbuffers_spidereyes.vsh ├── gbuffers_terrain.fsh ├── gbuffers_terrain.vsh ├── gbuffers_textured.fsh ├── gbuffers_textured.vsh ├── gbuffers_textured_lit.fsh ├── gbuffers_textured_lit.vsh ├── gbuffers_water.fsh ├── gbuffers_water.vsh ├── gbuffers_weather.fsh ├── gbuffers_weather.vsh ├── setup.csh ├── shadow.fsh ├── shadow.vsh └── shadowcomp.csh ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/ISSUE_TEMPLATE/ask-a-question.md ================================================ --- name: Ask A Question about: ask questions. title: '' labels: question assignees: '' --- blah blah blah blah ================================================ FILE: .github/ISSUE_TEMPLATE/bug-report.md ================================================ --- name: Bug Report about: Create a bug report so i can see if i can fix it. title: '' labels: bug assignees: '' --- ### Describe the bug Describe the bug in as much detail as possible. capturing footage of it with images or videos is preferred. ### Describe how your minecraft is set up 1. Include a screenshot of the in-game f3 debug overlay. Please make sure it is fully visible. 2. If you cannot do option 1. Please list the following information instead: - What GPU vendor you are using (e.g Apple/AMD/Nvidia/Intel) - What operating system you are using (e.g Windows/Linux/macOS) - What minecraft version you are playing (e.g 1.20.4, 1.16.5, 1.12) - If you are using a special client for minecraft (e.g lunar, badlion, feather) - What shader loading mod you are using (e.g Iris/oculus/optifine) - What version of the shader you are using (e.g Bliss v2.0.4, Bliss Shader Main) - If you are using any, what additional mods you are using besides the ones required to use the shader (e.g distant horizons, physics mod) ### Describe how to reproduce the bug Show exactly how to make the bug appear, if you can. Video footage is preferred. Isolate the bug. some multiplayer servers cause issues on their own. in a newly made singleplayer world, with default/reset shader settings, show the steps to cause the bug if it is happening on content from a mod, list what mod, and what content of that mod it happens on. if a specific shader setting can make it start/stop bugging, please list what shader setting does that. ================================================ FILE: .github/ISSUE_TEMPLATE/feature-suggestion.md ================================================ --- name: Feature Suggestion about: Suggest to add/change a feature title: '' labels: suggestion assignees: '' --- ### OPTION A: Describe the feature you would like to be added to the shader Describe the feature in detail, so i can know exactly what you are talking about. example: "could you add RTX to bliss? it makes it look like real life. here is a screenshot of what it could look like from another shader/another game: `image1.jpeg` `image2.jpeg`" ### OPTION B: Describe the feature you would like to be changed in the shader Describe exactly what feature you are talking about in the shader, using names of settings that turn it on/off, or a screenshot of the feature itself. example: "the "temporal upscaling" feature has a minimum value of "0.1". could you please allow it to reach zero? i really hate seeing detail! you can find the setting in `shader settings > post processing > anti aliasing`" ================================================ FILE: CREDITS.txt ================================================ Credit to the creator of the entire shader that BSPT is an edit of: X0nk / https://github.com/X0nk/Bliss-Shader Chocapic13 / https://www.curseforge.com/minecraft/customization/chocapic13-shaders Credit to the creators of code contributions, various code uses, or code snippets: EminGt / https://github.com/EminGT Gri573 / https://github.com/gri573 Null / https://github.com/Null-MC Sasha / https://github.com/WoMspace SixthSurge / https://github.com/sixthsurge Zombye / https://github.com/zombye Credit to the translators: Nord / nordwhy (discord) Ruri / nakiriruri (discord) YurgenS / yurgens (discord) CReepa / _CReepa_ (discord) Credit to the people who inspired many changes and ideas, that you NEED to know about: Ambrosia / https://github.com/ambrosia13 Rre36 / https://github.com/rre36 SixthSurge / https://github.com/sixthsurge EminGt / https://github.com/EminGT Null / https://github.com/Null-MC L4mbads / l4mbads (discord) | https://www.youtube.com/channel/UC-5tMMYBNrGJfp1SMjuAf2w ================================================ FILE: Changelog_v1.9.txt ================================================ 2025-11-11 v1.9 1. Fix aurora mistakenly rendered at day. ~ composite1 修复了极光在白天也渲染的错误 2. Improve aurora perf. ~ aurora 优化极光性能 3. Merge X0nk's latest commit. ~ xxx 整合了X0nk最新的更新 2025-10-28 v1.89 1. Stupid way to fix atmosphere below y=0. ~ atmosphere 大概修复了高度小于0时的大气故障 2. Simple fix to fog disappearing when clouds disabled. ~ deferred 简单地修复了关闭体积云时雾气连带消失的问题 3. Fix cloud quality unfunctioning issue. ~ volumetricClouds 修复了云层质量失效的问题 2025-10-10 v1.88 1. Slightly improve codes. ~ xxx 微微优化代码 2. Slight improve cloud scattering. ~ volumetricClouds 微微优化云层光照 3. Improve atmosphere color blending. ~ atmosphere 优化大气色彩混合 2025-10-2 v1.87 1. Greatly improve rainbow visual. ~ rainbow 极大的提升了彩虹的观感 2. Fix default settings for atmosphere. ~ settings 修复了关于大气的默认参数错误 2025-10-1 v1.86 1. Partially merge X0nk's latest commit. ~ xxx 整合了部分X0nk最新的更新 2. New atmosphere implemented, up to 8x performance improvement. ~ atmosphere 采用了新的大气,最大有8倍的性能提升 2025-8-12 ~ 9-8 v1.81 ~ 1.85 1. Selectively merge X0nk's latest commit. ~ xxx 有选择性地整合了X0nk最新的更新 2. Fix an an issue with shadow filtering. ~ composite1 修复一个阴影过滤的问题 4. Improve ambient scattering. ~ROBOBO_sky 优化环境光散射 5. Sync lensflare color to sun color. ~ lensflare 将镜头炫光颜色与太阳颜色同步 6. Reduce lensflare strenghth when the sun is low to reduce the flickering occlusion by cloud. ~ final 日落时降低镜头炫光强度以减少被云遮挡时产生的闪烁 7. Move rainbow to the front of the cloud. (use Merlin1809's code to make rainbow insert cloud) ~ rainbow/composite3 将彩虹移至云层前方 (彩虹插入云层部分使用Merlin1809的代码) 8. Fix compile errors including while entering modded dimensions. ~ composite3 修复编译错误,包含进入模组维度时的错误 9. Many small tweaks. ~ xxx 许多细小的调整 2025-6-26 ~ 7-10 v1.76 ~ 1.79 1. Fix glowing haze at night. ~ overworld_fog 修复了夜晚发光的雾霾 2. Add options for atmosphere absorbance. ~ setting 为大气吸收率添加选项 3. Restore sun path rotation. ~ settings 还原了日月倾角选项 4. Fix ripple issue. ~ all_translucent 修复了涟漪问题 5. Merge X0nk's latest commit. ~ xxx 整合了X0nk最新的更新 6. Agx preset slider. ~ tonemapping 添加AGX预设模式 7. Some improvements with setting screens. ~ shader 设置界面调整 8. Update LANG. ~ zh_cn/en_us 语言文件更新 2025-5-19 ~ 6-26 v1.71 ~ 1.75 1. Make cloud shadow a little bit more obvious. ~ volumetricclouds 使云影略微明显一些 2. Merge X0nk's latest commit. (emissive z-fighting) ~ xxx 整合了X0nk最新的更新 (发光物深度冲突) 3. Split codes. ~ xxx 拆分代码 4. Improve sunset scene. ~ xxx 优化黄昏场景 5. Add shooting stars. ~ stars 新增流星特效 6. Slightly improve code readability. ~ xxx 微微提升代码可读性 7. Fix an issue of TOD fog being verwrited by biome fog. ~ overworld_fog 修复了一个全天雾气被群系雾气覆写的问题 8. Update lang. ~ zh_cn/en_us 更新设置翻译 9. Simplifiy rainbow codes. ~ raibow/composite1 简化彩虹代码 10. Add fish eye lens. ~ final 新增鱼眼镜头特效 11. Fix ripple normal & side leaking from blocks issue. ~ all_translucent 修复了涟漪法线问题以及侧面渗漏问题 12. Fix glitch on horse. ~ all_translucent 修复了马贴图闪烁的问题 13. Add light absorbance with atomsphere options. ~ ROBOBO_sky 新增大气光线吸收选项 14. Improve skylight contribution to fog while raining and add settings. ~ overworld_fog 优化了雨天时天空光对雾气的贡献并加入对应设置 2025-4-26 ~ 5-12 v1.66 ~ v1.7 1. Improve BoP/FD/supplementaries compability (from @Merlin1809). 优化BoP/FD/supplementaries兼容 2. Add ender's delight compability (from @Merlin1809). 添加ender's delight兼容 3. Improve edge fade of end fog. 优化末地雾气边缘淡出 4. Adjust main light source color of end fog. 调整末地漩涡的主光源颜色 5. Cloud improved. 优化云层外观 6. Fix a visual issue with rainbow. 修复了一个关于彩虹的问题 7. Fix LPV redstone wire shaodow-ish issue. (from @fayer3) 修复了LPV红石线产生不正常阴影的问题 8. Improve 1.21.4 blocks effects. 优化1.21.4支持 9. Add 1.21.5 blocks effects. 添加1.21.5支持 10. Fix cloud render sequence when camera position is above the cloud. 修复当相机高于云层时云层的渲染顺序问题 11. Merge X0nk's latest commit. (adaptive motion blur) 整合了X0nk最新的更新 (自适应动态模糊) 12. Fix block light missing under RT in nether/end dimension. 修复方块光照在启用RT时在下界/末地消失的问题 13. Improve HQ cloud density. 优化高质量云层密度 14. Fix an issue with fog when disabling small/large VL cloud. 修复当禁用小/大积云时雾气被连带剔除的问题 15. Fix a compile error. 修复一个编译错误问题 16. Reuse codes to underwater distortion effects to improve pref. 为水下失真效果复用代码以提高性能 17. Revealing an option. 重启一个可选项 18. Fix mod support & 1.21.5 block id errors. 修复mod支持与1.21.5方块ID错误 2025-4-15 ~ 4-25 v1.61 ~ v1.65 1. Revert specular change. 回退高光优化 2. Add rainstrength threshold to avoid visual issue of ripple. 为涟漪添加雨水强度阈值以避免一些视觉问题 3. Increase cloud coverage/density while rain. 增加了下雨时云层的覆盖率与密度以避免太阳雨的问题 4. Avoid rainbow appear at night. 避免彩虹在夜间出现 5. Merge rainy scene configurations into scene_controller 将雨天控制整合进场景控制器中 6. Split few functions 拆分一些功能 7. Adjust clouds look. 调整了云层外观 8. Fix DH shadowmap compile issue. 修复了DH阴影贴图的编译错误 9. Merge X0nk's latest commit. (SSS & cloud tweaks) 整合了X0nk最新的更新 (SSS与云层的调整) 10. Fix daily weather mistakes. 修复每日天气错误 11. Remove unnecessary codes. 移除无意义代码 12. Improve SSGI perf. 优化SSGI性能 13. Improve setting layout & LANG. 优化设置布局与翻译文件 14. Revert portal / end portal effect / color. 回退下界/末地传送门特效/颜色 15. Revert lava colored lighting. 回退岩浆照明 16. Arrange codes. 整理代码 17. Improve ripple perf. 优化涟漪性能 18. Improve time code to make it more linear. 优化时间代码使其过渡更为线性 19. Force effects for night time stop calculate at day time to squeeze out a bit perf. 强制夜晚特效在白天停止运算以避免一些无意义的计算 20. Adjust some codes to make them more efficient. 调整一些代码使其更高效 2025-3-25 ~ 4-8 v1.56 ~ 1.6 1. Adjust darkening and transparency of all translucents to make them prettier. 优化了所有透明物体的透明度与光线吸收使其更美观 2. Update Lang. 优化翻译文件 3. Merge sandstorm/snowstrom to dry/snowy biome environments. 新增干旱群系特色环境,将沙暴与雪暴合并到干旱/下雪群系特色环境中 4. Arrange codes. (may cause crash in aether/twilight forest, if so, pls contact me) 整理代码(可能造成天境与暮色森林维度崩溃,如果发生请联系我) 5. Sperate color of sandstrom for bad land & desert. 为沙漠/恶地的沙尘暴增加颜色区分 6. Potentially fix shader crash for AMD users. 可能修复AMD用户无法加载光影的问题 7. Mitigated the issue of puddle & wetness specular appear in dry biomes. (not able to solve completely) 缓解了在干旱群系出现潮湿高光与水坑的问题(无法彻底解决) 8. Fix stupid snowstorm issue 修复了愚蠢的暴风雪问题 9. Merge X0nk's latest commit. (daily weather && water entering animation) 整合了X0nk最新的更新 (日常天气 && 入水效果) 10. Improve lensflare perf. 优化了镜头炫光的性能 11. Merge X0nk's latest commit. (physics oceans support) 整合了X0nk最新的更新 (物理海洋支持) 12. Improve cloud density & perf. 优化了体积云密度计算并提升了性能 13. Slightly improve GGX specualr. 微微优化GGX高光效果 14. Add rainstrength threshold to avoid visual issue of ripple. 为涟漪添加雨水强度阈值以避免一些视觉问题 15. Improve aurora environment lighting. 优化极光环境光照 2025-3-19 ~ 3-24 v1.5 ~ 1.55 1. Add puddle ripple, improve ripple visual & perf. 添加水坑涟漪,优化涟漪外观与性能 2. Fix LPV RANGE. 修复LPV光照范围问题 3. Add vanilla style starfield to end. 为末地添加原版风格的星空 4. Adjust lightening color in end. 调整末地闪电风暴颜色 5. Merge X0nk's latest commit. (litematica) 整合了X0nk最新的更新 (支持投影) 6. Fix a puddle ripple mistake. 修复一个水坑涟漪的错误 7. Fix an error with vine SSS. 修复了一个关于藤蔓的SSS错误 8. Add raindrop filter. 新增雨滴动画滤镜 9. Make ground ripple only to be seen in puddles. (more realistic to me) 移除除水坑外的地表涟漪(对我来说更真实) 10. Fix shader crash when enable chromatic aberration. 修复了使用色差时的光影崩溃问题 11. Improve raindrop on camera effect. 优化了相机覆雨的效果 12. Improve lensflare. 优化了镜头光晕效果 13. Adjust rainbow color. 调整了彩虹颜色 14. Merge X0nk's latest commit. (custom skybox) 整合了X0nk最新的更新(自定义天空) 15. Greatly Improve aurora light reacts to cloud. 大幅改进了极光光照与云层的交互 16. Fix overbright issue in the end. 修复了末地过亮的问题 17. Fix water specular issue in the end. 修复了末地水体异常高光的问题 18. Merge X0nk's latest commit. (mod dimensions support) 整合了X0nk最新的更新(mod维度支持) 19. Fix roughness threshold bug. 修复了粗糙度阈值的bug 20. Update Lang. 优化翻译文件 21. Simplify the code. 精简代码 2025-3-11 ~ 3-18 v1.45 ~ 1.49 1. Add customizable rainbow. 新增了彩虹 2. Merge X0nk's latest commit. (water) Tweak water style to fit my aesthetic. 整合了X0nk最新的更新 (水体) 调整水波效果以符合我的审美 3. Full ENG/CHS descriptions. (100% done) 00% 英语/中文设置界面描述 4. Setting screen tweak. 设置界面优化 5. Tweaks for ripples. 调整涟漪强度 6. Fix an error with skyground. 修复了一个关于地表大气的问题 7. Remove few necessary settings. 删除了少许无意义的设置 8. Fix random stuffs. 修复了许多问题 9. Add credit to builderb0y's hue. 为builderb0y的色环添加鸣谢 10. Adjust cloud color. 调整云层颜色 11. Adjust personal color grading. 调整个人调色 12. Improve SSRT 优化SSRT 13. Merge X0nk's latest commit. (cloud light) 整合了X0nk最新的更新 (云隙光) 14. Improve flashlight 优化手电筒光照 15. Adjust sunset color 优化了日落颜色 16. Optimize the code 优化代码 17. Fix cave vine waving & SSS error. 修复了洞穴藤蔓摇晃与次表面散射的问题 2025-3-7 ~ 3-10 v1.4 ~ 1.44 1. Add lensflare and sun glare effect. 新增镜头炫光与更美观的太阳 2. Optimize the code and translations. 优化代码与翻译 3. Make an option for people who want the full wet reflectiveness. 添加雨天潮湿度的自定义选项 4. Make lensflare invisible underwater, disable lensflare in other dimensions. 使镜头炫光在水下禁用,在其他维度禁用镜头炫光 5. Remove colorful nether portal functions as it's crap. 移除多彩的下界传送门功能 6. Cloud occlude will be more accurate and fast for lens flare. Add smooth fade out animation for lensflare. 镜头炫光的云层遮挡检测现在变得更精准,效率也更高,添加了淡出动画 7. Fix an flaw of LPV shadow. (thank you 195p2) 修复了一个LPV阴影的问题,感谢195p2(discord) 8. Fix unfunctional LPV RANGE. 修复了LPV光照距离无效的问题 9. Remove few unused settings, restore few hided settings. 移除部分失效选项,新增部分原本不可见选项 10. Restore fog color, vanilla LPV lighting option. 新增雾气颜色,原版LPV光照选项 11. Add material normal strenghth setting. 新增材质法线强度设定 12. Replace hammersley sequence with higher precision one, better than nothing. 替换了更高精度的hammersley序列,看不出什么画面区别,但总比没有好 13. Add more eng setting comments. (75% done) 添加了更多英语设置选项说明 2025-2-26 ~ 3-5 v1.35 ~ v1.39 1. Improve rain and snow code to make them easier to be seen. 优化雨雪可见度 2. Improve ripple perf. 优化涟漪性能 3. Make night vision affect other dimensions. 使夜视效果在其他维度也能生效 4. Merge X0nk's latest commit. (flashlight & DH TAA jitter) 整合了X0nk最新的更新 (手电筒与DH下的抖动TAA) 5. Fix tiny issue with POM & make flashlight working under RTGI/SSGI. 修复了视差的细微问题,并使手电筒在RTGI/SSGI下也能正常工作 6. Improve RT perf & quality 优化光追性能及质量 7. Improve CHS/ENG lang quality. 优化简中/英语质量 8. Fix an issue with translucent colored shadow. 修复了一个有关彩色阴影的bug 9. Improve TAA quality 提升了TAA的质量 10. Reduce periodic motion of water distortion. 降低水下失真运动效果的周期性 11. Adjust biome tint water. 调整群系水体色调 12. Improve setting menu. 优化设置菜单 13. Simplified the code. 简化代码 14. Add new tonemap. 添加新的tonemap预设 2025-2-18 ~ 2-25 v1.3 ~ v1.34 1. Make ground ripple an optional setting. Not recommend to use. 新增地表涟漪(不推荐开启) 2. Improve ripple shape & perf, add ripple settings. 优化涟漪形状及过渡,提升性能,加入涟漪设置选项 3. Slightly adjust raindrop size implement. 调整了雨滴大小应用于代码的方式 4. Water wave will be bigger and faster while rain. 使雨天水波的强度与速度都会增加. 5. Discriptions for all options done (CHS) (ENG later). 为所有选项增加描述(中文) 6. Improve ripple shade and water wave offset code implement. 优化涟漪的形状,改良了雨天水波补偿的应用方式 7. Improve the surface wetness calculation. 改良了雨天材质表面光滑度的计算方式 8. Fix a rare mistake with gameplay effect. 修复了一个关于游玩效果的代码语法错误 9. Improve code utilizaion to improve perf. 优化代码共用以微微提升性能 10. Improve GTAO visual quality. 优化GTAO表现使其不再鸡肋 11. Improve wavy plants code. 优化摇晃植物代码 12. Improve fancy end portal color to match the end fog color. 将华丽的末地传送门颜色与末地烟雾颜色绑定 13. Improve SSPT perf. 优化光追性能(+2~3fps) 14. Make all daily weather params work as offset to make this function less crap. 将周期循环的天气更改为对原云雾设置的补偿,使其重新变得可用 15. Remove unavailable options, improve setting layout. 移除无效选项,优化设置界面布局. 16. Few optimizations to the code, may improve shader load speed. 优化代码,加快光影载入速度 17. Fix some stupid mistake I made earlier. 修复了一些愚蠢的错误 18. Delete abandoned code, code arrangements. 删除无效代码,整理代码 2025-2-13 ~ 2-16 v1.25 ~ v1.29 1. Add a simple low-pass denoise to skylight ssrt. 为天空光SSRT补偿增加了低通滤波处理降低噪点 2. Adjust block specular while rain, may tweak as futher feedback. 调整了雨天方块反光的强度,会根据反馈进一步修改 3. Fix rainfog missing. 修复了雨雾消失的问题 4. Fix ore emission issue. 修复了硬编码发光矿物的问题,改进了代码 5. Add extra erosion and density to v cloud to make cloud fancier. 添加更多侵蚀效果与层数使体积云更具细节,外形更蓬松,并尽可能保持性能 6. Improve the water distortion effect. 优化相机覆水效果 7. Slightly improve how aurora light react to cloud. 稍稍调整了极光颜色对云层的影响 8. Improve the shape & shadow of cloud. 改良了体积云的外形与阴影表现 9. Remove abandoned code and settings, readding setting that still functional. 移除了无效代码与设置,还原了个别仍具功能的选项 10. Add water ripples while rain, still need to be improved. 新增雨天水面涟漪,仍需要进一步优化 2025-2-6 ~ 2-10 v1.2 ~ v1.24 1. A new method to simulate ssgi, extremely cheap & goodlooking. 全新高效方案以模拟ssgi效果使rtgi性能大幅提高(+4fps) 2. Fix a code error with ssgi, potentially improve performance. 修复了一个ssgi的错误,可能可以提升性能 3. Rearrange the slider of ray count, fix a mistake in sky brightness. 光线数量选项步进调整,修正一个天空光照选项的错误 4. Add reflection quality slider. 新增反射质量选项 5. Fix a mistake in specular reflection, may increase performance. 修复一个高光反射中的错误,可能会提升性能 6. Fix a tiny mistake in sun scattering. 修复了一个阳光散射的微小错误 7. Add aurora with simple control, should be improved in the future. 新增了nimitz的极光,将来会持续优化 8. Improved the prediction of snowy biome 改良了群系的识别方案 9. Fix an error with snowstorm. 修复了一个关于雪暴的错误 10. Adjust the color of sandstorm. 调整了沙暴颜色的问题 11. Add aurora light contribution to sky & cloud & ground 新增极光对天空及地面元素的光照补偿 12. Tweak the light contribution of the aurora. 调整极光的照明补偿效果 13. Optimize code for indirect lighting to improve RT perf. 优化代码提升光追性能,rtgi/ssgi(+0.5fps),hq ssgi(+1fps) 14. Fix aurora light setting mistake, delet unused code, overall optimize. 修复了极光颜色设置颠倒的问题,删除未使用的代码,微微提升性能 15. Optimize the layout of setting screen. 微微优化了设置界面布局 16. Add moving effect on underwater distortion. 为水下失真增加动态效果 17. Greatly optimize the code of hq ssgi to improve pref and fix an issue. 再次优化光线追踪代码,大幅提高高质量ssgi性能并修复了一个微小错误(+3fps),微微提升rtgi/ssgi性能(+0.5fps) 18. Optimize code related to emissive ore. 简化了发光矿物的代码 19. Fix an issue with rain puddle. 修复了关于下雨群系判断的重大错误 2025-2-1 ~ 2-5 v1.15 ~ v1.19 1. Improve the code of AGX Tonemap to make it more color precision. 优化AGX Tonemap代码性能并使颜色更精准 2. New personal tonemap based on AGX_Minimum. 新增个人调色,提高真实感 3. Improve TOD fog. 优化TOD雾气使得雾气过渡更平滑 4. Make sunset fancier. 使太阳在夕阳时更红 5. Improve the graphic of the end. 优化末地雾气使环境更暗 6. Improve the code of biome tint water. 优化群系色调水体的实现 7. Add snowy biome overlay. 为寒冷群系增加特殊雾气overlay效果 8. Slightly improve ssgi performance by adjust ray steps. 在不明显降低画面品质的条件下微微提升高质量ssgi性能(+1fps) 9. Add options to tweak ray count and steps, slightly improve rtao performance under default settings. 增添光追自定义选项,默认设置下微微减轻rtao负担 10 Make cloud brighter, adjust the cloud default settings. 使云层更亮,微调默认云层配置 11. Add preset profiles in shader setting. 添加默认配置文件切换 12. Make lava darker. 调整岩浆/岩浆桶颜色使其不那么晃眼 13. Greatly improve the rtao quality with simplified ssgi code, replace rtao with rtgi. 大幅改进rtao效果,将rtao改名为rtgi(-1fps) 14. Slightly improve the water distortion code, may increase performance slightly. 微微改进水下失真效果代码 15. Fix an issue with emissive ore. 修正了一个发光矿物的问题 2025-1-28 ~ 1-30 v1.1 ~ v1.14 ##重大修复 1. Merge X0nk's latest commit. (SSAO perf & SSS on muti-layer entities & water normal & end portal effect & vl cloud overdraw issue) 整合了X0nk最新的更新 (SSAO性能 史莱姆等多层透明实体的反射效果 水面法线 末地传送门特效 体积云过度绘制的问题) 2. Fix the nether fog option. 修复末地雾气选项失灵的bug 3. Add nether fog plume color option. 新增下界烟柱颜色选项 4. Add fancy end portal option. 为末地传送门特效增加配置选项 5. Add nether portal color option. 新增多彩的下界传送门 6. Adjust the light of furnance 微微调整了熔炉光照 7. Tweak the shader default settings. 改进了光影默认配置数值 2025-1-24 v1.05 ~ v1.09 1. Merge X0nk's latest commit. (underwater effect) 整合了X0nk最新的更新 (水下视觉) 2. Restore water distortion effect. 重新加入水体焦散效果 3. Improve setting screen. 设置界面布局优化 4. Fix biome tint water. 修复群系色调水体bug 5. Fix a mistake cause stationary star. 修复星星不旋转的bug 6. Add raindrop size option. 新增雨滴大小配置选项 7. Add emissive ore code from fayer3. 应用Fayer3矿石发光特效及相关选项 8. Fix missing AO under rtao/ssgi. 修复了RTAO/SSGI模式下画面失去AO遮罩的bug 9. Fix a bug with break animation. 修复方块破坏粒子效果不显示的bug 10. Improve CHS translation. 汉化修正 11. Revamp the setting screen. 设置界面重做 12. Improve star perf. 优化星星性能 13. Fix vortex configuration issue. 修复末地漩涡选项失灵的bug 14. Add end lightning options. 新增末地闪电选项 15. Add new ore emit color options. 新增方块发光颜色选项 2025-1-21 v1.0 ~ v1.03 1. Apply LPV shadow code from fayer3. 应用Fayer3路径追踪阴影代码 2. Fix raincloud density/coverage bug. 修复雨云覆盖率/密度bug 3. Update noise texture. 噪声贴图更新,微微优化性能 4. Improve setting screen. 设置界面重做 5. Update CHS translation. 汉化更新 6. Fix a mistake of rainfog. 雨雾bug修复 7. Restore porosity & puddle code. 孔隙率/水坑代码回滚 8. Fix raincloud coverage issue. 修复雨云覆盖率设置选项失灵的bug 9. Improve setting value. 设置参数拓展 10. Add star density option. 新增星星密度配置选项 11. Fix waving bug while using 3d rp by split the group that may contain blocks with 3d model. 拆分植物摇晃选项以解决一些资源包冲突问题 12. Update CHS/ENG lang file. 中文/英文语言文件更新 ================================================ FILE: LICENSE.md ================================================ License, as stated by Chocapic13: Sharing a modified version of my shaders: You are not allowed to claim any of the code included in "Chocapic13' shaders" as your own You can share a modified version of my shaders if you respect the following title scheme : " -Name of the shaderpack- (Chocapic13' Shaders edit) " You cannot use any monetizing links (for example adfoc.us ; adf.ly) The rules of modification and sharing have to be same as the one here (copy paste all these rules in your post and change depending if you allow modification or not), you cannot make your own rules, you can only choose if you allow redistribution. I have to be clearly credited You cannot use any version older than "Chocapic13' Shaders V4" as a base, however you can modify older versions for personal use Common sense : if you want a feature from another shaderpack or want to use a piece of code found on the web, make sure the code is open source. In doubt ask the creator. Common sense #2 : share your modification only if you think it adds something really useful to the shaderpack(not only 2-3 constants changed) Special level of permission; with written permission from Chocapic13, on request if you think your shaderpack is an huge modification from the original: Allows to use monetizing links Allows to create your own sharing rules Shaderpack name can be chosen Listed on Chocapic13' shaders official thread Chocapic13 still have to be clearly credited Using this shaderpack in a video or a picture: You are allowed to use this shaderpack for screenshots and videos if you give the shaderpack name in the description/message You are allowed to use this shaderpack in monetized videos if you respect the rule above. Minecraft websites: The download link must redirect to the download link given in the shaderpack's official thread There has to be a link to the shaderpack's official thread You are not allowed to add any monetizing link to the shaderpack download If you are not sure about what you are allowed to do or not, PM Chocapic13 on http://www.minecraftforum.net/. Not respecting these rules can and will result in a request of thread/download shutdown to the host/administrator, with or without warning. Intellectual property stealing is punished by law. ================================================ FILE: README.md ================================================ # Bliss-BSPT # Bliss-BSPT is an edited shader based on Bliss-unstable-development by X0nk.
The original Bliss is a great shader and it's even better when X0nk made unstable development version of it.
But it's also kinda broken with tons of bugs, so I decided to fix them myself and merge code from FAYER3's blocklight2 fork.
I called it BSPT which refers to "Block Shadow Path Tracing" at that time,
but as I start add more and more new stuffs, improve the performance, the block shadow part becomes less important.
So it doesn't matter why it's called BSPT today, I just what to make a ultra Bliss loved by everyone.
### FEATURING: + New features like Aurora, Ripples, Lensflare, Rainbow, Ore emission and more. + Improvements like detailed cloud, distortion animations, optimized raytracing GI and more. + More realistic color & new tonemaps. + LPV shadow from Fayer3. + Better performance. + Bug fix. ### HOW TO DOWNLOAD: - locate the `green "code" button` on this page. this button is NOT in the `releases` page. - click the `green "code" button` and select `"download zip"`. - once the zip file finishes downloading, install it like a normal shader. you do NOT need to unzip/extract/decompress. # BSPT contains code from FAYER3's fork. Any re-editing & re-distribution is prohibited. # ### SPECIAL THANKS: + Chocapic13, for the base shader + X0nk, for the masterpiece of work + WoMspace, for spending alot of time creating a DOF overhaul + Null, for doing a huge amount of work creating the voxel floodfill colored lighting + Emin, and Gri573, for teaching me how to stop alot of light leaking + RRe36 and Sixthsurge, for the great ideas to steal ================================================ FILE: shaders/block.properties ================================================ #ifdef FORCE_TRANSLUCENT_GLASS layer.translucent = minecraft:glass minecraft:glass_pane #endif block.8=minecraft:water minecraft:flowing_water tfc:flowing_spring_water tfc:spring_water tfc:river_water tfc:salt_water tfc:flowing_salt_water tfc:limewater tfc:flowing_limewater block.11=bamboo bamboo_sapling block.12=minecraft:short_grass minecraft:grass minecraft:short_dry_grass minecraft:tall_dry_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 \ biomesoplenty:tall_lavender:half=lower biomesoplenty:eyebulb:half=lower biomesoplenty:blue_hydrangea:half=lower biomesoplenty:tall_white_lavender:half=lower biomesoplenty:watergrass:half=lower biomesoplenty:reed:half=lower biomesoplenty:cattail:half=lower biomesoplenty:barley:half=lower biomesoplenty:icy_iris:half=lower biomesoplenty:goldenrod:half=lower biomesoplenty:sea_oats: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 farmersdelight: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 biomesoplenty:tall_white_lavender:half=upper biomesoplenty:watergrass:half=upper biomesoplenty:reed:half=upper biomesoplenty:cattail:half=upper biomesoplenty:barley:half=upper biomesoplenty:icy_iris:half=upper biomesoplenty:goldenrod:half=upper biomesoplenty:sea_oats: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 farmersdelight:rice_panicles: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 block.15=minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling minecraft:pale_oak_sapling minecraft:mangrove_propagule \ biomesoplenty:hellbark_sapling biomesoplenty:empyreal_sapling biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:cypress_sapling biomesoplenty:snowblossom_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:fir_sapling biomesoplenty:red_maple_sapling biomesoplenty:orange_maple_sapling biomesoplenty:yellow_maple_sapling biomesoplenty:redwood_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling #ifdef BOES_EARTH_BLOCKSTATES block.16=minecraft:hanging_roots minecraft:weeping_vines vine:is_on_leaves=false \ biomesoplenty:spanish_moss #else block.16=minecraft:hanging_roots minecraft:weeping_vines vine #endif ####### ----- FloodFill ----- ####### # 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 \ 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 \ gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \ 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 \ 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: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 diagonalwalls:minecraft/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: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: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 \ meadow:table meadow:stone_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 \ vinery:dark_cherry_table # Blocks that occlude 75% of light block.53=bell \ vinery:dark_cherry_big_table ####### ----- waving blocks with SSS ----- ####### ## 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 minecraft:wildflowers minecraft:bush minecraft:firefly_bush minecraft:cactus_flower \ biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:white_lavender biomesoplenty:desert_grass biomesoplenty:dead_grass 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:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:hair biomesoplenty:dune_grass \ farmersdelight:tomatoes farmersdelight:cabbages farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots farmersdelight:onions farmersdelight:budding_tomatoes \ endersdelight:chorusflame_bush endersdelight:amberveil_mushroom endersdelight:ethereal_saffron_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 \ 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 \ supplementaries:wild_flax ## 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:closed_eyeblossom minecraft:open_eyeblossom minecraft:fern \ biomesoplenty:bush \ conquest:red_clover_flowers conquest:warped_fungus 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 #ifdef BOES_EARTH_BLOCKSTATES block.56= minecraft:pale_hanging_moss minecraft:pale_oak_leaves 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 minecraft:cave_vines:berries=false minecraft:cave_vines_plant:berries=false snow:is_on_leaves=true vine:is_on_leaves=true \ #else block.56= minecraft:pale_hanging_moss minecraft:pale_oak_leaves 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 minecraft:cave_vines:berries=false minecraft:cave_vines_plant:berries=false \ #endif beachparty:palm_leaves \ biomesoplenty:redwood_leaves biomesoplenty:bramble_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 \ twilightforest:twilight_oak_leaves twilightforest:canopy_leaves twilightforest:dark_leaves twilightforest:hardened_dark_leaves \ aether:skyroot_leaves aether:golden_oak_leaves aether:crystal_leaves aether:crystal_fruit_leaves \ dynamictrees:oak_leaves dynamictrees:spruce_leaves dynamictrees:birch_leaves dynamictrees:jungle_leaves dynamictrees:acacia_leaves dynamictrees:dark_oak_leaves dynamictrees:azalea_leaves dynamictrees:flowering_azalea_leaves dynamictrees:mangrove_leaves dynamictrees:cherry_leaves \ ####### ----- blocks with SSS ----- ####### ## strong sss block.80=minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:ice minecraft:packed_ice minecraft:blue_ice minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ aquamirae:elodea \ 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:white_petals biomesoplenty:wildflower 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 \ 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 #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 minecraft:resin_block minecraft:resin_bricks minecraft:chiseled_resin_bricks \ #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 minecraft:resin_block minecraft:resin_bricks minecraft:chiseled_resin_bricks \ #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 \ 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 \ 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 \ 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 \ conquest:yellow_thatch conquest:yellow_thatch_stairs conquest:yellow_thatch_slab conquest:yellow_thatch_quarter_slab conquest:yellow_thatch_corner_slab conquest:yellow_thatch_eighth_slab conquest:yellow_thatch_vertical_corner_slab conquest:yellow_thatch_vertical_slab conquest:yellow_thatch_vertical_corner conquest:yellow_thatch_vertical_quarter conquest:dark_yellow_thatch conquest:dark_yellow_thatch_stairs conquest:dark_yellow_thatch_slab conquest:dark_yellow_thatch_quarter_slab conquest:dark_yellow_thatch_corner_slab conquest:dark_yellow_thatch_eighth_slab conquest:dark_yellow_thatch_vertical_corner_slab conquest:dark_yellow_thatch_vertical_slab conquest:dark_yellow_thatch_vertical_corner conquest:dark_yellow_thatch_vertical_quarter conquest:brown_thatch conquest:brown_thatch_stairs conquest:brown_thatch_slab conquest:brown_thatch_quarter_slab conquest:brown_thatch_corner_slab conquest:brown_thatch_eighth_slab conquest:brown_thatch_vertical_corner_slab conquest:brown_thatch_vertical_slab conquest:brown_thatch_vertical_corner conquest:brown_thatch_vertical_quarter conquest:dark_brown_thatch conquest:dark_brown_thatch_stairs conquest:dark_brown_thatch_slab conquest:dark_brown_thatch_quarter_slab conquest:dark_brown_thatch_corner_slab conquest:dark_brown_thatch_eighth_slab conquest:dark_brown_thatch_vertical_corner_slab conquest:dark_brown_thatch_vertical_slab conquest:dark_brown_thatch_vertical_corner conquest:dark_brown_thatch_vertical_quarter conquest:mossy_brown_thatch conquest:mossy_brown_thatch_stairs conquest:mossy_brown_thatch_slab conquest:mossy_brown_thatch_quarter_slab conquest:mossy_brown_thatch_corner_slab conquest:mossy_brown_thatch_eighth_slab conquest:mossy_brown_thatch_vertical_corner_slab conquest:mossy_brown_thatch_vertical_slab conquest:mossy_brown_thatch_vertical_corner conquest:mossy_brown_thatch_vertical_quarter ## weak sss block.83=minecraft:white_wall_banner minecraft:orange_wall_banner minecraft:magenta_wall_banner minecraft:light_blue_wall_banner minecraft:yellow_wall_banner minecraft:lime_wall_banner minecraft:pink_wall_banner minecraft:gray_wall_banner minecraft:light_gray_wall_banner minecraft:cyan_wall_banner minecraft:purple_wall_banner minecraft:blue_wall_banner minecraft:brown_wall_banner minecraft:green_wall_banner minecraft:red_wall_banner minecraft:black_wall_banner minecraft:white_banner minecraft:orange_banner minecraft:magenta_banner minecraft:light_blue_banner minecraft:yellow_banner minecraft:lime_banner minecraft:pink_banner minecraft:gray_banner minecraft:light_gray_banner minecraft:cyan_banner minecraft:purple_banner minecraft:blue_banner minecraft:brown_banner minecraft:green_banner minecraft:red_banner minecraft:black_banner \ westerosblocks:renly_banner westerosblocks:redwyne_banner westerosblocks:grafton_banner westerosblocks:grey_banner westerosblocks:red_banner westerosblocks:black_banner westerosblocks:the_faith_of_the_seven_banner westerosblocks:cream_banner westerosblocks:blue_banner westerosblocks:brown_banner westerosblocks:cyan_banner westerosblocks:green_banner westerosblocks:orange_banner westerosblocks:pink_banner westerosblocks:purple_banner westerosblocks:lord_of_light_rhllor_banner westerosblocks:yellow_banner westerosblocks:arryn_banner westerosblocks:baratheon_banner westerosblocks:bolton_banner westerosblocks:dayne_banner westerosblocks:frey_banner westerosblocks:greyjoy_banner westerosblocks:hightower_banner westerosblocks:lannister_banner westerosblocks:manderly_banner westerosblocks:martell_banner westerosblocks:stannis_banner westerosblocks:stark_banner westerosblocks:targaryen_banner westerosblocks:tarly_banner westerosblocks:tully_banner westerosblocks:tyrell_banner ## weird blocks block.84=minecraft:sand minecraft:red_sand ## grass uwu block.85=minecraft:grass_block:snowy=false ####### ----- lightsources ----- ####### block.99=firefly_bush block.100=small_amethyst_bud block.101=medium_amethyst_bud block.102=large_amethyst_bud block.103=amethyst_cluster block.104=beacon block.105=brewing_stand #ifdef LPV_COLORED_CANDLES block.106=candle:candles=1:lit=true \ supplementaries:candle_holder:candles=1:lit=true block.107=candle: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 \ supplementaries:candle_holder:candles=2:lit=true block.108=candle:candles=3:lit=true \ supplementaries:candle_holder:candles=3:lit=true block.109=candle:candles=4:lit=true \ supplementaries:candle_holder:candles=4:lit=true block.110=black_candle:candles=1:lit=true \ supplementaries:candle_holder_black:candles=1:lit=true block.111=black_candle: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 \ supplementaries:candle_holder_black:candles=2:lit=true block.112=black_candle:candles=3:lit=true \ supplementaries:candle_holder_black:candles=3:lit=true block.113=black_candle:candles=4:lit=true \ supplementaries:candle_holder_black:candles=4:lit=true block.114=blue_candle:candles=1:lit=true \ supplementaries:candle_holder_blue:candles=1:lit=true block.115=blue_candle: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 \ supplementaries:candle_holder_blue:candles=2:lit=true block.116=blue_candle:candles=3:lit=true \ supplementaries:candle_holder_blue:candles=3:lit=true block.117=blue_candle:candles=4:lit=true \ supplementaries:candle_holder_blue:candles=4:lit=true block.118=brown_candle:candles=1:lit=true \ supplementaries:candle_holder_brown:candles=1:lit=true block.119=brown_candle: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 \ supplementaries:candle_holder_brown:candles=2:lit=true block.120=brown_candle:candles=3:lit=true \ supplementaries:candle_holder_brown:candles=3:lit=true block.121=brown_candle:candles=4:lit=true \ supplementaries:candle_holder_brown:candles=4:lit=true block.122=cyan_candle:candles=1:lit=true \ supplementaries:candle_holder_cyan:candles=1:lit=true block.123=cyan_candle: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 \ supplementaries:candle_holder_cyan:candles=2:lit=true block.124=cyan_candle:candles=3:lit=true \ supplementaries:candle_holder_cyan:candles=3:lit=true block.125=cyan_candle:candles=4:lit=true \ supplementaries:candle_holder_cyan:candles=4:lit=true block.126=gray_candle:candles=1:lit=true \ supplementaries:candle_holder_gray:candles=1:lit=true block.127=gray_candle: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 \ supplementaries:candle_holder_gray:candles=2:lit=true block.128=gray_candle:candles=2:lit=true \ supplementaries:candle_holder_gray:candles=3:lit=true block.129=gray_candle:candles=4:lit=true \ supplementaries:candle_holder_gray:candles=4:lit=true block.130=green_candle:candles=1:lit=true \ supplementaries:candle_holder_green:candles=1:lit=true block.131=green_candle: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 \ supplementaries:candle_holder_green:candles=2:lit=true block.132=green_candle:candles=3:lit=true \ supplementaries:candle_holder_green:candles=3:lit=true block.133=green_candle:candles=4:lit=true \ supplementaries:candle_holder_green:candles=4:lit=true 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 \ 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 block.137=light_blue_candle:candles=4:lit=true \ supplementaries:candle_holder_light_blue:candles=4:lit=true 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 \ 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 block.141=light_gray_candle:candles=4:lit=true \ supplementaries:candle_holder_light_gray:candles=4:lit=true block.142=lime_candle:candles=1:lit=true \ supplementaries:candle_holder_lime:candles=1:lit=true block.143=lime_candle: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 \ supplementaries:candle_holder_lime:candles=2:lit=true block.144=lime_candle:candles=3:lit=true \ supplementaries:candle_holder_lime:candles=3:lit=true block.145=lime_candle:candles=4:lit=true \ supplementaries:candle_holder_lime:candles=4:lit=true block.146=magenta_candle:candles=1:lit=true \ supplementaries:candle_holder_magenta:candles=1:lit=true block.147=magenta_candle: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 \ supplementaries:candle_holder_magenta:candles=2:lit=true block.148=magenta_candle:candles=3:lit=true \ supplementaries:candle_holder_magenta:candles=3:lit=true block.149=magenta_candle:candles=4:lit=true \ supplementaries:candle_holder_magenta:candles=4:lit=true block.150=orange_candle:candles=1:lit=true \ supplementaries:candle_holder_orange:candles=1:lit=true block.151=orange_candle: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 \ supplementaries:candle_holder_orange:candles=2:lit=true block.152=orange_candle:candles=3:lit=true \ supplementaries:candle_holder_orange:candles=3:lit=true block.153=orange_candle:candles=4:lit=true \ supplementaries:candle_holder_orange:candles=4:lit=true block.154=pink_candle:candles=1:lit=true \ supplementaries:candle_holder_pink:candles=1:lit=true block.155=pink_candle: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 \ supplementaries:candle_holder_pink:candles=2:lit=true block.156=pink_candle:candles=3:lit=true \ supplementaries:candle_holder_pink:candles=3:lit=true block.157=pink_candle:candles=4:lit=true \ supplementaries:candle_holder_pink:candles=4:lit=true block.158=purple_candle:candles=1:lit=true \ supplementaries:candle_holder_purple:candles=1:lit=true block.159=purple_candle: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 \ 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 \ supplementaries:candle_holder_red:candles=1:lit=true block.163=red_candle: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 \ supplementaries:candle_holder_red:candles=2:lit=true block.164=red_candle:candles=3:lit=true \ supplementaries:candle_holder_red:candles=3:lit=true block.165=red_candle:candles=4:lit=true \ supplementaries:candle_holder_red:candles=4:lit=true 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 \ supplementaries:candle_holder_yellow:candles=1:lit=true block.171=yellow_candle: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 \ supplementaries:candle_holder_yellow:candles=2:lit=true block.172=yellow_candle:candles=3:lit=true \ supplementaries:candle_holder_yellow:candles=3:lit=true block.173=yellow_candle:candles=4:lit=true \ supplementaries:candle_holder_yellow:candles=4:lit=true #else block.174=candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle:candles=1:lit=true brown_candle:candles=1:lit=true cyan_candle:candles=1:lit=true gray_candle:candles=1:lit=true green_candle:candles=1:lit=true light_blue_candle:candles=1:lit=true light_gray_candle:candles=1:lit=true lime_candle:candles=1:lit=true magenta_candle:candles=1:lit=true orange_candle:candles=1:lit=true pink_candle:candles=1:lit=true purple_candle:candles=1:lit=true red_candle:candles=1:lit=true white_candle:candles=1:lit=true yellow_candle:candles=1:lit=true \ 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 \ 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 block.177=candle:candles=4:lit=true black_candle:candles=4:lit=true blue_candle:candles=4:lit=true brown_candle:candles=4:lit=true cyan_candle:candles=4:lit=true gray_candle:candles=4:lit=true green_candle:candles=4:lit=true light_blue_candle:candles=4:lit=true light_gray_candle:candles=4:lit=true lime_candle:candles=4:lit=true magenta_candle:candles=4:lit=true orange_candle:candles=4:lit=true pink_candle:candles=4:lit=true purple_candle:candles=4:lit=true red_candle:candles=4:lit=true white_candle:candles=4:lit=true yellow_candle:candles=4:lit=true \ supplementaries:candle_holder:candles=4:lit=true supplementaries:candle_holder_black:candles=4:lit=true supplementaries:candle_holder_blue:candles=4:lit=true supplementaries:candle_holder_brown:candles=4:lit=true supplementaries:candle_holder_cyan:candles=4:lit=true supplementaries:candle_holder_gray:candles=4:lit=true supplementaries:candle_holder_green:candles=4:lit=true supplementaries:candle_holder_light_blue:candles=4:lit=true supplementaries:candle_holder_light_gray:candles=4:lit=true supplementaries:candle_holder_lime:candles=4:lit=true supplementaries:candle_holder_magenta:candles=4:lit=true supplementaries:candle_holder_orange:candles=4:lit=true supplementaries:candle_holder_pink:candles=4:lit=true supplementaries:candle_holder_purple:candles=4:lit=true supplementaries:candle_holder_red:candles=4:lit=true supplementaries:candle_holder_white:candles=4:lit=true supplementaries:candle_holder_yellow:candles=4:lit=true #endif block.178=minecraft:cave_vines_plant:berries=true minecraft:cave_vines:berries=true block.179=comparator:powered=true block.180=copper_bulb:lit=true waxed_copper_bulb:lit=true block.181=exposed_copper_bulb:lit=true waxed_exposed_copper_bulb:lit=true block.182=oxidized_copper_bulb:lit=true waxed_oxidized_copper_bulb:lit=true block.183=weathered_copper_bulb:lit=true waxed_weathered_copper_bulb:lit=true block.184=conduit block.185=crying_obsidian block.186=deepslate_redstone_ore:lit=true block.187=end_gateway block.188=end_rod \ mcwlights:garden_light:lit=true block.189=fire campfire:lit=true block.190=conquest:fire_flies block.191=ochre_froglight block.192=pearlescent_froglight block.193=verdant_froglight block.194=furnace:lit=true blast_furnace:lit=true smoker:lit=true block.195=glow_lichen \ flying_stuff:celestium_spike flying_stuff:celestium_antenna block.196=glowstone \ mcwlights:glowstone_slab block.197=jack_o_lantern \ humility-afm:jack_o_lantern_redstone block.198=lantern \ amendments:wall_lantern:light_level=15:lit=true \ 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 minecraft:lava_cauldron \ flying_stuff:molten_metal:lit=true \ mcwlights:lava_lamp:lit=true block.200=light:level=1 block.201=light:level=2 block.202=light:level=3 block.203=light:level=4 block.204=light:level=5 block.205=light:level=6 block.206=light:level=7 block.207=light:level=8 block.208=light:level=9 block.209=light:level=10 block.210=light:level=11 block.211=light:level=12 block.212=light:level=13 block.213=light:level=14 block.214=light:level=15 block.215=magma_block block.216=powered_rail:powered=true block.217=redstone_lamp:lit=true \ mcwlights:redstone_lamp_slab additionalplacements:mcwlights.redstone_lamp_slab \ supplementaries:stone_lamp supplementaries:end_stone_lamp supplementaries:deepslate_lamp supplementaries:blackstone_lamp block.218=redstone_ore:lit=true block.219=redstone_torch:lit=true redstone_wall_torch:lit=true block.220=redstone_wire:power=1 block.221=redstone_wire:power=2 block.222=redstone_wire:power=3 block.223=redstone_wire:power=4 block.224=redstone_wire:power=5 block.225=redstone_wire:power=6 block.226=redstone_wire:power=7 block.227=redstone_wire:power=8 block.228=redstone_wire:power=9 block.229=redstone_wire:power=10 block.230=redstone_wire:power=11 block.231=redstone_wire:power=12 block.232=redstone_wire:power=13 block.233=redstone_wire:power=14 block.234=redstone_wire:power=15 block.235=repeater:powered=true block.236=respawn_anchor:charges=4 block.237=sculk sculk_vein sculk_sensor sculk_catalyst calibrated_sculk_sensor sculk_shrieker sculk_sensor:sculk_sensor_phase=active block.238=sea_pickle:waterlogged=true:pickles=1 block.239=sea_pickle:waterlogged=true:pickles=2 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 block.243=shroomlight \ mcwlights:shroomlight_slab \ additionalplacements:mcwlights.shroomlight_slab block.244=soul_fire soul_campfire:lit=true block.245=soul_lantern \ amendments:wall_lantern:light_level=10:lit=true \ 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 \ 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 \ 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=betterend:terminite_bulb_lantern_black betterend:iron_bulb_lantern_black \ humility-afm:led_black \ mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true block.251=betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue \ betternether:blue_weeping_obsidian \ humility-afm:led_blue \ mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true block.252=betterend:terminite_bulb_lantern_brown betterend:iron_bulb_lantern_brown \ humility-afm:led_brown \ mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true block.253=betterend:terminite_bulb_lantern_cyan betterend:iron_bulb_lantern_cyan \ humility-afm:led_cyan \ mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true block.254= betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray \ humility-afm:led_gray \ mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true block.255=betterend:terminite_bulb_lantern_green betterend:iron_bulb_lantern_green \ humility-afm:led_green \ mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true block.256=betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue \ humility-afm:led_light_blue \ mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true block.257=betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray \ humility-afm:led_light_gray \ mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true block.258= betterend:terminite_bulb_lantern_lime betterend:iron_bulb_lantern_lime \ humility-afm:led_lime \ mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true block.259= betterend:terminite_bulb_lantern_magenta betterend:iron_bulb_lantern_magenta \ humility-afm:led_magenta \ mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true block.260= betterend:terminite_bulb_lantern_orange betterend:iron_bulb_lantern_orange \ humility-afm:led_orange \ mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true block.261=betterend:terminite_bulb_lantern_pink betterend:iron_bulb_lantern_pink \ humility-afm:led_pink \ mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true block.262=betterend:terminite_bulb_lantern_purple betterend:iron_bulb_lantern_purple \ betternether:whispering_gourd_lantern \ humility-afm:led_purple \ mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true block.263=betterend:terminite_bulb_lantern_red betterend:iron_bulb_lantern_red \ humility-afm:led_red \ mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true block.264=betterend:terminite_bulb_lantern_white betterend:iron_bulb_lantern_white \ humility-afm:led_white \ mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true block.265=betterend:iron_bulb_lantern_yellow betterend:terminite_bulb_lantern_yellow \ humility-afm:led_yellow \ mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true block.266=iron_ore gold_ore diamond_ore coal_ore copper_ore emerald_ore lapis_ore redstone_ore deepslate_iron_ore deepslate_gold_ore deepslate_diamond_ore deepslate_coal_ore deepslate_copper_ore deepslate_emerald_ore deepslate_lapis_ore deepslate_redstone_ore ####### ----- reflective translucents / glass ----- ####### block.301=glass glass_pane \ diagonalwindows:minecraft/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 \ diagonalwindows:minecraft/blue_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 \ diagonalwindows:minecraft/cyan_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 \ diagonalwindows:minecraft/green_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 \ diagonalwindows:minecraft/light_gray_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 \ diagonalwindows:minecraft/magenta_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 \ diagonalwindows:minecraft/pink_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 \ diagonalwindows:minecraft/red_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 \ diagonalwindows:minecraft/yellow_stained_glass_pane block.318=slime_block block.319=honey_block block.320=ice frosted_ice block.321=nether_portal ####### ----- LPV shapes ----- ####### block.401=wool_carpets black_carpet blue_carpet brown_carpet cyan_carpet gray_carpet green_carpet light_blue_carpet light_gray_carpet lime_carpet magenta_carpet moss_carpet pale_moss_carpet orange_carpet pink_carpet purple_carpet red_carpet white_carpet yellow_carpet block.402=acacia_door:facing=north:open=false bamboo_door:facing=north:open=false birch_door:facing=north:open=false cherry_door:facing=north:open=false crimson_door:facing=north:open=false dark_oak_door:facing=north:open=false iron_door:facing=north:open=false jungle_door:facing=north:open=false mangrove_door:facing=north:open=false oak_door:facing=north:open=false spruce_door:facing=north:open=false warped_door:facing=north:open=false copper_door:facing=north:open=false exposed_copper_door:facing=north:open=false weathered_copper_door:facing=north:open=false oxidized_copper_door:facing=north:open=false waxed_copper_door:facing=north:open=false waxed_exposed_copper_door:facing=north:open=false waxed_weathered_copper_door:facing=north:open=false waxed_oxidized_copper_door:facing=north:open=false acacia_door:facing=west:hinge=left:open=true bamboo_door:facing=west:hinge=left:open=true birch_door:facing=west:hinge=left:open=true cherry_door:facing=west:hinge=left:open=true crimson_door:facing=west:hinge=left:open=true dark_oak_door:facing=west:hinge=left:open=true iron_door:facing=west:hinge=left:open=true jungle_door:facing=west:hinge=left:open=true mangrove_door:facing=west:hinge=left:open=true oak_door:facing=west:hinge=left:open=true spruce_door:facing=west:hinge=left:open=true warped_door:facing=west:hinge=left:open=true copper_door:facing=west:hinge=left:open=true exposed_copper_door:facing=west:hinge=left:open=true weathered_copper_door:facing=west:hinge=left:open=true oxidized_copper_door:facing=west:hinge=left:open=true waxed_copper_door:facing=west:hinge=left:open=true waxed_exposed_copper_door:facing=west:hinge=left:open=true waxed_weathered_copper_door:facing=west:hinge=left:open=true waxed_oxidized_copper_door:facing=west:hinge=left:open=true acacia_door:facing=east:hinge=right:open=true bamboo_door:facing=east:hinge=right:open=true birch_door:facing=east:hinge=right:open=true cherry_door:facing=east:hinge=right:open=true crimson_door:facing=east:hinge=right:open=true dark_oak_door:facing=east:hinge=right:open=true iron_door:facing=east:hinge=right:open=true jungle_door:facing=east:hinge=right:open=true mangrove_door:facing=east:hinge=right:open=true oak_door:facing=east:hinge=right:open=true spruce_door:facing=east:hinge=right:open=true warped_door:facing=east:hinge=right:open=true copper_door:facing=east:hinge=right:open=true exposed_copper_door:facing=east:hinge=right:open=true weathered_copper_door:facing=east:hinge=right:open=true oxidized_copper_door:facing=east:hinge=right:open=true waxed_copper_door:facing=east:hinge=right:open=true waxed_exposed_copper_door:facing=east:hinge=right:open=true waxed_weathered_copper_door:facing=east:hinge=right:open=true waxed_oxidized_copper_door:facing=east:hinge=right:open=true block.403=acacia_door:facing=east:open=false bamboo_door:facing=east:open=false birch_door:facing=east:open=false cherry_door:facing=east:open=false crimson_door:facing=east:open=false dark_oak_door:facing=east:open=false iron_door:facing=east:open=false jungle_door:facing=east:open=false mangrove_door:facing=east:open=false oak_door:facing=east:open=false spruce_door:facing=east:open=false warped_door:facing=east:open=false copper_door:facing=east:open=false exposed_copper_door:facing=east:open=false weathered_copper_door:facing=east:open=false oxidized_copper_door:facing=east:open=false waxed_copper_door:facing=east:open=false waxed_exposed_copper_door:facing=east:open=false waxed_weathered_copper_door:facing=east:open=false waxed_oxidized_copper_door:facing=east:open=false acacia_door:facing=north:hinge=left:open=true bamboo_door:facing=north:hinge=left:open=true birch_door:facing=north:hinge=left:open=true cherry_door:facing=north:hinge=left:open=true crimson_door:facing=north:hinge=left:open=true dark_oak_door:facing=north:hinge=left:open=true iron_door:facing=north:hinge=left:open=true jungle_door:facing=north:hinge=left:open=true mangrove_door:facing=north:hinge=left:open=true oak_door:facing=north:hinge=left:open=true spruce_door:facing=north:hinge=left:open=true warped_door:facing=north:hinge=left:open=true copper_door:facing=north:hinge=left:open=true exposed_copper_door:facing=north:hinge=left:open=true weathered_copper_door:facing=north:hinge=left:open=true oxidized_copper_door:facing=north:hinge=left:open=true waxed_copper_door:facing=north:hinge=left:open=true waxed_exposed_copper_door:facing=north:hinge=left:open=true waxed_weathered_copper_door:facing=north:hinge=left:open=true waxed_oxidized_copper_door:facing=north:hinge=left:open=true acacia_door:facing=south:hinge=right:open=true bamboo_door:facing=south:hinge=right:open=true birch_door:facing=south:hinge=right:open=true cherry_door:facing=south:hinge=right:open=true crimson_door:facing=south:hinge=right:open=true dark_oak_door:facing=south:hinge=right:open=true iron_door:facing=south:hinge=right:open=true jungle_door:facing=south:hinge=right:open=true mangrove_door:facing=south:hinge=right:open=true oak_door:facing=south:hinge=right:open=true spruce_door:facing=south:hinge=right:open=true warped_door:facing=south:hinge=right:open=true copper_door:facing=south:hinge=right:open=true exposed_copper_door:facing=south:hinge=right:open=true weathered_copper_door:facing=south:hinge=right:open=true oxidized_copper_door:facing=south:hinge=right:open=true waxed_copper_door:facing=south:hinge=right:open=true waxed_exposed_copper_door:facing=south:hinge=right:open=true waxed_weathered_copper_door:facing=south:hinge=right:open=true waxed_oxidized_copper_door:facing=south:hinge=right:open=true block.404=acacia_door:facing=south:open=false bamboo_door:facing=south:open=false birch_door:facing=south:open=false cherry_door:facing=south:open=false crimson_door:facing=south:open=false dark_oak_door:facing=south:open=false iron_door:facing=south:open=false jungle_door:facing=south:open=false mangrove_door:facing=south:open=false oak_door:facing=south:open=false spruce_door:facing=south:open=false warped_door:facing=south:open=false copper_door:facing=south:open=false exposed_copper_door:facing=south:open=false weathered_copper_door:facing=south:open=false oxidized_copper_door:facing=south:open=false waxed_copper_door:facing=south:open=false waxed_exposed_copper_door:facing=south:open=false waxed_weathered_copper_door:facing=south:open=false waxed_oxidized_copper_door:facing=south:open=false acacia_door:facing=east:hinge=left:open=true bamboo_door:facing=east:hinge=left:open=true birch_door:facing=east:hinge=left:open=true cherry_door:facing=east:hinge=left:open=true crimson_door:facing=east:hinge=left:open=true dark_oak_door:facing=east:hinge=left:open=true iron_door:facing=east:hinge=left:open=true jungle_door:facing=east:hinge=left:open=true mangrove_door:facing=east:hinge=left:open=true oak_door:facing=east:hinge=left:open=true spruce_door:facing=east:hinge=left:open=true warped_door:facing=east:hinge=left:open=true copper_door:facing=east:hinge=left:open=true exposed_copper_door:facing=east:hinge=left:open=true weathered_copper_door:facing=east:hinge=left:open=true oxidized_copper_door:facing=east:hinge=left:open=true waxed_copper_door:facing=east:hinge=left:open=true waxed_exposed_copper_door:facing=east:hinge=left:open=true waxed_weathered_copper_door:facing=east:hinge=left:open=true waxed_oxidized_copper_door:facing=east:hinge=left:open=true acacia_door:facing=west:hinge=right:open=true bamboo_door:facing=west:hinge=right:open=true birch_door:facing=west:hinge=right:open=true cherry_door:facing=west:hinge=right:open=true crimson_door:facing=west:hinge=right:open=true dark_oak_door:facing=west:hinge=right:open=true iron_door:facing=west:hinge=right:open=true jungle_door:facing=west:hinge=right:open=true mangrove_door:facing=west:hinge=right:open=true oak_door:facing=west:hinge=right:open=true spruce_door:facing=west:hinge=right:open=true warped_door:facing=west:hinge=right:open=true copper_door:facing=west:hinge=right:open=true exposed_copper_door:facing=west:hinge=right:open=true weathered_copper_door:facing=west:hinge=right:open=true oxidized_copper_door:facing=west:hinge=right:open=true waxed_copper_door:facing=west:hinge=right:open=true waxed_exposed_copper_door:facing=west:hinge=right:open=true waxed_weathered_copper_door:facing=west:hinge=right:open=true waxed_oxidized_copper_door:facing=west:hinge=right:open=true block.405=acacia_door:facing=west:open=false bamboo_door:facing=west:open=false birch_door:facing=west:open=false cherry_door:facing=west:open=false crimson_door:facing=west:open=false dark_oak_door:facing=west:open=false iron_door:facing=west:open=false jungle_door:facing=west:open=false mangrove_door:facing=west:open=false oak_door:facing=west:open=false spruce_door:facing=west:open=false warped_door:facing=west:open=false copper_door:facing=west:open=false exposed_copper_door:facing=west:open=false weathered_copper_door:facing=west:open=false oxidized_copper_door:facing=west:open=false waxed_copper_door:facing=west:open=false waxed_exposed_copper_door:facing=west:open=false waxed_weathered_copper_door:facing=west:open=false waxed_oxidized_copper_door:facing=west:open=false acacia_door:facing=south:hinge=left:open=true bamboo_door:facing=south:hinge=left:open=true birch_door:facing=south:hinge=left:open=true cherry_door:facing=south:hinge=left:open=true crimson_door:facing=south:hinge=left:open=true dark_oak_door:facing=south:hinge=left:open=true iron_door:facing=south:hinge=left:open=true jungle_door:facing=south:hinge=left:open=true mangrove_door:facing=south:hinge=left:open=true oak_door:facing=south:hinge=left:open=true spruce_door:facing=south:hinge=left:open=true warped_door:facing=south:hinge=left:open=true copper_door:facing=south:hinge=left:open=true exposed_copper_door:facing=south:hinge=left:open=true weathered_copper_door:facing=south:hinge=left:open=true oxidized_copper_door:facing=south:hinge=left:open=true waxed_copper_door:facing=south:hinge=left:open=true waxed_exposed_copper_door:facing=south:hinge=left:open=true waxed_weathered_copper_door:facing=south:hinge=left:open=true waxed_oxidized_copper_door:facing=south:hinge=left:open=true acacia_door:facing=north:hinge=right:open=true bamboo_door:facing=north:hinge=right:open=true birch_door:facing=north:hinge=right:open=true cherry_door:facing=north:hinge=right:open=true crimson_door:facing=north:hinge=right:open=true dark_oak_door:facing=north:hinge=right:open=true iron_door:facing=north:hinge=right:open=true jungle_door:facing=north:hinge=right:open=true mangrove_door:facing=north:hinge=right:open=true oak_door:facing=north:hinge=right:open=true spruce_door:facing=north:hinge=right:open=true warped_door:facing=north:hinge=right:open=true copper_door:facing=north:hinge=right:open=true exposed_copper_door:facing=north:hinge=right:open=true weathered_copper_door:facing=north:hinge=right:open=true oxidized_copper_door:facing=north:hinge=right:open=true waxed_copper_door:facing=north:hinge=right:open=true waxed_exposed_copper_door:facing=north:hinge=right:open=true waxed_weathered_copper_door:facing=north:hinge=right:open=true waxed_oxidized_copper_door:facing=north:hinge=right:open=true block.406=acacia_pressure_plate bamboo_pressure_plate birch_pressure_plate cherry_pressure_plate crimson_pressure_plate dark_oak_pressure_plate heavy_weighted_pressure_plate jungle_pressure_plate light_weighted_pressure_plate mangrove_pressure_plate oak_pressure_plate polished_blackstone_pressure_plate spruce_pressure_plate stone_pressure_plate warped_pressure_plate block.407=acacia_slab:type=top bamboo_slab:type=top bamboo_mosaic_slab:type=top birch_slab:type=top cherry_slab:type=top crimson_slab:type=top dark_oak_slab:type=top jungle_slab:type=top mangrove_slab:type=top oak_slab:type=top spruce_slab:type=top warped_slab:type=top andesite_slab:type=top blackstone_slab:type=top brick_slab:type=top cobbled_deepslate_slab:type=top cobblestone_slab:type=top cut_copper_slab:type=top cut_red_sandstone_slab:type=top cut_sandstone_slab:type=top dark_prismarine_slab:type=top deepslate_brick_slab:type=top deepslate_tile_slab:type=top diorite_slab:type=top end_stone_brick_slab:type=top exposed_cut_copper_slab:type=top granite_slab:type=top mossy_cobblestone_slab:type=top mossy_stone_brick_slab:type=top mud_brick_slab:type=top nether_brick_slab:type=top oxidized_cut_copper_slab:type=top petrified_oak_slab:type=top polished_andesite_slab:type=top polished_blackstone_brick_slab:type=top polished_blackstone_slab:type=top polished_deepslate_slab:type=top polished_diorite_slab:type=top polished_granite_slab:type=top prismarine_brick_slab:type=top prismarine_slab:type=top purpur_slab:type=top quartz_slab:type=top red_nether_brick_slab:type=top red_sandstone_slab:type=top sandstone_slab:type=top smooth_quartz_slab:type=top smooth_red_sandstone_slab:type=top smooth_sandstone_slab:type=top smooth_stone_slab:type=top stone_brick_slab:type=top stone_slab:type=top waxed_cut_copper_slab:type=top waxed_exposed_cut_copper_slab:type=top waxed_oxidized_cut_copper_slab:type=top waxed_weathered_cut_copper_slab:type=top weathered_cut_copper_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 block.411=acacia_trapdoor:half=top:open=false bamboo_trapdoor:half=top:open=false birch_trapdoor:half=top:open=false cherry_trapdoor:half=top:open=false crimson_trapdoor:half=top:open=false dark_oak_trapdoor:half=top:open=false iron_trapdoor:half=top:open=false jungle_trapdoor:half=top:open=false mangrove_trapdoor:half=top:open=false oak_trapdoor:half=top:open=false spruce_trapdoor:half=top:open=false warped_trapdoor:half=top:open=false copper_trapdoor:half=top:open=false exposed_copper_trapdoor:half=top:open=false weathered_copper_trapdoor:half=top:open=false oxidized_copper_trapdoor:half=top:open=false waxed_copper_trapdoor:half=top:open=false waxed_exposed_copper_trapdoor:half=top:open=false waxed_weathered_copper_trapdoor:half=top:open=false waxed_oxidized_copper_trapdoor:half=top:open=false block.412=acacia_trapdoor:facing=north:open=true bamboo_trapdoor:facing=north:open=true birch_trapdoor:facing=north:open=true cherry_trapdoor:facing=north:open=true crimson_trapdoor:facing=north:open=true dark_oak_trapdoor:facing=north:open=true iron_trapdoor:facing=north:open=true jungle_trapdoor:facing=north:open=true mangrove_trapdoor:facing=north:open=true oak_trapdoor:facing=north:open=true spruce_trapdoor:facing=north:open=true warped_trapdoor:facing=north:open=true copper_trapdoor:facing=north:open=true exposed_copper_trapdoor:facing=north:open=true weathered_copper_trapdoor:facing=north:open=true oxidized_copper_trapdoor:facing=north:open=true waxed_copper_trapdoor:facing=north:open=true waxed_exposed_copper_trapdoor:facing=north:open=true waxed_weathered_copper_trapdoor:facing=north:open=true waxed_oxidized_copper_trapdoor:facing=north:open=true block.413=acacia_trapdoor:facing=east:open=true bamboo_trapdoor:facing=east:open=true birch_trapdoor:facing=east:open=true cherry_trapdoor:facing=east:open=true crimson_trapdoor:facing=east:open=true dark_oak_trapdoor:facing=east:open=true iron_trapdoor:facing=east:open=true jungle_trapdoor:facing=east:open=true mangrove_trapdoor:facing=east:open=true oak_trapdoor:facing=east:open=true spruce_trapdoor:facing=east:open=true warped_trapdoor:facing=east:open=true copper_trapdoor:facing=east:open=true exposed_copper_trapdoor:facing=east:open=true weathered_copper_trapdoor:facing=east:open=true oxidized_copper_trapdoor:facing=east:open=true waxed_copper_trapdoor:facing=east:open=true waxed_exposed_copper_trapdoor:facing=east:open=true waxed_weathered_copper_trapdoor:facing=east:open=true waxed_oxidized_copper_trapdoor:facing=east:open=true block.414=acacia_trapdoor:facing=south:open=true bamboo_trapdoor:facing=south:open=true birch_trapdoor:facing=south:open=true cherry_trapdoor:facing=south:open=true crimson_trapdoor:facing=south:open=true dark_oak_trapdoor:facing=south:open=true iron_trapdoor:facing=south:open=true jungle_trapdoor:facing=south:open=true mangrove_trapdoor:facing=south:open=true oak_trapdoor:facing=south:open=true spruce_trapdoor:facing=south:open=true warped_trapdoor:facing=south:open=true copper_trapdoor:facing=south:open=true exposed_copper_trapdoor:facing=south:open=true weathered_copper_trapdoor:facing=south:open=true oxidized_copper_trapdoor:facing=south:open=true waxed_copper_trapdoor:facing=south:open=true waxed_exposed_copper_trapdoor:facing=south:open=true waxed_weathered_copper_trapdoor:facing=south:open=true waxed_oxidized_copper_trapdoor:facing=south:open=true block.415=acacia_trapdoor:facing=west:open=true bamboo_trapdoor:facing=west:open=true birch_trapdoor:facing=west:open=true cherry_trapdoor:facing=west:open=true crimson_trapdoor:facing=west:open=true dark_oak_trapdoor:facing=west:open=true iron_trapdoor:facing=west:open=true jungle_trapdoor:facing=west:open=true mangrove_trapdoor:facing=west:open=true oak_trapdoor:facing=west:open=true spruce_trapdoor:facing=west:open=true warped_trapdoor:facing=west:open=true copper_trapdoor:facing=west:open=true exposed_copper_trapdoor:facing=west:open=true weathered_copper_trapdoor:facing=west:open=true oxidized_copper_trapdoor:facing=west:open=true waxed_copper_trapdoor:facing=west:open=true waxed_exposed_copper_trapdoor:facing=west:open=true waxed_weathered_copper_trapdoor:facing=west:open=true waxed_oxidized_copper_trapdoor:facing=west:open=true block.416=acacia_stairs:shape=straight:half=bottom:facing=north bamboo_stairs:shape=straight:half=bottom:facing=north bamboo_mosaic_stairs:shape=straight:half=bottom:facing=north birch_stairs:shape=straight:half=bottom:facing=north cherry_stairs:shape=straight:half=bottom:facing=north crimson_stairs:shape=straight:half=bottom:facing=north dark_oak_stairs:shape=straight:half=bottom:facing=north jungle_stairs:shape=straight:half=bottom:facing=north mangrove_stairs:shape=straight:half=bottom:facing=north oak_stairs:shape=straight:half=bottom:facing=north spruce_stairs:shape=straight:half=bottom:facing=north warped_stairs:shape=straight:half=bottom:facing=north andesite_stairs:shape=straight:half=bottom:facing=north blackstone_stairs:shape=straight:half=bottom:facing=north brick_stairs:shape=straight:half=bottom:facing=north cobbled_deepslate_stairs:shape=straight:half=bottom:facing=north cobblestone_stairs:shape=straight:half=bottom:facing=north cut_copper_stairs:shape=straight:half=bottom:facing=north dark_prismarine_stairs:shape=straight:half=bottom:facing=north deepslate_brick_stairs:shape=straight:half=bottom:facing=north deepslate_tile_stairs:shape=straight:half=bottom:facing=north diorite_stairs:shape=straight:half=bottom:facing=north end_stone_brick_stairs:shape=straight:half=bottom:facing=north exposed_cut_copper_stairs:shape=straight:half=bottom:facing=north granite_stairs:shape=straight:half=bottom:facing=north mossy_cobblestone_stairs:shape=straight:half=bottom:facing=north mossy_stone_brick_stairs:shape=straight:half=bottom:facing=north mud_brick_stairs:shape=straight:half=bottom:facing=north nether_brick_stairs:shape=straight:half=bottom:facing=north oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=north polished_andesite_stairs:shape=straight:half=bottom:facing=north polished_blackstone_brick_stairs:shape=straight:half=bottom:facing=north polished_blackstone_stairs:shape=straight:half=bottom:facing=north polished_deepslate_stairs:shape=straight:half=bottom:facing=north polished_diorite_stairs:shape=straight:half=bottom:facing=north polished_granite_stairs:shape=straight:half=bottom:facing=north prismarine_brick_stairs:shape=straight:half=bottom:facing=north prismarine_stairs:shape=straight:half=bottom:facing=north purpur_stairs:shape=straight:half=bottom:facing=north quartz_stairs:shape=straight:half=bottom:facing=north red_nether_brick_stairs:shape=straight:half=bottom:facing=north red_sandstone_stairs:shape=straight:half=bottom:facing=north sandstone_stairs:shape=straight:half=bottom:facing=north smooth_quartz_stairs:shape=straight:half=bottom:facing=north smooth_red_sandstone_stairs:shape=straight:half=bottom:facing=north smooth_sandstone_stairs:shape=straight:half=bottom:facing=north stone_brick_stairs:shape=straight:half=bottom:facing=north stone_stairs:shape=straight:half=bottom:facing=north waxed_cut_copper_stairs:shape=straight:half=bottom:facing=north waxed_exposed_cut_copper_stairs:shape=straight:half=bottom:facing=north waxed_oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=north waxed_weathered_cut_copper_stairs:shape=straight:half=bottom:facing=north weathered_cut_copper_stairs:shape=straight:half=bottom:facing=north createdeco:andesite_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:brass_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:cast_iron_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:copper_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:gold_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:iron_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:netherite_sheet_stairs:shape=straight:half=bottom:facing=north createdeco:zinc_sheet_stairs:shape=straight:half=bottom:facing=north create:cut_andesite_stairs:shape=straight:half=bottom:facing=north create:polished_cut_andesite_stairs:shape=straight:half=bottom:facing=north create:cut_andesite_brick_stairs:shape=straight:half=bottom:facing=north create:small_andesite_brick_stairs:shape=straight:half=bottom:facing=north create:cut_asurine_stairs:shape=straight:half=bottom:facing=north create:polished_cut_asurine_stairs:shape=straight:half=bottom:facing=north create:cut_asurine_brick_stairs:shape=straight:half=bottom:facing=north create:small_asurine_brick_stairs:shape=straight:half=bottom:facing=north create:cut_calcite_stairs:shape=straight:half=bottom:facing=north create:polished_cut_calcite_stairs:shape=straight:half=bottom:facing=north create:cut_calcite_brick_stairs:shape=straight:half=bottom:facing=north create:small_calcite_brick_stairs:shape=straight:half=bottom:facing=north create:cut_crimsite_stairs:shape=straight:half=bottom:facing=north create:polished_cut_crimsite_stairs:shape=straight:half=bottom:facing=north create:cut_crimsite_brick_stairs:shape=straight:half=bottom:facing=north create:small_crimsite_brick_stairs:shape=straight:half=bottom:facing=north create:cut_deepslate_stairs:shape=straight:half=bottom:facing=north create:polished_cut_deepslate_stairs:shape=straight:half=bottom:facing=north create:cut_deepslate_brick_stairs:shape=straight:half=bottom:facing=north create:small_deepslate_brick_stairs:shape=straight:half=bottom:facing=north create:cut_diorite_stairs:shape=straight:half=bottom:facing=north create:polished_cut_diorite_stairs:shape=straight:half=bottom:facing=north create:cut_diorite_brick_stairs:shape=straight:half=bottom:facing=north create:small_diorite_brick_stairs:shape=straight:half=bottom:facing=north create:cut_dripstone_stairs:shape=straight:half=bottom:facing=north create:polished_cut_dripstone_stairs:shape=straight:half=bottom:facing=north create:cut_dripstone_brick_stairs:shape=straight:half=bottom:facing=north create:small_dripstone_brick_stairs:shape=straight:half=bottom:facing=north create:cut_granite_stairs:shape=straight:half=bottom:facing=north create:polished_cut_granite_stairs:shape=straight:half=bottom:facing=north create:cut_granite_brick_stairs:shape=straight:half=bottom:facing=north create:small_granite_brick_stairs:shape=straight:half=bottom:facing=north create:cut_limestone_stairs:shape=straight:half=bottom:facing=north create:polished_cut_limestone_stairs:shape=straight:half=bottom:facing=north create:cut_limestone_brick_stairs:shape=straight:half=bottom:facing=north create:small_limestone_brick_stairs:shape=straight:half=bottom:facing=north create:cut_ochrum_stairs:shape=straight:half=bottom:facing=north create:polished_cut_ochrum_stairs:shape=straight:half=bottom:facing=north create:cut_ochrum_brick_stairs:shape=straight:half=bottom:facing=north create:small_ochrum_brick_stairs:shape=straight:half=bottom:facing=north create:cut_scorchia_stairs:shape=straight:half=bottom:facing=north create:polished_cut_scorchia_stairs:shape=straight:half=bottom:facing=north create:cut_scorchia_brick_stairs:shape=straight:half=bottom:facing=north create:small_scorchia_brick_stairs:shape=straight:half=bottom:facing=north create:cut_scoria_stairs:shape=straight:half=bottom:facing=north create:polished_cut_scoria_stairs:shape=straight:half=bottom:facing=north create:cut_scoria_brick_stairs:shape=straight:half=bottom:facing=north create:small_scoria_brick_stairs:shape=straight:half=bottom:facing=north create:cut_tuff_stairs:shape=straight:half=bottom:facing=north create:polished_cut_tuff_stairs:shape=straight:half=bottom:facing=north create:cut_tuff_brick_stairs:shape=straight:half=bottom:facing=north create:small_tuff_brick_stairs:shape=straight:half=bottom:facing=north create:cut_veridium_stairs:shape=straight:half=bottom:facing=north create:polished_cut_veridium_stairs:shape=straight:half=bottom:facing=north create:cut_veridium_brick_stairs:shape=straight:half=bottom:facing=north create:small_veridium_brick_stairs:shape=straight:half=bottom:facing=north create:copper_shingle_stairs:shape=straight:half=bottom:facing=north create:exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:waxed_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:waxed_exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:waxed_weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=north create:copper_tile_stairs:shape=straight:half=bottom:facing=north create:exposed_copper_tile_stairs:shape=straight:half=bottom:facing=north create:weathered_copper_tile_stairs:shape=straight:half=bottom:facing=north create:oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=north create:waxed_copper_tile_stairs:shape=straight:half=bottom:facing=north create:waxed_exposed_copper_tile_stairs:shape=straight:half=bottom:facing=north create:waxed_weathered_copper_tile_stairs:shape=straight:half=bottom:facing=north create:waxed_oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=north block.417=acacia_stairs:shape=straight:half=bottom:facing=east bamboo_stairs:shape=straight:half=bottom:facing=east bamboo_mosaic_stairs:shape=straight:half=bottom:facing=east birch_stairs:shape=straight:half=bottom:facing=east cherry_stairs:shape=straight:half=bottom:facing=east crimson_stairs:shape=straight:half=bottom:facing=east dark_oak_stairs:shape=straight:half=bottom:facing=east jungle_stairs:shape=straight:half=bottom:facing=east mangrove_stairs:shape=straight:half=bottom:facing=east oak_stairs:shape=straight:half=bottom:facing=east spruce_stairs:shape=straight:half=bottom:facing=east warped_stairs:shape=straight:half=bottom:facing=east andesite_stairs:shape=straight:half=bottom:facing=east blackstone_stairs:shape=straight:half=bottom:facing=east brick_stairs:shape=straight:half=bottom:facing=east cobbled_deepslate_stairs:shape=straight:half=bottom:facing=east cobblestone_stairs:shape=straight:half=bottom:facing=east cut_copper_stairs:shape=straight:half=bottom:facing=east dark_prismarine_stairs:shape=straight:half=bottom:facing=east deepslate_brick_stairs:shape=straight:half=bottom:facing=east deepslate_tile_stairs:shape=straight:half=bottom:facing=east diorite_stairs:shape=straight:half=bottom:facing=east end_stone_brick_stairs:shape=straight:half=bottom:facing=east exposed_cut_copper_stairs:shape=straight:half=bottom:facing=east granite_stairs:shape=straight:half=bottom:facing=east mossy_cobblestone_stairs:shape=straight:half=bottom:facing=east mossy_stone_brick_stairs:shape=straight:half=bottom:facing=east mud_brick_stairs:shape=straight:half=bottom:facing=east nether_brick_stairs:shape=straight:half=bottom:facing=east oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=east polished_andesite_stairs:shape=straight:half=bottom:facing=east polished_blackstone_brick_stairs:shape=straight:half=bottom:facing=east polished_blackstone_stairs:shape=straight:half=bottom:facing=east polished_deepslate_stairs:shape=straight:half=bottom:facing=east polished_diorite_stairs:shape=straight:half=bottom:facing=east polished_granite_stairs:shape=straight:half=bottom:facing=east prismarine_brick_stairs:shape=straight:half=bottom:facing=east prismarine_stairs:shape=straight:half=bottom:facing=east purpur_stairs:shape=straight:half=bottom:facing=east quartz_stairs:shape=straight:half=bottom:facing=east red_nether_brick_stairs:shape=straight:half=bottom:facing=east red_sandstone_stairs:shape=straight:half=bottom:facing=east sandstone_stairs:shape=straight:half=bottom:facing=east smooth_quartz_stairs:shape=straight:half=bottom:facing=east smooth_red_sandstone_stairs:shape=straight:half=bottom:facing=east smooth_sandstone_stairs:shape=straight:half=bottom:facing=east stone_brick_stairs:shape=straight:half=bottom:facing=east stone_stairs:shape=straight:half=bottom:facing=east waxed_cut_copper_stairs:shape=straight:half=bottom:facing=east waxed_exposed_cut_copper_stairs:shape=straight:half=bottom:facing=east waxed_oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=east waxed_weathered_cut_copper_stairs:shape=straight:half=bottom:facing=east weathered_cut_copper_stairs:shape=straight:half=bottom:facing=east createdeco:andesite_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:brass_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:cast_iron_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:copper_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:gold_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:iron_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:netherite_sheet_stairs:shape=straight:half=bottom:facing=east createdeco:zinc_sheet_stairs:shape=straight:half=bottom:facing=east create:cut_andesite_stairs:shape=straight:half=bottom:facing=east create:polished_cut_andesite_stairs:shape=straight:half=bottom:facing=east create:cut_andesite_brick_stairs:shape=straight:half=bottom:facing=east create:small_andesite_brick_stairs:shape=straight:half=bottom:facing=east create:cut_asurine_stairs:shape=straight:half=bottom:facing=east create:polished_cut_asurine_stairs:shape=straight:half=bottom:facing=east create:cut_asurine_brick_stairs:shape=straight:half=bottom:facing=east create:small_asurine_brick_stairs:shape=straight:half=bottom:facing=east create:cut_calcite_stairs:shape=straight:half=bottom:facing=east create:polished_cut_calcite_stairs:shape=straight:half=bottom:facing=east create:cut_calcite_brick_stairs:shape=straight:half=bottom:facing=east create:small_calcite_brick_stairs:shape=straight:half=bottom:facing=east create:cut_crimsite_stairs:shape=straight:half=bottom:facing=east create:polished_cut_crimsite_stairs:shape=straight:half=bottom:facing=east create:cut_crimsite_brick_stairs:shape=straight:half=bottom:facing=east create:small_crimsite_brick_stairs:shape=straight:half=bottom:facing=east create:cut_deepslate_stairs:shape=straight:half=bottom:facing=east create:polished_cut_deepslate_stairs:shape=straight:half=bottom:facing=east create:cut_deepslate_brick_stairs:shape=straight:half=bottom:facing=east create:small_deepslate_brick_stairs:shape=straight:half=bottom:facing=east create:cut_diorite_stairs:shape=straight:half=bottom:facing=east create:polished_cut_diorite_stairs:shape=straight:half=bottom:facing=east create:cut_diorite_brick_stairs:shape=straight:half=bottom:facing=east create:small_diorite_brick_stairs:shape=straight:half=bottom:facing=east create:cut_dripstone_stairs:shape=straight:half=bottom:facing=east create:polished_cut_dripstone_stairs:shape=straight:half=bottom:facing=east create:cut_dripstone_brick_stairs:shape=straight:half=bottom:facing=east create:small_dripstone_brick_stairs:shape=straight:half=bottom:facing=east create:cut_granite_stairs:shape=straight:half=bottom:facing=east create:polished_cut_granite_stairs:shape=straight:half=bottom:facing=east create:cut_granite_brick_stairs:shape=straight:half=bottom:facing=east create:small_granite_brick_stairs:shape=straight:half=bottom:facing=east create:cut_limestone_stairs:shape=straight:half=bottom:facing=east create:polished_cut_limestone_stairs:shape=straight:half=bottom:facing=east create:cut_limestone_brick_stairs:shape=straight:half=bottom:facing=east create:small_limestone_brick_stairs:shape=straight:half=bottom:facing=east create:cut_ochrum_stairs:shape=straight:half=bottom:facing=east create:polished_cut_ochrum_stairs:shape=straight:half=bottom:facing=east create:cut_ochrum_brick_stairs:shape=straight:half=bottom:facing=east create:small_ochrum_brick_stairs:shape=straight:half=bottom:facing=east create:cut_scorchia_stairs:shape=straight:half=bottom:facing=east create:polished_cut_scorchia_stairs:shape=straight:half=bottom:facing=east create:cut_scorchia_brick_stairs:shape=straight:half=bottom:facing=east create:small_scorchia_brick_stairs:shape=straight:half=bottom:facing=east create:cut_scoria_stairs:shape=straight:half=bottom:facing=east create:polished_cut_scoria_stairs:shape=straight:half=bottom:facing=east create:cut_scoria_brick_stairs:shape=straight:half=bottom:facing=east create:small_scoria_brick_stairs:shape=straight:half=bottom:facing=east create:cut_tuff_stairs:shape=straight:half=bottom:facing=east create:polished_cut_tuff_stairs:shape=straight:half=bottom:facing=east create:cut_tuff_brick_stairs:shape=straight:half=bottom:facing=east create:small_tuff_brick_stairs:shape=straight:half=bottom:facing=east create:cut_veridium_stairs:shape=straight:half=bottom:facing=east create:polished_cut_veridium_stairs:shape=straight:half=bottom:facing=east create:cut_veridium_brick_stairs:shape=straight:half=bottom:facing=east create:small_veridium_brick_stairs:shape=straight:half=bottom:facing=east create:copper_shingle_stairs:shape=straight:half=bottom:facing=east create:exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:waxed_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:waxed_exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:waxed_weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=east create:copper_tile_stairs:shape=straight:half=bottom:facing=east create:exposed_copper_tile_stairs:shape=straight:half=bottom:facing=east create:weathered_copper_tile_stairs:shape=straight:half=bottom:facing=east create:oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=east create:waxed_copper_tile_stairs:shape=straight:half=bottom:facing=east create:waxed_exposed_copper_tile_stairs:shape=straight:half=bottom:facing=east create:waxed_weathered_copper_tile_stairs:shape=straight:half=bottom:facing=east create:waxed_oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=east block.418=acacia_stairs:shape=straight:half=bottom:facing=south bamboo_stairs:shape=straight:half=bottom:facing=south bamboo_mosaic_stairs:shape=straight:half=bottom:facing=south birch_stairs:shape=straight:half=bottom:facing=south cherry_stairs:shape=straight:half=bottom:facing=south crimson_stairs:shape=straight:half=bottom:facing=south dark_oak_stairs:shape=straight:half=bottom:facing=south jungle_stairs:shape=straight:half=bottom:facing=south mangrove_stairs:shape=straight:half=bottom:facing=south oak_stairs:shape=straight:half=bottom:facing=south spruce_stairs:shape=straight:half=bottom:facing=south warped_stairs:shape=straight:half=bottom:facing=south andesite_stairs:shape=straight:half=bottom:facing=south blackstone_stairs:shape=straight:half=bottom:facing=south brick_stairs:shape=straight:half=bottom:facing=south cobbled_deepslate_stairs:shape=straight:half=bottom:facing=south cobblestone_stairs:shape=straight:half=bottom:facing=south cut_copper_stairs:shape=straight:half=bottom:facing=south dark_prismarine_stairs:shape=straight:half=bottom:facing=south deepslate_brick_stairs:shape=straight:half=bottom:facing=south deepslate_tile_stairs:shape=straight:half=bottom:facing=south diorite_stairs:shape=straight:half=bottom:facing=south end_stone_brick_stairs:shape=straight:half=bottom:facing=south exposed_cut_copper_stairs:shape=straight:half=bottom:facing=south granite_stairs:shape=straight:half=bottom:facing=south mossy_cobblestone_stairs:shape=straight:half=bottom:facing=south mossy_stone_brick_stairs:shape=straight:half=bottom:facing=south mud_brick_stairs:shape=straight:half=bottom:facing=south nether_brick_stairs:shape=straight:half=bottom:facing=south oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=south polished_andesite_stairs:shape=straight:half=bottom:facing=south polished_blackstone_brick_stairs:shape=straight:half=bottom:facing=south polished_blackstone_stairs:shape=straight:half=bottom:facing=south polished_deepslate_stairs:shape=straight:half=bottom:facing=south polished_diorite_stairs:shape=straight:half=bottom:facing=south polished_granite_stairs:shape=straight:half=bottom:facing=south prismarine_brick_stairs:shape=straight:half=bottom:facing=south prismarine_stairs:shape=straight:half=bottom:facing=south purpur_stairs:shape=straight:half=bottom:facing=south quartz_stairs:shape=straight:half=bottom:facing=south red_nether_brick_stairs:shape=straight:half=bottom:facing=south red_sandstone_stairs:shape=straight:half=bottom:facing=south sandstone_stairs:shape=straight:half=bottom:facing=south smooth_quartz_stairs:shape=straight:half=bottom:facing=south smooth_red_sandstone_stairs:shape=straight:half=bottom:facing=south smooth_sandstone_stairs:shape=straight:half=bottom:facing=south stone_brick_stairs:shape=straight:half=bottom:facing=south stone_stairs:shape=straight:half=bottom:facing=south waxed_cut_copper_stairs:shape=straight:half=bottom:facing=south waxed_exposed_cut_copper_stairs:shape=straight:half=bottom:facing=south waxed_oxidized_cut_copper_stairs:shape=straight:half=bottom:facing=south waxed_weathered_cut_copper_stairs:shape=straight:half=bottom:facing=south weathered_cut_copper_stairs:shape=straight:half=bottom:facing=south createdeco:andesite_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:brass_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:cast_iron_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:copper_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:gold_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:iron_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:netherite_sheet_stairs:shape=straight:half=bottom:facing=south createdeco:zinc_sheet_stairs:shape=straight:half=bottom:facing=south create:cut_andesite_stairs:shape=straight:half=bottom:facing=south create:polished_cut_andesite_stairs:shape=straight:half=bottom:facing=south create:cut_andesite_brick_stairs:shape=straight:half=bottom:facing=south create:small_andesite_brick_stairs:shape=straight:half=bottom:facing=south create:cut_asurine_stairs:shape=straight:half=bottom:facing=south create:polished_cut_asurine_stairs:shape=straight:half=bottom:facing=south create:cut_asurine_brick_stairs:shape=straight:half=bottom:facing=south create:small_asurine_brick_stairs:shape=straight:half=bottom:facing=south create:cut_calcite_stairs:shape=straight:half=bottom:facing=south create:polished_cut_calcite_stairs:shape=straight:half=bottom:facing=south create:cut_calcite_brick_stairs:shape=straight:half=bottom:facing=south create:small_calcite_brick_stairs:shape=straight:half=bottom:facing=south create:cut_crimsite_stairs:shape=straight:half=bottom:facing=south create:polished_cut_crimsite_stairs:shape=straight:half=bottom:facing=south create:cut_crimsite_brick_stairs:shape=straight:half=bottom:facing=south create:small_crimsite_brick_stairs:shape=straight:half=bottom:facing=south create:cut_deepslate_stairs:shape=straight:half=bottom:facing=south create:polished_cut_deepslate_stairs:shape=straight:half=bottom:facing=south create:cut_deepslate_brick_stairs:shape=straight:half=bottom:facing=south create:small_deepslate_brick_stairs:shape=straight:half=bottom:facing=south create:cut_diorite_stairs:shape=straight:half=bottom:facing=south create:polished_cut_diorite_stairs:shape=straight:half=bottom:facing=south create:cut_diorite_brick_stairs:shape=straight:half=bottom:facing=south create:small_diorite_brick_stairs:shape=straight:half=bottom:facing=south create:cut_dripstone_stairs:shape=straight:half=bottom:facing=south create:polished_cut_dripstone_stairs:shape=straight:half=bottom:facing=south create:cut_dripstone_brick_stairs:shape=straight:half=bottom:facing=south create:small_dripstone_brick_stairs:shape=straight:half=bottom:facing=south create:cut_granite_stairs:shape=straight:half=bottom:facing=south create:polished_cut_granite_stairs:shape=straight:half=bottom:facing=south create:cut_granite_brick_stairs:shape=straight:half=bottom:facing=south create:small_granite_brick_stairs:shape=straight:half=bottom:facing=south create:cut_limestone_stairs:shape=straight:half=bottom:facing=south create:polished_cut_limestone_stairs:shape=straight:half=bottom:facing=south create:cut_limestone_brick_stairs:shape=straight:half=bottom:facing=south create:small_limestone_brick_stairs:shape=straight:half=bottom:facing=south create:cut_ochrum_stairs:shape=straight:half=bottom:facing=south create:polished_cut_ochrum_stairs:shape=straight:half=bottom:facing=south create:cut_ochrum_brick_stairs:shape=straight:half=bottom:facing=south create:small_ochrum_brick_stairs:shape=straight:half=bottom:facing=south create:cut_scorchia_stairs:shape=straight:half=bottom:facing=south create:polished_cut_scorchia_stairs:shape=straight:half=bottom:facing=south create:cut_scorchia_brick_stairs:shape=straight:half=bottom:facing=south create:small_scorchia_brick_stairs:shape=straight:half=bottom:facing=south create:cut_scoria_stairs:shape=straight:half=bottom:facing=south create:polished_cut_scoria_stairs:shape=straight:half=bottom:facing=south create:cut_scoria_brick_stairs:shape=straight:half=bottom:facing=south create:small_scoria_brick_stairs:shape=straight:half=bottom:facing=south create:cut_tuff_stairs:shape=straight:half=bottom:facing=south create:polished_cut_tuff_stairs:shape=straight:half=bottom:facing=south create:cut_tuff_brick_stairs:shape=straight:half=bottom:facing=south create:small_tuff_brick_stairs:shape=straight:half=bottom:facing=south create:cut_veridium_stairs:shape=straight:half=bottom:facing=south create:polished_cut_veridium_stairs:shape=straight:half=bottom:facing=south create:cut_veridium_brick_stairs:shape=straight:half=bottom:facing=south create:small_veridium_brick_stairs:shape=straight:half=bottom:facing=south create:copper_shingle_stairs:shape=straight:half=bottom:facing=south create:exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:waxed_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:waxed_exposed_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:waxed_weathered_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=bottom:facing=south create:copper_tile_stairs:shape=straight:half=bottom:facing=south create:exposed_copper_tile_stairs:shape=straight:half=bottom:facing=south create:weathered_copper_tile_stairs:shape=straight:half=bottom:facing=south create:oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=south create:waxed_copper_tile_stairs:shape=straight:half=bottom:facing=south create:waxed_exposed_copper_tile_stairs:shape=straight:half=bottom:facing=south create:waxed_weathered_copper_tile_stairs:shape=straight:half=bottom:facing=south create:waxed_oxidized_copper_tile_stairs:shape=straight:half=bottom:facing=south 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 \ 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 \ 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 \ 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 \ 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 \ 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 \ 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 \ 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 \ 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 block.429=acacia_stairs:shape=straight:half=top:facing=east bamboo_stairs:shape=straight:half=top:facing=east bamboo_mosaic_stairs:shape=straight:half=top:facing=east birch_stairs:shape=straight:half=top:facing=east cherry_stairs:shape=straight:half=top:facing=east crimson_stairs:shape=straight:half=top:facing=east dark_oak_stairs:shape=straight:half=top:facing=east jungle_stairs:shape=straight:half=top:facing=east mangrove_stairs:shape=straight:half=top:facing=east oak_stairs:shape=straight:half=top:facing=east spruce_stairs:shape=straight:half=top:facing=east warped_stairs:shape=straight:half=top:facing=east andesite_stairs:shape=straight:half=top:facing=east blackstone_stairs:shape=straight:half=top:facing=east brick_stairs:shape=straight:half=top:facing=east cobbled_deepslate_stairs:shape=straight:half=top:facing=east cobblestone_stairs:shape=straight:half=top:facing=east cut_copper_stairs:shape=straight:half=top:facing=east dark_prismarine_stairs:shape=straight:half=top:facing=east deepslate_brick_stairs:shape=straight:half=top:facing=east deepslate_tile_stairs:shape=straight:half=top:facing=east diorite_stairs:shape=straight:half=top:facing=east end_stone_brick_stairs:shape=straight:half=top:facing=east exposed_cut_copper_stairs:shape=straight:half=top:facing=east granite_stairs:shape=straight:half=top:facing=east mossy_cobblestone_stairs:shape=straight:half=top:facing=east mossy_stone_brick_stairs:shape=straight:half=top:facing=east mud_brick_stairs:shape=straight:half=top:facing=east nether_brick_stairs:shape=straight:half=top:facing=east oxidized_cut_copper_stairs:shape=straight:half=top:facing=east polished_andesite_stairs:shape=straight:half=top:facing=east polished_blackstone_brick_stairs:shape=straight:half=top:facing=east polished_blackstone_stairs:shape=straight:half=top:facing=east polished_deepslate_stairs:shape=straight:half=top:facing=east polished_diorite_stairs:shape=straight:half=top:facing=east polished_granite_stairs:shape=straight:half=top:facing=east prismarine_brick_stairs:shape=straight:half=top:facing=east prismarine_stairs:shape=straight:half=top:facing=east purpur_stairs:shape=straight:half=top:facing=east quartz_stairs:shape=straight:half=top:facing=east red_nether_brick_stairs:shape=straight:half=top:facing=east red_sandstone_stairs:shape=straight:half=top:facing=east sandstone_stairs:shape=straight:half=top:facing=east smooth_quartz_stairs:shape=straight:half=top:facing=east smooth_red_sandstone_stairs:shape=straight:half=top:facing=east smooth_sandstone_stairs:shape=straight:half=top:facing=east stone_brick_stairs:shape=straight:half=top:facing=east stone_stairs:shape=straight:half=top:facing=east waxed_cut_copper_stairs:shape=straight:half=top:facing=east waxed_exposed_cut_copper_stairs:shape=straight:half=top:facing=east waxed_oxidized_cut_copper_stairs:shape=straight:half=top:facing=east waxed_weathered_cut_copper_stairs:shape=straight:half=top:facing=east weathered_cut_copper_stairs:shape=straight:half=top:facing=east createdeco:andesite_sheet_stairs:shape=straight:half=top:facing=east createdeco:brass_sheet_stairs:shape=straight:half=top:facing=east createdeco:cast_iron_sheet_stairs:shape=straight:half=top:facing=east createdeco:copper_sheet_stairs:shape=straight:half=top:facing=east createdeco:gold_sheet_stairs:shape=straight:half=top:facing=east createdeco:iron_sheet_stairs:shape=straight:half=top:facing=east createdeco:netherite_sheet_stairs:shape=straight:half=top:facing=east createdeco:zinc_sheet_stairs:shape=straight:half=top:facing=east create:cut_andesite_stairs:shape=straight:half=top:facing=east create:polished_cut_andesite_stairs:shape=straight:half=top:facing=east create:cut_andesite_brick_stairs:shape=straight:half=top:facing=east create:small_andesite_brick_stairs:shape=straight:half=top:facing=east create:cut_asurine_stairs:shape=straight:half=top:facing=east create:polished_cut_asurine_stairs:shape=straight:half=top:facing=east create:cut_asurine_brick_stairs:shape=straight:half=top:facing=east create:small_asurine_brick_stairs:shape=straight:half=top:facing=east create:cut_calcite_stairs:shape=straight:half=top:facing=east create:polished_cut_calcite_stairs:shape=straight:half=top:facing=east create:cut_calcite_brick_stairs:shape=straight:half=top:facing=east create:small_calcite_brick_stairs:shape=straight:half=top:facing=east create:cut_crimsite_stairs:shape=straight:half=top:facing=east create:polished_cut_crimsite_stairs:shape=straight:half=top:facing=east create:cut_crimsite_brick_stairs:shape=straight:half=top:facing=east create:small_crimsite_brick_stairs:shape=straight:half=top:facing=east create:cut_deepslate_stairs:shape=straight:half=top:facing=east create:polished_cut_deepslate_stairs:shape=straight:half=top:facing=east create:cut_deepslate_brick_stairs:shape=straight:half=top:facing=east create:small_deepslate_brick_stairs:shape=straight:half=top:facing=east create:cut_diorite_stairs:shape=straight:half=top:facing=east create:polished_cut_diorite_stairs:shape=straight:half=top:facing=east create:cut_diorite_brick_stairs:shape=straight:half=top:facing=east create:small_diorite_brick_stairs:shape=straight:half=top:facing=east create:cut_dripstone_stairs:shape=straight:half=top:facing=east create:polished_cut_dripstone_stairs:shape=straight:half=top:facing=east create:cut_dripstone_brick_stairs:shape=straight:half=top:facing=east create:small_dripstone_brick_stairs:shape=straight:half=top:facing=east create:cut_granite_stairs:shape=straight:half=top:facing=east create:polished_cut_granite_stairs:shape=straight:half=top:facing=east create:cut_granite_brick_stairs:shape=straight:half=top:facing=east create:small_granite_brick_stairs:shape=straight:half=top:facing=east create:cut_limestone_stairs:shape=straight:half=top:facing=east create:polished_cut_limestone_stairs:shape=straight:half=top:facing=east create:cut_limestone_brick_stairs:shape=straight:half=top:facing=east create:small_limestone_brick_stairs:shape=straight:half=top:facing=east create:cut_ochrum_stairs:shape=straight:half=top:facing=east create:polished_cut_ochrum_stairs:shape=straight:half=top:facing=east create:cut_ochrum_brick_stairs:shape=straight:half=top:facing=east create:small_ochrum_brick_stairs:shape=straight:half=top:facing=east create:cut_scorchia_stairs:shape=straight:half=top:facing=east create:polished_cut_scorchia_stairs:shape=straight:half=top:facing=east create:cut_scorchia_brick_stairs:shape=straight:half=top:facing=east create:small_scorchia_brick_stairs:shape=straight:half=top:facing=east create:cut_scoria_stairs:shape=straight:half=top:facing=east create:polished_cut_scoria_stairs:shape=straight:half=top:facing=east create:cut_scoria_brick_stairs:shape=straight:half=top:facing=east create:small_scoria_brick_stairs:shape=straight:half=top:facing=east create:cut_tuff_stairs:shape=straight:half=top:facing=east create:polished_cut_tuff_stairs:shape=straight:half=top:facing=east create:cut_tuff_brick_stairs:shape=straight:half=top:facing=east create:small_tuff_brick_stairs:shape=straight:half=top:facing=east create:cut_veridium_stairs:shape=straight:half=top:facing=east create:polished_cut_veridium_stairs:shape=straight:half=top:facing=east create:cut_veridium_brick_stairs:shape=straight:half=top:facing=east create:small_veridium_brick_stairs:shape=straight:half=top:facing=east create:copper_shingle_stairs:shape=straight:half=top:facing=east create:exposed_copper_shingle_stairs:shape=straight:half=top:facing=east create:weathered_copper_shingle_stairs:shape=straight:half=top:facing=east create:oxidized_copper_shingle_stairs:shape=straight:half=top:facing=east create:waxed_copper_shingle_stairs:shape=straight:half=top:facing=east create:waxed_exposed_copper_shingle_stairs:shape=straight:half=top:facing=east create:waxed_weathered_copper_shingle_stairs:shape=straight:half=top:facing=east create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=top:facing=east create:copper_tile_stairs:shape=straight:half=top:facing=east create:exposed_copper_tile_stairs:shape=straight:half=top:facing=east create:weathered_copper_tile_stairs:shape=straight:half=top:facing=east create:oxidized_copper_tile_stairs:shape=straight:half=top:facing=east create:waxed_copper_tile_stairs:shape=straight:half=top:facing=east create:waxed_exposed_copper_tile_stairs:shape=straight:half=top:facing=east create:waxed_weathered_copper_tile_stairs:shape=straight:half=top:facing=east create:waxed_oxidized_copper_tile_stairs:shape=straight:half=top:facing=east block.430=acacia_stairs:shape=straight:half=top:facing=south bamboo_stairs:shape=straight:half=top:facing=south bamboo_mosaic_stairs:shape=straight:half=top:facing=south birch_stairs:shape=straight:half=top:facing=south cherry_stairs:shape=straight:half=top:facing=south crimson_stairs:shape=straight:half=top:facing=south dark_oak_stairs:shape=straight:half=top:facing=south jungle_stairs:shape=straight:half=top:facing=south mangrove_stairs:shape=straight:half=top:facing=south oak_stairs:shape=straight:half=top:facing=south spruce_stairs:shape=straight:half=top:facing=south warped_stairs:shape=straight:half=top:facing=south andesite_stairs:shape=straight:half=top:facing=south blackstone_stairs:shape=straight:half=top:facing=south brick_stairs:shape=straight:half=top:facing=south cobbled_deepslate_stairs:shape=straight:half=top:facing=south cobblestone_stairs:shape=straight:half=top:facing=south cut_copper_stairs:shape=straight:half=top:facing=south dark_prismarine_stairs:shape=straight:half=top:facing=south deepslate_brick_stairs:shape=straight:half=top:facing=south deepslate_tile_stairs:shape=straight:half=top:facing=south diorite_stairs:shape=straight:half=top:facing=south end_stone_brick_stairs:shape=straight:half=top:facing=south exposed_cut_copper_stairs:shape=straight:half=top:facing=south granite_stairs:shape=straight:half=top:facing=south mossy_cobblestone_stairs:shape=straight:half=top:facing=south mossy_stone_brick_stairs:shape=straight:half=top:facing=south mud_brick_stairs:shape=straight:half=top:facing=south nether_brick_stairs:shape=straight:half=top:facing=south oxidized_cut_copper_stairs:shape=straight:half=top:facing=south polished_andesite_stairs:shape=straight:half=top:facing=south polished_blackstone_brick_stairs:shape=straight:half=top:facing=south polished_blackstone_stairs:shape=straight:half=top:facing=south polished_deepslate_stairs:shape=straight:half=top:facing=south polished_diorite_stairs:shape=straight:half=top:facing=south polished_granite_stairs:shape=straight:half=top:facing=south prismarine_brick_stairs:shape=straight:half=top:facing=south prismarine_stairs:shape=straight:half=top:facing=south purpur_stairs:shape=straight:half=top:facing=south quartz_stairs:shape=straight:half=top:facing=south red_nether_brick_stairs:shape=straight:half=top:facing=south red_sandstone_stairs:shape=straight:half=top:facing=south sandstone_stairs:shape=straight:half=top:facing=south smooth_quartz_stairs:shape=straight:half=top:facing=south smooth_red_sandstone_stairs:shape=straight:half=top:facing=south smooth_sandstone_stairs:shape=straight:half=top:facing=south stone_brick_stairs:shape=straight:half=top:facing=south stone_stairs:shape=straight:half=top:facing=south waxed_cut_copper_stairs:shape=straight:half=top:facing=south waxed_exposed_cut_copper_stairs:shape=straight:half=top:facing=south waxed_oxidized_cut_copper_stairs:shape=straight:half=top:facing=south waxed_weathered_cut_copper_stairs:shape=straight:half=top:facing=south weathered_cut_copper_stairs:shape=straight:half=top:facing=south createdeco:andesite_sheet_stairs:shape=straight:half=top:facing=south createdeco:brass_sheet_stairs:shape=straight:half=top:facing=south createdeco:cast_iron_sheet_stairs:shape=straight:half=top:facing=south createdeco:copper_sheet_stairs:shape=straight:half=top:facing=south createdeco:gold_sheet_stairs:shape=straight:half=top:facing=south createdeco:iron_sheet_stairs:shape=straight:half=top:facing=south createdeco:netherite_sheet_stairs:shape=straight:half=top:facing=south createdeco:zinc_sheet_stairs:shape=straight:half=top:facing=south create:cut_andesite_stairs:shape=straight:half=top:facing=south create:polished_cut_andesite_stairs:shape=straight:half=top:facing=south create:cut_andesite_brick_stairs:shape=straight:half=top:facing=south create:small_andesite_brick_stairs:shape=straight:half=top:facing=south create:cut_asurine_stairs:shape=straight:half=top:facing=south create:polished_cut_asurine_stairs:shape=straight:half=top:facing=south create:cut_asurine_brick_stairs:shape=straight:half=top:facing=south create:small_asurine_brick_stairs:shape=straight:half=top:facing=south create:cut_calcite_stairs:shape=straight:half=top:facing=south create:polished_cut_calcite_stairs:shape=straight:half=top:facing=south create:cut_calcite_brick_stairs:shape=straight:half=top:facing=south create:small_calcite_brick_stairs:shape=straight:half=top:facing=south create:cut_crimsite_stairs:shape=straight:half=top:facing=south create:polished_cut_crimsite_stairs:shape=straight:half=top:facing=south create:cut_crimsite_brick_stairs:shape=straight:half=top:facing=south create:small_crimsite_brick_stairs:shape=straight:half=top:facing=south create:cut_deepslate_stairs:shape=straight:half=top:facing=south create:polished_cut_deepslate_stairs:shape=straight:half=top:facing=south create:cut_deepslate_brick_stairs:shape=straight:half=top:facing=south create:small_deepslate_brick_stairs:shape=straight:half=top:facing=south create:cut_diorite_stairs:shape=straight:half=top:facing=south create:polished_cut_diorite_stairs:shape=straight:half=top:facing=south create:cut_diorite_brick_stairs:shape=straight:half=top:facing=south create:small_diorite_brick_stairs:shape=straight:half=top:facing=south create:cut_dripstone_stairs:shape=straight:half=top:facing=south create:polished_cut_dripstone_stairs:shape=straight:half=top:facing=south create:cut_dripstone_brick_stairs:shape=straight:half=top:facing=south create:small_dripstone_brick_stairs:shape=straight:half=top:facing=south create:cut_granite_stairs:shape=straight:half=top:facing=south create:polished_cut_granite_stairs:shape=straight:half=top:facing=south create:cut_granite_brick_stairs:shape=straight:half=top:facing=south create:small_granite_brick_stairs:shape=straight:half=top:facing=south create:cut_limestone_stairs:shape=straight:half=top:facing=south create:polished_cut_limestone_stairs:shape=straight:half=top:facing=south create:cut_limestone_brick_stairs:shape=straight:half=top:facing=south create:small_limestone_brick_stairs:shape=straight:half=top:facing=south create:cut_ochrum_stairs:shape=straight:half=top:facing=south create:polished_cut_ochrum_stairs:shape=straight:half=top:facing=south create:cut_ochrum_brick_stairs:shape=straight:half=top:facing=south create:small_ochrum_brick_stairs:shape=straight:half=top:facing=south create:cut_scorchia_stairs:shape=straight:half=top:facing=south create:polished_cut_scorchia_stairs:shape=straight:half=top:facing=south create:cut_scorchia_brick_stairs:shape=straight:half=top:facing=south create:small_scorchia_brick_stairs:shape=straight:half=top:facing=south create:cut_scoria_stairs:shape=straight:half=top:facing=south create:polished_cut_scoria_stairs:shape=straight:half=top:facing=south create:cut_scoria_brick_stairs:shape=straight:half=top:facing=south create:small_scoria_brick_stairs:shape=straight:half=top:facing=south create:cut_tuff_stairs:shape=straight:half=top:facing=south create:polished_cut_tuff_stairs:shape=straight:half=top:facing=south create:cut_tuff_brick_stairs:shape=straight:half=top:facing=south create:small_tuff_brick_stairs:shape=straight:half=top:facing=south create:cut_veridium_stairs:shape=straight:half=top:facing=south create:polished_cut_veridium_stairs:shape=straight:half=top:facing=south create:cut_veridium_brick_stairs:shape=straight:half=top:facing=south create:small_veridium_brick_stairs:shape=straight:half=top:facing=south create:copper_shingle_stairs:shape=straight:half=top:facing=south create:exposed_copper_shingle_stairs:shape=straight:half=top:facing=south create:weathered_copper_shingle_stairs:shape=straight:half=top:facing=south create:oxidized_copper_shingle_stairs:shape=straight:half=top:facing=south create:waxed_copper_shingle_stairs:shape=straight:half=top:facing=south create:waxed_exposed_copper_shingle_stairs:shape=straight:half=top:facing=south create:waxed_weathered_copper_shingle_stairs:shape=straight:half=top:facing=south create:waxed_oxidized_copper_shingle_stairs:shape=straight:half=top:facing=south create:copper_tile_stairs:shape=straight:half=top:facing=south create:exposed_copper_tile_stairs:shape=straight:half=top:facing=south create:weathered_copper_tile_stairs:shape=straight:half=top:facing=south create:oxidized_copper_tile_stairs:shape=straight:half=top:facing=south create:waxed_copper_tile_stairs:shape=straight:half=top:facing=south create:waxed_exposed_copper_tile_stairs:shape=straight:half=top:facing=south create:waxed_weathered_copper_tile_stairs:shape=straight:half=top:facing=south create:waxed_oxidized_copper_tile_stairs:shape=straight:half=top:facing=south 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 \ 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 \ 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 \ 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 \ 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 \ 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 \ 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 \ 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 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 block.457=cobblestone_wall:north=none:east=tall:south=none:west=none:up=true andesite_wall:north=none:east=tall:south=none:west=none:up=true blackstone_wall:north=none:east=tall:south=none:west=none:up=true brick_wall:north=none:east=tall:south=none:west=none:up=true cobbled_deepslate_wall:north=none:east=tall:south=none:west=none:up=true deepslate_brick_wall:north=none:east=tall:south=none:west=none:up=true deepslate_tile_wall:north=none:east=tall:south=none:west=none:up=true diorite_wall:north=none:east=tall:south=none:west=none:up=true end_stone_brick_wall:north=none:east=tall:south=none:west=none:up=true granite_wall:north=none:east=tall:south=none:west=none:up=true mossy_cobblestone_wall:north=none:east=tall:south=none:west=none:up=true mossy_stone_brick_wall:north=none:east=tall:south=none:west=none:up=true mud_brick_wall:north=none:east=tall:south=none:west=none:up=true nether_brick_wall:north=none:east=tall:south=none:west=none:up=true polished_blackstone_brick_wall:north=none:east=tall:south=none:west=none:up=true polished_blackstone_wall:north=none:east=tall:south=none:west=none:up=true polished_deepslate_wall:north=none:east=tall:south=none:west=none:up=true prismarine_wall:north=none:east=tall:south=none:west=none:up=true red_nether_brick_wall:north=none:east=tall:south=none:west=none:up=true red_sandstone_wall:north=none:east=tall:south=none:west=none:up=true sandstone_wall:north=none:east=tall:south=none:west=none:up=true stone_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_andesite_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_andesite_wall:north=none:east=tall:south=none:west=none:up=true create:cut_andesite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_andesite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_asurine_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_asurine_wall:north=none:east=tall:south=none:west=none:up=true create:cut_asurine_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_asurine_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_calcite_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_calcite_wall:north=none:east=tall:south=none:west=none:up=true create:cut_calcite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_calcite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_crimsite_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=tall:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_crimsite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_deepslate_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=tall:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_deepslate_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_diorite_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_diorite_wall:north=none:east=tall:south=none:west=none:up=true create:cut_diorite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_diorite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_dripstone_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=tall:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_dripstone_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_granite_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_granite_wall:north=none:east=tall:south=none:west=none:up=true create:cut_granite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_granite_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_limestone_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_limestone_wall:north=none:east=tall:south=none:west=none:up=true create:cut_limestone_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_limestone_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_ochrum_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=tall:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_ochrum_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_scorchia_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=tall:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_scorchia_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_scoria_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_scoria_wall:north=none:east=tall:south=none:west=none:up=true create:cut_scoria_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_scoria_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_tuff_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_tuff_wall:north=none:east=tall:south=none:west=none:up=true create:cut_tuff_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_tuff_brick_wall:north=none:east=tall:south=none:west=none:up=true create:cut_veridium_wall:north=none:east=tall:south=none:west=none:up=true create:polished_cut_veridium_wall:north=none:east=tall:south=none:west=none:up=true create:cut_veridium_brick_wall:north=none:east=tall:south=none:west=none:up=true create:small_veridium_brick_wall:north=none:east=tall:south=none:west=none:up=true block.458=cobblestone_wall:north=none:east=none:south=tall:west=none:up=true andesite_wall:north=none:east=none:south=tall:west=none:up=true blackstone_wall:north=none:east=none:south=tall:west=none:up=true brick_wall:north=none:east=none:south=tall:west=none:up=true cobbled_deepslate_wall:north=none:east=none:south=tall:west=none:up=true deepslate_brick_wall:north=none:east=none:south=tall:west=none:up=true deepslate_tile_wall:north=none:east=none:south=tall:west=none:up=true diorite_wall:north=none:east=none:south=tall:west=none:up=true end_stone_brick_wall:north=none:east=none:south=tall:west=none:up=true granite_wall:north=none:east=none:south=tall:west=none:up=true mossy_cobblestone_wall:north=none:east=none:south=tall:west=none:up=true mossy_stone_brick_wall:north=none:east=none:south=tall:west=none:up=true mud_brick_wall:north=none:east=none:south=tall:west=none:up=true nether_brick_wall:north=none:east=none:south=tall:west=none:up=true polished_blackstone_brick_wall:north=none:east=none:south=tall:west=none:up=true polished_blackstone_wall:north=none:east=none:south=tall:west=none:up=true polished_deepslate_wall:north=none:east=none:south=tall:west=none:up=true prismarine_wall:north=none:east=none:south=tall:west=none:up=true red_nether_brick_wall:north=none:east=none:south=tall:west=none:up=true red_sandstone_wall:north=none:east=none:south=tall:west=none:up=true sandstone_wall:north=none:east=none:south=tall:west=none:up=true stone_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_andesite_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_andesite_wall:north=none:east=none:south=tall:west=none:up=true create:cut_andesite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_andesite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_asurine_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_asurine_wall:north=none:east=none:south=tall:west=none:up=true create:cut_asurine_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_asurine_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_calcite_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_calcite_wall:north=none:east=none:south=tall:west=none:up=true create:cut_calcite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_calcite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_crimsite_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=tall:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_crimsite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_deepslate_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=tall:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_deepslate_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_diorite_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_diorite_wall:north=none:east=none:south=tall:west=none:up=true create:cut_diorite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_diorite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_dripstone_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=tall:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_dripstone_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_granite_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_granite_wall:north=none:east=none:south=tall:west=none:up=true create:cut_granite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_granite_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_limestone_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_limestone_wall:north=none:east=none:south=tall:west=none:up=true create:cut_limestone_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_limestone_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_ochrum_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=tall:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_ochrum_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_scorchia_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=tall:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_scorchia_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_scoria_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_scoria_wall:north=none:east=none:south=tall:west=none:up=true create:cut_scoria_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_scoria_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_tuff_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_tuff_wall:north=none:east=none:south=tall:west=none:up=true create:cut_tuff_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_tuff_brick_wall:north=none:east=none:south=tall:west=none:up=true create:cut_veridium_wall:north=none:east=none:south=tall:west=none:up=true create:polished_cut_veridium_wall:north=none:east=none:south=tall:west=none:up=true create:cut_veridium_brick_wall:north=none:east=none:south=tall:west=none:up=true create:small_veridium_brick_wall:north=none:east=none:south=tall:west=none:up=true block.459=cobblestone_wall:north=none:east=none:south=none:west=tall:up=true andesite_wall:north=none:east=none:south=none:west=tall:up=true blackstone_wall:north=none:east=none:south=none:west=tall:up=true brick_wall:north=none:east=none:south=none:west=tall:up=true cobbled_deepslate_wall:north=none:east=none:south=none:west=tall:up=true deepslate_brick_wall:north=none:east=none:south=none:west=tall:up=true deepslate_tile_wall:north=none:east=none:south=none:west=tall:up=true diorite_wall:north=none:east=none:south=none:west=tall:up=true end_stone_brick_wall:north=none:east=none:south=none:west=tall:up=true granite_wall:north=none:east=none:south=none:west=tall:up=true mossy_cobblestone_wall:north=none:east=none:south=none:west=tall:up=true mossy_stone_brick_wall:north=none:east=none:south=none:west=tall:up=true mud_brick_wall:north=none:east=none:south=none:west=tall:up=true nether_brick_wall:north=none:east=none:south=none:west=tall:up=true polished_blackstone_brick_wall:north=none:east=none:south=none:west=tall:up=true polished_blackstone_wall:north=none:east=none:south=none:west=tall:up=true polished_deepslate_wall:north=none:east=none:south=none:west=tall:up=true prismarine_wall:north=none:east=none:south=none:west=tall:up=true red_nether_brick_wall:north=none:east=none:south=none:west=tall:up=true red_sandstone_wall:north=none:east=none:south=none:west=tall:up=true sandstone_wall:north=none:east=none:south=none:west=tall:up=true stone_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_andesite_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_andesite_wall:north=none:east=none:south=none:west=tall:up=true create:cut_andesite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_andesite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_asurine_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_asurine_wall:north=none:east=none:south=none:west=tall:up=true create:cut_asurine_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_asurine_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_calcite_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_calcite_wall:north=none:east=none:south=none:west=tall:up=true create:cut_calcite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_calcite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_crimsite_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=none:west=tall:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_crimsite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_deepslate_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=none:west=tall:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_deepslate_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_diorite_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_diorite_wall:north=none:east=none:south=none:west=tall:up=true create:cut_diorite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_diorite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_dripstone_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=none:west=tall:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_dripstone_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_granite_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_granite_wall:north=none:east=none:south=none:west=tall:up=true create:cut_granite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_granite_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_limestone_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_limestone_wall:north=none:east=none:south=none:west=tall:up=true create:cut_limestone_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_limestone_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_ochrum_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=none:west=tall:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_ochrum_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_scorchia_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=none:west=tall:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_scorchia_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_scoria_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_scoria_wall:north=none:east=none:south=none:west=tall:up=true create:cut_scoria_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_scoria_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_tuff_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_tuff_wall:north=none:east=none:south=none:west=tall:up=true create:cut_tuff_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_tuff_brick_wall:north=none:east=none:south=none:west=tall:up=true create:cut_veridium_wall:north=none:east=none:south=none:west=tall:up=true create:polished_cut_veridium_wall:north=none:east=none:south=none:west=tall:up=true create:cut_veridium_brick_wall:north=none:east=none:south=none:west=tall:up=true create:small_veridium_brick_wall:north=none:east=none:south=none:west=tall:up=true block.460=cobblestone_wall:north=tall:east=none:south=tall:west=none:up=true andesite_wall:north=tall:east=none:south=tall:west=none:up=true blackstone_wall:north=tall:east=none:south=tall:west=none:up=true brick_wall:north=tall:east=none:south=tall:west=none:up=true cobbled_deepslate_wall:north=tall:east=none:south=tall:west=none:up=true deepslate_brick_wall:north=tall:east=none:south=tall:west=none:up=true deepslate_tile_wall:north=tall:east=none:south=tall:west=none:up=true diorite_wall:north=tall:east=none:south=tall:west=none:up=true end_stone_brick_wall:north=tall:east=none:south=tall:west=none:up=true granite_wall:north=tall:east=none:south=tall:west=none:up=true mossy_cobblestone_wall:north=tall:east=none:south=tall:west=none:up=true mossy_stone_brick_wall:north=tall:east=none:south=tall:west=none:up=true mud_brick_wall:north=tall:east=none:south=tall:west=none:up=true nether_brick_wall:north=tall:east=none:south=tall:west=none:up=true polished_blackstone_brick_wall:north=tall:east=none:south=tall:west=none:up=true polished_blackstone_wall:north=tall:east=none:south=tall:west=none:up=true polished_deepslate_wall:north=tall:east=none:south=tall:west=none:up=true prismarine_wall:north=tall:east=none:south=tall:west=none:up=true red_nether_brick_wall:north=tall:east=none:south=tall:west=none:up=true red_sandstone_wall:north=tall:east=none:south=tall:west=none:up=true sandstone_wall:north=tall:east=none:south=tall:west=none:up=true stone_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_andesite_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_andesite_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_andesite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_andesite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_asurine_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_asurine_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_asurine_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_asurine_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_calcite_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_calcite_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_calcite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_calcite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_crimsite_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_crimsite_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_crimsite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_crimsite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_deepslate_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_deepslate_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_deepslate_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_deepslate_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_diorite_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_diorite_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_diorite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_diorite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_dripstone_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_dripstone_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_dripstone_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_dripstone_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_granite_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_granite_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_granite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_granite_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_limestone_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_limestone_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_limestone_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_limestone_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_ochrum_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_ochrum_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_ochrum_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_ochrum_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_scorchia_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_scorchia_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_scorchia_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_scorchia_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_scoria_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_scoria_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_scoria_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_scoria_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_tuff_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_tuff_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_tuff_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_tuff_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_veridium_wall:north=tall:east=none:south=tall:west=none:up=true create:polished_cut_veridium_wall:north=tall:east=none:south=tall:west=none:up=true create:cut_veridium_brick_wall:north=tall:east=none:south=tall:west=none:up=true create:small_veridium_brick_wall:north=tall:east=none:south=tall:west=none:up=true block.461=cobblestone_wall:north=none:east=tall:south=none:west=tall:up=true andesite_wall:north=none:east=tall:south=none:west=tall:up=true blackstone_wall:north=none:east=tall:south=none:west=tall:up=true brick_wall:north=none:east=tall:south=none:west=tall:up=true cobbled_deepslate_wall:north=none:east=tall:south=none:west=tall:up=true deepslate_brick_wall:north=none:east=tall:south=none:west=tall:up=true deepslate_tile_wall:north=none:east=tall:south=none:west=tall:up=true diorite_wall:north=none:east=tall:south=none:west=tall:up=true end_stone_brick_wall:north=none:east=tall:south=none:west=tall:up=true granite_wall:north=none:east=tall:south=none:west=tall:up=true mossy_cobblestone_wall:north=none:east=tall:south=none:west=tall:up=true mossy_stone_brick_wall:north=none:east=tall:south=none:west=tall:up=true mud_brick_wall:north=none:east=tall:south=none:west=tall:up=true nether_brick_wall:north=none:east=tall:south=none:west=tall:up=true polished_blackstone_brick_wall:north=none:east=tall:south=none:west=tall:up=true polished_blackstone_wall:north=none:east=tall:south=none:west=tall:up=true polished_deepslate_wall:north=none:east=tall:south=none:west=tall:up=true prismarine_wall:north=none:east=tall:south=none:west=tall:up=true red_nether_brick_wall:north=none:east=tall:south=none:west=tall:up=true red_sandstone_wall:north=none:east=tall:south=none:west=tall:up=true sandstone_wall:north=none:east=tall:south=none:west=tall:up=true stone_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_andesite_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_andesite_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_andesite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_andesite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_asurine_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_asurine_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_asurine_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_asurine_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_calcite_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_calcite_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_calcite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_calcite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_crimsite_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_crimsite_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_crimsite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_crimsite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_deepslate_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_deepslate_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_deepslate_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_deepslate_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_diorite_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_diorite_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_diorite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_diorite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_dripstone_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_dripstone_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_dripstone_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_dripstone_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_granite_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_granite_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_granite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_granite_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_limestone_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_limestone_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_limestone_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_limestone_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_ochrum_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_ochrum_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_ochrum_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_ochrum_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_scorchia_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_scorchia_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_scorchia_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_scorchia_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_scoria_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_scoria_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_scoria_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_scoria_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_tuff_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_tuff_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_tuff_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_tuff_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_veridium_wall:north=none:east=tall:south=none:west=tall:up=true create:polished_cut_veridium_wall:north=none:east=tall:south=none:west=tall:up=true create:cut_veridium_brick_wall:north=none:east=tall:south=none:west=tall:up=true create:small_veridium_brick_wall:north=none:east=tall:south=none:west=tall:up=true block.462=cobblestone_wall:north=tall:east=none:south=none:west=tall:up=true andesite_wall:north=tall:east=none:south=none:west=tall:up=true blackstone_wall:north=tall:east=none:south=none:west=tall:up=true brick_wall:north=tall:east=none:south=none:west=tall:up=true cobbled_deepslate_wall:north=tall:east=none:south=none:west=tall:up=true deepslate_brick_wall:north=tall:east=none:south=none:west=tall:up=true deepslate_tile_wall:north=tall:east=none:south=none:west=tall:up=true diorite_wall:north=tall:east=none:south=none:west=tall:up=true end_stone_brick_wall:north=tall:east=none:south=none:west=tall:up=true granite_wall:north=tall:east=none:south=none:west=tall:up=true mossy_cobblestone_wall:north=tall:east=none:south=none:west=tall:up=true mossy_stone_brick_wall:north=tall:east=none:south=none:west=tall:up=true mud_brick_wall:north=tall:east=none:south=none:west=tall:up=true nether_brick_wall:north=tall:east=none:south=none:west=tall:up=true polished_blackstone_brick_wall:north=tall:east=none:south=none:west=tall:up=true polished_blackstone_wall:north=tall:east=none:south=none:west=tall:up=true polished_deepslate_wall:north=tall:east=none:south=none:west=tall:up=true prismarine_wall:north=tall:east=none:south=none:west=tall:up=true red_nether_brick_wall:north=tall:east=none:south=none:west=tall:up=true red_sandstone_wall:north=tall:east=none:south=none:west=tall:up=true sandstone_wall:north=tall:east=none:south=none:west=tall:up=true stone_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_andesite_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_andesite_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_andesite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_andesite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_asurine_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_asurine_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_asurine_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_asurine_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_calcite_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_calcite_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_calcite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_calcite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_crimsite_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_crimsite_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_crimsite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_crimsite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_deepslate_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_deepslate_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_deepslate_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_deepslate_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_diorite_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_diorite_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_diorite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_diorite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_dripstone_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_dripstone_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_dripstone_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_dripstone_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_granite_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_granite_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_granite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_granite_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_limestone_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_limestone_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_limestone_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_limestone_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_ochrum_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_ochrum_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_ochrum_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_ochrum_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_scorchia_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_scorchia_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_scorchia_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_scorchia_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_scoria_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_scoria_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_scoria_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_scoria_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_tuff_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_tuff_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_tuff_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_tuff_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_veridium_wall:north=tall:east=none:south=none:west=tall:up=true create:polished_cut_veridium_wall:north=tall:east=none:south=none:west=tall:up=true create:cut_veridium_brick_wall:north=tall:east=none:south=none:west=tall:up=true create:small_veridium_brick_wall:north=tall:east=none:south=none:west=tall:up=true block.463=cobblestone_wall:north=tall:east=tall:south=none:west=none:up=true andesite_wall:north=tall:east=tall:south=none:west=none:up=true blackstone_wall:north=tall:east=tall:south=none:west=none:up=true brick_wall:north=tall:east=tall:south=none:west=none:up=true cobbled_deepslate_wall:north=tall:east=tall:south=none:west=none:up=true deepslate_brick_wall:north=tall:east=tall:south=none:west=none:up=true deepslate_tile_wall:north=tall:east=tall:south=none:west=none:up=true diorite_wall:north=tall:east=tall:south=none:west=none:up=true end_stone_brick_wall:north=tall:east=tall:south=none:west=none:up=true granite_wall:north=tall:east=tall:south=none:west=none:up=true mossy_cobblestone_wall:north=tall:east=tall:south=none:west=none:up=true mossy_stone_brick_wall:north=tall:east=tall:south=none:west=none:up=true mud_brick_wall:north=tall:east=tall:south=none:west=none:up=true nether_brick_wall:north=tall:east=tall:south=none:west=none:up=true polished_blackstone_brick_wall:north=tall:east=tall:south=none:west=none:up=true polished_blackstone_wall:north=tall:east=tall:south=none:west=none:up=true polished_deepslate_wall:north=tall:east=tall:south=none:west=none:up=true prismarine_wall:north=tall:east=tall:south=none:west=none:up=true red_nether_brick_wall:north=tall:east=tall:south=none:west=none:up=true red_sandstone_wall:north=tall:east=tall:south=none:west=none:up=true sandstone_wall:north=tall:east=tall:south=none:west=none:up=true stone_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_andesite_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_andesite_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_andesite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_andesite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_asurine_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_asurine_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_asurine_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_asurine_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_calcite_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_calcite_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_calcite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_calcite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_crimsite_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_crimsite_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_crimsite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_crimsite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_deepslate_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_deepslate_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_deepslate_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_deepslate_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_diorite_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_diorite_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_diorite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_diorite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_dripstone_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_dripstone_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_dripstone_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_dripstone_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_granite_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_granite_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_granite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_granite_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_limestone_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_limestone_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_limestone_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_limestone_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_ochrum_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_ochrum_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_ochrum_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_ochrum_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_scorchia_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_scorchia_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_scorchia_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_scorchia_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_scoria_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_scoria_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_scoria_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_scoria_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_tuff_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_tuff_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_tuff_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_tuff_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_veridium_wall:north=tall:east=tall:south=none:west=none:up=true create:polished_cut_veridium_wall:north=tall:east=tall:south=none:west=none:up=true create:cut_veridium_brick_wall:north=tall:east=tall:south=none:west=none:up=true create:small_veridium_brick_wall:north=tall:east=tall:south=none:west=none:up=true block.464=cobblestone_wall:north=none:east=none:south=tall:west=tall:up=true andesite_wall:north=none:east=none:south=tall:west=tall:up=true blackstone_wall:north=none:east=none:south=tall:west=tall:up=true brick_wall:north=none:east=none:south=tall:west=tall:up=true cobbled_deepslate_wall:north=none:east=none:south=tall:west=tall:up=true deepslate_brick_wall:north=none:east=none:south=tall:west=tall:up=true deepslate_tile_wall:north=none:east=none:south=tall:west=tall:up=true diorite_wall:north=none:east=none:south=tall:west=tall:up=true end_stone_brick_wall:north=none:east=none:south=tall:west=tall:up=true granite_wall:north=none:east=none:south=tall:west=tall:up=true mossy_cobblestone_wall:north=none:east=none:south=tall:west=tall:up=true mossy_stone_brick_wall:north=none:east=none:south=tall:west=tall:up=true mud_brick_wall:north=none:east=none:south=tall:west=tall:up=true nether_brick_wall:north=none:east=none:south=tall:west=tall:up=true polished_blackstone_brick_wall:north=none:east=none:south=tall:west=tall:up=true polished_blackstone_wall:north=none:east=none:south=tall:west=tall:up=true polished_deepslate_wall:north=none:east=none:south=tall:west=tall:up=true prismarine_wall:north=none:east=none:south=tall:west=tall:up=true red_nether_brick_wall:north=none:east=none:south=tall:west=tall:up=true red_sandstone_wall:north=none:east=none:south=tall:west=tall:up=true sandstone_wall:north=none:east=none:south=tall:west=tall:up=true stone_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_andesite_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_andesite_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_andesite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_andesite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_asurine_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_asurine_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_asurine_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_asurine_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_calcite_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_calcite_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_calcite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_calcite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_crimsite_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_crimsite_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_crimsite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_crimsite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_deepslate_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_deepslate_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_deepslate_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_deepslate_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_diorite_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_diorite_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_diorite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_diorite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_dripstone_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_dripstone_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_dripstone_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_dripstone_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_granite_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_granite_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_granite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_granite_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_limestone_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_limestone_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_limestone_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_limestone_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_ochrum_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_ochrum_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_ochrum_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_ochrum_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_scorchia_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_scorchia_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_scorchia_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_scorchia_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_scoria_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_scoria_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_scoria_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_scoria_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_tuff_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_tuff_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_tuff_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_tuff_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_veridium_wall:north=none:east=none:south=tall:west=tall:up=true create:polished_cut_veridium_wall:north=none:east=none:south=tall:west=tall:up=true create:cut_veridium_brick_wall:north=none:east=none:south=tall:west=tall:up=true create:small_veridium_brick_wall:north=none:east=none:south=tall:west=tall:up=true block.465=cobblestone_wall:north=none:east=tall:south=tall:west=none:up=true andesite_wall:north=none:east=tall:south=tall:west=none:up=true blackstone_wall:north=none:east=tall:south=tall:west=none:up=true brick_wall:north=none:east=tall:south=tall:west=none:up=true cobbled_deepslate_wall:north=none:east=tall:south=tall:west=none:up=true deepslate_brick_wall:north=none:east=tall:south=tall:west=none:up=true deepslate_tile_wall:north=none:east=tall:south=tall:west=none:up=true diorite_wall:north=none:east=tall:south=tall:west=none:up=true end_stone_brick_wall:north=none:east=tall:south=tall:west=none:up=true granite_wall:north=none:east=tall:south=tall:west=none:up=true mossy_cobblestone_wall:north=none:east=tall:south=tall:west=none:up=true mossy_stone_brick_wall:north=none:east=tall:south=tall:west=none:up=true mud_brick_wall:north=none:east=tall:south=tall:west=none:up=true nether_brick_wall:north=none:east=tall:south=tall:west=none:up=true polished_blackstone_brick_wall:north=none:east=tall:south=tall:west=none:up=true polished_blackstone_wall:north=none:east=tall:south=tall:west=none:up=true polished_deepslate_wall:north=none:east=tall:south=tall:west=none:up=true prismarine_wall:north=none:east=tall:south=tall:west=none:up=true red_nether_brick_wall:north=none:east=tall:south=tall:west=none:up=true red_sandstone_wall:north=none:east=tall:south=tall:west=none:up=true sandstone_wall:north=none:east=tall:south=tall:west=none:up=true stone_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_andesite_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_andesite_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_andesite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_andesite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_asurine_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_asurine_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_asurine_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_asurine_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_calcite_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_calcite_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_calcite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_calcite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_crimsite_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_crimsite_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_crimsite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_crimsite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_deepslate_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_deepslate_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_deepslate_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_deepslate_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_diorite_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_diorite_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_diorite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_diorite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_dripstone_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_dripstone_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_dripstone_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_dripstone_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_granite_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_granite_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_granite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_granite_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_limestone_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_limestone_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_limestone_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_limestone_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_ochrum_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_ochrum_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_ochrum_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_ochrum_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_scorchia_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_scorchia_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_scorchia_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_scorchia_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_scoria_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_scoria_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_scoria_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_scoria_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_tuff_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_tuff_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_tuff_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_tuff_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_veridium_wall:north=none:east=tall:south=tall:west=none:up=true create:polished_cut_veridium_wall:north=none:east=tall:south=tall:west=none:up=true create:cut_veridium_brick_wall:north=none:east=tall:south=tall:west=none:up=true create:small_veridium_brick_wall:north=none:east=tall:south=tall:west=none:up=true block.466=cobblestone_wall:north=tall:east=none:south=tall:west=tall:up=true andesite_wall:north=tall:east=none:south=tall:west=tall:up=true blackstone_wall:north=tall:east=none:south=tall:west=tall:up=true brick_wall:north=tall:east=none:south=tall:west=tall:up=true cobbled_deepslate_wall:north=tall:east=none:south=tall:west=tall:up=true deepslate_brick_wall:north=tall:east=none:south=tall:west=tall:up=true deepslate_tile_wall:north=tall:east=none:south=tall:west=tall:up=true diorite_wall:north=tall:east=none:south=tall:west=tall:up=true end_stone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true granite_wall:north=tall:east=none:south=tall:west=tall:up=true mossy_cobblestone_wall:north=tall:east=none:south=tall:west=tall:up=true mossy_stone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true mud_brick_wall:north=tall:east=none:south=tall:west=tall:up=true nether_brick_wall:north=tall:east=none:south=tall:west=tall:up=true polished_blackstone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true polished_blackstone_wall:north=tall:east=none:south=tall:west=tall:up=true polished_deepslate_wall:north=tall:east=none:south=tall:west=tall:up=true prismarine_wall:north=tall:east=none:south=tall:west=tall:up=true red_nether_brick_wall:north=tall:east=none:south=tall:west=tall:up=true red_sandstone_wall:north=tall:east=none:south=tall:west=tall:up=true sandstone_wall:north=tall:east=none:south=tall:west=tall:up=true stone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_andesite_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_andesite_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_andesite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_andesite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_asurine_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_asurine_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_asurine_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_asurine_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_calcite_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_calcite_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_calcite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_calcite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_crimsite_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_crimsite_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_crimsite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_crimsite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_deepslate_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_deepslate_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_deepslate_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_deepslate_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_diorite_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_diorite_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_diorite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_diorite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_dripstone_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_dripstone_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_dripstone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_dripstone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_granite_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_granite_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_granite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_granite_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_limestone_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_limestone_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_limestone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_limestone_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_ochrum_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_ochrum_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_ochrum_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_ochrum_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_scorchia_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_scorchia_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_scorchia_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_scorchia_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_scoria_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_scoria_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_scoria_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_scoria_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_tuff_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_tuff_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_tuff_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_tuff_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_veridium_wall:north=tall:east=none:south=tall:west=tall:up=true create:polished_cut_veridium_wall:north=tall:east=none:south=tall:west=tall:up=true create:cut_veridium_brick_wall:north=tall:east=none:south=tall:west=tall:up=true create:small_veridium_brick_wall:north=tall:east=none:south=tall:west=tall:up=true block.467=cobblestone_wall:north=tall:east=tall:south=tall:west=none:up=true andesite_wall:north=tall:east=tall:south=tall:west=none:up=true blackstone_wall:north=tall:east=tall:south=tall:west=none:up=true brick_wall:north=tall:east=tall:south=tall:west=none:up=true cobbled_deepslate_wall:north=tall:east=tall:south=tall:west=none:up=true deepslate_brick_wall:north=tall:east=tall:south=tall:west=none:up=true deepslate_tile_wall:north=tall:east=tall:south=tall:west=none:up=true diorite_wall:north=tall:east=tall:south=tall:west=none:up=true end_stone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true granite_wall:north=tall:east=tall:south=tall:west=none:up=true mossy_cobblestone_wall:north=tall:east=tall:south=tall:west=none:up=true mossy_stone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true mud_brick_wall:north=tall:east=tall:south=tall:west=none:up=true nether_brick_wall:north=tall:east=tall:south=tall:west=none:up=true polished_blackstone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true polished_blackstone_wall:north=tall:east=tall:south=tall:west=none:up=true polished_deepslate_wall:north=tall:east=tall:south=tall:west=none:up=true prismarine_wall:north=tall:east=tall:south=tall:west=none:up=true red_nether_brick_wall:north=tall:east=tall:south=tall:west=none:up=true red_sandstone_wall:north=tall:east=tall:south=tall:west=none:up=true sandstone_wall:north=tall:east=tall:south=tall:west=none:up=true stone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_andesite_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_andesite_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_andesite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_andesite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_asurine_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_asurine_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_asurine_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_asurine_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_calcite_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_calcite_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_calcite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_calcite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_crimsite_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_crimsite_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_crimsite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_crimsite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_deepslate_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_deepslate_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_deepslate_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_deepslate_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_diorite_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_diorite_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_diorite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_diorite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_dripstone_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_dripstone_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_dripstone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_dripstone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_granite_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_granite_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_granite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_granite_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_limestone_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_limestone_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_limestone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_limestone_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_ochrum_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_ochrum_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_ochrum_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_ochrum_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_scorchia_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_scorchia_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_scorchia_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_scorchia_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_scoria_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_scoria_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_scoria_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_scoria_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_tuff_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_tuff_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_tuff_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_tuff_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_veridium_wall:north=tall:east=tall:south=tall:west=none:up=true create:polished_cut_veridium_wall:north=tall:east=tall:south=tall:west=none:up=true create:cut_veridium_brick_wall:north=tall:east=tall:south=tall:west=none:up=true create:small_veridium_brick_wall:north=tall:east=tall:south=tall:west=none:up=true block.468=cobblestone_wall:north=tall:east=tall:south=none:west=tall:up=true andesite_wall:north=tall:east=tall:south=none:west=tall:up=true blackstone_wall:north=tall:east=tall:south=none:west=tall:up=true brick_wall:north=tall:east=tall:south=none:west=tall:up=true cobbled_deepslate_wall:north=tall:east=tall:south=none:west=tall:up=true deepslate_brick_wall:north=tall:east=tall:south=none:west=tall:up=true deepslate_tile_wall:north=tall:east=tall:south=none:west=tall:up=true diorite_wall:north=tall:east=tall:south=none:west=tall:up=true end_stone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true granite_wall:north=tall:east=tall:south=none:west=tall:up=true mossy_cobblestone_wall:north=tall:east=tall:south=none:west=tall:up=true mossy_stone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true mud_brick_wall:north=tall:east=tall:south=none:west=tall:up=true nether_brick_wall:north=tall:east=tall:south=none:west=tall:up=true polished_blackstone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true polished_blackstone_wall:north=tall:east=tall:south=none:west=tall:up=true polished_deepslate_wall:north=tall:east=tall:south=none:west=tall:up=true prismarine_wall:north=tall:east=tall:south=none:west=tall:up=true red_nether_brick_wall:north=tall:east=tall:south=none:west=tall:up=true red_sandstone_wall:north=tall:east=tall:south=none:west=tall:up=true sandstone_wall:north=tall:east=tall:south=none:west=tall:up=true stone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_andesite_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_andesite_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_andesite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_andesite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_asurine_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_asurine_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_asurine_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_asurine_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_calcite_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_calcite_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_calcite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_calcite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_crimsite_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_crimsite_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_crimsite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_crimsite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_deepslate_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_deepslate_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_deepslate_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_deepslate_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_diorite_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_diorite_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_diorite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_diorite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_dripstone_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_dripstone_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_dripstone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_dripstone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_granite_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_granite_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_granite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_granite_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_limestone_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_limestone_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_limestone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_limestone_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_ochrum_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_ochrum_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_ochrum_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_ochrum_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_scorchia_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_scorchia_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_scorchia_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_scorchia_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_scoria_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_scoria_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_scoria_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_scoria_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_tuff_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_tuff_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_tuff_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_tuff_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_veridium_wall:north=tall:east=tall:south=none:west=tall:up=true create:polished_cut_veridium_wall:north=tall:east=tall:south=none:west=tall:up=true create:cut_veridium_brick_wall:north=tall:east=tall:south=none:west=tall:up=true create:small_veridium_brick_wall:north=tall:east=tall:south=none:west=tall:up=true block.469=cobblestone_wall:north=none:east=tall:south=tall:west=tall:up=true andesite_wall:north=none:east=tall:south=tall:west=tall:up=true blackstone_wall:north=none:east=tall:south=tall:west=tall:up=true brick_wall:north=none:east=tall:south=tall:west=tall:up=true cobbled_deepslate_wall:north=none:east=tall:south=tall:west=tall:up=true deepslate_brick_wall:north=none:east=tall:south=tall:west=tall:up=true deepslate_tile_wall:north=none:east=tall:south=tall:west=tall:up=true diorite_wall:north=none:east=tall:south=tall:west=tall:up=true end_stone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true granite_wall:north=none:east=tall:south=tall:west=tall:up=true mossy_cobblestone_wall:north=none:east=tall:south=tall:west=tall:up=true mossy_stone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true mud_brick_wall:north=none:east=tall:south=tall:west=tall:up=true nether_brick_wall:north=none:east=tall:south=tall:west=tall:up=true polished_blackstone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true polished_blackstone_wall:north=none:east=tall:south=tall:west=tall:up=true polished_deepslate_wall:north=none:east=tall:south=tall:west=tall:up=true prismarine_wall:north=none:east=tall:south=tall:west=tall:up=true red_nether_brick_wall:north=none:east=tall:south=tall:west=tall:up=true red_sandstone_wall:north=none:east=tall:south=tall:west=tall:up=true sandstone_wall:north=none:east=tall:south=tall:west=tall:up=true stone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_andesite_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_andesite_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_andesite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_andesite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_asurine_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_asurine_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_asurine_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_asurine_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_calcite_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_calcite_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_calcite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_calcite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_crimsite_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_crimsite_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_crimsite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_crimsite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_deepslate_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_deepslate_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_deepslate_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_deepslate_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_diorite_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_diorite_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_diorite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_diorite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_dripstone_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_dripstone_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_dripstone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_dripstone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_granite_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_granite_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_granite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_granite_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_limestone_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_limestone_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_limestone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_limestone_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_ochrum_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_ochrum_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_ochrum_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_ochrum_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_scorchia_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_scorchia_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_scorchia_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_scorchia_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_scoria_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_scoria_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_scoria_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_scoria_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_tuff_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_tuff_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_tuff_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_tuff_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_veridium_wall:north=none:east=tall:south=tall:west=tall:up=true create:polished_cut_veridium_wall:north=none:east=tall:south=tall:west=tall:up=true create:cut_veridium_brick_wall:north=none:east=tall:south=tall:west=tall:up=true create:small_veridium_brick_wall:north=none:east=tall:south=tall:west=tall:up=true block.470=cobblestone_wall:north=tall:east=tall:south=tall:west=tall:up=true andesite_wall:north=tall:east=tall:south=tall:west=tall:up=true blackstone_wall:north=tall:east=tall:south=tall:west=tall:up=true brick_wall:north=tall:east=tall:south=tall:west=tall:up=true cobbled_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=true deepslate_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true deepslate_tile_wall:north=tall:east=tall:south=tall:west=tall:up=true diorite_wall:north=tall:east=tall:south=tall:west=tall:up=true end_stone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true granite_wall:north=tall:east=tall:south=tall:west=tall:up=true mossy_cobblestone_wall:north=tall:east=tall:south=tall:west=tall:up=true mossy_stone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true mud_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true nether_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true polished_blackstone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true polished_blackstone_wall:north=tall:east=tall:south=tall:west=tall:up=true polished_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=true prismarine_wall:north=tall:east=tall:south=tall:west=tall:up=true red_nether_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true red_sandstone_wall:north=tall:east=tall:south=tall:west=tall:up=true sandstone_wall:north=tall:east=tall:south=tall:west=tall:up=true stone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_andesite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_andesite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_andesite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_andesite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_asurine_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_asurine_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_asurine_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_asurine_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_calcite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_calcite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_calcite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_calcite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_crimsite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_crimsite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_crimsite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_crimsite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_deepslate_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_deepslate_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_diorite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_diorite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_diorite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_diorite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_dripstone_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_dripstone_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_dripstone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_dripstone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_granite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_granite_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_granite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_granite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_limestone_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_limestone_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_limestone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_limestone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_ochrum_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_ochrum_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_ochrum_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_ochrum_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_scorchia_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_scorchia_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_scorchia_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_scorchia_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_scoria_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_scoria_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_scoria_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_scoria_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_tuff_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_tuff_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_tuff_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_tuff_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_veridium_wall:north=tall:east=tall:south=tall:west=tall:up=true create:polished_cut_veridium_wall:north=tall:east=tall:south=tall:west=tall:up=true create:cut_veridium_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true create:small_veridium_brick_wall:north=tall:east=tall:south=tall:west=tall:up=true block.471=cobblestone_wall:north=tall:east=none:south=low:west=none:up=true andesite_wall:north=tall:east=none:south=low:west=none:up=true blackstone_wall:north=tall:east=none:south=low:west=none:up=true brick_wall:north=tall:east=none:south=low:west=none:up=true cobbled_deepslate_wall:north=tall:east=none:south=low:west=none:up=true deepslate_brick_wall:north=tall:east=none:south=low:west=none:up=true deepslate_tile_wall:north=tall:east=none:south=low:west=none:up=true diorite_wall:north=tall:east=none:south=low:west=none:up=true end_stone_brick_wall:north=tall:east=none:south=low:west=none:up=true granite_wall:north=tall:east=none:south=low:west=none:up=true mossy_cobblestone_wall:north=tall:east=none:south=low:west=none:up=true mossy_stone_brick_wall:north=tall:east=none:south=low:west=none:up=true mud_brick_wall:north=tall:east=none:south=low:west=none:up=true nether_brick_wall:north=tall:east=none:south=low:west=none:up=true polished_blackstone_brick_wall:north=tall:east=none:south=low:west=none:up=true polished_blackstone_wall:north=tall:east=none:south=low:west=none:up=true polished_deepslate_wall:north=tall:east=none:south=low:west=none:up=true prismarine_wall:north=tall:east=none:south=low:west=none:up=true red_nether_brick_wall:north=tall:east=none:south=low:west=none:up=true red_sandstone_wall:north=tall:east=none:south=low:west=none:up=true sandstone_wall:north=tall:east=none:south=low:west=none:up=true stone_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_andesite_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_andesite_wall:north=tall:east=none:south=low:west=none:up=true create:cut_andesite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_andesite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_asurine_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_asurine_wall:north=tall:east=none:south=low:west=none:up=true create:cut_asurine_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_asurine_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_calcite_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_calcite_wall:north=tall:east=none:south=low:west=none:up=true create:cut_calcite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_calcite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_crimsite_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_crimsite_wall:north=tall:east=none:south=low:west=none:up=true create:cut_crimsite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_crimsite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_deepslate_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_deepslate_wall:north=tall:east=none:south=low:west=none:up=true create:cut_deepslate_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_deepslate_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_diorite_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_diorite_wall:north=tall:east=none:south=low:west=none:up=true create:cut_diorite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_diorite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_dripstone_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_dripstone_wall:north=tall:east=none:south=low:west=none:up=true create:cut_dripstone_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_dripstone_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_granite_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_granite_wall:north=tall:east=none:south=low:west=none:up=true create:cut_granite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_granite_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_limestone_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_limestone_wall:north=tall:east=none:south=low:west=none:up=true create:cut_limestone_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_limestone_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_ochrum_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_ochrum_wall:north=tall:east=none:south=low:west=none:up=true create:cut_ochrum_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_ochrum_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_scorchia_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_scorchia_wall:north=tall:east=none:south=low:west=none:up=true create:cut_scorchia_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_scorchia_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_scoria_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_scoria_wall:north=tall:east=none:south=low:west=none:up=true create:cut_scoria_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_scoria_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_tuff_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_tuff_wall:north=tall:east=none:south=low:west=none:up=true create:cut_tuff_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_tuff_brick_wall:north=tall:east=none:south=low:west=none:up=true create:cut_veridium_wall:north=tall:east=none:south=low:west=none:up=true create:polished_cut_veridium_wall:north=tall:east=none:south=low:west=none:up=true create:cut_veridium_brick_wall:north=tall:east=none:south=low:west=none:up=true create:small_veridium_brick_wall:north=tall:east=none:south=low:west=none:up=true block.472=cobblestone_wall:north=none:east=tall:south=none:west=low:up=true andesite_wall:north=none:east=tall:south=none:west=low:up=true blackstone_wall:north=none:east=tall:south=none:west=low:up=true brick_wall:north=none:east=tall:south=none:west=low:up=true cobbled_deepslate_wall:north=none:east=tall:south=none:west=low:up=true deepslate_brick_wall:north=none:east=tall:south=none:west=low:up=true deepslate_tile_wall:north=none:east=tall:south=none:west=low:up=true diorite_wall:north=none:east=tall:south=none:west=low:up=true end_stone_brick_wall:north=none:east=tall:south=none:west=low:up=true granite_wall:north=none:east=tall:south=none:west=low:up=true mossy_cobblestone_wall:north=none:east=tall:south=none:west=low:up=true mossy_stone_brick_wall:north=none:east=tall:south=none:west=low:up=true mud_brick_wall:north=none:east=tall:south=none:west=low:up=true nether_brick_wall:north=none:east=tall:south=none:west=low:up=true polished_blackstone_brick_wall:north=none:east=tall:south=none:west=low:up=true polished_blackstone_wall:north=none:east=tall:south=none:west=low:up=true polished_deepslate_wall:north=none:east=tall:south=none:west=low:up=true prismarine_wall:north=none:east=tall:south=none:west=low:up=true red_nether_brick_wall:north=none:east=tall:south=none:west=low:up=true red_sandstone_wall:north=none:east=tall:south=none:west=low:up=true sandstone_wall:north=none:east=tall:south=none:west=low:up=true stone_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_andesite_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_andesite_wall:north=none:east=tall:south=none:west=low:up=true create:cut_andesite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_andesite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_asurine_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_asurine_wall:north=none:east=tall:south=none:west=low:up=true create:cut_asurine_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_asurine_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_calcite_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_calcite_wall:north=none:east=tall:south=none:west=low:up=true create:cut_calcite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_calcite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_crimsite_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_crimsite_wall:north=none:east=tall:south=none:west=low:up=true create:cut_crimsite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_crimsite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_deepslate_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_deepslate_wall:north=none:east=tall:south=none:west=low:up=true create:cut_deepslate_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_deepslate_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_diorite_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_diorite_wall:north=none:east=tall:south=none:west=low:up=true create:cut_diorite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_diorite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_dripstone_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_dripstone_wall:north=none:east=tall:south=none:west=low:up=true create:cut_dripstone_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_dripstone_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_granite_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_granite_wall:north=none:east=tall:south=none:west=low:up=true create:cut_granite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_granite_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_limestone_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_limestone_wall:north=none:east=tall:south=none:west=low:up=true create:cut_limestone_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_limestone_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_ochrum_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_ochrum_wall:north=none:east=tall:south=none:west=low:up=true create:cut_ochrum_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_ochrum_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_scorchia_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_scorchia_wall:north=none:east=tall:south=none:west=low:up=true create:cut_scorchia_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_scorchia_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_scoria_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_scoria_wall:north=none:east=tall:south=none:west=low:up=true create:cut_scoria_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_scoria_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_tuff_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_tuff_wall:north=none:east=tall:south=none:west=low:up=true create:cut_tuff_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_tuff_brick_wall:north=none:east=tall:south=none:west=low:up=true create:cut_veridium_wall:north=none:east=tall:south=none:west=low:up=true create:polished_cut_veridium_wall:north=none:east=tall:south=none:west=low:up=true create:cut_veridium_brick_wall:north=none:east=tall:south=none:west=low:up=true create:small_veridium_brick_wall:north=none:east=tall:south=none:west=low:up=true block.473=cobblestone_wall:north=low:east=none:south=tall:west=none:up=true andesite_wall:north=low:east=none:south=tall:west=none:up=true blackstone_wall:north=low:east=none:south=tall:west=none:up=true brick_wall:north=low:east=none:south=tall:west=none:up=true cobbled_deepslate_wall:north=low:east=none:south=tall:west=none:up=true deepslate_brick_wall:north=low:east=none:south=tall:west=none:up=true deepslate_tile_wall:north=low:east=none:south=tall:west=none:up=true diorite_wall:north=low:east=none:south=tall:west=none:up=true end_stone_brick_wall:north=low:east=none:south=tall:west=none:up=true granite_wall:north=low:east=none:south=tall:west=none:up=true mossy_cobblestone_wall:north=low:east=none:south=tall:west=none:up=true mossy_stone_brick_wall:north=low:east=none:south=tall:west=none:up=true mud_brick_wall:north=low:east=none:south=tall:west=none:up=true nether_brick_wall:north=low:east=none:south=tall:west=none:up=true polished_blackstone_brick_wall:north=low:east=none:south=tall:west=none:up=true polished_blackstone_wall:north=low:east=none:south=tall:west=none:up=true polished_deepslate_wall:north=low:east=none:south=tall:west=none:up=true prismarine_wall:north=low:east=none:south=tall:west=none:up=true red_nether_brick_wall:north=low:east=none:south=tall:west=none:up=true red_sandstone_wall:north=low:east=none:south=tall:west=none:up=true sandstone_wall:north=low:east=none:south=tall:west=none:up=true stone_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_andesite_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_andesite_wall:north=low:east=none:south=tall:west=none:up=true create:cut_andesite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_andesite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_asurine_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_asurine_wall:north=low:east=none:south=tall:west=none:up=true create:cut_asurine_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_asurine_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_calcite_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_calcite_wall:north=low:east=none:south=tall:west=none:up=true create:cut_calcite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_calcite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_crimsite_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_crimsite_wall:north=low:east=none:south=tall:west=none:up=true create:cut_crimsite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_crimsite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_deepslate_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_deepslate_wall:north=low:east=none:south=tall:west=none:up=true create:cut_deepslate_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_deepslate_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_diorite_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_diorite_wall:north=low:east=none:south=tall:west=none:up=true create:cut_diorite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_diorite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_dripstone_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_dripstone_wall:north=low:east=none:south=tall:west=none:up=true create:cut_dripstone_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_dripstone_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_granite_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_granite_wall:north=low:east=none:south=tall:west=none:up=true create:cut_granite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_granite_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_limestone_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_limestone_wall:north=low:east=none:south=tall:west=none:up=true create:cut_limestone_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_limestone_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_ochrum_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_ochrum_wall:north=low:east=none:south=tall:west=none:up=true create:cut_ochrum_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_ochrum_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_scorchia_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_scorchia_wall:north=low:east=none:south=tall:west=none:up=true create:cut_scorchia_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_scorchia_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_scoria_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_scoria_wall:north=low:east=none:south=tall:west=none:up=true create:cut_scoria_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_scoria_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_tuff_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_tuff_wall:north=low:east=none:south=tall:west=none:up=true create:cut_tuff_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_tuff_brick_wall:north=low:east=none:south=tall:west=none:up=true create:cut_veridium_wall:north=low:east=none:south=tall:west=none:up=true create:polished_cut_veridium_wall:north=low:east=none:south=tall:west=none:up=true create:cut_veridium_brick_wall:north=low:east=none:south=tall:west=none:up=true create:small_veridium_brick_wall:north=low:east=none:south=tall:west=none:up=true block.474=cobblestone_wall:north=none:east=low:south=none:west=tall:up=true andesite_wall:north=none:east=low:south=none:west=tall:up=true blackstone_wall:north=none:east=low:south=none:west=tall:up=true brick_wall:north=none:east=low:south=none:west=tall:up=true cobbled_deepslate_wall:north=none:east=low:south=none:west=tall:up=true deepslate_brick_wall:north=none:east=low:south=none:west=tall:up=true deepslate_tile_wall:north=none:east=low:south=none:west=tall:up=true diorite_wall:north=none:east=low:south=none:west=tall:up=true end_stone_brick_wall:north=none:east=low:south=none:west=tall:up=true granite_wall:north=none:east=low:south=none:west=tall:up=true mossy_cobblestone_wall:north=none:east=low:south=none:west=tall:up=true mossy_stone_brick_wall:north=none:east=low:south=none:west=tall:up=true mud_brick_wall:north=none:east=low:south=none:west=tall:up=true nether_brick_wall:north=none:east=low:south=none:west=tall:up=true polished_blackstone_brick_wall:north=none:east=low:south=none:west=tall:up=true polished_blackstone_wall:north=none:east=low:south=none:west=tall:up=true polished_deepslate_wall:north=none:east=low:south=none:west=tall:up=true prismarine_wall:north=none:east=low:south=none:west=tall:up=true red_nether_brick_wall:north=none:east=low:south=none:west=tall:up=true red_sandstone_wall:north=none:east=low:south=none:west=tall:up=true sandstone_wall:north=none:east=low:south=none:west=tall:up=true stone_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_andesite_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_andesite_wall:north=none:east=low:south=none:west=tall:up=true create:cut_andesite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_andesite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_asurine_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_asurine_wall:north=none:east=low:south=none:west=tall:up=true create:cut_asurine_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_asurine_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_calcite_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_calcite_wall:north=none:east=low:south=none:west=tall:up=true create:cut_calcite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_calcite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_crimsite_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_crimsite_wall:north=none:east=low:south=none:west=tall:up=true create:cut_crimsite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_crimsite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_deepslate_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_deepslate_wall:north=none:east=low:south=none:west=tall:up=true create:cut_deepslate_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_deepslate_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_diorite_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_diorite_wall:north=none:east=low:south=none:west=tall:up=true create:cut_diorite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_diorite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_dripstone_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_dripstone_wall:north=none:east=low:south=none:west=tall:up=true create:cut_dripstone_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_dripstone_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_granite_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_granite_wall:north=none:east=low:south=none:west=tall:up=true create:cut_granite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_granite_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_limestone_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_limestone_wall:north=none:east=low:south=none:west=tall:up=true create:cut_limestone_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_limestone_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_ochrum_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_ochrum_wall:north=none:east=low:south=none:west=tall:up=true create:cut_ochrum_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_ochrum_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_scorchia_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_scorchia_wall:north=none:east=low:south=none:west=tall:up=true create:cut_scorchia_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_scorchia_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_scoria_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_scoria_wall:north=none:east=low:south=none:west=tall:up=true create:cut_scoria_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_scoria_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_tuff_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_tuff_wall:north=none:east=low:south=none:west=tall:up=true create:cut_tuff_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_tuff_brick_wall:north=none:east=low:south=none:west=tall:up=true create:cut_veridium_wall:north=none:east=low:south=none:west=tall:up=true create:polished_cut_veridium_wall:north=none:east=low:south=none:west=tall:up=true create:cut_veridium_brick_wall:north=none:east=low:south=none:west=tall:up=true create:small_veridium_brick_wall:north=none:east=low:south=none:west=tall:up=true block.475=cobblestone_wall:north=tall:east=low:south=tall:west=low:up=true andesite_wall:north=tall:east=low:south=tall:west=low:up=true blackstone_wall:north=tall:east=low:south=tall:west=low:up=true brick_wall:north=tall:east=low:south=tall:west=low:up=true cobbled_deepslate_wall:north=tall:east=low:south=tall:west=low:up=true deepslate_brick_wall:north=tall:east=low:south=tall:west=low:up=true deepslate_tile_wall:north=tall:east=low:south=tall:west=low:up=true diorite_wall:north=tall:east=low:south=tall:west=low:up=true end_stone_brick_wall:north=tall:east=low:south=tall:west=low:up=true granite_wall:north=tall:east=low:south=tall:west=low:up=true mossy_cobblestone_wall:north=tall:east=low:south=tall:west=low:up=true mossy_stone_brick_wall:north=tall:east=low:south=tall:west=low:up=true mud_brick_wall:north=tall:east=low:south=tall:west=low:up=true nether_brick_wall:north=tall:east=low:south=tall:west=low:up=true polished_blackstone_brick_wall:north=tall:east=low:south=tall:west=low:up=true polished_blackstone_wall:north=tall:east=low:south=tall:west=low:up=true polished_deepslate_wall:north=tall:east=low:south=tall:west=low:up=true prismarine_wall:north=tall:east=low:south=tall:west=low:up=true red_nether_brick_wall:north=tall:east=low:south=tall:west=low:up=true red_sandstone_wall:north=tall:east=low:south=tall:west=low:up=true sandstone_wall:north=tall:east=low:south=tall:west=low:up=true stone_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_andesite_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_andesite_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_andesite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_andesite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_asurine_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_asurine_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_asurine_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_asurine_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_calcite_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_calcite_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_calcite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_calcite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_crimsite_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_crimsite_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_crimsite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_crimsite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_deepslate_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_deepslate_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_deepslate_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_deepslate_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_diorite_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_diorite_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_diorite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_diorite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_dripstone_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_dripstone_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_dripstone_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_dripstone_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_granite_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_granite_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_granite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_granite_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_limestone_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_limestone_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_limestone_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_limestone_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_ochrum_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_ochrum_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_ochrum_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_ochrum_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_scorchia_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_scorchia_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_scorchia_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_scorchia_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_scoria_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_scoria_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_scoria_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_scoria_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_tuff_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_tuff_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_tuff_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_tuff_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_veridium_wall:north=tall:east=low:south=tall:west=low:up=true create:polished_cut_veridium_wall:north=tall:east=low:south=tall:west=low:up=true create:cut_veridium_brick_wall:north=tall:east=low:south=tall:west=low:up=true create:small_veridium_brick_wall:north=tall:east=low:south=tall:west=low:up=true block.476=cobblestone_wall:north=low:east=tall:south=low:west=tall:up=true andesite_wall:north=low:east=tall:south=low:west=tall:up=true blackstone_wall:north=low:east=tall:south=low:west=tall:up=true brick_wall:north=low:east=tall:south=low:west=tall:up=true cobbled_deepslate_wall:north=low:east=tall:south=low:west=tall:up=true deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=true deepslate_tile_wall:north=low:east=tall:south=low:west=tall:up=true diorite_wall:north=low:east=tall:south=low:west=tall:up=true end_stone_brick_wall:north=low:east=tall:south=low:west=tall:up=true granite_wall:north=low:east=tall:south=low:west=tall:up=true mossy_cobblestone_wall:north=low:east=tall:south=low:west=tall:up=true mossy_stone_brick_wall:north=low:east=tall:south=low:west=tall:up=true mud_brick_wall:north=low:east=tall:south=low:west=tall:up=true nether_brick_wall:north=low:east=tall:south=low:west=tall:up=true polished_blackstone_brick_wall:north=low:east=tall:south=low:west=tall:up=true polished_blackstone_wall:north=low:east=tall:south=low:west=tall:up=true polished_deepslate_wall:north=low:east=tall:south=low:west=tall:up=true prismarine_wall:north=low:east=tall:south=low:west=tall:up=true red_nether_brick_wall:north=low:east=tall:south=low:west=tall:up=true red_sandstone_wall:north=low:east=tall:south=low:west=tall:up=true sandstone_wall:north=low:east=tall:south=low:west=tall:up=true stone_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_andesite_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_andesite_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_andesite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_andesite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_asurine_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_asurine_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_asurine_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_asurine_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_calcite_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_calcite_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_calcite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_calcite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_crimsite_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_crimsite_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_crimsite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_crimsite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_deepslate_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_deepslate_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_diorite_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_diorite_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_diorite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_diorite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_dripstone_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_dripstone_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_dripstone_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_dripstone_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_granite_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_granite_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_granite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_granite_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_limestone_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_limestone_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_limestone_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_limestone_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_ochrum_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_ochrum_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_ochrum_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_ochrum_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_scorchia_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_scorchia_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_scorchia_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_scorchia_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_scoria_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_scoria_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_scoria_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_scoria_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_tuff_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_tuff_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_tuff_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_tuff_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_veridium_wall:north=low:east=tall:south=low:west=tall:up=true create:polished_cut_veridium_wall:north=low:east=tall:south=low:west=tall:up=true create:cut_veridium_brick_wall:north=low:east=tall:south=low:west=tall:up=true create:small_veridium_brick_wall:north=low:east=tall:south=low:west=tall:up=true block.477=cobblestone_wall:north=tall:east=low:south=low:west=tall:up=true andesite_wall:north=tall:east=low:south=low:west=tall:up=true blackstone_wall:north=tall:east=low:south=low:west=tall:up=true brick_wall:north=tall:east=low:south=low:west=tall:up=true cobbled_deepslate_wall:north=tall:east=low:south=low:west=tall:up=true deepslate_brick_wall:north=tall:east=low:south=low:west=tall:up=true deepslate_tile_wall:north=tall:east=low:south=low:west=tall:up=true diorite_wall:north=tall:east=low:south=low:west=tall:up=true end_stone_brick_wall:north=tall:east=low:south=low:west=tall:up=true granite_wall:north=tall:east=low:south=low:west=tall:up=true mossy_cobblestone_wall:north=tall:east=low:south=low:west=tall:up=true mossy_stone_brick_wall:north=tall:east=low:south=low:west=tall:up=true mud_brick_wall:north=tall:east=low:south=low:west=tall:up=true nether_brick_wall:north=tall:east=low:south=low:west=tall:up=true polished_blackstone_brick_wall:north=tall:east=low:south=low:west=tall:up=true polished_blackstone_wall:north=tall:east=low:south=low:west=tall:up=true polished_deepslate_wall:north=tall:east=low:south=low:west=tall:up=true prismarine_wall:north=tall:east=low:south=low:west=tall:up=true red_nether_brick_wall:north=tall:east=low:south=low:west=tall:up=true red_sandstone_wall:north=tall:east=low:south=low:west=tall:up=true sandstone_wall:north=tall:east=low:south=low:west=tall:up=true stone_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_andesite_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_andesite_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_andesite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_andesite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_asurine_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_asurine_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_asurine_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_asurine_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_calcite_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_calcite_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_calcite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_calcite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_crimsite_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_crimsite_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_crimsite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_crimsite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_deepslate_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_deepslate_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_deepslate_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_deepslate_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_diorite_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_diorite_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_diorite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_diorite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_dripstone_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_dripstone_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_dripstone_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_dripstone_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_granite_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_granite_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_granite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_granite_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_limestone_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_limestone_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_limestone_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_limestone_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_ochrum_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_ochrum_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_ochrum_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_ochrum_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_scorchia_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_scorchia_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_scorchia_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_scorchia_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_scoria_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_scoria_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_scoria_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_scoria_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_tuff_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_tuff_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_tuff_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_tuff_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_veridium_wall:north=tall:east=low:south=low:west=tall:up=true create:polished_cut_veridium_wall:north=tall:east=low:south=low:west=tall:up=true create:cut_veridium_brick_wall:north=tall:east=low:south=low:west=tall:up=true create:small_veridium_brick_wall:north=tall:east=low:south=low:west=tall:up=true block.478=cobblestone_wall:north=tall:east=tall:south=low:west=low:up=true andesite_wall:north=tall:east=tall:south=low:west=low:up=true blackstone_wall:north=tall:east=tall:south=low:west=low:up=true brick_wall:north=tall:east=tall:south=low:west=low:up=true cobbled_deepslate_wall:north=tall:east=tall:south=low:west=low:up=true deepslate_brick_wall:north=tall:east=tall:south=low:west=low:up=true deepslate_tile_wall:north=tall:east=tall:south=low:west=low:up=true diorite_wall:north=tall:east=tall:south=low:west=low:up=true end_stone_brick_wall:north=tall:east=tall:south=low:west=low:up=true granite_wall:north=tall:east=tall:south=low:west=low:up=true mossy_cobblestone_wall:north=tall:east=tall:south=low:west=low:up=true mossy_stone_brick_wall:north=tall:east=tall:south=low:west=low:up=true mud_brick_wall:north=tall:east=tall:south=low:west=low:up=true nether_brick_wall:north=tall:east=tall:south=low:west=low:up=true polished_blackstone_brick_wall:north=tall:east=tall:south=low:west=low:up=true polished_blackstone_wall:north=tall:east=tall:south=low:west=low:up=true polished_deepslate_wall:north=tall:east=tall:south=low:west=low:up=true prismarine_wall:north=tall:east=tall:south=low:west=low:up=true red_nether_brick_wall:north=tall:east=tall:south=low:west=low:up=true red_sandstone_wall:north=tall:east=tall:south=low:west=low:up=true sandstone_wall:north=tall:east=tall:south=low:west=low:up=true stone_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_andesite_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_andesite_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_andesite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_andesite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_asurine_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_asurine_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_asurine_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_asurine_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_calcite_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_calcite_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_calcite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_calcite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_crimsite_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_crimsite_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_crimsite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_crimsite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_deepslate_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_deepslate_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_deepslate_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_deepslate_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_diorite_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_diorite_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_diorite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_diorite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_dripstone_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_dripstone_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_dripstone_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_dripstone_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_granite_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_granite_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_granite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_granite_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_limestone_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_limestone_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_limestone_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_limestone_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_ochrum_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_ochrum_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_ochrum_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_ochrum_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_scorchia_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_scorchia_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_scorchia_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_scorchia_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_scoria_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_scoria_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_scoria_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_scoria_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_tuff_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_tuff_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_tuff_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_tuff_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_veridium_wall:north=tall:east=tall:south=low:west=low:up=true create:polished_cut_veridium_wall:north=tall:east=tall:south=low:west=low:up=true create:cut_veridium_brick_wall:north=tall:east=tall:south=low:west=low:up=true create:small_veridium_brick_wall:north=tall:east=tall:south=low:west=low:up=true block.479=cobblestone_wall:north=low:east=low:south=tall:west=tall:up=true andesite_wall:north=low:east=low:south=tall:west=tall:up=true blackstone_wall:north=low:east=low:south=tall:west=tall:up=true brick_wall:north=low:east=low:south=tall:west=tall:up=true cobbled_deepslate_wall:north=low:east=low:south=tall:west=tall:up=true deepslate_brick_wall:north=low:east=low:south=tall:west=tall:up=true deepslate_tile_wall:north=low:east=low:south=tall:west=tall:up=true diorite_wall:north=low:east=low:south=tall:west=tall:up=true end_stone_brick_wall:north=low:east=low:south=tall:west=tall:up=true granite_wall:north=low:east=low:south=tall:west=tall:up=true mossy_cobblestone_wall:north=low:east=low:south=tall:west=tall:up=true mossy_stone_brick_wall:north=low:east=low:south=tall:west=tall:up=true mud_brick_wall:north=low:east=low:south=tall:west=tall:up=true nether_brick_wall:north=low:east=low:south=tall:west=tall:up=true polished_blackstone_brick_wall:north=low:east=low:south=tall:west=tall:up=true polished_blackstone_wall:north=low:east=low:south=tall:west=tall:up=true polished_deepslate_wall:north=low:east=low:south=tall:west=tall:up=true prismarine_wall:north=low:east=low:south=tall:west=tall:up=true red_nether_brick_wall:north=low:east=low:south=tall:west=tall:up=true red_sandstone_wall:north=low:east=low:south=tall:west=tall:up=true sandstone_wall:north=low:east=low:south=tall:west=tall:up=true stone_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_andesite_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_andesite_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_andesite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_andesite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_asurine_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_asurine_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_asurine_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_asurine_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_calcite_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_calcite_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_calcite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_calcite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_crimsite_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_crimsite_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_crimsite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_crimsite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_deepslate_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_deepslate_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_deepslate_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_deepslate_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_diorite_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_diorite_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_diorite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_diorite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_dripstone_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_dripstone_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_dripstone_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_dripstone_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_granite_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_granite_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_granite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_granite_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_limestone_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_limestone_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_limestone_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_limestone_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_ochrum_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_ochrum_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_ochrum_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_ochrum_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_scorchia_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_scorchia_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_scorchia_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_scorchia_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_scoria_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_scoria_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_scoria_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_scoria_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_tuff_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_tuff_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_tuff_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_tuff_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_veridium_wall:north=low:east=low:south=tall:west=tall:up=true create:polished_cut_veridium_wall:north=low:east=low:south=tall:west=tall:up=true create:cut_veridium_brick_wall:north=low:east=low:south=tall:west=tall:up=true create:small_veridium_brick_wall:north=low:east=low:south=tall:west=tall:up=true 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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 \ 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: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 block.489=cobblestone_wall:north=none:east=tall:south=none:west=tall:up=false andesite_wall:north=none:east=tall:south=none:west=tall:up=false blackstone_wall:north=none:east=tall:south=none:west=tall:up=false brick_wall:north=none:east=tall:south=none:west=tall:up=false cobbled_deepslate_wall:north=none:east=tall:south=none:west=tall:up=false deepslate_brick_wall:north=none:east=tall:south=none:west=tall:up=false deepslate_tile_wall:north=none:east=tall:south=none:west=tall:up=false diorite_wall:north=none:east=tall:south=none:west=tall:up=false end_stone_brick_wall:north=none:east=tall:south=none:west=tall:up=false granite_wall:north=none:east=tall:south=none:west=tall:up=false mossy_cobblestone_wall:north=none:east=tall:south=none:west=tall:up=false mossy_stone_brick_wall:north=none:east=tall:south=none:west=tall:up=false mud_brick_wall:north=none:east=tall:south=none:west=tall:up=false nether_brick_wall:north=none:east=tall:south=none:west=tall:up=false polished_blackstone_brick_wall:north=none:east=tall:south=none:west=tall:up=false polished_blackstone_wall:north=none:east=tall:south=none:west=tall:up=false polished_deepslate_wall:north=none:east=tall:south=none:west=tall:up=false prismarine_wall:north=none:east=tall:south=none:west=tall:up=false red_nether_brick_wall:north=none:east=tall:south=none:west=tall:up=false red_sandstone_wall:north=none:east=tall:south=none:west=tall:up=false sandstone_wall:north=none:east=tall:south=none:west=tall:up=false stone_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_andesite_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_andesite_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_andesite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_andesite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_asurine_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_asurine_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_asurine_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_asurine_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_calcite_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_calcite_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_calcite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_calcite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_crimsite_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_crimsite_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_crimsite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_crimsite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_deepslate_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_deepslate_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_deepslate_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_deepslate_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_diorite_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_diorite_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_diorite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_diorite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_dripstone_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_dripstone_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_dripstone_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_dripstone_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_granite_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_granite_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_granite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_granite_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_limestone_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_limestone_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_limestone_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_limestone_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_ochrum_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_ochrum_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_ochrum_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_ochrum_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_scorchia_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_scorchia_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_scorchia_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_scorchia_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_scoria_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_scoria_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_scoria_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_scoria_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_tuff_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_tuff_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_tuff_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_tuff_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_veridium_wall:north=none:east=tall:south=none:west=tall:up=false create:polished_cut_veridium_wall:north=none:east=tall:south=none:west=tall:up=false create:cut_veridium_brick_wall:north=none:east=tall:south=none:west=tall:up=false create:small_veridium_brick_wall:north=none:east=tall:south=none:west=tall:up=false block.490=cobblestone_wall:north=tall:east=none:south=none:west=tall:up=false andesite_wall:north=tall:east=none:south=none:west=tall:up=false blackstone_wall:north=tall:east=none:south=none:west=tall:up=false brick_wall:north=tall:east=none:south=none:west=tall:up=false cobbled_deepslate_wall:north=tall:east=none:south=none:west=tall:up=false deepslate_brick_wall:north=tall:east=none:south=none:west=tall:up=false deepslate_tile_wall:north=tall:east=none:south=none:west=tall:up=false diorite_wall:north=tall:east=none:south=none:west=tall:up=false end_stone_brick_wall:north=tall:east=none:south=none:west=tall:up=false granite_wall:north=tall:east=none:south=none:west=tall:up=false mossy_cobblestone_wall:north=tall:east=none:south=none:west=tall:up=false mossy_stone_brick_wall:north=tall:east=none:south=none:west=tall:up=false mud_brick_wall:north=tall:east=none:south=none:west=tall:up=false nether_brick_wall:north=tall:east=none:south=none:west=tall:up=false polished_blackstone_brick_wall:north=tall:east=none:south=none:west=tall:up=false polished_blackstone_wall:north=tall:east=none:south=none:west=tall:up=false polished_deepslate_wall:north=tall:east=none:south=none:west=tall:up=false prismarine_wall:north=tall:east=none:south=none:west=tall:up=false red_nether_brick_wall:north=tall:east=none:south=none:west=tall:up=false red_sandstone_wall:north=tall:east=none:south=none:west=tall:up=false sandstone_wall:north=tall:east=none:south=none:west=tall:up=false stone_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_andesite_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_andesite_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_andesite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_andesite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_asurine_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_asurine_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_asurine_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_asurine_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_calcite_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_calcite_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_calcite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_calcite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_crimsite_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_crimsite_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_crimsite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_crimsite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_deepslate_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_deepslate_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_deepslate_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_deepslate_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_diorite_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_diorite_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_diorite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_diorite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_dripstone_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_dripstone_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_dripstone_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_dripstone_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_granite_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_granite_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_granite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_granite_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_limestone_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_limestone_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_limestone_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_limestone_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_ochrum_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_ochrum_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_ochrum_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_ochrum_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_scorchia_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_scorchia_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_scorchia_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_scorchia_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_scoria_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_scoria_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_scoria_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_scoria_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_tuff_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_tuff_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_tuff_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_tuff_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_veridium_wall:north=tall:east=none:south=none:west=tall:up=false create:polished_cut_veridium_wall:north=tall:east=none:south=none:west=tall:up=false create:cut_veridium_brick_wall:north=tall:east=none:south=none:west=tall:up=false create:small_veridium_brick_wall:north=tall:east=none:south=none:west=tall:up=false block.491=cobblestone_wall:north=tall:east=tall:south=none:west=none:up=false andesite_wall:north=tall:east=tall:south=none:west=none:up=false blackstone_wall:north=tall:east=tall:south=none:west=none:up=false brick_wall:north=tall:east=tall:south=none:west=none:up=false cobbled_deepslate_wall:north=tall:east=tall:south=none:west=none:up=false deepslate_brick_wall:north=tall:east=tall:south=none:west=none:up=false deepslate_tile_wall:north=tall:east=tall:south=none:west=none:up=false diorite_wall:north=tall:east=tall:south=none:west=none:up=false end_stone_brick_wall:north=tall:east=tall:south=none:west=none:up=false granite_wall:north=tall:east=tall:south=none:west=none:up=false mossy_cobblestone_wall:north=tall:east=tall:south=none:west=none:up=false mossy_stone_brick_wall:north=tall:east=tall:south=none:west=none:up=false mud_brick_wall:north=tall:east=tall:south=none:west=none:up=false nether_brick_wall:north=tall:east=tall:south=none:west=none:up=false polished_blackstone_brick_wall:north=tall:east=tall:south=none:west=none:up=false polished_blackstone_wall:north=tall:east=tall:south=none:west=none:up=false polished_deepslate_wall:north=tall:east=tall:south=none:west=none:up=false prismarine_wall:north=tall:east=tall:south=none:west=none:up=false red_nether_brick_wall:north=tall:east=tall:south=none:west=none:up=false red_sandstone_wall:north=tall:east=tall:south=none:west=none:up=false sandstone_wall:north=tall:east=tall:south=none:west=none:up=false stone_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_andesite_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_andesite_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_andesite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_andesite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_asurine_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_asurine_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_asurine_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_asurine_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_calcite_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_calcite_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_calcite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_calcite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_crimsite_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_crimsite_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_crimsite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_crimsite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_deepslate_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_deepslate_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_deepslate_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_deepslate_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_diorite_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_diorite_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_diorite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_diorite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_dripstone_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_dripstone_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_dripstone_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_dripstone_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_granite_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_granite_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_granite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_granite_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_limestone_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_limestone_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_limestone_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_limestone_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_ochrum_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_ochrum_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_ochrum_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_ochrum_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_scorchia_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_scorchia_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_scorchia_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_scorchia_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_scoria_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_scoria_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_scoria_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_scoria_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_tuff_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_tuff_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_tuff_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_tuff_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_veridium_wall:north=tall:east=tall:south=none:west=none:up=false create:polished_cut_veridium_wall:north=tall:east=tall:south=none:west=none:up=false create:cut_veridium_brick_wall:north=tall:east=tall:south=none:west=none:up=false create:small_veridium_brick_wall:north=tall:east=tall:south=none:west=none:up=false block.492=cobblestone_wall:north=none:east=none:south=tall:west=tall:up=false andesite_wall:north=none:east=none:south=tall:west=tall:up=false blackstone_wall:north=none:east=none:south=tall:west=tall:up=false brick_wall:north=none:east=none:south=tall:west=tall:up=false cobbled_deepslate_wall:north=none:east=none:south=tall:west=tall:up=false deepslate_brick_wall:north=none:east=none:south=tall:west=tall:up=false deepslate_tile_wall:north=none:east=none:south=tall:west=tall:up=false diorite_wall:north=none:east=none:south=tall:west=tall:up=false end_stone_brick_wall:north=none:east=none:south=tall:west=tall:up=false granite_wall:north=none:east=none:south=tall:west=tall:up=false mossy_cobblestone_wall:north=none:east=none:south=tall:west=tall:up=false mossy_stone_brick_wall:north=none:east=none:south=tall:west=tall:up=false mud_brick_wall:north=none:east=none:south=tall:west=tall:up=false nether_brick_wall:north=none:east=none:south=tall:west=tall:up=false polished_blackstone_brick_wall:north=none:east=none:south=tall:west=tall:up=false polished_blackstone_wall:north=none:east=none:south=tall:west=tall:up=false polished_deepslate_wall:north=none:east=none:south=tall:west=tall:up=false prismarine_wall:north=none:east=none:south=tall:west=tall:up=false red_nether_brick_wall:north=none:east=none:south=tall:west=tall:up=false red_sandstone_wall:north=none:east=none:south=tall:west=tall:up=false sandstone_wall:north=none:east=none:south=tall:west=tall:up=false stone_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_andesite_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_andesite_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_andesite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_andesite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_asurine_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_asurine_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_asurine_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_asurine_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_calcite_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_calcite_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_calcite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_calcite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_crimsite_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_crimsite_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_crimsite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_crimsite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_deepslate_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_deepslate_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_deepslate_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_deepslate_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_diorite_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_diorite_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_diorite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_diorite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_dripstone_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_dripstone_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_dripstone_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_dripstone_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_granite_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_granite_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_granite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_granite_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_limestone_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_limestone_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_limestone_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_limestone_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_ochrum_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_ochrum_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_ochrum_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_ochrum_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_scorchia_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_scorchia_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_scorchia_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_scorchia_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_scoria_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_scoria_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_scoria_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_scoria_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_tuff_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_tuff_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_tuff_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_tuff_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_veridium_wall:north=none:east=none:south=tall:west=tall:up=false create:polished_cut_veridium_wall:north=none:east=none:south=tall:west=tall:up=false create:cut_veridium_brick_wall:north=none:east=none:south=tall:west=tall:up=false create:small_veridium_brick_wall:north=none:east=none:south=tall:west=tall:up=false block.493=cobblestone_wall:north=none:east=tall:south=tall:west=none:up=false andesite_wall:north=none:east=tall:south=tall:west=none:up=false blackstone_wall:north=none:east=tall:south=tall:west=none:up=false brick_wall:north=none:east=tall:south=tall:west=none:up=false cobbled_deepslate_wall:north=none:east=tall:south=tall:west=none:up=false deepslate_brick_wall:north=none:east=tall:south=tall:west=none:up=false deepslate_tile_wall:north=none:east=tall:south=tall:west=none:up=false diorite_wall:north=none:east=tall:south=tall:west=none:up=false end_stone_brick_wall:north=none:east=tall:south=tall:west=none:up=false granite_wall:north=none:east=tall:south=tall:west=none:up=false mossy_cobblestone_wall:north=none:east=tall:south=tall:west=none:up=false mossy_stone_brick_wall:north=none:east=tall:south=tall:west=none:up=false mud_brick_wall:north=none:east=tall:south=tall:west=none:up=false nether_brick_wall:north=none:east=tall:south=tall:west=none:up=false polished_blackstone_brick_wall:north=none:east=tall:south=tall:west=none:up=false polished_blackstone_wall:north=none:east=tall:south=tall:west=none:up=false polished_deepslate_wall:north=none:east=tall:south=tall:west=none:up=false prismarine_wall:north=none:east=tall:south=tall:west=none:up=false red_nether_brick_wall:north=none:east=tall:south=tall:west=none:up=false red_sandstone_wall:north=none:east=tall:south=tall:west=none:up=false sandstone_wall:north=none:east=tall:south=tall:west=none:up=false stone_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_andesite_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_andesite_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_andesite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_andesite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_asurine_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_asurine_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_asurine_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_asurine_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_calcite_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_calcite_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_calcite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_calcite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_crimsite_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_crimsite_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_crimsite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_crimsite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_deepslate_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_deepslate_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_deepslate_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_deepslate_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_diorite_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_diorite_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_diorite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_diorite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_dripstone_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_dripstone_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_dripstone_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_dripstone_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_granite_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_granite_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_granite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_granite_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_limestone_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_limestone_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_limestone_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_limestone_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_ochrum_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_ochrum_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_ochrum_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_ochrum_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_scorchia_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_scorchia_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_scorchia_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_scorchia_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_scoria_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_scoria_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_scoria_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_scoria_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_tuff_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_tuff_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_tuff_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_tuff_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_veridium_wall:north=none:east=tall:south=tall:west=none:up=false create:polished_cut_veridium_wall:north=none:east=tall:south=tall:west=none:up=false create:cut_veridium_brick_wall:north=none:east=tall:south=tall:west=none:up=false create:small_veridium_brick_wall:north=none:east=tall:south=tall:west=none:up=false block.494=cobblestone_wall:north=tall:east=tall:south=tall:west=tall:up=false andesite_wall:north=tall:east=tall:south=tall:west=tall:up=false blackstone_wall:north=tall:east=tall:south=tall:west=tall:up=false brick_wall:north=tall:east=tall:south=tall:west=tall:up=false cobbled_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=false deepslate_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false deepslate_tile_wall:north=tall:east=tall:south=tall:west=tall:up=false diorite_wall:north=tall:east=tall:south=tall:west=tall:up=false end_stone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false granite_wall:north=tall:east=tall:south=tall:west=tall:up=false mossy_cobblestone_wall:north=tall:east=tall:south=tall:west=tall:up=false mossy_stone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false mud_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false nether_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false polished_blackstone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false polished_blackstone_wall:north=tall:east=tall:south=tall:west=tall:up=false polished_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=false prismarine_wall:north=tall:east=tall:south=tall:west=tall:up=false red_nether_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false red_sandstone_wall:north=tall:east=tall:south=tall:west=tall:up=false sandstone_wall:north=tall:east=tall:south=tall:west=tall:up=false stone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_andesite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_andesite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_andesite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_andesite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_asurine_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_asurine_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_asurine_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_asurine_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_calcite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_calcite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_calcite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_calcite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_crimsite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_crimsite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_crimsite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_crimsite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_deepslate_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_deepslate_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_deepslate_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_diorite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_diorite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_diorite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_diorite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_dripstone_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_dripstone_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_dripstone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_dripstone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_granite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_granite_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_granite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_granite_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_limestone_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_limestone_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_limestone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_limestone_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_ochrum_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_ochrum_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_ochrum_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_ochrum_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_scorchia_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_scorchia_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_scorchia_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_scorchia_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_scoria_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_scoria_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_scoria_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_scoria_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_tuff_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_tuff_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_tuff_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_tuff_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_veridium_wall:north=tall:east=tall:south=tall:west=tall:up=false create:polished_cut_veridium_wall:north=tall:east=tall:south=tall:west=tall:up=false create:cut_veridium_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false create:small_veridium_brick_wall:north=tall:east=tall:south=tall:west=tall:up=false block.495=cobblestone_wall:north=tall:east=low:south=tall:west=low:up=false andesite_wall:north=tall:east=low:south=tall:west=low:up=false blackstone_wall:north=tall:east=low:south=tall:west=low:up=false brick_wall:north=tall:east=low:south=tall:west=low:up=false cobbled_deepslate_wall:north=tall:east=low:south=tall:west=low:up=false deepslate_brick_wall:north=tall:east=low:south=tall:west=low:up=false deepslate_tile_wall:north=tall:east=low:south=tall:west=low:up=false diorite_wall:north=tall:east=low:south=tall:west=low:up=false end_stone_brick_wall:north=tall:east=low:south=tall:west=low:up=false granite_wall:north=tall:east=low:south=tall:west=low:up=false mossy_cobblestone_wall:north=tall:east=low:south=tall:west=low:up=false mossy_stone_brick_wall:north=tall:east=low:south=tall:west=low:up=false mud_brick_wall:north=tall:east=low:south=tall:west=low:up=false nether_brick_wall:north=tall:east=low:south=tall:west=low:up=false polished_blackstone_brick_wall:north=tall:east=low:south=tall:west=low:up=false polished_blackstone_wall:north=tall:east=low:south=tall:west=low:up=false polished_deepslate_wall:north=tall:east=low:south=tall:west=low:up=false prismarine_wall:north=tall:east=low:south=tall:west=low:up=false red_nether_brick_wall:north=tall:east=low:south=tall:west=low:up=false red_sandstone_wall:north=tall:east=low:south=tall:west=low:up=false sandstone_wall:north=tall:east=low:south=tall:west=low:up=false stone_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_andesite_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_andesite_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_andesite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_andesite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_asurine_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_asurine_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_asurine_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_asurine_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_calcite_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_calcite_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_calcite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_calcite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_crimsite_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_crimsite_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_crimsite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_crimsite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_deepslate_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_deepslate_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_deepslate_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_deepslate_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_diorite_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_diorite_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_diorite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_diorite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_dripstone_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_dripstone_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_dripstone_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_dripstone_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_granite_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_granite_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_granite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_granite_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_limestone_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_limestone_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_limestone_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_limestone_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_ochrum_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_ochrum_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_ochrum_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_ochrum_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_scorchia_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_scorchia_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_scorchia_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_scorchia_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_scoria_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_scoria_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_scoria_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_scoria_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_tuff_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_tuff_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_tuff_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_tuff_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_veridium_wall:north=tall:east=low:south=tall:west=low:up=false create:polished_cut_veridium_wall:north=tall:east=low:south=tall:west=low:up=false create:cut_veridium_brick_wall:north=tall:east=low:south=tall:west=low:up=false create:small_veridium_brick_wall:north=tall:east=low:south=tall:west=low:up=false block.496=cobblestone_wall:north=low:east=tall:south=low:west=tall:up=false andesite_wall:north=low:east=tall:south=low:west=tall:up=false blackstone_wall:north=low:east=tall:south=low:west=tall:up=false brick_wall:north=low:east=tall:south=low:west=tall:up=false cobbled_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=false deepslate_tile_wall:north=low:east=tall:south=low:west=tall:up=false diorite_wall:north=low:east=tall:south=low:west=tall:up=false end_stone_brick_wall:north=low:east=tall:south=low:west=tall:up=false granite_wall:north=low:east=tall:south=low:west=tall:up=false mossy_cobblestone_wall:north=low:east=tall:south=low:west=tall:up=false mossy_stone_brick_wall:north=low:east=tall:south=low:west=tall:up=false mud_brick_wall:north=low:east=tall:south=low:west=tall:up=false nether_brick_wall:north=low:east=tall:south=low:west=tall:up=false polished_blackstone_brick_wall:north=low:east=tall:south=low:west=tall:up=false polished_blackstone_wall:north=low:east=tall:south=low:west=tall:up=false polished_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false prismarine_wall:north=low:east=tall:south=low:west=tall:up=false red_nether_brick_wall:north=low:east=tall:south=low:west=tall:up=false red_sandstone_wall:north=low:east=tall:south=low:west=tall:up=false sandstone_wall:north=low:east=tall:south=low:west=tall:up=false stone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_andesite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_andesite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_andesite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_andesite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_asurine_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_asurine_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_asurine_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_asurine_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_calcite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_calcite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_calcite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_calcite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_crimsite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_crimsite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_crimsite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_crimsite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_diorite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_diorite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_diorite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_diorite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_dripstone_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_dripstone_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_dripstone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_dripstone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_granite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_granite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_granite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_granite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_limestone_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_limestone_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_limestone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_limestone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_ochrum_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_ochrum_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_ochrum_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_ochrum_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scorchia_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_scorchia_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scorchia_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_scorchia_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scoria_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_scoria_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scoria_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_scoria_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_tuff_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_tuff_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_tuff_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_tuff_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_veridium_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_veridium_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_veridium_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_veridium_brick_wall:north=low:east=tall:south=low:west=tall:up=false ####### ----- misc ----- ####### ## stuff block.500=minecraft:end_portal ## all blocks here get exluded from POM. block.501=minecraft:oak_sign minecraft:spruce_sign minecraft:birch_sign minecraft:jungle_sign minecraft:acacia_sign minecraft:dark_oak_sign minecraft:mangrove_sign minecraft:crimson_sign minecraft:warped_sign minecraft:oak_wall_sign minecraft:spruce_wall_sign minecraft:birch_wall_sign minecraft:jungle_wall_sign minecraft:acacia_wall_sign minecraft:dark_oak_wall_sign minecraft:mangrove_wall_sign minecraft:crimson_wall_sign minecraft:warped_wall_sign ================================================ FILE: shaders/dimension.properties ================================================ # USAGE # dimension. = # "shader to use" refers to shaderpacks/EXAMPLESHADER/shaders/..., like how optifine has world0, world1, but you can name these anything here. # the dimension "ID's" to use are equivalent to the "ID's" from the /execute in command in-game. # EXAMPLE # dimension.world0 = minecraft:overworld twilightforest:twilight_forest # dimension.world-1 = minecraft:the_nether # dimension.WHATEVER = somemod:whateverdimension dimension.world0 = minecraft:overworld * dimension.world-1 = minecraft:the_nether dimension.world1 = minecraft:the_end dimension.worldx = # this is using alternate versions of the overworld shader, that have tweaks targeted at specific dimensions dimension.world0_Aether = aether:the_aether dimension.world0_Twilight_Forest = twilightforest:twilight_forest ================================================ FILE: shaders/dimensions/DH_generic.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/dither.glsl" in vec4 pos; in vec4 gcolor; uniform vec2 texelSize; uniform vec3 cameraPosition; uniform sampler2D depthtex1; uniform mat4 gbufferModelViewInverse; uniform float far; vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } /* 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); } } ================================================ FILE: shaders/dimensions/DH_generic.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" out vec4 pos; out 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 uniform int framemod4_DH; #define DH_TAA_OVERRIDE #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 #if defined TAA && defined DH_TAA_JITTER gl_Position.xy += offsets[framemod4_DH] * 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 } ================================================ FILE: shaders/dimensions/DH_solid.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" in vec4 pos; in vec4 localPos; in vec4 gcolor; in vec2 lightmapCoords; in vec4 normals_and_materials; flat in float SSSAMOUNT; flat in float EMISSIVE; flat in int dh_material_id; uniform float far; // uniform int hideGUI; #include "/lib/projections.glsl" uniform sampler2D noisetex; uniform float frameTimeCounter; //3D noise from 2d texture float densityAtPos(in vec3 pos){ pos /= 18.; pos.xz *= 0.5; vec3 p = floor(pos); vec3 f = fract(pos); vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); vec2 coord = uv / 512.0; //The y channel has an offset to avoid using two textures fetches vec2 xy = texture2D(noisetex, coord).yx; 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 float noiseIntensity = NOISE_INTENSITY; const int noiseDropoff = NOISE_DROPOFF; 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 // Mikis idea. make it such that you can control the step amount as distance increases out from where vanilla chunks end. // ideally, close = higher steps and far = lower steps float highestSteps = NOISE_RESOLUTION; float lowestSteps = 2.0; float transitionLength = 16.0 * 16.0; // distance it takes to reach the lowest steps from the highest. measured in meters/blocks. float transitionGradient = clamp((length(viewPos - cameraPosition) - (far+32.0)) / transitionLength,0.0,1.0); transitionGradient = sqrt(transitionGradient);// make the gradient appear smoother and less sudden when approaching low steps.low steps. int dynamicNoiseSteps = int(mix(highestSteps, lowestSteps, transitionGradient)); // Random value for each position float randomValue = rand(quantize(viewPos, dynamicNoiseSteps)) * 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() { #ifdef DH_OVERDRAW_PREVENTION #if OVERDRAW_MAX_DISTANCE == 0 float maxOverdrawDistance = far; #else 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 ){ discard; return; } #endif vec3 normals = (normals_and_materials.xyz); float materials = normals_and_materials.a; vec2 PackLightmaps = lightmapCoords; // 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); // 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 // 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; // float noiseTexture = densityAtPos(worldPos* 5000 ) +0.5; // float noiseFactor = max(1.0 - 0.3 * dot(Albedo.rgb, Albedo.rgb),0.0); // Albedo.rgb *= pow(noiseTexture, 0.6 * noiseFactor); // Albedo.rgb *= (noiseTexture*noiseTexture)*0.5 + 0.5; #ifdef AEROCHROME_MODE if(dh_material_id == DH_BLOCK_LEAVES || dh_material_id == DH_BLOCK_WATER) { // leaves and waterlogged blocks float grey = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07)); Albedo.rgb = mix(vec3(grey), aerochrome_color, 0.7); } else if(dh_material_id == DH_BLOCK_GRASS) { // grass Albedo.rgb = mix(Albedo.rgb, aerochrome_color, 1.0 - Albedo.g); } #endif #ifdef WhiteWorld Albedo.rgb = vec3(0.5); #endif gl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x), encodeVec2(Albedo.y,data1.y), encodeVec2(Albedo.z,data1.z), encodeVec2(data1.w, materials)); gl_FragData[1].a = 0.0; #if EMISSIVE_TYPE == 0 gl_FragData[2].a = 0.0; #else gl_FragData[2].a = EMISSIVE; #endif #if SSS_TYPE == 0 gl_FragData[2].b = 0.0; #else gl_FragData[2].b = SSSAMOUNT; #endif } ================================================ FILE: shaders/dimensions/DH_solid.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" out vec4 pos; out vec4 localPos; out vec4 gcolor; out vec2 lightmapCoords; out vec4 normals_and_materials; flat out float SSSAMOUNT; flat out float EMISSIVE; flat out int dh_material_id; uniform vec2 texelSize; uniform int framemod8; uniform float far; #if DOF_QUALITY == 5 uniform int hideGUI; uniform int frameCounter; uniform float aspectRatio; uniform float screenBrightness; #include "/lib/bokeh.glsl" #endif uniform int framemod4_DH; #define DH_TAA_OVERRIDE #include "/lib/TAA_jitter.glsl" #include "/lib/projections.glsl" uniform mat4 dhProjection; #define SEASONS_VSH #define DH_SEASONS #include "/lib/climate_settings.glsl" void main() { // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; // vec3 worldpos = toWorldSpace(position); // #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 = toClipSpace4alt(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; #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 gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; #endif #if defined TAA && defined DH_TAA_JITTER gl_Position.xy += offsets[framemod4_DH] * gl_Position.w*texelSize; #endif lightmapCoords = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy; gcolor = gl_Color; EMISSIVE = 0.0; if(dhMaterialId == DH_BLOCK_ILLUMINATED || gl_MultiTexCoord1.x >= 0.95) EMISSIVE = 0.5; SSSAMOUNT = 0.0; #if defined DH_SUBSURFACE_SCATTERING if (dhMaterialId == DH_BLOCK_LEAVES) SSSAMOUNT = 1.0; if (dhMaterialId == DH_BLOCK_SNOW) SSSAMOUNT = 0.5; #endif // a mask for DH terrain in general. float MATERIALS = 0.65; 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 #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 } ================================================ FILE: shaders/dimensions/DH_translucent.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/tonemaps.glsl" #include "/lib/projections.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" uniform vec2 texelSize; // uniform int moonPhase; uniform float frameTimeCounter; const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; uniform sampler2D depthtex0; uniform sampler2D depthtex1; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex4; uniform sampler2D colortex5; uniform sampler2D colortex12; #include "/lib/sky_gradient.glsl" #include "/lib/waterBump.glsl" #include "/lib/Shadow_Params.glsl" in vec4 pos; in vec4 gcolor; in vec4 normals_and_materials; in vec2 lightmapCoords; flat in int isWater; // uniform float far; // uniform sampler2D colortex4; flat in vec3 averageSkyCol_Clouds; flat in vec4 lightCol; flat in vec3 WsunVec; flat in vec3 WsunVec2; #include "/lib/DistantHorizons_projections.glsl" uniform float near; float invLinZ (float lindepth){ return -((2.0*dhNearPlane/lindepth)-far-dhNearPlane)/(far-dhNearPlane); } float ld(float dist) { return (2.0 * dhNearPlane) / (far + dhNearPlane - dist * (far - dhNearPlane)); } float linearizeDepthFast(const in float depth, const in float dhNearPlane, const in float far) { return (dhNearPlane * far) / (depth * (dhNearPlane - far) + far); } uniform int isEyeInWater; uniform float rainStrength; #ifdef OVERWORLD_SHADER uniform int worldTime; uniform int worldDay; #include "/lib/scene_controller.glsl" #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif 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 / (PI * 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 int framemod8; #include "/lib/TAA_jitter.glsl" vec3 doScreenSpaceReflectiom(vec3 dir, vec3 position, float dither, float quality){ float biasAmount = 0.001; vec3 clipPosition = DH_toClipSpace3(position); float rayLength = ((position.z + dir.z * dhFarPlane*sqrt(3.)) > -dhNearPlane) ? (-dhNearPlane - position.z) / dir.z : dhFarPlane*sqrt(3.); vec3 direction = DH_toClipSpace3(position + dir*rayLength) - clipPosition; //convert to clip space //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; clipPosition.xy *= RENDER_SCALE; stepv.xy *= RENDER_SCALE; vec3 spos = clipPosition + stepv*dither; spos.xy += texelSize*0.5; float minZ = spos.z - 0.00025 / DH_ld(spos.z); float maxZ = spos.z; for (int i = 0; i <= int(quality); i++) { if(spos.x < 0 || spos.x > 1 || spos.y < 0 || spos.y > 1) return vec3(1.1); float sampleDepth = sqrt(texelFetch2D(colortex12,ivec2(spos.xy/texelSize/4),0).a/65000.0); float sp = DH_inv_ld(sampleDepth); if(sp < max(minZ, maxZ) && sp > min(minZ, maxZ)) return vec3(spos.xy/RENDER_SCALE,sp); minZ = maxZ - biasAmount / DH_ld(spos.z); maxZ += stepv.z; spos += stepv; } return vec3(1.1); } vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ float bumpmult = puddle_values; bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); return normalize(bump*tbnMatrix); } #define FORWARD_SPECULAR #define FORWARD_SSR_QUALITY 30 // [0 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 200 300 400 500] #define FORWARD_BACKGROUND_REFLECTION /* RENDERTARGETS:2,7 */ void main() { if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0) { bool iswater = isWater > 0; float material = 0.7; if(iswater) material = 1.0; vec3 normals = normalize(normals_and_materials.xyz); if (!gl_FrontFacing) normals = -normals; vec3 worldSpaceNormals = mat3(gbufferModelViewInverse) * normals; vec3 viewPos = pos.xyz; vec3 playerPos = toWorldSpace(viewPos); float transition = exp(-25* pow(clamp(1.0 - length(playerPos)/(far-8),0.0,1.0),2)); #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) ){ discard; return;} #endif vec3 waterNormals = worldSpaceNormals; if(iswater && abs(worldSpaceNormals.y) > 0.1){ vec3 waterPos = (playerPos+cameraPosition).xzy; vec3 bump = normalize(getWaveNormal(waterPos, playerPos, true)); float bumpmult = WATER_WAVE_STRENGTH; bump = bump * bumpmult + vec3(0.0f, 0.0f, 1.0f - bumpmult); waterNormals.xz = bump.xy; } normals = worldToView(waterNormals); gl_FragData[0] = gcolor; // float UnchangedAlpha = gl_FragData[0].a; vec3 Albedo = toLinear(gl_FragData[0].rgb); if(iswater){ #ifdef Vanilla_like_water Albedo *= sqrt(luma(Albedo)); #else Albedo = vec3(0.0); gl_FragData[0].a = 1.0/255.0; #endif } #ifdef WhiteWorld gl_FragData[0].rgb = vec3(1.0); gl_FragData[0].a = 1.0; #endif // diffuse vec3 Indirect_lighting = vec3(0.0); // vec3 MinimumLightColor = vec3(1.0); vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER vec3 DirectLightColor = lightCol.rgb/2400.0; float NdotL = clamp(dot(worldSpaceNormals, WsunVec),0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); float Shadows = 1.0; #ifdef DISTANT_HORIZONS_SHADOWMAP vec3 feetPlayerPos_shadow = toWorldSpace(pos.xyz); vec3 projectedShadowPosition = toShadowSpaceProjected(feetPlayerPos_shadow); //apply distortion #ifdef DISTORT_SHADOWMAP float distortFactor = calcDistort(projectedShadowPosition.xy); projectedShadowPosition.xy *= distortFactor; #else float distortFactor = 1.0; #endif float smallbias = -0.0035; bool ShadowBounds = abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0; if(ShadowBounds){ Shadows = 0.0; projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); #ifdef LPV_SHADOWS projectedShadowPosition.xy *= 0.8; #endif Shadows = shadow2D(shadow, projectedShadowPosition + vec3(0.0,0.0, smallbias)).x; } #endif Shadows *= getCloudShadow(playerPos + cameraPosition, WsunVec); Direct_lighting = DirectLightColor * NdotL * Shadows; vec3 AmbientLightColor = averageSkyCol_Clouds / 900.0 ; vec3 indirectNormal = worldSpaceNormals.xyz / dot(abs(worldSpaceNormals.xyz), vec3(1.0)); float SkylightDir = clamp(indirectNormal.y * 0.7 + 0.3, 0.0, 1.0); float skylight = mix(0.08, 1.0, SkylightDir); AmbientLightColor *= skylight; #endif #ifndef OVERWORLD_SHADER vec3 AmbientLightColor = vec3(0.5); #endif Indirect_lighting = AmbientLightColor; float indoors = min(max(lightmapCoords.y-0.5,0.0)/0.4,1.0); vec3 FinalColor = (Indirect_lighting + Direct_lighting*indoors) * Albedo; // specular #ifdef FORWARD_SPECULAR vec3 Reflections_Final = vec3(0.0); vec4 Reflections = vec4(0.0); vec3 BackgroundReflection = FinalColor; vec3 SunReflection = vec3(0.0); float SSR_HIT_SKY_MASK = indoors; float roughness = 0.0; float f0 = 0.02; // f0 = 0.9; vec3 reflectedVector = reflect(normalize(viewPos), normals); float normalDotEye = dot(normals, normalize(viewPos)); float fresnel = pow(clamp(1.0 + normalDotEye, 0.0, 1.0),5.0); fresnel = mix(f0, 1.0, fresnel); #ifdef SNELLS_WINDOW if(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0); #endif #if FORWARD_SSR_QUALITY > 0 && defined DH_SCREENSPACE_REFLECTIONS vec3 rtPos = doScreenSpaceReflectiom(reflectedVector, viewPos, interleaved_gradientNoise_temporal(), mix(5.0f, float(FORWARD_SSR_QUALITY), fresnel)); if (rtPos.z < 0.99999){ vec3 previousPosition = toPreviousPos(DH_toScreenSpace(rtPos)); previousPosition.xy = projMAD(dhPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; previousPosition.xy = clamp(previousPosition.xy, 0.0, 1.0); Reflections.a = 1.0; Reflections.rgb = texture2D(colortex5, previousPosition.xy).rgb; }else{ if (rtPos.x > 0.0 && rtPos.y > 0.0 && rtPos.x < 1.0 && rtPos.y < 1.0) SSR_HIT_SKY_MASK = 1.0; } #endif #ifdef FORWARD_BACKGROUND_REFLECTION BackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 1200.0; #endif #ifdef WATER_SUN_SPECULAR SunReflection = (DirectLightColor * Shadows) * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a); #endif Reflections_Final = mix(FinalColor, mix(BackgroundReflection*SSR_HIT_SKY_MASK, Reflections.rgb, Reflections.a), fresnel); Reflections_Final += SunReflection*indoors; gl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * fresnel; gl_FragData[0].rgb = clamp(Reflections_Final / gl_FragData[0].a * 0.1,0.0,65000.0); if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.0); #else gl_FragData[0].rgb = FinalColor * 0.1; #endif #ifdef DH_OVERDRAW_PREVENTION float distancefade = min(max(1.0 - length(playerPos)/clamp(far-16*4, 16, maxOverdrawDistance),0.0)*5,1.0); if(texture2D(depthtex0, gl_FragCoord.xy*texelSize).x < 1.0 || distancefade > 0.0){ gl_FragData[0].a = 0.0; material = 0.0; } #endif #if DEBUG_VIEW == debug_DH_WATER_BLENDING if(gl_FragCoord.x*texelSize.x > 0.53) gl_FragData[0] = vec4(0.0); #endif gl_FragData[1] = vec4(Albedo, material); } } ================================================ FILE: shaders/dimensions/DH_translucent.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" out vec4 pos; out vec4 gcolor; out vec4 normals_and_materials; out vec2 lightmapCoords; flat out int isWater; uniform sampler2D colortex4; flat out vec3 averageSkyCol_Clouds; flat out vec4 lightCol; #ifdef OVERWORLD_SHADER uniform int worldDay; #include "/lib/scene_controller.glsl" #endif out mat4 normalmatrix; flat out vec3 WsunVec; flat out vec3 WsunVec2; uniform mat4 dhProjection; uniform vec3 sunPosition; uniform float sunElevation; 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 uniform int framemod4_DH; #define DH_TAA_OVERRIDE #include "/lib/TAA_jitter.glsl" #include "/lib/projections.glsl" void main() { gl_Position = dhProjection * gl_ModelViewMatrix * gl_Vertex; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 worldpos = toWorldSpace(position); // 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 = toClipSpace4alt(position); pos = gl_ModelViewMatrix * gl_Vertex; // vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; isWater = 0; if (dhMaterialId == DH_BLOCK_WATER){ 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; } // gl_Position = toClipSpace4alt(position); normals_and_materials = vec4(mat3(gbufferModelView) * gl_Normal, 1.0); gcolor = gl_Color; lightmapCoords = gl_MultiTexCoord1.xy; lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; #ifdef OVERWORLD_SHADER readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #endif WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); WsunVec2 = lightCol.a * normalize(sunPosition); #ifdef TAA_UPSCALING gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; #endif #if defined TAA && defined DH_TAA_JITTER gl_Position.xy += offsets[framemod4_DH] * gl_Position.w*texelSize; #endif #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 } ================================================ FILE: shaders/dimensions/all_particles.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #ifdef IS_LPV_ENABLED #extension GL_EXT_shader_image_load_store: enable #extension GL_ARB_shading_language_packing: enable #endif #include "/lib/res_params.glsl" in vec4 lmtexcoord; in vec4 color; #ifdef LINES flat in int SELECTION_BOX; #endif #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 in vec3 WsunVec; flat in vec3 averageSkyCol_Clouds; flat in vec4 lightCol; #endif uniform int renderStage; uniform int isEyeInWater; uniform sampler2D texture; uniform sampler2D colortex4; uniform sampler2D noisetex; #ifdef IS_LPV_ENABLED uniform usampler1D texBlockData; uniform sampler3D texLpv1; uniform sampler3D texLpv2; #endif uniform int frameCounter; uniform float frameTimeCounter; #include "/lib/Shadow_Params.glsl" uniform vec2 texelSize; uniform ivec2 eyeBrightnessSmooth; uniform float rainStrength; uniform float waterEnteredAltitude; uniform float nightVision; flat in float HELD_ITEM_BRIGHTNESS; #include "/lib/projections.glsl" #ifdef OVERWORLD_SHADER uniform int worldTime; uniform int worldDay; #include "/lib/scene_controller.glsl" #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif #ifdef IS_LPV_ENABLED uniform int heldItemId; uniform int heldItemId2; #include "/lib/hsv.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" #endif #include "/lib/diffuse_lighting.glsl" #include "/lib/sky_gradient.glsl" uniform int framemod8; #include "/lib/TAA_jitter.glsl" //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; } #ifdef OVERWORLD_SHADER float ComputeShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDistFade){ // if(maxDistFade <= 0.0) return 1.0; // setup shadow projection vec3 projectedShadowPosition = toShadowSpaceProjected(playerPos); // un-distort float distortFactor = 1.0; #ifdef DISTORT_SHADOWMAP distortFactor = calcDistort(projectedShadowPosition.xy); projectedShadowPosition.xy *= distortFactor; #endif // hamburger projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); #ifdef LPV_SHADOWS projectedShadowPosition.xy *= 0.8; #endif float shadowmap = 0.0; vec3 translucentTint = vec3(0.0); #ifdef TRANSLUCENT_COLORED_SHADOWS // determine when opaque shadows are overlapping translucent shadows by getting the difference of opaque depth and translucent depth float shadowDepthDiff = pow(clamp((shadow2D(shadowtex1, projectedShadowPosition).x - projectedShadowPosition.z) * 2.0,0.0,1.0),2.0); // get opaque shadow data to get opaque data from translucent shadows. float opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x; shadowmap += max(opaqueShadow, shadowDepthDiff); // get translucent shadow data vec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy); // this curve simply looked the nicest. it has no other meaning. float shadowAlpha = pow(1.0 - pow(translucentShadow.a,5.0),0.2); // normalize the color to remove luminance, and keep the hue. remove all opaque color. // mulitply shadow alpha to shadow color, but only on surfaces facing the lightsource. this is a tradeoff to protect subsurface scattering's colored shadow tint from shadow bias on the back of the caster. translucentShadow.rgb = max(normalize(translucentShadow.rgb + 0.0001), max(opaqueShadow, 1.0-shadowAlpha)) * shadowAlpha; // make it such that full alpha areas that arent in a shadow have a value of 1.0 instead of 0.0 translucentTint += mix(translucentShadow.rgb, vec3(1.0), opaqueShadow*shadowDepthDiff); // tint the lightsource color with the translucent shadow color directLightColor *= mix(vec3(1.0), translucentTint.rgb, maxDistFade); #else shadowmap += shadow2D(shadow, projectedShadowPosition).x; #endif return shadowmap; // return mix(1.0, shadowmap, maxDistFade); } #endif #if defined DAMAGE_BLOCK_EFFECT && defined POM #extension GL_ARB_shader_texture_lod : enable const float MAX_OCCLUSION_DISTANCE = MAX_DIST; const float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9; const int MAX_OCCLUSION_POINTS = MAX_ITERATIONS; in vec4 vtexcoordam; // .st for add, .pq for mul in vec4 vtexcoord; vec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); vec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); const float mincoord = 1.0/4096.0; const float maxcoord = 1.0-mincoord; uniform sampler2D normals; in vec4 tangent; in vec4 normalMat; vec4 readNormal(in vec2 coord) { return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); } vec4 readTexture(in vec2 coord) { return texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); } #endif uniform float near; // uniform float far; float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } vec4 texture2D_POMSwitch( sampler2D sampler, vec2 lightmapCoord, vec4 dcdxdcdy ) { return texture2DGradARB(sampler, lightmapCoord, dcdxdcdy.xy, dcdxdcdy.zw); } uniform vec3 eyePosition; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// #ifdef DAMAGE_BLOCK_EFFECT /* RENDERTARGETS:11 */ #else /* RENDERTARGETS:2,9,11,7 */ #endif void main() { #ifdef DAMAGE_BLOCK_EFFECT vec2 adjustedTexCoord = lmtexcoord.xy; #ifdef POM vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(0.0)); vec3 worldpos = toWorldSpaceCamera(fragpos); vec3 normal = normalMat.xyz; vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, tangent.y, tangent2.y, normal.y, tangent.z, tangent2.z, normal.z); adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; vec3 viewVector = normalize(tbnMatrix*fragpos); float dist = length(fragpos); float maxdist = MAX_OCCLUSION_DISTANCE; if (dist < maxdist) { float depthmap = readNormal(vtexcoord.st).a; float used_POM_DEPTH = 1.0; if (viewVector.z < 0.0 && depthmap < 0.9999 && depthmap > 0.00001) { #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); used_POM_DEPTH = 1.0; #else vec3 interval = viewVector.xyz/-viewVector.z/MAX_OCCLUSION_POINTS * POM_DEPTH; #endif vec3 coord = vec3(vtexcoord.st, 1.0); coord += interval * used_POM_DEPTH; float sumVec = 0.5; 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; } if (coord.t < mincoord) { if (readTexture(vec2(coord.s,mincoord)).a == 0.0) { coord.t = mincoord; discard; } } adjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE)); } } vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy)); #else vec4 Albedo = texture2D(texture, adjustedTexCoord.xy); #endif Albedo.rgb = toLinear(Albedo.rgb); if(dot(Albedo.rgb, vec3(0.33333)) < 1.0/255.0 || Albedo.a < 0.01 ) { discard; return; } gl_FragData[0] = vec4(encodeVec2(vec2(0.5)), encodeVec2(Albedo.rg), encodeVec2(vec2(Albedo.b,0.02)), 1.0); #else gl_FragData[2] = vec4(0.0); #if defined LINES && !defined SELECT_BOX if(SELECTION_BOX > 0) discard; #endif vec2 tempOffset = offsets[framemod8]; vec3 viewPos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos; vec3 feetPlayerPos_normalized = normalize(feetPlayerPos); vec3 worldPos = feetPlayerPos + cameraPosition; vec4 TEXTURE = texture2D(texture, lmtexcoord.xy)*color; #ifdef WhiteWorld TEXTURE.rgb = vec3(0.5); #endif vec3 Albedo = toLinear(TEXTURE.rgb); vec2 lightmap = clamp(lmtexcoord.zw,0.0,1.0); #ifndef OVERWORLD_SHADER lightmap.y = 1.0; #endif #if defined Hand_Held_lights && !defined LPV_ENABLED #ifdef IS_IRIS vec3 playerCamPos = eyePosition; #else vec3 playerCamPos = cameraPosition; #endif if(HELD_ITEM_BRIGHTNESS > 0.0){ float pointLight = clamp(1.0-(length(worldPos-playerCamPos)-1.0)/HANDHELD_LIGHT_RANGE,0.0,1.0); lightmap.x = mix(lightmap.x, HELD_ITEM_BRIGHTNESS, pointLight * pointLight); } #endif #ifdef WEATHER gl_FragData[1] = vec4(0.0,0.0,0.0,TEXTURE.a); // for bloomy rain and stuff #else #ifndef LINES gl_FragData[0].a = TEXTURE.a; #else gl_FragData[0].a = color.a; #endif #ifndef BLOOMY_PARTICLES gl_FragData[1].a = 0.0; // for bloomy rain and stuff #endif gl_FragData[3] = vec4(0.0,0.0,0.0,0.4); vec3 Direct_lighting = vec3(0.0); vec3 directLightColor = vec3(0.0); vec3 Indirect_lighting = vec3(0.0); vec3 AmbientLightColor = vec3(0.0); vec3 Torch_Color = vec3(TORCH_R,TORCH_G,TORCH_B); vec3 MinimumLightColor = vec3(1.0); if(lightmap.x >= 0.9) Torch_Color *= LIT_PARTICLE_BRIGHTNESS; #ifdef OVERWORLD_SHADER directLightColor = lightCol.rgb/2400.0; AmbientLightColor = averageSkyCol_Clouds / 900.0; #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS directLightColor = luma(directLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); AmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B); #endif float Shadows = 1.0; vec3 shadowPlayerPos = toWorldSpace(viewPos); float shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(shadowPlayerPos) / (shadowDistance+16),0.0)*5.0,1.0)); float shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(shadowPlayerPos) / (shadowDistance+11),0.0)*5.0,1.0)); float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0); Shadows = ComputeShadowMap(directLightColor, shadowPlayerPos, shadowMapFalloff); Shadows *= mix(LM_shadowMapFallback, 1.0, shadowMapFalloff2); Shadows *= getCloudShadow(worldPos, WsunVec); if(isEyeInWater == 1){ float distanceFromWaterSurface = max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ; directLightColor *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * distanceFromWaterSurface); } Direct_lighting = directLightColor * Shadows; // #ifndef LINES // Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5; // #endif #ifdef IS_IRIS AmbientLightColor *= 2.5; #else AmbientLightColor *= 0.5; #endif Indirect_lighting = doIndirectLighting(AmbientLightColor, MinimumLightColor, lightmap.y); #endif #ifdef NETHER_SHADER Indirect_lighting = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0; #endif #ifdef END_SHADER Indirect_lighting = vec3(END_FOG_R, END_FOG_G, END_FOG_B) * 0.2; #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING #ifdef IS_LPV_ENABLED vec3 lpvPos = GetLpvPosition(feetPlayerPos); #else const vec3 lpvPos = vec3(0.0); #endif Indirect_lighting += doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos, mat3(gbufferModelViewInverse)*vec3(0,1,0)); #ifdef LINES gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * toLinear(color.rgb); #if defined SELECT_BOX && (SELECTION_BOX > 0) gl_FragData[0].rgba = vec4(toLinear(vec3(SELECT_BOX_COL_R, SELECT_BOX_COL_G, SELECT_BOX_COL_B)), 1.0); #endif float LITEMATICA_SCHEMATIC_THING_MASK = 0.0; if (renderStage == MC_RENDER_STAGE_NONE){ LITEMATICA_SCHEMATIC_THING_MASK = 0.1; gl_FragData[0] = vec4(toLinear(color.rgb), color.a); } gl_FragData[2] = vec4(encodeVec2(vec2(0.0)), encodeVec2(vec2(0.0)), encodeVec2(vec2(0.0)), encodeVec2(0.0, LITEMATICA_SCHEMATIC_THING_MASK)); #else gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * Albedo; #endif // distance fade targeting the world border... if(TEXTURE.a < 0.7 && TEXTURE.a > 0.2) gl_FragData[0] *= clamp(1.0 - length(feetPlayerPos) / 100.0 ,0.0,1.0); gl_FragData[0].rgb *= 0.1; #endif #endif } ================================================ FILE: shaders/dimensions/all_particles.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/items.glsl" /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ out vec4 color; uniform sampler2D colortex4; out vec4 lmtexcoord; #ifdef LINES flat out int SELECTION_BOX; #endif #ifdef OVERWORLD_SHADER flat out vec3 averageSkyCol_Clouds; flat out vec4 lightCol; flat out vec3 WsunVec; uniform int worldDay; #include "/lib/scene_controller.glsl" #endif uniform vec3 sunPosition; uniform float sunElevation; uniform vec2 texelSize; uniform int framemod8; uniform float frameTimeCounter; uniform ivec2 eyeBrightnessSmooth; uniform int heldItemId; uniform int heldItemId2; flat out float HELD_ITEM_BRIGHTNESS; #include "/lib/TAA_jitter.glsl" #include "/lib/projections.glsl" #ifdef DAMAGE_BLOCK_EFFECT out vec4 vtexcoordam; // .st for add, .pq for mul out vec4 vtexcoord; attribute vec4 mc_midTexCoord; out vec4 tangent; attribute vec4 at_tangent; out vec4 normalMat; #endif //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { lmtexcoord.xy = (gl_MultiTexCoord0).xy; lmtexcoord.zw = gl_MultiTexCoord1.xy/240.0; #ifdef DAMAGE_BLOCK_EFFECT vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; vec2 texcoordminusmid = lmtexcoord.xy-midcoord; vtexcoordam.pq = abs(texcoordminusmid) * 2; vtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid); vtexcoord.xy = sign(texcoordminusmid) * 0.5 + 0.5; tangent = vec4(normalize(gl_NormalMatrix * at_tangent.rgb), at_tangent.w); normalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0); #endif HELD_ITEM_BRIGHTNESS = 0.0; #ifdef Hand_Held_lights if(heldItemId > 999 || heldItemId2 > 999) HELD_ITEM_BRIGHTNESS = 0.9; #endif #ifdef WEATHER vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 worldpos = toWorldSpaceCamera(position); bool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.99; if(!istopv){ worldpos.xyz -= cameraPosition - vec3(2.0,0.0,2.0) * min(max(clamp(eyeBrightnessSmooth.y/240.0,0,1)-0.95,0)/0.05,1); }else{ worldpos.xyz -= cameraPosition; } position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; gl_Position = toClipSpace4alt(position); #else gl_Position = ftransform(); #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy + gl_Position.w) * RENDER_SCALE-gl_Position.w; #endif #ifdef TAA gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize; #endif #endif color = gl_Color; // color.rgb = worldpos; #ifdef LINES SELECTION_BOX = 0; if(dot(color.rgb,vec3(0.33333)) < 0.00001) SELECTION_BOX = 1; #endif #ifdef OVERWORLD_SHADER lightCol.rgb = texelFetch2D(colortex4, ivec2(6, 37), 0).rgb; lightCol.a = float(sunElevation > 1e-5) * 2.0-1.0; averageSkyCol_Clouds = texelFetch2D(colortex4, ivec2(0, 37), 0).rgb; WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #endif } ================================================ FILE: shaders/dimensions/all_solid.fsh ================================================ #extension GL_ARB_shader_texture_lod : enable #include "/lib/settings.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/items.glsl" #include "/lib/util.glsl" #include "/lib/projections.glsl" #include "/lib/dither.glsl" in vec4 lmtexcoord; flat in int NameTags; #if defined HAND || !defined MC_NORMAL_MAP #undef POM #endif #ifdef POM #define MC_NORMAL_MAP #endif in float VanillaAO; const float mincoord = 1.0/4096.0; const float maxcoord = 1.0-mincoord; const float MAX_OCCLUSION_DISTANCE = MAX_DIST; const float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9; const int MAX_OCCLUSION_POINTS = MAX_ITERATIONS; uniform vec2 texelSize; uniform int framemod8; uniform float rainStrength; uniform float rainyAreas; float lightmap = clamp((lmtexcoord.w-0.9) * 10.0, 0.0, 1.0); // #ifdef POM in vec4 vtexcoordam; // .st for add, .pq for mul in vec4 vtexcoord; vec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); vec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); // #endif #include "/lib/res_params.glsl" in vec4 color; uniform float wetness; in vec4 normalMat; #ifdef MC_NORMAL_MAP uniform sampler2D normals; in vec4 tangent; in vec3 FlatNormals; #endif uniform sampler2D specular; uniform sampler2D texture; uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 uniform sampler2D depthtex0; uniform float alphaTestRef; uniform float frameTimeCounter; #ifdef VIVECRAFT uniform bool vivecraftIsVR; uniform vec3 vivecraftRelativeMainHandPos; uniform vec3 vivecraftRelativeOffHandPos; uniform mat4 vivecraftRelativeMainHandRot; uniform mat4 vivecraftRelativeOffHandRot; #endif uniform vec4 entityColor; // in vec3 velocity; flat in float blockID; flat in int PORTAL; flat in int SIGN; flat in float SSSAMOUNT; flat in float EMISSIVE; flat in int LIGHTNING; flat in float HELD_ITEM_BRIGHTNESS; mat3 inverseMatrix(mat3 m) { float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; float b01 = a22 * a11 - a12 * a21; float b11 = -a22 * a10 + a12 * a20; float b21 = a21 * a10 - a11 * a20; float det = a00 * b01 + a01 * b11 + a02 * b21; return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; } #ifdef MC_NORMAL_MAP vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ float bumpmult = clamp(puddle_values,0.0,1.0); bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); return normalize(bump*tbnMatrix); } #endif #ifdef POM vec4 readNormal(in vec2 coord) { return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); } vec4 readTexture(in vec2 coord) { return texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); } #endif const vec2[8] offsets = vec2[8](vec2(1.,-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.); uniform float far; uniform float near; float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } vec4 readNoise(in vec2 coord){ // return texture2D(noisetex,coord*vtexcoordam.pq+vtexcoord.st); return texture2DGradARB(noisetex,coord*vtexcoordam.pq + vtexcoordam.st,dcdx,dcdy); } float bias(){ // return (Texture_MipMap_Bias + (blueNoise()-0.5)*0.5) - (1.0-RENDER_SCALE.x) * 2.0; return Texture_MipMap_Bias - (1.0-RENDER_SCALE.x) * 2.0; } vec4 texture2D_POMSwitch( sampler2D sampler, vec2 lightmapCoord, vec4 dcdxdcdy, bool ifPOM, float LOD ){ if(ifPOM){ return texture2DGradARB(sampler, lightmapCoord, dcdxdcdy.xy, dcdxdcdy.zw); }else{ return texture2D(sampler, lightmapCoord, LOD); } } uniform vec3 eyePosition; void convertHandDepth(inout float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// #if defined HAND || defined ENTITIES || defined BLOCKENTITIES /* RENDERTARGETS:1,8,15,2 */ #else /* RENDERTARGETS:1,8,15 */ #endif void main() { vec3 FragCoord = gl_FragCoord.xyz; #ifdef HAND convertHandDepth(FragCoord.z); #endif bool ifPOM = false; #ifdef POM ifPOM = true; #endif if(SIGN > 0) ifPOM = false; vec3 normal = normalMat.xyz; #ifdef MC_NORMAL_MAP vec3 binormal = normalize(cross(tangent.rgb,normal)*tangent.w); mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, tangent.y, binormal.y, normal.y, tangent.z, binormal.z, normal.z); #endif vec2 tempOffset = offsets[framemod8]; vec3 fragpos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5, 0.0)); vec3 playerPos = toWorldSpace(fragpos); vec3 worldPos = playerPos + cameraPosition; float torchlightmap = lmtexcoord.z; #if defined Hand_Held_lights && !defined LPV_ENABLED #ifdef IS_IRIS vec3 playerCamPos = eyePosition; #else vec3 playerCamPos = cameraPosition; #endif #ifdef VIVECRAFT if (vivecraftIsVR){ playerCamPos = cameraPosition - vivecraftRelativeMainHandPos; } #endif if(HELD_ITEM_BRIGHTNESS > 0.0){ float pointLight = clamp(1.0-(length(worldPos-playerCamPos)-1.0)/HANDHELD_LIGHT_RANGE,0.0,1.0); torchlightmap = mix(torchlightmap, HELD_ITEM_BRIGHTNESS, pointLight * pointLight); } #ifdef HAND torchlightmap *= 0.9; #endif #endif float Puddle_shape = 0.0; #if defined Puddles && defined WORLD && !defined ENTITIES && !defined HAND 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) * rainStrength * rainyAreas; #endif vec2 adjustedTexCoord = lmtexcoord.xy; #if defined POM && defined WORLD && !defined ENTITIES && !defined HAND // vec2 tempOffset=offsets[framemod8]; 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); float maxdist = MAX_OCCLUSION_DISTANCE; if(!ifPOM) maxdist = 0.0; gl_FragDepth = gl_FragCoord.z; 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 * 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*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 - pomdepth + pomdepth * readNormal(coord.st).a ) < coord.p && coord.p >= 0.0; ++loopCount) { coord = coord + interval * used_POM_DEPTH; sumVec += used_POM_DEPTH; } if (coord.t < mincoord) { if (readTexture(vec2(coord.s,mincoord)).a == 0.0) { coord.t = mincoord; discard; } } adjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE)); vec3 truePos = fragpos + sumVec*inverseMatrix(tbnMatrix)*interval; gl_FragDepth = toClipSpace3(truePos).z; } } #endif if(!ifPOM) adjustedTexCoord = lmtexcoord.xy; //////////////////////////////// //////////////////////////////// //////////////////////////////// ALBEDO //////////////////////////////// //////////////////////////////// //////////////////////////////// float textureLOD = bias(); vec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color; #ifdef HAND if (Albedo.a < 0.1) discard; #endif if(LIGHTNING > 0) Albedo = vec4(1); #ifdef FANCY_END_PORTAL #if defined WORLD && !defined ENTITIES && !defined HAND float endPortalEmission = 0.0; if(PORTAL > 0) { float steps = 20; vec3 color = vec3(0.0); float absorbance = 1.0; vec3 worldSpaceNormal = viewToWorld(normal); vec3 viewVec = normalize(tbnMatrix*fragpos); vec3 correctedViewVec = viewVec; correctedViewVec.xy = mix(correctedViewVec.xy, vec2( viewVec.y,-viewVec.x), clamp( worldSpaceNormal.y,0,1)); correctedViewVec.xy = mix(correctedViewVec.xy, vec2(-viewVec.y, viewVec.x), clamp(-worldSpaceNormal.x,0,1)); correctedViewVec.xy = mix(correctedViewVec.xy, vec2(-viewVec.y, viewVec.x), clamp(-worldSpaceNormal.z,0,1)); correctedViewVec.z = mix(correctedViewVec.z, -correctedViewVec.z, clamp(length(vec3(worldSpaceNormal.xz, clamp(-worldSpaceNormal.y,0,1))),0,1)); vec2 correctedWorldPos = worldPos.xz; correctedWorldPos = mix(correctedWorldPos, vec2(-playerPos.x,playerPos.z) + vec2(-cameraPosition.x,cameraPosition.z), clamp(-worldSpaceNormal.y,0,1)); correctedWorldPos = mix(correctedWorldPos, vec2( playerPos.z,playerPos.y) + vec2( cameraPosition.z,cameraPosition.y), clamp( worldSpaceNormal.x,0,1)); correctedWorldPos = mix(correctedWorldPos, vec2(-playerPos.z,playerPos.y) + vec2(-cameraPosition.z,cameraPosition.y), clamp(-worldSpaceNormal.x,0,1)); correctedWorldPos = mix(correctedWorldPos, vec2( playerPos.x,playerPos.y) + vec2( cameraPosition.x,cameraPosition.y), clamp(-worldSpaceNormal.z,0,1)); correctedWorldPos = mix(correctedWorldPos, vec2(-playerPos.x,playerPos.y) + vec2(-cameraPosition.x,cameraPosition.y), clamp( worldSpaceNormal.z,0,1)); vec2 rayDir = ((correctedViewVec.xy) / -correctedViewVec.z) / steps * 5.0 ; vec2 uv = correctedWorldPos + rayDir * blueNoise(); uv += rayDir * 10.0; vec2 animation = vec2(frameTimeCounter, -frameTimeCounter)*0.01; for (int i = 0; i < int(steps); i++) { float verticalGradient = (i + blueNoise())/steps ; float verticalGradient2 = exp(-7*(1-verticalGradient*verticalGradient)); float density = max(max(verticalGradient - texture2D(noisetex, uv/256.0 + animation.xy).b*0.5,0.0) - (1.0-texture2D(noisetex, uv/32.0 + animation.xx).r) * (0.4 + 0.1 * (texture2D(noisetex, uv/10.0 - animation.yy).b)),0.0); float volumeCoeff = exp(-density*(i+1)); vec3 lighting = vec3(0.5,0.75,1.0) * 0.1 * exp(-10*density) + vec3(0.2, 0.7, 1.0) * verticalGradient2 * 2.0; color += (lighting - lighting * volumeCoeff) * absorbance;; absorbance *= volumeCoeff; endPortalEmission += verticalGradient*verticalGradient ; uv += rayDir; } Albedo.rgb = clamp(color,0,1); endPortalEmission = clamp(endPortalEmission/steps * 1.0,0.0,254.0/255.0); } #endif #endif #ifdef WhiteWorld Albedo.rgb = vec3(0.5); #endif #ifdef AEROCHROME_MODE float gray = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07)); if( blockID == BLOCK_AMETHYST_BUD_MEDIUM || blockID == BLOCK_AMETHYST_BUD_LARGE || blockID == BLOCK_AMETHYST_CLUSTER || blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_WEAK || blockID == BLOCK_GLOW_LICHEN || blockID == BLOCK_SNOW_LAYERS || blockID >= 10 && blockID < 80 ) { // IR Reflective (Pink-red) Albedo.rgb = mix(vec3(gray), aerochrome_color, 0.7); } else if(blockID == BLOCK_GRASS) { // Special handling for grass block float strength = 1.0 - color.b; Albedo.rgb = mix(Albedo.rgb, aerochrome_color, strength); } #ifdef AEROCHROME_WOOL_ENABLED else if(blockID == BLOCK_SSS_WEAK_2 || blockID == BLOCK_CARPET) { // Wool Albedo.rgb = mix(Albedo.rgb, aerochrome_color, 0.3); } #endif else if(blockID == BLOCK_WATER || (blockID >= 300 && blockID < 400)) { // IR Absorbsive? Dark. Albedo.rgb = mix(Albedo.rgb, vec3(0.01, 0.08, 0.15), 0.5); } #endif #ifdef WORLD if(Albedo.a > 0.1) Albedo.a = normalMat.a; else Albedo.a = 0.0; #endif #ifdef HAND if(Albedo.a > 0.1){ Albedo.a = 0.75; gl_FragData[3] = vec4(0.0); } else { Albedo.a = 1.0; } #endif #if defined PARTICLE_RENDERING_FIX && (defined ENTITIES || defined BLOCKENTITIES) gl_FragData[3] = vec4(0.0); #endif //////////////////////////////// //////////////////////////////// //////////////////////////////// NORMAL //////////////////////////////// //////////////////////////////// //////////////////////////////// #if defined WORLD && defined MC_NORMAL_MAP vec4 NormalTex = texture2D_POMSwitch(normals, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM,textureLOD).xyzw; #ifdef MATERIAL_AO Albedo.rgb *= NormalTex.b*0.5+0.5; #endif float Heightmap = 1.0 - NormalTex.w; NormalTex.xy = NormalTex.xy * 2.0-1.0; NormalTex.z = sqrt(max(1.0 - dot(NormalTex.xy, NormalTex.xy), 0.0)); NormalTex.xyz = mix(vec3(0,0,1), NormalTex.xyz, MATERIAL_NORMAL_STRENGTH); normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0-Puddle_shape); #endif //////////////////////////////// //////////////////////////////// //////////////////////////////// SPECULAR //////////////////////////////// //////////////////////////////// //////////////////////////////// #ifdef WORLD vec4 SpecularTex = texture2D_POMSwitch(specular, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM,textureLOD); SpecularTex.r = max(SpecularTex.r, rainStrength * rainyAreas * lightmap); SpecularTex.g = max(SpecularTex.g, max(Puddle_shape*0.02,0.02)); #define EXCEPTIONAL_BLOCK(id) (id == 266 || id == BLOCK_REDSTONE_ORE_LIT || id == BLOCK_DEEPSLATE_REDSTONE_ORE_LIT) if(EXCEPTIONAL_BLOCK(blockID) && alphaTestRef < 0.05) { float s = 1 - min(min(Albedo.r,Albedo.g),Albedo.b) / max(max(Albedo.r,Albedo.g),Albedo.b); SpecularTex.a = s > 0.1 ? pow(s, 1.5) * 0.9999 : 1.0; } gl_FragData[1].rg = SpecularTex.rg; #if EMISSIVE_TYPE == 0 gl_FragData[1].a = 0.0; #elif EMISSIVE_TYPE == 1 gl_FragData[1].a = EMISSIVE; if EXCEPTIONAL_BLOCK(blockID) gl_FragData[1].a = SpecularTex.a; #elif EMISSIVE_TYPE == 2 gl_FragData[1].a = SpecularTex.a; if(!EXCEPTIONAL_BLOCK(blockID) && SpecularTex.a <= 0.0) gl_FragData[1].a = EMISSIVE; #elif EMISSIVE_TYPE == 3 gl_FragData[1].a = SpecularTex.a; #endif #ifdef FANCY_END_PORTAL #if defined WORLD && !defined ENTITIES && !defined HAND if(PORTAL > 0) gl_FragData[1].a = endPortalEmission; #endif #endif #if SSS_TYPE == 0 gl_FragData[1].b = 0.0; #elif SSS_TYPE == 1 gl_FragData[1].b = SSSAMOUNT; #elif SSS_TYPE == 2 gl_FragData[1].b = SpecularTex.b; if(SpecularTex.b < 65.0/255.0) gl_FragData[1].b = SSSAMOUNT; #elif SSS_TYPE == 3 gl_FragData[1].b = SpecularTex.b; #endif #endif // hit glow effect... #ifdef ENTITIES Albedo.rgb = mix(Albedo.rgb, entityColor.rgb, clamp(entityColor.a*1.5,0,1)); #endif //////////////////////////////// //////////////////////////////// //////////////////////////////// FINALIZE //////////////////////////////// //////////////////////////////// //////////////////////////////// #ifdef WORLD #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 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); #endif } ================================================ FILE: shaders/dimensions/all_solid.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/bokeh.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/items.glsl" /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #if defined HAND || !defined MC_NORMAL_MAP #undef POM #endif #ifdef POM #define MC_NORMAL_MAP #endif out vec4 color; out float VanillaAO; out vec4 lmtexcoord; out vec4 normalMat; // #ifdef POM out vec4 vtexcoordam; // .st for add, .pq for mul out vec4 vtexcoord; // #endif #ifdef MC_NORMAL_MAP out vec4 tangent; attribute vec4 at_tangent; out vec3 FlatNormals; #endif uniform float frameTimeCounter; const float PI48 = 150.796447372*WAVY_SPEED; float pi2wt = PI48*frameTimeCounter; attribute vec4 mc_Entity; attribute vec4 mc_midTexCoord; uniform int blockEntityId; uniform int entityId; flat out float blockID; uniform int heldItemId; uniform int heldItemId2; flat out float HELD_ITEM_BRIGHTNESS; flat out int NameTags; uniform int frameCounter; uniform float far; uniform float aspectRatio; uniform float viewHeight; uniform float viewWidth; uniform int hideGUI; uniform float screenBrightness; uniform int isEyeInWater; flat out float SSSAMOUNT; flat out float EMISSIVE; flat out int LIGHTNING; flat out int PORTAL; flat out int SIGN; uniform vec2 texelSize; uniform int framemod8; #include "/lib/projections.glsl" #ifdef HAND float detectCameraMovement(){ // simply get the difference of modelview matrices and cameraPosition across a frame. vec3 fakePos = vec3(0.5, 0.5, 0.0); vec3 hand_playerPos = mat3(gbufferModelViewInverse) * fakePos + (cameraPosition - previousCameraPosition); vec3 previousPosition = mat3(gbufferPreviousModelView) * hand_playerPos; float detectMovement = 1.0 - clamp(distance(previousPosition, fakePos) / texelSize.x, 0.0, 1.0); return detectMovement; } #endif #include "/lib/TAA_jitter.glsl" vec2 calcWave(in vec3 pos) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; return ret; } vec3 calcMovePlants(in vec3 pos) { vec2 move1 = calcWave(pos ); float move1y = -length(move1); return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH; } vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; return ret; } vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { vec3 move1 = calcWaveLeaves(pos, 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; return move1*5.*WAVY_STRENGTH; } #define SEASONS_VSH #include "/lib/climate_settings.glsl" uniform sampler2D noisetex;//depth float densityAtPos(in vec3 pos) { pos /= 18.; pos.xz *= 0.5; vec3 p = floor(pos); vec3 f = fract(pos); vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); vec2 coord = uv / 512.0; //The y channel has an offset to avoid using two textures fetches vec2 xy = texture2D(noisetex, coord).yx; return mix(xy.r,xy.g, f.y); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); #if defined ENTITIES && defined IS_IRIS // force out of frustum if (entityId == 1599) gl_Position.z -= 10000.0; #endif vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; /////// ----- COLOR STUFF ----- /////// color = gl_Color; 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 lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; // #ifdef POM vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; vec2 texcoordminusmid = lmtexcoord.xy-midcoord; vtexcoordam.pq = abs(texcoordminusmid)*2; vtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid); vtexcoord.xy = sign(texcoordminusmid)*0.5+0.5; // #endif vec2 lmcoord = gl_MultiTexCoord1.xy / 240.0; lmtexcoord.zw = lmcoord; #ifdef MC_NORMAL_MAP vec3 alterTangent = at_tangent.rgb; tangent = vec4(normalize(gl_NormalMatrix * alterTangent.rgb), at_tangent.w); #endif normalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0); FlatNormals = normalMat.xyz; blockID = mc_Entity.x ; if(blockID == BLOCK_GROUND_WAVING_VERTICAL || blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_LOWER || blockID == BLOCK_GRASS_TALL_UPPER ) normalMat.a = 0.60; PORTAL = 0; SIGN = 0; #if defined WORLD && !defined HAND if(blockEntityId == BLOCK_SIGN) SIGN = 1; if(blockEntityId == BLOCK_END_PORTAL || blockEntityId == 187) PORTAL = 1; #endif NameTags = 0; #ifdef ENTITIES // disallow POM to work on item frames. if(entityId == ENTITY_ITEM_FRAME) SIGN = 1; // try and single out nametag text and then discard nametag background // if( dot(gl_Color.rgb, vec3(1.0/3.0)) < 1.0) NameTags = 1; // if(gl_Color.a < 1.0) NameTags = 1; // if(gl_Color.a >= 0.24 && gl_Color.a <= 0.25 ) gl_Position = vec4(10,10,10,1); if(entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER || entityId == 2468) normalMat.a = 0.45; #endif if(mc_Entity.x == BLOCK_AIR_WAVING) normalMat.a = 0.55; /////// ----- EMISSIVE STUFF ----- /////// EMISSIVE = 0.0; LIGHTNING = 0; // if(NameTags > 0) EMISSIVE = 0.9; HELD_ITEM_BRIGHTNESS = 0.0; #ifdef Hand_Held_lights if(heldItemId > 999 || heldItemId2 > 999 ) HELD_ITEM_BRIGHTNESS = 0.9; #endif // normal block lightsources if(mc_Entity.x >= 100 && mc_Entity.x < 300) EMISSIVE = 0.5; // special cases light lightning and beacon beams... #ifdef ENTITIES if(entityId == ENTITY_LIGHTNING){ LIGHTNING = 1; normalMat.a = 0.50; } if (entityId == ENTITY_SPECTRAL_ARROW) EMISSIVE = 0.5; #endif /////// ----- SSS STUFF ----- /////// SSSAMOUNT = 0.0; #ifdef WORLD /////// ----- SSS ON BLOCKS ----- /////// // strong if ( mc_Entity.x == BLOCK_SSS_STRONG || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_AIR_WAVING ){ SSSAMOUNT = 1.0; } // medium if ( mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_GRASS_TALL_LOWER || mc_Entity.x == BLOCK_SSS_WEAK || mc_Entity.x == BLOCK_SSS_WEAK_2 || mc_Entity.x == BLOCK_AIR_WAVING || mc_Entity.x == BLOCK_GLOW_LICHEN || mc_Entity.x == BLOCK_SNOW_LAYERS || mc_Entity.x == BLOCK_CARPET || 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 || mc_Entity.x == BLOCK_CAVE_VINE_BERRIES ){ SSSAMOUNT = 0.5; } // low #ifdef MISC_BLOCK_SSS if(mc_Entity.x == BLOCK_SSS_WEIRD || mc_Entity.x == BLOCK_GRASS) SSSAMOUNT = 0.25; #endif #ifdef ENTITIES #ifdef MOB_SSS /////// ----- SSS ON MOBS----- /////// // strong if(entityId == ENTITY_SSS_MEDIUM) SSSAMOUNT = 0.75; // medium // low if(entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER) SSSAMOUNT = 0.4; #endif #endif #ifdef BLOCKENTITIES /////// ----- SSS ON BLOCK ENTITIES----- /////// // strong // medium if(blockEntityId == BLOCK_SSS_WEAK_3) SSSAMOUNT = 0.4; // low #endif vec3 worldpos = toWorldSpace(position); #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(FlatNormals).y)); if(( // these wave off of the ground. the area connected to the ground does not wave. (InterpolateFromBase && (mc_Entity.x == BLOCK_GRASS_TALL_LOWER || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL)) // these wave off of the ceiling. the area connected to the ceiling does not wave. || (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE)) // these wave off of the air. they wave uniformly || (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING) #ifndef RP_MODEL_FIX || (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) #endif ) && length(position) < 64.0){ 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 || mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) 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; } #endif #ifdef PLANET_CURVATURE float curvature = length(worldpos) / (16*8); worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; #endif position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; // ensure hand/entities have the same transformations as the spidereyes and enchant glint programs. #if !defined ENTITIES && !defined HAND gl_Position = toClipSpace4alt(position); #endif #endif #if defined Seasons && defined WORLD && !defined ENTITIES && !defined BLOCKENTITIES && !defined HAND YearCycleColor(color.rgb, gl_Color.rgb, mc_Entity.x == BLOCK_AIR_WAVING, true); #endif #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 #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 - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); #else float focusMul = gl_Position.z - MANUAL_FOCUS; #endif vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0); #endif } ================================================ FILE: shaders/dimensions/all_translucent.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" in vec4 lmtexcoord; float lightmap = clamp((lmtexcoord.w-0.9) * 10.0, 0.0, 1.0); #include "/lib/ripples.glsl" #undef FLASHLIGHT_BOUNCED_INDIRECT #ifdef IS_LPV_ENABLED #extension GL_EXT_shader_image_load_store: enable #extension GL_ARB_shading_language_packing: enable #endif #include "/lib/res_params.glsl" in vec4 color; uniform vec4 entityColor; uniform float rainStrength; uniform float rainyAreas; #ifdef OVERWORLD_SHADER const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; #ifdef TRANSLUCENT_COLORED_SHADOWS uniform sampler2D shadowcolor0; uniform sampler2DShadow shadowtex0; uniform sampler2DShadow shadowtex1; #endif uniform float lightSign; flat in vec3 WsunVec; flat in vec3 averageSkyCol_Clouds; flat in vec4 lightCol; #endif flat in float HELD_ITEM_BRIGHTNESS; #if defined ENTITIES && defined IS_IRIS flat in int NAMETAG; #endif uniform sampler2D depthtex1; uniform sampler2D depthtex0; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex3; uniform sampler2D colortex4; uniform sampler2D colortex5; uniform sampler2D colortex6; uniform sampler2D colortex7; uniform sampler2D colortex12; uniform sampler2D colortex13; uniform sampler2D colortex14; uniform sampler2D texture; uniform sampler2D specular; uniform sampler2D normals; #ifdef IS_LPV_ENABLED uniform usampler1D texBlockData; uniform sampler3D texLpv1; uniform sampler3D texLpv2; #endif in vec4 tangent; in vec4 normalMat; in vec3 binormal; in vec3 flatnormal; #ifdef LARGE_WAVE_DISPLACEMENT in vec3 largeWaveNormal; #endif uniform float near; // uniform float far; // uniform float dhFarPlane; uniform int isEyeInWater; uniform float skyIntensityNight; uniform float skyIntensity; uniform ivec2 eyeBrightnessSmooth; uniform float nightVision; uniform float frameTimeCounter; uniform vec2 texelSize; uniform int framemod8; uniform float viewWidth; uniform float viewHeight; uniform float waterEnteredAltitude; #include "/lib/Shadow_Params.glsl" #include "/lib/tonemaps.glsl" #include "/lib/projections.glsl" #include "/lib/sky_gradient.glsl" #include "/lib/waterBump.glsl" #ifdef OVERWORLD_SHADER uniform int worldTime; uniform int worldDay; flat in float Flashing; #include "/lib/lightning_stuff.glsl" #include "/lib/scene_controller.glsl" #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif #ifdef END_SHADER #include "/lib/end_fog.glsl" #endif #ifdef IS_LPV_ENABLED uniform int heldItemId; uniform int heldItemId2; #include "/lib/hsv.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" #endif #define FORWARD_SPECULAR #define FORWARD_SSR_QUALITY 30 // [0 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 200 300 400 500] #define FORWARD_BACKGROUND_REFLECTION // #define FORWARD_ROUGH_REFLECTION #include "/lib/specular.glsl" #include "/lib/diffuse_lighting.glsl" #if defined PHYSICSMOD_OCEAN_SHADER #include "/lib/oceans.glsl" #endif #include "/lib/TAA_jitter.glsl" in vec3 viewVector; vec3 getParallaxDisplacement(vec3 waterPos, vec3 playerPos) { float largeWaves = texture2D(noisetex, waterPos.xy / 600.0 ).b; float largeWavesCurved = pow(1.0-pow(1.0-largeWaves,2.0),2.5); float waterHeight = getWaterHeightmap(waterPos.xy, largeWaves, largeWavesCurved); // waterHeight = exp(-20.0*sqrt(waterHeight)); waterHeight = exp(-7.0*exp(-7.0*waterHeight)) * 0.25; vec3 parallaxPos = waterPos; parallaxPos.xy += (viewVector.xy / -viewVector.z) * waterHeight; return parallaxPos; } vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ float bumpmult = puddle_values; bump = bump * bumpmult + vec3(0.0f, 0.0f, 1.0f - bumpmult); return normalize(bump*tbnMatrix); } vec2 CleanSample( int samples, float totalSamples, float noise ){ // this will be used to make 1 full rotation of the spiral. the mulitplication is so it does nearly a single rotation, instead of going past where it started float variance = noise * 0.897; // for every sample input, it will have variance applied to it. float variedSamples = float(samples) + variance; // 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 shape = 2.26; // this is very important. 2.26 is very specific float theta = variedSamples * (PI * shape); float x = cos(theta) * spiralShape; float y = sin(theta) * spiralShape; return vec2(x, y); } float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } #ifdef OVERWORLD_SHADER #include "/lib/Shadows.glsl" float ComputeShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDistFade, float noise, in vec3 geoNormals){ // setup shadow projection vec3 projectedShadowPosition = mat3(shadowModelView) * playerPos + shadowModelView[3].xyz; applyShadowBias(projectedShadowPosition, playerPos, geoNormals); projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; // un-distort float distortFactor = 1.0; #ifdef DISTORT_SHADOWMAP distortFactor = calcDistort(projectedShadowPosition.xy); projectedShadowPosition.xy *= distortFactor; #endif projectedShadowPosition.z += shadowProjection[3].z * 0.0012; // hamburger projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); #ifdef LPV_SHADOWS projectedShadowPosition.xy *= 0.8; #endif float shadowmap = 0.0; vec3 translucentTint = vec3(0.0); int samples = 1; float rdMul = 0.0; #ifdef BASIC_SHADOW_FILTER samples = int(SHADOW_FILTER_SAMPLE_COUNT * 0.5); rdMul = (4.0*distortFactor*d0*k/shadowMapResolution) * 0.3; #endif for(int i = 0; i < samples; i++){ #ifdef BASIC_SHADOW_FILTER vec2 offsetS = CleanSample(i, samples - 1, noise) * rdMul; projectedShadowPosition.xy += offsetS; #endif #ifdef TRANSLUCENT_COLORED_SHADOWS // determine when opaque shadows are overlapping translucent shadows by getting the difference of opaque depth and translucent depth float shadowDepthDiff = pow(clamp((shadow2D(shadowtex1, projectedShadowPosition).x - projectedShadowPosition.z) * 2.0,0.0,1.0),2.0); // get opaque shadow data to get opaque data from translucent shadows. float opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x; shadowmap += max(opaqueShadow, shadowDepthDiff); // get translucent shadow data vec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy); // this curve simply looked the nicest. it has no other meaning. float shadowAlpha = pow(1.0 - pow(translucentShadow.a,5.0),0.2); // normalize the color to remove luminance, and keep the hue. remove all opaque color. // mulitply shadow alpha to shadow color, but only on surfaces facing the lightsource. this is a tradeoff to protect subsurface scattering's colored shadow tint from shadow bias on the back of the caster. translucentShadow.rgb = max(normalize(translucentShadow.rgb + 0.0001), max(opaqueShadow, 1.0-shadowAlpha)) * shadowAlpha; // make it such that full alpha areas that arent in a shadow have a value of 1.0 instead of 0.0 translucentTint += mix(translucentShadow.rgb, vec3(1.0), opaqueShadow*shadowDepthDiff); #else shadowmap += shadow2D(shadow, projectedShadowPosition).x; #endif } #ifdef TRANSLUCENT_COLORED_SHADOWS // tint the lightsource color with the translucent shadow color directLightColor *= mix(vec3(1.0), translucentTint.rgb / samples, maxDistFade); #endif return shadowmap / samples; // return mix(1.0, shadowmap / samples, maxDistFade); } #endif void convertHandDepth(inout float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } void Emission( inout vec3 Lighting, vec3 Albedo, float Emission ){ if(Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); } uniform vec3 eyePosition; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// /* RENDERTARGETS:2,7,11,14 */ void main() { if(gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0){ vec3 FragCoord = gl_FragCoord.xyz; #ifdef TAA vec2 tempOffset = offsets[framemod8]; vec3 viewPos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5, 0.0)); #else vec3 viewPos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)); #endif vec3 feetPlayerPos = toWorldSpace(viewPos); //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// MATERIAL MASKS //////////////////////////////// //////////////////////////////////////////////////////////////////////////////// float MATERIALS = normalMat.w; // 1.0 = water mask // 0.9 = entity mask // 0.8 = reflective entities // 0.7 = glass // 0.6 = slime & honey // 0.5 = ice // 0.4 = nether portal // 0.3 = hand mask #ifdef HAND MATERIALS = 0.3; #endif // bool isHand = abs(MATERIALS - 0.1) < 0.01; bool isWater = MATERIALS > 0.99; bool isReflectiveEntity = abs(MATERIALS - 0.8) < 0.01; bool isGlass = abs(MATERIALS - 0.7) < 0.01; bool isSlime = abs(MATERIALS - 0.6) < 0.01; bool isIce = abs(MATERIALS - 0.5) < 0.01; bool isNetherPortal = abs(MATERIALS - 0.4) < 0.01; bool isReflective = isWater || isGlass || isSlime || isIce || isNetherPortal || isReflectiveEntity; bool isEntity = abs(MATERIALS - 0.9) < 0.01 || isReflectiveEntity; //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// ALBEDO ///////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// gl_FragData[0] = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) * color; float UnchangedAlpha = gl_FragData[0].a; vec3 Albedo = toLinear(gl_FragData[0].rgb); if(isReflective && !isWater && !isSlime){ gl_FragData[0].a *= 0.5; } if(isWater){ #ifdef Vanilla_like_water Albedo *= sqrt(luma(Albedo)); #else Albedo = vec3(0.0); gl_FragData[0].a = 1.0/255.0; #endif } #ifdef WhiteWorld gl_FragData[0].rgb = vec3(1.0); gl_FragData[0].a = 1.0/255.0; #endif #ifdef ENTITIES Albedo.rgb = mix(Albedo.rgb, entityColor.rgb, clamp(entityColor.a*1.5,0,1)); #endif vec4 GLASS_TINT_COLORS = vec4(Albedo, UnchangedAlpha); #ifdef BIOME_TINT_WATER if(isWater) GLASS_TINT_COLORS.rgb = toLinear(color.rgb); #endif //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// NORMALS /////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// vec3 normal = normalMat.xyz; // in viewSpace vec3 geoNormals = viewToWorld(normal).xyz; // for refractions #if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN WavePixelData wave = physics_wavePixel(physics_localPosition.xz, physics_localWaviness, physics_iterationsNormal, physics_gameTime); #ifdef DISTANT_HORIZONS float PHYSICS_OCEAN_TRANSITION = 1.0-pow(1.0-pow(1.0-clamp(1.0-length(feetPlayerPos.xz)/max(far,0.0),0,1),5),5); #else float PHYSICS_OCEAN_TRANSITION = 0.0; #endif if (isWater){ if (!gl_FrontFacing) { wave.normal = -wave.normal; } normal = mix(normalize(gl_NormalMatrix * wave.normal), normal, PHYSICS_OCEAN_TRANSITION); Albedo = mix(Albedo, vec3(1.0), wave.foam); gl_FragData[0].a = mix(1.0/255.0, 1.0, wave.foam); } #endif vec3 worldSpaceNormal = viewToWorld(normal).xyz; vec2 TangentNormal = vec2(0.0); // for refractions #ifdef LARGE_WAVE_DISPLACEMENT if (isWater){ normal = largeWaveNormal; } #endif vec3 tangent2 = normalize(cross(tangent.rgb, normal) * tangent.w); mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, tangent.y, tangent2.y, normal.y, tangent.z, tangent2.z, normal.z); 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); #if !defined HAND if(isWater){ vec3 playerPos = toWorldSpace(viewPos); vec3 worldPos = playerPos + cameraPosition; vec3 waterPos = playerPos; vec3 flowDir = normalize(worldSpaceNormal*10.0) * frameTimeCounter * WATER_WAVE_SPEED * (2.0 + rainStrength); vec2 newPos = worldPos.xy + abs(flowDir.xz); newPos = mix(newPos, worldPos.zy + abs(flowDir.zx), clamp(abs(worldSpaceNormal.x),0.0,1.0)); newPos = mix(newPos, worldPos.xz, clamp(abs(worldSpaceNormal.y),0.0,1.0)); waterPos.xy = newPos; waterPos.xyz = getParallaxDisplacement(waterPos, playerPos); vec3 bump = getWaveNormal(waterPos, playerPos, false); #ifdef WATER_RIPPLES vec3 rippleNormal = vec3(0.0); if (rainStrength > 0.01 && abs(worldSpaceNormal.x) < 0.95 && abs(worldSpaceNormal.z) < 0.95) rippleNormal = drawRipples(worldPos.xz * 5.0, frameTimeCounter) * 0.5 * rainStrength * rainyAreas * lightmap * clamp(1.0 - length(playerPos) / 128.0, 0.0, 1.0); bump += rippleNormal; #endif bump = normalize(bump); float bumpmult = WATER_WAVE_STRENGTH + 0.5 * rainStrength; bump = bump * bumpmult + vec3(0.0, 0.0, 1.0 - bumpmult); NormalTex.xyz = bump; } #endif // tangent space normals for refraction TangentNormal = NormalTex.xy; #if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN normal = applyBump(tbnMatrix, NormalTex.xyz, PHYSICS_OCEAN_TRANSITION); #else normal = applyBump(tbnMatrix, NormalTex.xyz, 1.0); #endif worldSpaceNormal = viewToWorld(normal); #if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN if (isWater) TangentNormal = normalize(wave.normal).xz; #endif float nameTagMask = 0.0; #if defined ENTITIES && defined IS_IRIS if(NAMETAG > 0) nameTagMask = 0.1; #endif gl_FragData[2] = vec4(encodeVec2(TangentNormal*0.5+0.5), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), encodeVec2(0.0, nameTagMask)); //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECULARS ///////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// vec3 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rga; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// DIFFUSE LIGHTING ////////////////////////////// //////////////////////////////////////////////////////////////////////////////// vec2 lightmap = lmtexcoord.zw; #ifndef OVERWORLD_SHADER lightmap.y = 1.0; #endif #if defined Hand_Held_lights && !defined LPV_ENABLED #ifdef IS_IRIS vec3 playerCamPos = eyePosition; #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); } #endif vec3 Indirect_lighting = vec3(0.0); vec3 MinimumLightColor = vec3(1.0); vec3 Direct_lighting = vec3(0.0); #ifdef OVERWORLD_SHADER vec3 DirectLightColor = lightCol.rgb/2400.0; vec3 AmbientLightColor = averageSkyCol_Clouds/900.0; #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS DirectLightColor = luma(DirectLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); AmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B); #endif if(!isWater && isEyeInWater == 1){ float distanceFromWaterSurface = cameraPosition.y - waterEnteredAltitude; float waterdepth = max(-(feetPlayerPos.y + distanceFromWaterSurface),0.0); DirectLightColor *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * (waterdepth/abs(WsunVec.y))); DirectLightColor *= pow(waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS, WATER_CAUSTICS_STRENGTH); } float NdotL = clamp((-15 + dot(normal, normalize(WsunVec*mat3(gbufferModelViewInverse)))*255.0) / 240.0 ,0.0,1.0); float Shadows = 1.0; float shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / (shadowDistance+16),0.0)*5.0,1.0)); float shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / shadowDistance,0.0)*5.0,1.0)); float LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0); vec3 shadowPlayerPos = toWorldSpace(viewPos); Shadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, blueNoise(), geoNormals); Shadows *= mix(LM_shadowMapFallback, 1.0, shadowMapFalloff2); Shadows *= getCloudShadow(feetPlayerPos+cameraPosition, WsunVec); Direct_lighting = DirectLightColor * NdotL * Shadows; vec3 indirectNormal = worldSpaceNormal / dot(abs(worldSpaceNormal),vec3(1.0)); float SkylightDir = clamp(indirectNormal.y*0.7+0.3,0.0,1.0); float skylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir)/2.5; AmbientLightColor *= skylight; Indirect_lighting = doIndirectLighting(AmbientLightColor, MinimumLightColor, lightmap.y); #endif #ifdef NETHER_SHADER Indirect_lighting = volumetricsFromTex(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 end_NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0); end_NdotL *= end_NdotL; float fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos); float endPhase = endFogPhase(lightPos); Direct_lighting += lightColors * endPhase * end_NdotL * fogShadow; vec3 AmbientLightColor = vec3(END_FOG_R, END_FOG_G, END_FOG_B); Indirect_lighting = AmbientLightColor + 0.7 * AmbientLightColor * dot(worldSpaceNormal, normalize(feetPlayerPos)); Indirect_lighting *= 0.1; #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING #ifdef IS_LPV_ENABLED vec3 normalOffset = vec3(0.0); if(any(greaterThan(abs(viewToWorld(normalMat.xyz).xyz), vec3(1.0e-6)))) normalOffset = 0.5*worldSpaceNormal; #if LPV_NORMAL_STRENGTH > 0 if(any(greaterThan(abs(normal), vec3(1.0e-6)))) { vec3 texNormalOffset = -normalOffset + worldSpaceNormal; normalOffset = mix(normalOffset, texNormalOffset, (LPV_NORMAL_STRENGTH*0.01)); } #endif vec3 lpvPos = GetLpvPosition(feetPlayerPos) + normalOffset; #else const vec3 lpvPos = vec3(0.0); #endif Indirect_lighting += doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos, worldSpaceNormal); vec4 flashLightSpecularData = vec4(0.0); #ifdef FLASHLIGHT Indirect_lighting += calculateFlashlight(FragCoord.xy*texelSize/RENDER_SCALE, viewPos, vec3(0.0), worldSpaceNormal, flashLightSpecularData, false); #endif vec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo; #if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3 Emission(FinalColor, Albedo, SpecularTex.b); #endif //////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECULAR LIGHTING ///////////////////////////// //////////////////////////////////////////////////////////////////////////////// #ifdef DAMAGE_BLOCK_EFFECT #undef FORWARD_SPECULAR #endif #ifdef FORWARD_SPECULAR 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, 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 f0 = isReflective ? max(specularValues.g, harcodedF0) : specularValues.g; bool isHand = false; #ifdef HAND isHand = true; f0 = max(specularValues.g, harcodedF0); #endif 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; #ifndef OVERWORLD_SHADER vec3 WsunVec = vec3(0.0); vec3 DirectLightColor = WsunVec; float Shadows = 0.0; #endif vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), WsunVec, vec3(blueNoise(), vec2(interleaved_gradientNoise_temporal())), worldSpaceNormal, roughness, f0, Albedo, FinalColor * gl_FragData[0].a, DirectLightColor * Shadows, lightmap.y, isHand, isWater, reflectance, flashLightSpecularData); 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 float colorFactor = 0.25; if(isWater || isNetherPortal) colorFactor = 1.0; if(isGlass || isSlime) colorFactor = 0.5; gl_FragData[0].rgb = clamp(specularReflections / gl_FragData[0].a * 0.1,0.0,65000.0) * colorFactor; }else{ gl_FragData[0].rgb = clamp(FinalColor * 0.1,0.0,65000.0); } #else gl_FragData[0].rgb = FinalColor * 0.1; #endif #ifdef ENTITIES // do not allow specular to be very visible in these regions on entities // this helps with specular on slimes, and entities with skin overlays like piglins/players if(!gl_FrontFacing) { gl_FragData[0] = vec4(FinalColor * 0.1, UnchangedAlpha); } #endif #if defined DISTANT_HORIZONS && defined DH_OVERDRAW_PREVENTION && !defined HAND #if OVERDRAW_MAX_DISTANCE == 0 float maxOverdrawDistance = far; #else float maxOverdrawDistance = OVERDRAW_MAX_DISTANCE; #endif bool WATER = texture2D(colortex7, gl_FragCoord.xy*texelSize).a > 0.0 && length(feetPlayerPos) > clamp(far-16*4, 16, maxOverdrawDistance) && texture2D(depthtex1, gl_FragCoord.xy*texelSize).x >= 1.0; if(WATER) { gl_FragData[0].a = 0.0; MATERIALS = 0.0; } #endif gl_FragData[1] = vec4(Albedo, MATERIALS); #if DEBUG_VIEW == debug_DH_WATER_BLENDING if(gl_FragCoord.x*texelSize.x < 0.47) gl_FragData[0] = vec4(0.0); #elif DEBUG_VIEW == debug_NORMALS gl_FragData[0].rgb = worldSpaceNormal.xyz * 0.1; gl_FragData[0].a = 1; #elif DEBUG_VIEW == debug_INDIRECT gl_FragData[0].rgb = Indirect_lighting * 0.1; #elif DEBUG_VIEW == debug_DIRECT gl_FragData[0].rgb = Direct_lighting * 0.1; #endif gl_FragData[3] = vec4(encodeVec2(lightmap.x, lightmap.y), 1, 1, 1); #if defined ENTITIES && defined IS_IRIS if(NAMETAG > 0) { // WHY DO THEY HAVE TO AHVE LIGHTING AAAAAAUGHAUHGUAHG #ifndef OVERWORLD_SHADER lightmap.y = 0.0; #endif vec3 nameTagLighting = Albedo.rgb * max(max(lightmap.y*lightmap.y*lightmap.y , lightmap.x*lightmap.x*lightmap.x), 0.025); // in vanilla they have a special blending mode/no blending, or something. i cannot change the buffer blend mode without changing the rest of the entities :/ gl_FragData[0] = vec4(nameTagLighting.rgb * 0.1, UnchangedAlpha * 0.75); } #endif } } ================================================ FILE: shaders/dimensions/all_translucent.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/bokeh.glsl" #include "/lib/items.glsl" uniform float frameTimeCounter; #include "/lib/Shadow_Params.glsl" #if defined PHYSICSMOD_OCEAN_SHADER #include "/lib/oceans.glsl" #endif /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ out vec4 lmtexcoord; out vec4 color; uniform sampler2D colortex4; uniform sampler2D noisetex; #ifdef OVERWORLD_SHADER flat out vec3 averageSkyCol_Clouds; flat out vec4 lightCol; flat out vec3 WsunVec; uniform int worldDay; #include "/lib/scene_controller.glsl" #endif out vec4 normalMat; out vec3 binormal; out vec4 tangent; out vec3 flatnormal; #ifdef LARGE_WAVE_DISPLACEMENT out vec3 largeWaveNormal; #endif out vec3 viewVector; flat out int glass; #if defined ENTITIES && defined IS_IRIS flat out int NAMETAG; #endif attribute vec4 at_tangent; attribute vec4 mc_Entity; #if defined ENTITIES || defined BLOCKENTITIES uniform int entityId; #endif uniform vec3 sunPosition; uniform vec3 moonPosition; uniform float sunElevation; out vec4 tangent_other; uniform int frameCounter; uniform float aspectRatio; uniform float viewHeight; uniform float viewWidth; uniform int hideGUI; uniform float screenBrightness; uniform int heldItemId; uniform int heldItemId2; flat out float HELD_ITEM_BRIGHTNESS; uniform vec2 texelSize; uniform int framemod8; #include "/lib/TAA_jitter.glsl" #include "/lib/projections.glsl" float getWave (vec3 pos, float range){ return pow(1.0-texture2D(noisetex, (pos.xz + frameTimeCounter * WATER_WAVE_SPEED)/125.0).b, 5.0) * WATER_WAVE_STRENGTH * range; } vec3 getWaveNormal(vec3 posxz, float range){ float deltaPos = 0.5; vec3 coord = posxz; float h0 = getWave(coord,range); float h1 = getWave(coord - vec3(deltaPos,0.0,0.0),range); float h3 = getWave(coord - vec3(0.0,0.0,deltaPos),range); float xDelta = (h1-h0)/deltaPos * 1.5; float yDelta = (h3-h0)/deltaPos * 1.5; vec3 wave = normalize(vec3(xDelta, yDelta, 1.0-pow(abs(xDelta+yDelta),2.0))); return wave; } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); #if defined ENTITIES && defined IS_IRIS // force out of frustum if (entityId == 1599) gl_Position.z -= 10000.0; #endif #if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN // basic texture to determine how shallow/far away from the shore the water is physics_localWaviness = texelFetch(physics_waviness, ivec2(gl_Vertex.xz) - physics_textureOffset, 0).r; // transform gl_Vertex (since it is the raw mesh, i.e. not transformed yet) vec4 finalPosition = vec4(gl_Vertex.x, gl_Vertex.y + physics_waveHeight(gl_Vertex.xz, PHYSICS_ITERATIONS_OFFSET, physics_localWaviness, physics_gameTime), gl_Vertex.z, gl_Vertex.w); // pass this to the fragment shader to fetch the texture there for per fragment normals physics_localPosition = finalPosition.xyz; vec3 position = mat3(gl_ModelViewMatrix) * vec3(finalPosition) + gl_ModelViewMatrix[3].xyz; #else vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; #endif // lmtexcoord.xy = (gl_MultiTexCoord0).xy; lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; vec2 lmcoord = gl_MultiTexCoord1.xy / 240.0; lmtexcoord.zw = lmcoord; #ifdef LARGE_WAVE_DISPLACEMENT if(mc_Entity.x == 8.0) { vec3 playerPos = mat3(gbufferModelViewInverse) * position.xyz; #ifdef DISTANT_HORIZONS float range = pow(1-pow(1-clamp(1.0 - length(playerPos) / far, 0.0,1.0),3.0),3.0); #else float range = min(1.0 + pow(length(playerPos) / 256,2.0), 256.0); #endif vec4 displacedVertex = vec4(gl_Vertex.x, gl_Vertex.y + (getWave(gl_Vertex.xyz + cameraPosition, range)*0.6-0.5), gl_Vertex.z, gl_Vertex.w); position = mat3(gl_ModelViewMatrix) * vec3(displacedVertex) + gl_ModelViewMatrix[3].xyz; playerPos = mat3(gbufferModelViewInverse) * position.xyz; largeWaveNormal = getWaveNormal(playerPos + cameraPosition, range); } #endif vec3 worldpos = toWorldSpace(position); #ifdef PLANET_CURVATURE float curvature = length(worldpos) / (16*8); worldpos.y -= curvature * curvature * CURVATURE_AMOUNT; #endif position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; #if !defined ENTITIES && !defined HAND gl_Position = toClipSpace4alt(position); #endif HELD_ITEM_BRIGHTNESS = 0.0; #ifdef Hand_Held_lights if(heldItemId > 999 || heldItemId2 > 999) HELD_ITEM_BRIGHTNESS = 0.9; #endif // 1.0 = water mask // 0.9 = entity mask // 0.8 = reflective entities // 0.7 = glass // 0.6 = slime & honey // 0.5 = ice // 0.4 = nether portal float mat = 0.0; // water mask if(mc_Entity.x == 8.0) { mat = 1.0; } // translucent entities #if defined ENTITIES || defined BLOCKENTITIES mat = 0.9; if (entityId == 1803) mat = 0.8; #endif // glass if (mc_Entity.x >= 301 && mc_Entity.x <= 317) mat = 0.7; // slime & honey if (mc_Entity.x == 318 || mc_Entity.x == 319) mat = 0.6; // ice if (mc_Entity.x == 320) mat = 0.5; // nether portal if (mc_Entity.x == 321) mat = 0.4; #if defined ENTITIES && defined IS_IRIS NAMETAG = 0; if (entityId == 1600) NAMETAG = 1; #endif tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); normalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), mat); binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, tangent.y, binormal.y, normalMat.y, tangent.z, binormal.z, normalMat.z); #ifdef LARGE_WAVE_DISPLACEMENT if(mc_Entity.x == 8.0) { largeWaveNormal = normalize(largeWaveNormal * tbnMatrix); }else{ largeWaveNormal = normalMat.xyz; } #endif flatnormal = normalMat.xyz; viewVector = normalize(tbnMatrix * position.xyz); color = vec4(gl_Color.rgb, 1.0); #ifdef OVERWORLD_SHADER lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; // WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition); WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); vec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition); vec3 WmoonVec = moonVec; if(dot(-moonVec, WsunVec) < 0.9999) WmoonVec = -moonVec; WsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1)); readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #endif #ifdef TAA_UPSCALING gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; #endif #ifdef TAA #if defined ENTITIES && defined IS_IRIS // remove jitter for nametags lol if(entityId != 1600) gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; #else gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; #endif #endif #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 - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); #else float focusMul = gl_Position.z - MANUAL_FOCUS; #endif vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0); #endif } ================================================ FILE: shaders/dimensions/all_vanilla_emissives.fsh ================================================ #include "/lib/settings.glsl" in vec4 color; in vec2 texcoord; uniform sampler2D texture; vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// /* DRAWBUFFERS:2 */ void main() { vec4 Albedo = texture2D(texture, texcoord); Albedo.rgb = toLinear(Albedo.rgb * color.rgb); #ifdef BEACON_BEAM gl_FragData[0] = vec4(Albedo.rgb*Albedo.rgb * 0.1 * 5.0 * Emissive_Brightness, Albedo.a*color.a); #endif #ifdef LIGHTNING_AND_DRAGON_DEATH_BEAMS gl_FragData[0] = vec4(Albedo.rgb * pow(1.0-pow(1.0-color.a,2),2) * 5.0 * 0.1, color.a); #endif #if defined SPIDER_EYES || defined GLOWING if(Albedo.a < 1.0/255.0 || dot(Albedo.rgb, vec3(0.33333)) < 1.0/255.0) { discard; return; } #ifdef DISABLE_VANILLA_EMISSIVES vec3 emissiveColor = vec3(0.0); Albedo.a = 0.0; #else vec3 emissiveColor = Albedo.rgb * color.a * Emissive_Brightness; #endif gl_FragData[0] = vec4(emissiveColor * 0.1, 0.000001); #endif #ifdef ENCHANT_GLINT #ifdef DISABLE_ENCHANT_GLINT vec3 GlintColor = vec3(0.0); Albedo.a = 0.0; #else vec3 GlintColor = Albedo.rgb * 0.2 * Emissive_Brightness; #endif gl_FragData[0] = vec4(GlintColor * 0.1, 0.000001); #endif } ================================================ FILE: shaders/dimensions/all_vanilla_emissives.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ out vec4 color; out vec2 texcoord; uniform sampler2D colortex4; uniform vec2 texelSize; uniform int framemod8; #include "/lib/TAA_jitter.glsl" //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { color = gl_Color; texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; gl_Position = ftransform(); #ifdef BEACON_BEAM if(gl_Color.a < 1.0) gl_Position = vec4(10,10,10,0); #endif #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy + gl_Position.w) * RENDER_SCALE-gl_Position.w; #endif #ifdef TAA gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize; #endif } ================================================ FILE: shaders/dimensions/begin.csh ================================================ #define RENDER_SHADOWCOMP layout (local_size_x = 9, local_size_y = 1, local_size_z = 1) in; const ivec3 workGroups = ivec3(1, 1, 1); #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS layout(r32ui) uniform restrict writeonly uimage1D imgCloseLights; layout(r32ui) uniform restrict readonly uimage3D imgSortLights; #endif #endif ////////////////////////////// VOID MAIN ////////////////////////////// void main() { #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS for (int i = 0; i < 10; i++) { imageStore(imgCloseLights, i, uvec4(imageLoad(imgSortLights, ivec3(0,0,i)))); } #endif #endif } ================================================ FILE: shaders/dimensions/composite.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" #ifndef DH_AMBIENT_OCCLUSION #undef DISTANT_HORIZONS #endif flat in vec3 WsunVec; flat in vec2 TAA_Offset; #include "/lib/res_params.glsl" uniform sampler2D depthtex0; uniform sampler2D depthtex1; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif 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 uniform sampler2D shadowcolor0; uniform sampler2D shadowtex0; uniform sampler2D shadowtex1; #endif uniform vec3 sunVec; uniform vec2 texelSize; uniform float frameTimeCounter; uniform float rainStrength; uniform ivec2 eyeBrightnessSmooth; uniform float viewWidth; uniform float aspectRatio; uniform float viewHeight; uniform float near; #include "/lib/Shadows.glsl" #include "/lib/projections.glsl" vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort){ float alpha = (sampleNumber+jitter)/nb; float angle = jitter*6.28+alpha * nbRot * 6.28; float sin_v, cos_v; sin_v = sin(angle); cos_v = cos(angle); return vec2(cos_v, sin_v)*alpha; } vec2 tapLocation2(int sampleNumber, int nb, float jitter){ float alpha = (sampleNumber+jitter)/nb; float angle = jitter*6.28 + alpha * 84.0 * 6.28; float sin_v, cos_v; sin_v = sin(angle); cos_v = cos(angle); return vec2(cos_v, sin_v)*sqrt(alpha); } vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } #include "/lib/Shadow_Params.glsl" vec2 SpiralSample( int samples, int totalSamples, float rotation, float Xi ){ Xi = max(Xi,0.0015); float alpha = float(samples + Xi) * (1.0 / float(totalSamples)); float theta = TAU * alpha * rotation; float r = sqrt(Xi); float x = r * sin(theta); float y = r * cos(theta); return vec2(x, y); } vec2 CleanSample( int samples, float totalSamples, float noise ){ // this will be used to make 1 full rotation of the spiral. the mulitplication is so it does nearly a single rotation, instead of going past where it started float variance = noise * 0.897; // for every sample input, it will have variance applied to it. float variedSamples = float(samples) + variance; // for every sample, the sample position must change its distance from the origin. // otherwise, you will just have a circle. float spiralShape = variedSamples / (totalSamples + variance); float shape = 2.26; float theta = variedSamples * (PI * shape); float x = cos(theta) * spiralShape; float y = sin(theta) * spiralShape; return vec2(x, y); } #include "/lib/DistantHorizons_projections.glsl" float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); } void convertHandDepth(inout float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } 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; } vec2 SSAO( vec3 viewPos, vec3 normal, vec3 flatnormal, bool hand, float noise ){ int samples = 7; float occlusion = 0.0; float sss = 0.0; 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 ; // distanceScale *= 10; vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight); float n = 0.0; for (int i = 0; i < samples; i++) { vec2 offsets = CleanSample(i, samples - 1, noise) / distanceScale; ivec2 offsetUV = ivec2(clamp((gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE)*texelSize,screenEdges,1.0-screenEdges)/texelSize); 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); float threshHold = max(1.0 - viewPosDiffSquared/depthCancelation, 0.0); if (viewPosDiffSquared > 1e-5){ n += 1.0; float preAo = 1.0 - clamp(dot(normalize(viewPosDiff), flatnormal)*25.0,0.0,1.0); occlusion += max(0.0, dot(normalize(viewPosDiff), normal) - preAo) * threshHold; #ifdef Ambient_SSS #ifdef OLD_INDIRECT_SSS sss += clamp(-dot(normalize(viewPosDiff), flatnormal),0.0,1.0) * exp(-10*occlusion); #else sss += clamp(-dot(normalize(viewPosDiff), flatnormal) - occlusion/n,0.0,1.0) * 0.25 + (normalize(mat3(gbufferModelViewInverse) * -viewPosDiff).y - occlusion/n) * threshHold; #endif #endif } } } float finaalAO = max(1.0 - occlusion*AO_Strength/max(n,1e-5), 0.0); float finalSSS = sss/float(samples); return vec2(finaalAO, finalSSS); } float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } #include "/lib/sky_gradient.glsl" /* RENDERTARGETS:3,14,12,10*/ void main() { float noise = R2_dither(); vec2 texcoord = gl_FragCoord.xy*texelSize; 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.); vec2 lightmap = dataUnpacked1.yz; float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0); gl_FragData[1] = vec4(0.0,0.0,0.0, texelFetch2D(colortex14,ivec2((floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize)/texelSize),0).a); // bool lightningBolt = abs(dataUnpacked1.w-0.5) <0.01; bool isLeaf = abs(dataUnpacked1.w-0.55) <0.01; // bool translucent2 = abs(dataUnpacked1.w-0.6) <0.01; // Weak translucency // bool translucent4 = abs(dataUnpacked1.w-0.65) <0.01; // Weak translucency bool entities = abs(dataUnpacked1.w-0.45) < 0.01; bool hand = abs(dataUnpacked1.w-0.75) < 0.01; // bool blocklights = abs(dataUnpacked1.w-0.8) <0.01; float z = texelFetch2D(depthtex1,ivec2(gl_FragCoord.xy),0).x; #ifdef DISTANT_HORIZONS float DH_depth1 = texelFetch2D(dhDepthTex1,ivec2(gl_FragCoord.xy),0).x; float swappedDepth = z >= 1.0 ? DH_depth1 : z; #else float DH_depth1 = 1.0; float swappedDepth = z; #endif vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z, DH_depth1); vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos; float depth = z; #ifdef DISTANT_HORIZONS float _near = near; float _far = far*4.0; if (depth >= 1.0) { depth = DH_depth1; _near = dhNearPlane; _far = dhFarPlane; } depth = linearizeDepthFast(depth, _near, _far); depth = depth / dhFarPlane; if(depth < 1.0) { gl_FragData[2] = vec4(vec3(0.0), depth * depth * 65000.0); } else { gl_FragData[2] = vec4(vec3(0.0), 65000.0); } #endif #if defined DENOISE_SSS_AND_SSAO && indirect_effect == 1 vec3 FlatNormals = normalize(texture2D(colortex15,texcoord).rgb * 2.0 - 1.0); if(z >= 1.0) FlatNormals = normal; vec2 SSAO_SSS = SSAO(viewPos, worldToView(normal), worldToView(FlatNormals), hand, noise); #ifndef OLD_INDIRECT_SSS SSAO_SSS.y = clamp(SSAO_SSS.y + 0.5 * lightmap.y*lightmap.y,0.0,1.0); #endif if(swappedDepth >= 1.0) SSAO_SSS = vec2(1.0,0.0); gl_FragData[1].xy = SSAO_SSS; #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); #ifdef OVERWORLD_SHADER float SpecularTex = texture2D(colortex8,texcoord).z; float LabSSS = clamp((-64.0 + SpecularTex * 255.0) / 191.0 ,0.0,1.0); float NdotL = clamp(dot(normal,WsunVec),0.0,1.0); float vanillAO = clamp(texture2D(colortex15,texcoord).a,0.0,1.0) ; float minshadowfilt = Min_Shadow_Filter_Radius; float maxshadowfilt = Max_Shadow_Filter_Radius; #ifdef BASIC_SHADOW_FILTER if (LabSSS > 0.0 && NdotL < 0.001){ minshadowfilt = 50; // maxshadowfilt = 50; } #endif gl_FragData[0] = vec4(minshadowfilt, 0.0, 0.0, 0.0); #ifdef Variable_Penumbra_Shadows vec3 feetPlayerPos = toWorldSpace(viewPos); #if LIGHTLEAKFIX_MODE == 1 && indirect_lighting_effects == 1 if(!hand) GriAndEminShadowFix(feetPlayerPos, FlatNormals, lightLeakFix); #endif vec3 projectedShadowPosition = toShadowSpaceProjected(feetPlayerPos); //apply distortion #ifdef DISTORT_SHADOWMAP float distortFactor = calcDistort(projectedShadowPosition.xy); projectedShadowPosition.xy *= distortFactor; #else float distortFactor = 1.0; #endif //do shadows only if on shadow map if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0 ){ projectedShadowPosition.z += shadowProjection[3].z * 0.0013; const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); float distortThresh = (sqrt(1.0-NdotL*NdotL)/NdotL+0.7)/distortFactor; float diffthresh = distortThresh/6000.0*threshMul; projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); #ifdef LPV_SHADOWS projectedShadowPosition.xy *= 0.8; #endif float mult = maxshadowfilt; float avgBlockerDepth = 0.0; vec2 scales = vec2(0.0, Max_Filter_Depth); float blockerCount = 0.0; float rdMul = distortFactor*(1.0+mult)*d0*k/shadowMapResolution; float diffthreshM = diffthresh*mult*d0*k/20.; float avgDepth = 0.0; for(int i = 0; i < VPS_Search_Samples; i++){ // vec2 offsetS = SpiralSample(i, 7, 8, noise) * 0.5; vec2 offsetS = CleanSample(i, VPS_Search_Samples - 1, noise) * 0.5; float weight = 3.0 + (i+noise) * rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution*distortFactor/2.7; float d = texelFetch2D(shadow, ivec2((projectedShadowPosition.xy+offsetS*rdMul)*shadowMapResolution),0).x; float b = smoothstep(weight*diffthresh/2.0, weight*diffthresh, projectedShadowPosition.z - d); blockerCount += b; #ifdef DISTANT_HORIZONS_SHADOWMAP avgDepth += max(projectedShadowPosition.z - d, 0.0)*10000.0; #else avgDepth += max(projectedShadowPosition.z - d, 0.0)*1000.0; #endif avgBlockerDepth += d * b; } gl_FragData[0].g = avgDepth / VPS_Search_Samples; gl_FragData[0].b = blockerCount / VPS_Search_Samples; if (blockerCount >= 0.9){ avgBlockerDepth /= blockerCount; float ssample = max(projectedShadowPosition.z - avgBlockerDepth,0.0)*1500.0; gl_FragData[0].r = clamp(ssample, scales.x, scales.y)/(scales.y)*(mult-minshadowfilt)+minshadowfilt; } } #endif #endif } ================================================ FILE: shaders/dimensions/composite.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" flat out vec2 TAA_Offset; flat out vec3 WsunVec; uniform sampler2D colortex4; uniform float sunElevation; uniform vec3 sunPosition; uniform mat4 gbufferModelViewInverse; #include "/lib/res_params.glsl" uniform int framemod8; #include "/lib/TAA_jitter.glsl" void main() { gl_Position = ftransform(); WsunVec = (float(sunElevation > 1e-5)*2-1.)*normalize(mat3(gbufferModelViewInverse) * sunPosition); TAA_Offset = vec2(0.0); #ifdef TAA TAA_Offset = offsets[framemod8]; #endif #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; #endif } ================================================ FILE: shaders/dimensions/composite1.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" #ifdef IS_LPV_ENABLED #extension GL_ARB_shader_image_load_store: enable #extension GL_ARB_shading_language_packing: enable #endif #include "/lib/res_params.glsl" const bool colortex5MipmapEnabled = true; #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 in vec3 averageSkyCol_Clouds; flat in vec4 lightCol; flat in vec3 moonCol; #include "/lib/lightning_stuff.glsl" #endif #ifdef NETHER_SHADER const bool colortex4MipmapEnabled = true; uniform vec3 lightningEffect; #endif #ifdef END_SHADER uniform vec3 lightningEffect; flat in float Flashing; #endif uniform int hideGUI; uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D depthtex2; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex0; //clouds uniform sampler2D colortex1; //albedo(rgb),material(alpha) RGBA16 uniform sampler2D colortex2; //translucents(rgba) uniform sampler2D colortex3; //filtered shadowmap(VPS) uniform sampler2D colortex4; //LUT(rgb), quarter res depth(alpha) uniform sampler2D colortex5; //TAA buffer/previous frame uniform sampler2D colortex6; //Noise uniform sampler2D colortex7; //water? uniform sampler2D colortex8; //Specular // uniform sampler2D colortex9; //Specular uniform sampler2D colortex10; uniform sampler2D colortex11; uniform sampler2D colortex12; uniform sampler2D colortex13; uniform sampler2D colortex14; uniform sampler2D colortex15; // flat normals(rgb), vanillaAO(alpha) #ifdef IS_LPV_ENABLED uniform usampler1D texBlockData; uniform sampler3D texLpv1; uniform sampler3D texLpv2; #endif uniform float updateFadeTime; // uniform float centerDepthSmooth; uniform float near; uniform float farPlane; flat in vec3 zMults; uniform vec2 texelSize; uniform vec2 viewSize; uniform float eyeAltitude; flat in vec2 TAA_Offset; uniform float frameTimeCounter; uniform int worldTime; uniform int worldDay; uniform float rainStrength; uniform float wetnessAmount; uniform float wetness; uniform int isEyeInWater; uniform float waterEnteredAltitude; uniform ivec2 eyeBrightnessSmooth; uniform float nightVision; uniform vec3 sunVec; flat in vec3 WsunVec; flat in vec3 unsigned_WsunVec; flat in vec3 WmoonVec; flat in vec3 albedoSmooth; #ifdef IS_LPV_ENABLED uniform int heldItemId; uniform int heldItemId2; #endif void convertHandDepth(inout float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } 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; } #include "/lib/projections.glsl" #include "/lib/tonemaps.glsl" #include "/lib/waterBump.glsl" #include "/lib/Shadow_Params.glsl" #include "/lib/Shadows.glsl" #include "/lib/stars.glsl" #include "/lib/climate_settings.glsl" #include "/lib/sky_gradient.glsl" #include "/lib/ripples.glsl" #ifdef OVERWORLD_SHADER #include "/lib/scene_controller.glsl" #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #include "/lib/aurora.glsl" #endif #ifdef IS_LPV_ENABLED #include "/lib/hsv.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" #endif #define DEFERRED_SPECULAR #define DEFERRED_SSR_QUALITY 30 // [0 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 200 300 400 500] #define DEFERRED_BACKGROUND_REFLECTION #define DEFERRED_ROUGH_REFLECTION #include "/lib/specular.glsl" #include "/lib/diffuse_lighting.glsl" #include "/lib/DistantHorizons_projections.glsl" #include "/lib/end_fog.glsl" float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); // return (2.0 * near) / (far + near - depth * (far - near)); } float triangularize(float dither){ float center = dither*2.0-1.0; dither = center*inversesqrt(abs(center)); return clamp(dither-fsign(center),0.0,1.0); } vec3 fp10Dither(vec3 color,float dither){ const vec3 mantissaBits = vec3(6.,6.,5.); vec3 exponent = floor(log2(color)); return color + dither*exp2(-mantissaBits)*exp2(exponent); } vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } vec2 CleanSample( int samples, float totalSamples, float noise ){ // this will be used to make 1 full rotation of the spiral. the mulitplication is so it does nearly a single rotation, instead of going past where it started float variance = noise * 0.897; // for every sample input, it will have variance applied to it. float variedSamples = float(samples) + variance; // 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 shape = 2.26; // this is very important. 2.26 is very specific float theta = variedSamples * (PI * shape); float x = cos(theta) * spiralShape; float y = sin(theta) * spiralShape; return vec2(x, y); } float swapperlinZ(float depth, float _near, float _far) { return (2.0 * _near) / (_far + _near - depth * (_far - _near)); // l = (2*n)/(f+n-d(f-n)) // f+n-d(f-n) = 2n/l // -d(f-n) = ((2n/l)-f-n) // d = -((2n/l)-f-n)/(f-n) } vec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, bool isSSS, bool hand){ float shadows = 1.0; float samples = 16.0; float SSS = 0.0; float _near = near; float _far = far*4.0; if (depthCheck) { _near = dhNearPlane; _far = dhFarPlane; } vec3 position = toClipSpace3_DH(viewPos, depthCheck); //prevents the ray from going behind the camera float rayLength = ((viewPos.z + lightDir.z * _far*sqrt(3.0)) > -_near) ? (-_near -viewPos.z) / lightDir.z : _far*sqrt(3.0); vec3 direction = toClipSpace3_DH(viewPos + lightDir * rayLength, depthCheck) - position; //convert to clip space direction.xyz = direction.xyz / max(max(abs(direction.x)/0.0005, abs(direction.y)/0.0005),400.0); //fixed step size direction *= 6.0; position.xy *= RENDER_SCALE; direction.xy *= RENDER_SCALE; vec3 newPos = position + direction * noise; // literally shadow bias to fight shadow acne due to precision problems when comparing sampled depth and marched position newPos += direction * 0.3; float SSSdistanceScale = 1.0 / (1.0 + swapperlinZ(position.z, _near, _far) * 32.0); float distanceScale2 = 1.0 + length(mat3(gbufferModelViewInverse) * viewPos) / 150.0; for (int i = 0; i < int(samples); i++) { float sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, ivec2(newPos.xy/texelSize),0).x, hand); #ifdef DISTANT_HORIZONS if(depthCheck) sampleDepth = texelFetch2D(dhDepthTex1, ivec2(newPos.xy/texelSize),0).x; #endif if(sampleDepth < newPos.z){ float linearCurrentPos = swapperlinZ(newPos.z, _near, _far); float linearSampledDepth = swapperlinZ(sampleDepth, _near, _far); float dist = abs(linearSampledDepth - linearCurrentPos) / linearCurrentPos; // if (dist < 0.035){ if (dist < 0.035/(1.0+linearCurrentPos) && (sampleDepth < newPos.z )) shadows = 0.0; // if (dist < 0.3/(1.0+linearCurrentPos)) SSS += distanceScale2; if (dist < SSSdistanceScale) SSS += distanceScale2; } newPos += direction; } return vec2(shadows, SSS / samples); } float SSRT_FlashLight_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise){ float steps = 16.0; float Shadow = 1.0; float SSS = 0.0; // isSSS = true; float _near = near; float _far = far*4.0; if (depthCheck) { _near = dhNearPlane; _far = dhFarPlane; } vec3 clipPosition = toClipSpace3_DH(viewPos, depthCheck); //prevents the ray from going behind the camera float rayLength = ((viewPos.z + lightDir.z * _far*sqrt(3.0)) > -_near) ? (-_near -viewPos.z) / lightDir.z : _far*sqrt(3.0); vec3 direction = toClipSpace3_DH(viewPos + lightDir*rayLength, depthCheck) - clipPosition; //convert to clip space direction.xyz = direction.xyz / max(abs(direction.x)/0.0005, abs(direction.y)/0.0005); //fixed step size float Stepmult = 6.0; vec3 rayDir = direction * Stepmult * vec3(RENDER_SCALE,1.0); vec3 screenPos = clipPosition * vec3(RENDER_SCALE,1.0) + rayDir*noise; for (int i = 0; i < int(steps); i++) { float samplePos = texture2D(depthtex2, screenPos.xy).x; #ifdef DISTANT_HORIZONS if(depthCheck) samplePos = texture2D(dhDepthTex1, screenPos.xy).x; #endif if(samplePos < screenPos.z){// && (samplePos <= max(minZ,maxZ) && samplePos >= min(minZ,maxZ)) // vec2 linearZ = vec2(swapperlinZ(screenPos.z, _near, _far), swapperlinZ(samplePos, _near, _far)); // float calcthreshold = abs(linearZ.x - linearZ.y) / linearZ.x; // if (calcthreshold < 0.035) Shadow = 0.0; } screenPos += rayDir; } return Shadow; } void Emission( inout vec3 Lighting, vec3 Albedo, float Emission ){ if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); } #include "/lib/PhotonGTAO.glsl" #include "/lib/indirect_lighting_effects.glsl" void doEdgeAwareBlur( sampler2D tex1, sampler2D tex2, sampler2D depth, float referenceDepth, bool hand, inout vec2 ambientEffects, inout vec3 filteredShadow ){ float threshold = clamp(referenceDepth*referenceDepth*0.5,0.0001,0.005); vec3 shadow_RESULT = vec3(0.0); vec2 ssao_RESULT = vec2(0.0); float edgeSum = 0.0; vec2 coord = gl_FragCoord.xy - 1.5; ivec2 UV = ivec2(coord); ivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1); ivec2 OFFSET[4] = ivec2[]( ivec2(-1,-1), ivec2( 1, 1), ivec2(-1, 1), ivec2( 1,-1) ); for(int i = 0; i < 4; i++) { #ifdef DISTANT_HORIZONS float offsetDepth = sqrt(texelFetch2D(depth, UV + OFFSET[i] + UV_NOISE,0).a/65000.0); #else float offsetDepth = ld(convertHandDepth_2(texelFetch2D(depth, UV + OFFSET[i] + UV_NOISE, 0).r,hand)); #endif float edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7; #ifdef Variable_Penumbra_Shadows shadow_RESULT += texelFetch2D(tex1, UV + OFFSET[i] + UV_NOISE, 0).rgb*edgeDiff; #endif ssao_RESULT += texelFetch2D(tex2, UV + OFFSET[i] + UV_NOISE, 0).rg*edgeDiff; edgeSum += edgeDiff; } // sample without an offset with texture filtering to get a slightly blurred sample. make sure to average without skewing the rest of the average. filteredShadow = shadow_RESULT/edgeSum * 0.8 + 0.2 * texture2D(tex1, texelSize*gl_FragCoord.xy).rgb; ambientEffects = ssao_RESULT/edgeSum * 0.8 + 0.2 * texture2D(tex2, texelSize*gl_FragCoord.xy).rg; } vec4 BilateralUpscale_VLFOG(sampler2D tex, sampler2D depth, float referenceDepth){ vec4 colorSum = vec4(0.0); float edgeSum = 0.0; #ifdef DISTANT_HORIZONS float threshold = referenceDepth * mix(0.5, 0.05, min(max(0.1 - referenceDepth,0)/0.1,1)); #else float threshold = referenceDepth * 0.05; #endif vec2 coord = gl_FragCoord.xy - 1.5; vec2 UV = coord; const ivec2 SCALE = ivec2(1.0/VL_RENDER_RESOLUTION); ivec2 UV_DEPTH = ivec2(UV*VL_RENDER_RESOLUTION)*SCALE; ivec2 UV_COLOR = ivec2(UV*VL_RENDER_RESOLUTION); ivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1); ivec2 OFFSET[5] = ivec2[]( ivec2(-1,-1), ivec2( 1, 1), ivec2(-1, 1), ivec2( 1,-1), ivec2( 0, 0) ); for(int i = 0; i < 4; i++) { #ifdef DISTANT_HORIZONS float offsetDepth = sqrt(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE,0).a/65000.0); #else float offsetDepth = ld(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE, 0).r); #endif float edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7; vec4 offsetColor = texelFetch2D(tex, UV_COLOR + OFFSET[i] + UV_NOISE, 0).rgba; colorSum += offsetColor*edgeDiff; edgeSum += edgeDiff; } return colorSum/edgeSum; } #ifdef OVERWORLD_SHADER vec3 ComputeShadowMap_COLOR(in vec3 projectedShadowPosition, float distortFactor, float noise, float shadowBlockerDepth, float NdotL, float maxDistFade, vec3 directLightColor, inout float tShadow, inout vec3 tintedSunlight, bool isSSS, inout float shadowDebug) { float backface = NdotL <= 0.0 ? 1.0 : 0.0; vec3 shadowColor = vec3(0.0); vec3 translucentTint = vec3(0.0); int samples = 1; #ifdef BASIC_SHADOW_FILTER 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; #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(translucentShadow.a * (2.0 - translucentShadow.a), 5.0); translucentShadow.rgb = normalize(translucentShadow.rgb * translucentShadow.rgb + 0.0001) * (1.0 - shadowAlpha); 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))); tShadow += ((1.0 - shadowAlpha) * opaqueShadowT) / samples; #else shadowColor += vec3(1.0) * shadow2D(shadow, projectedShadowPosition).x; #endif #ifdef BASIC_SHADOW_FILTER } #endif #ifdef debug_SHADOWMAP shadowDebug = shadow2D(shadow, projectedShadowPosition).x; #endif return shadowColor.rgb / samples; } #endif float CustomPhase(float LightPos){ float PhaseCurve = 1.0 - LightPos; float Final = exp2(sqrt(PhaseCurve) * -25.0); Final += exp(PhaseCurve * -10.0)*0.5; return Final; } vec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, float lightPos, float SS_shadows, float distantSSS, bool hand){ Scattering *= sss_density_multiplier; float density = 1e-6 + Density * 2.0; float scatterDepth = max(1.0 - Scattering/density, 0.0); scatterDepth *= exp(-7.0 * (1.0-scatterDepth)); scatterDepth = scatterDepth * mix(exp(-4.0 * SS_shadows), 1.0, (1.0-SCREENSPACE_DIRECT_SSS_BLENDING) * scatterDepth * distantSSS); if(hand) scatterDepth = max(1.0 - Scattering * 10.0, 0.0) * exp(-4.0 * SS_shadows); vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -20.0 * sss_absorbance_multiplier); vec3 scatter = scatterDepth * mix(absorbColor, vec3(1.0), scatterDepth); #if SSS_TYPE == 3 scatter *= pow(Density, LabSSS_Curve); #else if(Density < 0.01) scatter = vec3(0.0); #endif scatter *= 1.0 + CustomPhase(lightPos) * 6.0; // ~10x brighter at the peak return scatter; } vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){ #ifdef OLD_INDIRECT_SSS float scatterDepth = 1.0 - pow(1.0-Scattering, 0.5 + Density * 2.5); vec3 absorbColor = vec3(1.0) * exp(-(15.0 - 10.0 * scatterDepth) * sss_absorbance_multiplier * 0.01); vec3 scatter = scatterDepth * absorbColor * pow(Density, LabSSS_Curve); #else float scatterDepth = pow(Scattering, 3.5); scatterDepth = 1.0 - pow(1 - scatterDepth, 5.0); vec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -20.0 * sss_absorbance_multiplier); vec3 scatter = scatterDepth * mix(absorbColor, vec3(1.0), scatterDepth) * pow(Density, LabSSS_Curve); #endif // scatter *= 1.0 + exp(-7.0*(-playerPosNormalized.y*0.5+0.5)); return scatter; } 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); vec2 driprate = vec2(0.0,frameTimeCounter)*0.05; vec2 UV = mix(worldPos.xz, worldPos.xy*vec2(2.0, 0.5)+driprate, abs(flatNormals.z)); UV = mix(UV, worldPos.zy*vec2(2.0, 0.5)+driprate, abs(flatNormals.x)); float noise = texture2D(noisetex, UV * 0.02).b; 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 puddles = max(halfWet - noise,0.0); puddles = clamp(halfWet - exp(-25.0 * puddles * puddles * puddles * puddles * puddles),0.0,1.0); float wetnessStages = mix(puddles, 1.0, fullWet) * lightmap; if(isWater) wetnessStages = 0.0; #ifdef GROUND_RIPPLES vec3 rippleNormal = vec3(0.0); if (rainStrength > 0.01) rippleNormal = drawRipples(worldPos.xz * 10.0, frameTimeCounter * 1.5) * 0.25 * clamp(1.0 - length(worldPos - cameraPosition) / 32.0, 0.0, 1.0) * rainStrength; flatNormals = normalize(flatNormals + rippleNormal); #endif normals = mix(normals, flatNormals, puddles * lightmap * clamp(flatNormals.y,0.0,1.0)); #if MATERIAL_WETNESS_TYPE == 0 roughness = mix(roughness, 1.0, wetnessStages * (roughness * 0.5 + 0.5)); #elif MATERIAL_WETNESS_TYPE == 1 roughness = mix(roughness, 1.0, wetnessStages); #endif if(f0 < 229.5/255.0) albedo = pow(albedo * (1.0 - 0.08*wetnessStages), vec3(1.0 + 0.7*wetnessStages)); //////////////// snow // vec3 unchangedNormals = normals; // float upnormal = clamp(-(normals / dot(abs(normals),vec3(1.0))).y+clamp(flatNormals.y,0.5,1.0),0,1); // halfWet = clamp(halfWet - upnormal - (1.0-lightmap),0.0,1.0); // float snow = max(halfWet - noise,0.0); // snow = clamp(halfWet - exp(-20.0 * snow*snow*snow*snow*snow),0.0,1.0); // if(isWater || f0 > 229.5/255.0) snow = 0.0; // normals = mix(normals, unchangedNormals, snow); // roughness = mix(roughness, 0.5, snow); // albedo = mix(albedo, vec3(1.0), snow); } void main() { vec3 DEBUG = vec3(1.0); ////// --------------- SETUP STUFF --------------- ////// vec2 texcoord = gl_FragCoord.xy * texelSize; float noise_2 = R2_dither(); vec2 bnoise = blueNoise(gl_FragCoord.xy).rg; int seed = 600; #ifdef TAA seed = (frameCounter*5)%40000; #endif vec2 r2_sequence = R2_samples(seed).xy; vec2 BN = fract(r2_sequence + bnoise); float noise = BN.y; float z0 = texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy), 0).x; float z = texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x; float swappedDepth = z; bool isDHrange = z >= 1.0; #ifdef DISTANT_HORIZONS float DH_mixedLinearZ = sqrt(texture2D(colortex12,texcoord).a/65000.0); float DH_depth0 = texture2D(dhDepthTex,texcoord).x; float DH_depth1 = texture2D(dhDepthTex1,texcoord).x; float depthOpaque = z; float depthOpaqueL = linearizeDepthFast(depthOpaque, near, farPlane); float dhDepthOpaque = DH_depth1; float dhDepthOpaqueL = linearizeDepthFast(dhDepthOpaque, dhNearPlane, dhFarPlane); if (depthOpaque >= 1.0 || (dhDepthOpaqueL < depthOpaqueL && dhDepthOpaque > 0.0)){ depthOpaque = dhDepthOpaque; depthOpaqueL = dhDepthOpaqueL; } swappedDepth = depthOpaque; #else float DH_depth0 = 0.0; float DH_depth1 = 0.0; #endif ////// --------------- UNPACK OPAQUE GBUFFERS --------------- ////// vec4 data = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy), 0); vec3 skyboxCol = data.rgb; vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); // albedo, masks vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); // normals, lightmaps 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 #ifndef OVERWORLD_SHADER lightmap.y = 1.0; #endif ////// --------------- UNPACK MISC --------------- ////// vec4 SpecularTex = texelFetch2D(colortex8, ivec2(gl_FragCoord.xy), 0); float LabSSS = clamp((-65.0 + SpecularTex.z * 255.0) / 190.0 ,0.0,1.0); // LabSSS = 1; vec4 normalAndAO = texture2D(colortex15,texcoord); 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; normalAndAO.a = clamp(pow(normalAndAO.a*5,4),0,1); if(isDHrange){ FlatNormals = normal; slopednormal = normal; } ////// --------------- MASKS/BOOLEANS --------------- ////// // 1.0-0.8 ??? // 0.75 = hand mask // 0.60 = grass mask // 0.55 = leaf mask (for ssao-sss) // 0.50 = lightning bolt mask // 0.45 = entity mask float opaqueMasks = dataUnpacked1.w; // 1.0 = water mask // 0.9 = entity mask // 0.8 = reflective entities // 0.7 = reflective blocks float translucentMasks = texture2D(colortex7, texcoord).a; bool isWater = translucentMasks > 0.99; // bool isReflectiveEntity = abs(translucentMasks - 0.8) < 0.01; // bool isReflective = abs(translucentMasks - 0.7) < 0.01 || isWater || isReflectiveEntity; // bool isEntity = abs(translucentMasks - 0.9) < 0.01 || isReflectiveEntity; bool lightningBolt = abs(opaqueMasks-0.5) <0.01; bool isLeaf = abs(opaqueMasks-0.55) <0.01; bool entities = abs(opaqueMasks-0.45) < 0.01; bool isGrass = abs(opaqueMasks-0.60) < 0.01; bool hand = abs(opaqueMasks-0.75) < 0.01 && z < 1.0; // bool handwater = abs(translucentMasks-0.3) < 0.01 ; // bool blocklights = abs(opaqueMasks-0.8) <0.01; if(hand){ convertHandDepth(z); convertHandDepth(z0); } #ifdef DISTANT_HORIZONS 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)); #endif vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos; vec3 feetPlayerPos_normalized = normalize(feetPlayerPos); ////// --------------- COLORS --------------- ////// 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 = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 scatterCoef = Dirt_Amount * 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 / 2400.0; AmbientLightColor = averageSkyCol_Clouds / 900.0; #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS DirectLightColor.rgb = luma(DirectLightColor.rgb) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); AmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B); #endif shadowColor = DirectLightColor; bool inShadowmapBounds = false; #endif MinimumLightColor = MinimumLightColor + 0.7 * MinimumLightColor * dot(slopednormal, feetPlayerPos_normalized); //////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// UNDER WATER SHADING //////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// if ((isEyeInWater == 0 && isWater) || (isEyeInWater == 1 && !isWater)){ feetPlayerPos += gbufferModelViewInverse[3].xyz; #ifdef DISTANT_HORIZONS vec3 playerPos0 = toWorldSpace(toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z0, DH_depth0)); #else vec3 playerPos0 = toWorldSpace(toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0))); #endif float Vdiff = distance(feetPlayerPos, playerPos0); float estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y);// assuming water plane // 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); #endif Absorbtion = exp(-totEpsilon * max(Vdiff, minimumAbsorbance)); // things to note about sunlight in water // sunlight gets absorbed by water on the way down to the floor, and on the way back up to your eye. im gonna ingore the latter part lol // based on the angle of the sun, sunlight will travel through more/less water to reach the same spot. scale absorbtion depth accordingly vec3 sunlightAbsorbtion = exp(-totEpsilon * (estimatedDepth/abs(WsunVec.y))); if (isEyeInWater == 1){ estimatedDepth = 1.0; // viewerWaterDepth = max(0.9-lightmap.y,0.0)*3.0; float distanceFromWaterSurface = max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ; Absorbtion = exp(-totEpsilon * distanceFromWaterSurface); sunlightAbsorbtion = exp(-totEpsilon * (distanceFromWaterSurface/abs(WsunVec.y))); } DirectLightColor *= sunlightAbsorbtion; // brighten up the fully absorbed parts of water when night vision activates. if(nightVision > 0.0) Absorbtion += exp(-totEpsilon * 25.0) * nightVision; // apply caustics to the lighting, and make sure they dont look weird DirectLightColor *= pow(mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec) * WATER_CAUSTICS_BRIGHTNESS, clamp(estimatedDepth,0,1)), WATER_CAUSTICS_STRENGTH); } if (swappedDepth < 1.0) { // idk why this do feetPlayerPos += gbufferModelViewInverse[3].xyz; //////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// FILTER STUFF ////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// #if defined DISTANT_HORIZONS && defined DH_AMBIENT_OCCLUSION doEdgeAwareBlur(colortex3, colortex14, colortex12, DH_mixedLinearZ, hand, SSAO_SSS, filteredShadow); #else doEdgeAwareBlur(colortex3, colortex14, depthtex0, ld(z0), hand, SSAO_SSS, filteredShadow); #endif float ShadowBlockerDepth = filteredShadow.y; //////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// MAJOR LIGHTSOURCE STUFF //////////////////////// //////////////////////////////////////////////////////////////////////////////////// #ifdef OVERWORLD_SHADER float LM_shadowMapFallback = clamp(lightmap.y, 0.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((FlatNormals), WsunVec)*255.0) / 240.0 ,0.0,1.0); //////////////////////////////// SHADOWMAP //////////////////////////////// // setup shadow projection float shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / (shadowDistance+32.0),0.0)*5.0,1.0)); float shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / shadowDistance,0.0)*5.0,1.0)); if(isEyeInWater == 1){ shadowMapFalloff = 1.0; shadowMapFalloff2 = 1.0; } vec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; #if LIGHTLEAKFIX_MODE == 1 if(!hand) GriAndEminShadowFix(shadowPlayerPos, FlatNormals, lightLeakFix); #endif vec3 projectedShadowPosition = mat3(shadowModelView) * shadowPlayerPos + shadowModelView[3].xyz; applyShadowBias(projectedShadowPosition, shadowPlayerPos, FlatNormals); projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; // Calclulate distortion factor before bias application float distortFactor = 1.0; #ifdef DISTORT_SHADOWMAP distortFactor = calcDistort(projectedShadowPosition.xy); projectedShadowPosition.xy *= distortFactor; #endif projectedShadowPosition.z += shadowProjection[3].z * 0.0012; projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5) ; #ifdef LPV_SHADOWS projectedShadowPosition.xy *= 0.8; #endif 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); // transition to fallback lightmap shadow mask. // shadowColor *= mix(isWater ? lightLeakFix : LM_shadowMapFallback, 1.0, shadowMapFalloff2); #if LIGHTLEAKFIX_MODE == 2 if(isEyeInWater != 1) shadowColor *= 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; #else vec2 SS_directLight = vec2(1,0); ShadowBlockerDepth = max(ShadowBlockerDepth, (1.0-shadowMapFalloff2) * 10.0); #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), SS_directLight.g, shadowMapFalloff2, hand); if(isEyeInWater != 1) SSSColor *= lightLeakFix; float cloudShadows = getCloudShadow(feetPlayerPos.xyz + cameraPosition, WsunVec); shadowColor *= cloudShadows; SSSColor *= cloudShadow*cloudShadows; #endif #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 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 endPhase = endFogPhase(lightPos); Direct_lighting += lightColors * endPhase * end_NdotL * fogShadow; #endif ///////////////////////////////////////////////////////////////////////////////// ///////////////////////////// INDIRECT LIGHTING ///////////////////////////// ///////////////////////////////////////////////////////////////////////////////// #ifdef OVERWORLD_SHADER float skylight = 1.0; #if indirect_effect == 0 || indirect_effect == 1 || indirect_effect == 2 vec3 indirectNormal = slopednormal / dot(abs(slopednormal),vec3(1.0)); float SkylightDir = indirectNormal.y; if(isGrass) SkylightDir = 1.0; SkylightDir = clamp(SkylightDir*0.7+0.3, 0.0, pow(1-pow(1-SSAO_SSS.x, 0.5),4.0) * 0.7 + 0.3); skylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir)/2.5; #elif indirect_effect == 3 skylight = 1.0; #endif Indirect_lighting += doIndirectLighting(AmbientLightColor * skylight, MinimumLightColor, lightmap.y); #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; #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; #endif #ifdef END_SHADER Indirect_lighting = vec3(END_FOG_R, END_FOG_G, END_FOG_B); 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.2; 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); #if LPV_NORMAL_STRENGTH > 0 vec3 texNormalOffset = -normalOffset + slopednormal; normalOffset = mix(normalOffset, texNormalOffset, (LPV_NORMAL_STRENGTH*0.01)); #endif vec3 lpvPos = GetLpvPosition(feetPlayerPos) + normalOffset; #else const vec3 lpvPos = vec3(0.0); #endif vec3 blockLightColor = doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos, FlatNormals); Indirect_lighting += blockLightColor; ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// EFFECTS FOR INDIRECT ///////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// float SkySSS = 1.0; SkySSS = SSAO_SSS.y; vec3 AO = vec3(1.0); #if indirect_effect == 0 AO = vec3(pow(1.0 - vanilla_AO*vanilla_AO,5.0)); Indirect_lighting *= AO; #elif indirect_effect == 1 float SSAO_curve = pow(SSAO_SSS.x,4.0); AO = vec3(SSAO_curve); Indirect_lighting *= AO; // GTAO... this is so dumb but whatevverrr #elif indirect_effect == 2 float vanillaAO_curve = pow(1.0 - vanilla_AO*vanilla_AO,5.0); vec2 r2 = fract(R2_samples((frameCounter%40000) + frameCounter*2) + bnoise); float GTAO = !hand ? ambient_occlusion(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z), viewPos, worldToView(slopednormal), r2) : 1.0; AO = vec3(min(vanillaAO_curve,GTAO)); Indirect_lighting *= AO; // SSGI #elif indirect_effect == 3 if(!hand) Indirect_lighting = ApplySSRT(Indirect_lighting, blockLightColor, MinimumLightColor, viewPos, normal, vec3(bnoise, noise_2), lightmap.y, isGrass, isDHrange); #endif vec4 flashLightSpecularData = vec4(0.0); #ifdef FLASHLIGHT vec3 newViewPos = viewPos; float flashlightshadows = SSRT_FlashLight_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, newViewPos, interleaved_gradientNoise_temporal()); vec3 ssrtFLASHLIGHT = calculateFlashlight(texcoord, viewPos, albedoSmooth, slopednormal, flashLightSpecularData, hand); Indirect_lighting += ssrtFLASHLIGHT; #endif //////////////////////////////////////////////////////////////////////////////// ///////////////////////// SUB SURFACE SCATTERING ///////////////////////// //////////////////////////////////////////////////////////////////////////////// ///////////////////////////// SKY SSS ///////////////////////////// #if defined Ambient_SSS && defined OVERWORLD_SHADER vec3 ambientColor = AmbientLightColor * ambientsss_brightness * ambient_brightness * 2.0; Indirect_SSS = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS); Indirect_SSS *= lightmap.y; float thingy = SkySSS; thingy = pow(thingy, 3.5); thingy = 1.0 - pow(1 - thingy, 5.0); Indirect_lighting = Indirect_lighting + Indirect_SSS * ambientColor; #endif ///////////////////////////////////////////////////////////////////////// ///////////////////////////// FINALIZE ///////////////////////////// ///////////////////////////////////////////////////////////////////////// #ifdef SSS_view albedo = vec3(1); NdotL = 0; #endif #ifdef END_SHADER Direct_lighting *= AO; #endif #ifdef OVERWORLD_SHADER #ifdef AO_in_sunlight Direct_lighting = DirectLightColor * mix(SSSColor, vec3(1.0), NdotL*shadowColor * (AO*0.7+0.3)); #else Direct_lighting = DirectLightColor * mix(SSSColor, vec3(1.0), NdotL*shadowColor); #endif #ifdef DEFERRED_SPECULAR if(!hand && !entities) applyPuddles(feetPlayerPos + cameraPosition, FlatNormals, lightmap.y, isWater, albedo, normal, SpecularTex.r, SpecularTex.g); #endif #endif vec3 FINAL_COLOR = (Indirect_lighting + Direct_lighting) * albedo; Emission(FINAL_COLOR, albedo, SpecularTex.a); if(lightningBolt) FINAL_COLOR = vec3(77.0, 153.0, 255.0); #ifdef DEFERRED_SPECULAR vec3 specularNoises = vec3(BN.xy, blueNoise()); vec3 specularNormal = normal; if (dot(normal, (feetPlayerPos_normalized)) > 0.0) specularNormal = FlatNormals; FINAL_COLOR = specularReflections(viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, specularNormal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, DirectLightColor*shadowColor, lightmap.y, hand, flashLightSpecularData); #endif gl_FragData[0].rgb = FINAL_COLOR; }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 == 0 || RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 3 vec3 orbitstar = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE,1.0))); float radiance = 2.39996 - worldTime/24000.0 * STAR_MOVEMENT_MULT; mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); orbitstar.xy *= rotationMatrix; #ifdef TWILIGHT_FOREST_FLAG Background += drawStars(orbitstar) * 100.0; #else Background += drawStars(orbitstar) * 10.0 * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0); #endif #ifdef SHOOTING_STARS Background += drawShootingStars(feetPlayerPos_normalized) * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0); #endif #if !defined ambientLight_only && (RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 1) Background += drawSun(dot(unsigned_WsunVec, feetPlayerPos_normalized), 0, DirectLightColor,vec3(0.0)); vec3 moonLightCol = moonCol / 2400.0; Background += drawMoon(feetPlayerPos_normalized, WmoonVec, moonLightCol, Background); #endif Background *= atmosphereGround; #endif // Render aurora if (unsigned_WsunVec.y < 0) { Background += drawAurora(feetPlayerPos_normalized, noise) * AURORA_BRIGHTNESS * applyAurora; } #ifndef ISOLATE_RESOURCEPACK_SKY vec3 Sky = skyFromTex(feetPlayerPos_normalized, colortex4)/1200.0 * Sky_Brightness; Background += Sky; #endif #if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3 vec3 resourcePackskyBox = skyboxCol * 50.0 * clamp(unsigned_WsunVec.y * 255.0, 0.1, 1.0); #if defined SKY_GROUND && !defined ISOLATE_RESOURCEPACK_SKY resourcePackskyBox *= atmosphereGround; #endif Background += resourcePackskyBox; #endif #endif #ifdef END_SHADER Background += drawStars(feetPlayerPos_normalized) * 20.0; #endif gl_FragData[0].rgb = clamp(fp10Dither(Background, triangularize(noise_2)), 0.0, 65000.); } if(translucentMasks > 0.0){ // water absorbtion will impact ALL light coming up from terrain underwater. gl_FragData[0].rgb *= Absorbtion; #ifdef DISTANT_HORIZONS float DH_mixedLinearZ = sqrt(texelFetch2D(colortex12,ivec2(gl_FragCoord.xy),0).a/65000.0); vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, colortex12, DH_mixedLinearZ); #else vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, 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(1.0) * (Shadows * NdotL * 0.9 + 0.1); if(dot(feetPlayerPos_normalized, unsigned_WsunVec) > 0.999 ) gl_FragData[0].rgb = vec3(10,10,0); if(dot(feetPlayerPos_normalized, -WmoonVec) > 0.999 ) gl_FragData[0].rgb = vec3(1,1,10); #elif DEBUG_VIEW == debug_NORMALS if(swappedDepth >= 1.0) Direct_lighting = vec3(1.0); gl_FragData[0].rgb = normal ; #elif DEBUG_VIEW == debug_SPECULAR if(swappedDepth >= 1.0) Direct_lighting = vec3(1.0); gl_FragData[0].rgb = SpecularTex.rgb; #elif DEBUG_VIEW == debug_INDIRECT if(swappedDepth >= 1.0) Direct_lighting = vec3(5.0); gl_FragData[0].rgb = Indirect_lighting; #elif DEBUG_VIEW == debug_DIRECT if(swappedDepth < 1.0) gl_FragData[0].rgb = Direct_lighting; #elif DEBUG_VIEW == debug_VIEW_POSITION gl_FragData[0].rgb = viewPos * 0.001; #elif DEBUG_VIEW == debug_FILTERED_STUFF float value = SSAO_SSS.y; value = pow(value,3.5); value = 1-pow(1-value,5); if(hideGUI == 1) value = pow(SSAO_SSS.x,6); gl_FragData[0].rgb = vec3(value); if(swappedDepth >= 1.0) gl_FragData[0].rgb = vec3(1.0); #endif /* RENDERTARGETS:3 */ } ================================================ FILE: shaders/dimensions/composite1.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/util.glsl" #ifdef END_SHADER flat out float Flashing; #endif uniform int worldDay; #include "/lib/scene_controller.glsl" flat out vec3 WsunVec; flat out vec3 WmoonVec; flat out vec3 unsigned_WsunVec; flat out vec3 averageSkyCol_Clouds; flat out vec4 lightCol; flat out vec3 moonCol; flat out vec3 albedoSmooth; flat out vec2 TAA_Offset; flat out vec3 zMults; uniform sampler2D colortex4; uniform float near; uniform mat4 gbufferModelViewInverse; uniform vec3 sunPosition; uniform vec3 moonPosition; uniform float sunElevation; uniform float frameTimeCounter; uniform int framemod8; #include "/lib/TAA_jitter.glsl" #include "/lib/Shadow_Params.glsl" void main() { gl_Position = ftransform(); #ifdef END_SHADER Flashing = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; #endif zMults = vec3(1.0/(far * near),far+near,far-near); lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; moonCol = texelFetch2D(colortex4,ivec2(9,37),0).rgb; #if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT albedoSmooth = texelFetch2D(colortex4,ivec2(15.5,2.5),0).rgb; #endif averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; unsigned_WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); vec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition); WmoonVec = moonVec; if(dot(-moonVec, unsigned_WsunVec) < 0.9999) WmoonVec = -moonVec; WsunVec = mix(WmoonVec, unsigned_WsunVec, clamp(lightCol.a,0,1)); readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #ifdef TAA TAA_Offset = offsets[framemod8]; #else TAA_Offset = vec2(0.0); #endif #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; #endif } ================================================ FILE: shaders/dimensions/composite10.fsh ================================================ #include "/lib/settings.glsl" uniform sampler2D colortex3; uniform sampler2D colortex6; uniform vec2 texelSize; uniform float viewWidth; uniform float viewHeight; 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)); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:3 */ vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); vec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize; #ifdef OLD_BLOOM vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.).rgb; //1/4 res bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb; //1/8 res bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res gl_FragData[0].rgb = bloom * 2.0; #else 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 ); // float weights[7] = float[]( 0.7, pow(0.5,2), pow(0.5,3), pow(0.5,4), pow(0.5,5), pow(0.5,6), pow(0.5,7) ); vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.).rgb * weights[0]; //1/4 res bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb * weights[1]; //1/8 res bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb * weights[2]; //1/16 res bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb * weights[3]; //1/32 res bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb * weights[4]; //1/64 res 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; #endif gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); } ================================================ FILE: shaders/dimensions/composite10.vsh ================================================ uniform float viewWidth; uniform float viewHeight; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); gl_Position = ftransform(); //*0.51 to avoid errors when sampling outside since clearing is disabled gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0; } ================================================ FILE: shaders/dimensions/composite11.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" flat in vec4 exposure; flat in vec2 rodExposureDepth; in vec2 texcoord; const bool colortex5MipmapEnabled = true; // uniform sampler2D colortex4; uniform sampler2D colortex5; uniform sampler2D colortex3; // uniform sampler2D colortex6; uniform sampler2D colortex7; // uniform sampler2D colortex8; // specular uniform sampler2D colortex9; // specular uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D noisetex; uniform vec2 texelSize; uniform ivec2 eyeBrightnessSmooth; uniform float viewWidth; uniform float viewHeight; uniform float frameTimeCounter; uniform int frameCounter; uniform int isEyeInWater; uniform float near; uniform float aspectRatio; uniform float far; uniform float rainStrength; uniform float screenBrightness; uniform vec4 Moon_Weather_properties; // R = cloud coverage G = fog density uniform int hideGUI; uniform int framemod8; #include "/lib/TAA_jitter.glsl" uniform mat4 gbufferModelViewInverse; uniform mat4 gbufferProjectionInverse; vec4 Weather_properties = Moon_Weather_properties; #include "/lib/tonemaps.glsl" #include "/lib/color_dither.glsl" // #include "/lib/biome_specifics.glsl" #include "/lib/bokeh.glsl" float cdist(vec2 coord) { return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; } float blueNoise(){ return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); } float ld(float depth) { return (2.0 * near) / (far + near - depth * (far - near)); } // uniform float viewWidth; // uniform float viewHeight; // uniform sampler2D depthtex0; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; #endif uniform float dhNearPlane; uniform float dhFarPlane; float linearizeDepthFast(const in float depth, const in float near, const in float far){ 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); // float weights[7] = float[](0.7, pow(0.5,2), pow(0.5,3), pow(0.5,4), pow(0.5,5), pow(0.5,6), pow(0.5,7)); float result = 0.0; for ( int i = 0; i < 7; i++){ result += weights[i]; } return result; } const mat3 ACESInputMat = mat3(0.59719, 0.35458, 0.04823, 0.07600, 0.90834, 0.01566, 0.02840, 0.13383, 0.83777 ); // ODT_SAT => XYZ => D60_2_D65 => sRGB const mat3 ACESOutputMat = mat3(1.60475, -0.53108, -0.07367, -0.10208, 1.10813, -0.00605, -0.00327, -0.07276, 1.07602 ); vec3 LinearTosRGB(in vec3 color){ vec3 x = color * 12.92f; vec3 y = 1.055f * pow(clamp(color,0.0,1.0), vec3(1.0f / 2.4f)) - 0.055f; vec3 clr = color; clr.r = color.r < 0.0031308f ? x.r : y.r; clr.g = color.g < 0.0031308f ? x.g : y.g; clr.b = color.b < 0.0031308f ? x.b : y.b; return clr; } 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)); } void main() { /* DRAWBUFFERS:7 */ float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); vec3 col = texture2D(colortex5,texcoord).rgb; #if DOF_QUALITY >= 0 /*--------------------------------*/ float z = ld(texture2D(depthtex1, texcoord.st*RENDER_SCALE).r)*far; #if MANUAL_FOCUS == -2 float focus = rodExposureDepth.y*far; #elif MANUAL_FOCUS == -1 float focus = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); #elif MANUAL_FOCUS > 0 float focus = MANUAL_FOCUS; #endif #if DOF_QUALITY < 5 float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0); #ifdef FAR_BLUR_ONLY pcoc *= float(z > focus); #endif #ifdef REMOVE_HAND_BLUR pcoc *= float(z > 0.56); #endif vec3 bcolor = vec3(0.); float nb = 0.0; vec2 bcoord = vec2(0.0); /*--------------------------------*/ float dofLodLevel = pcoc * 200.0; vec2 dispersion = (texcoord - 0.5) * pcoc * 200.0 * DOF_DISPERSION_MULT; for (int i = 0; i < BOKEH_SAMPLES; i++) { bcolor.r += texture2DLod(colortex5, texcoord.xy + (bokeh_offsets[i] + dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).r; bcolor.g += texture2DLod(colortex5, texcoord.xy + bokeh_offsets[i]*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).g; bcolor.b += texture2DLod(colortex5, texcoord.xy + (bokeh_offsets[i] - dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).b; } col = bcolor/BOKEH_SAMPLES; #endif #endif 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 #ifdef OLD_BLOOM vec3 bloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0; vec3 fogBloom = bloom; float lightScat = clamp((BLOOM_STRENGTH+3) * 0.05 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette; #else 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 lightScat = clamp(BLOOM_STRENGTH * 0.3,0.0,1.0) * vignette; #endif float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r; #if Purkinje_strength > 0 float pstrength = float(Purkinje_strength) / 100.0; #ifdef AUTO_EXPOSURE float purkinje = clamp(exposure.a*exposure.a,0.0,1.0) * clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1); #else float purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1); #endif 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; float lum = dot(col, vec3(0.15,0.3,0.55)); float lum2 = dot(col, vec3(0.85,0.7,0.45)); float rodLum = lum2*200.0; float rodCurve = clamp(mix(1.0, rodLum/(2.5+rodLum), purkinje),0.0,1.0); col = mix(lum * vec3(Purkinje_R, Purkinje_G, Purkinje_B) * Purkinje_Multiplier, col, rodCurve); #else VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength),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; #endif #ifdef USE_ACES_COLORSPACE_APPROXIMATION col = col * ACESInputMat; col = TONEMAP(col); col = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0)); #else col = LinearTosRGB(TONEMAP(col)); #endif gl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0); #if DOF_QUALITY == 5 #if FOCUS_LASER_COLOR == 0 // Red vec3 laserColor = vec3(25, 0, 0); #elif FOCUS_LASER_COLOR == 1 // Green vec3 laserColor = vec3(0, 25, 0); #elif FOCUS_LASER_COLOR == 2 // Blue vec3 laserColor = vec3(0, 0, 25); #elif FOCUS_LASER_COLOR == 3 // Pink vec3 laserColor = vec3(25, 10, 15); #elif FOCUS_LASER_COLOR == 4 // Yellow vec3 laserColor = vec3(25, 25, 0); #elif FOCUS_LASER_COLOR == 5 // White vec3 laserColor = vec3(25); #endif float depth = texture(depthtex0, texcoord).r; #ifdef DISTANT_HORIZONS float _near = near; float _far = far*4.0; if (depth >= 1.0) { depth = texture2D(dhDepthTex, texcoord).x; _near = dhNearPlane; _far = dhFarPlane; } depth = linearizeDepthFast(depth, _near, _far); #else depth = linearizeDepthFast(depth, near, far); #endif // focus = gl_FragCoord.x * 0.1; if( hideGUI < 1) gl_FragData[0].rgb += laserColor * pow(clamp(1.0-abs(focus-abs(depth)),0,1),25) ; #endif } ================================================ FILE: shaders/dimensions/composite11.vsh ================================================ #include "/lib/settings.glsl" out vec2 texcoord; uniform sampler2D colortex4; flat out vec4 exposure; flat out vec2 rodExposureDepth; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; exposure = vec4(vec3(texelFetch2D(colortex4,ivec2(10,37),0).r),texelFetch2D(colortex4,ivec2(10,37),0).r); rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg; rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0); } ================================================ FILE: shaders/dimensions/composite12.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" in vec2 texcoord; uniform vec2 texelSize; uniform sampler2D colortex7; uniform sampler2D colortex14; uniform sampler2D depthtex0; uniform float viewHeight; uniform float viewWidth; uniform float aspectRatio; uniform float frameTimeCounter; uniform int hideGUI; #include "/lib/tonemaps.glsl" #include "/lib/color_dither.glsl" #include "/lib/res_params.glsl" /* vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize) { // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding // down the sample location to get the exact center of our "starting" texel. The starting texel will be at // location [1, 1] in the grid, where [0, 0] is the top left corner. vec2 samplePos = uv * texSize; vec2 texPos1 = floor(samplePos - 0.5) + 0.5; // Compute the fractional offset from our starting texel to our original sample location, which we'll // feed into the Catmull-Rom spline function to get our filter weights. vec2 f = samplePos - texPos1; // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. // These equations are pre-expanded based on our knowledge of where the texels will be located, // which lets us avoid having to evaluate a piece-wise function. vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); vec2 w3 = f * f * (-0.5 + 0.5 * f); // Work out weighting factors and sampling offsets that will let us use bilinear filtering to // simultaneously evaluate the middle 2 samples from the 4x4 grid. vec2 w12 = w1 + w2; vec2 offset12 = w2 / (w1 + w2); // Compute the final UV coordinates we'll use for sampling the texture vec2 texPos0 = texPos1 - vec2(1.0); vec2 texPos3 = texPos1 + vec2(2.0); vec2 texPos12 = texPos1 + offset12; texPos0 *= texelSize; texPos3 *= texelSize; texPos12 *= texelSize; vec4 result = vec4(0.0); result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; return result; } */ float lowerCurve(float x) { float y = 16 * x * (0.5 - x) * 0.1; return clamp(y, 0.0, 1.0); } float upperCurve(float x) { float y = 16 * (0.5 - x) * (x - 1.0) * 0.1; return clamp(y, 0.0, 1.0); } vec3 luminanceCurve(vec3 color){ color.r += LOWER_CURVE * lowerCurve(color.r) + UPPER_CURVE * upperCurve(color.r); color.g += LOWER_CURVE * lowerCurve(color.g) + UPPER_CURVE * upperCurve(color.g); color.b += LOWER_CURVE * lowerCurve(color.b) + UPPER_CURVE * upperCurve(color.b); return color; } vec3 colorGrading(vec3 color) { float grade_luma = dot(color, vec3(1.0 / 3.0)); float shadows_amount = clamp(-6.0 * grade_luma + 2.75, 0.0, 1.0); float mids_amount = clamp(-abs(6.0 * grade_luma - 3.0) + 1.25, 0.0, 1.0); float highlights_amount = clamp(6.0 * grade_luma - 3.25, 0.0, 1.0); vec3 graded_shadows = color * SHADOWS_TARGET * SHADOWS_GRADE_MUL; vec3 graded_mids = color * MIDS_TARGET * MIDS_GRADE_MUL; vec3 graded_highlights = color * HIGHLIGHTS_TARGET * HIGHLIGHTS_GRADE_MUL; return clamp((graded_shadows * shadows_amount + graded_mids * mids_amount + graded_highlights * highlights_amount) * 1.7320508076, 0.0, 1.0); } vec3 contrastAdaptiveSharpening(vec3 color, vec2 texcoord){ //Weights : 1 in the center, 0.5 middle, 0.25 corners vec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; vec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; vec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; vec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; vec3 m1 = -0.5/3.5*color + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5; vec3 std = abs(color - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1); float contrast = 1.0 - luma(std)/5.0; color = color*(1.0+(SHARPENING+UPSCALING_SHARPNENING)*contrast) - (SHARPENING+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*color); return color; } vec3 saturationAndCrosstalk(vec3 color){ float luminance = luma(color); vec3 lumaColDiff = color - luminance; color = color + lumaColDiff * (SATURATION - luminance * CROSSTALK); return color; } 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 #ifdef CONTRAST_ADAPTATIVE_SHARPENING color = contrastAdaptiveSharpening(color, texcoord); #endif color = saturationAndCrosstalk(color); #ifdef LUMINANCE_CURVE color = luminanceCurve(color); #endif #ifdef COLOR_GRADING_ENABLED color = colorGrading(color); #endif gl_FragData[0].rgb = clamp(int8Dither(color, texcoord),0.0,1.0); } ================================================ FILE: shaders/dimensions/composite12.vsh ================================================ #include "/lib/settings.glsl" out vec2 texcoord; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; } ================================================ FILE: shaders/dimensions/composite2.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" #define EXCLUDE_WRITE_TO_LUT flat in vec4 lightCol; flat in vec3 averageSkyCol; flat in vec3 averageSkyCol_Clouds; uniform sampler2D depthtex0; uniform sampler2D depthtex1; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex0; uniform sampler2D colortex2; uniform sampler2D colortex3; uniform sampler2D colortex4; uniform sampler2D colortex6; uniform sampler2D colortex7; uniform sampler2D colortex10; flat in vec3 WsunVec; uniform vec3 sunVec; uniform float sunElevation; uniform float near; // uniform float far; // uniform float dhFarPlane; #ifdef VIVECRAFT uniform bool vivecraftIsVR; uniform vec3 vivecraftRelativeMainHandPos; uniform vec3 vivecraftRelativeOffHandPos; uniform mat4 vivecraftRelativeMainHandRot; uniform mat4 vivecraftRelativeOffHandRot; #endif uniform float frameTimeCounter; uniform int worldTime; uniform int worldDay; // in vec2 texcoord; uniform vec2 texelSize; flat in vec2 TAA_Offset; uniform int isEyeInWater; uniform float rainStrength; uniform ivec2 eyeBrightnessSmooth; uniform float eyeAltitude; uniform float caveDetection; // uniform int dhRenderDistance; #define DHVLFOG #include "/lib/tonemaps.glsl" #include "/lib/color_dither.glsl" #include "/lib/projections.glsl" #include "/lib/res_params.glsl" #include "/lib/sky_gradient.glsl" #include "/lib/Shadow_Params.glsl" #include "/lib/waterBump.glsl" #include "/lib/DistantHorizons_projections.glsl" float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); } #define IS_LPV_ENABLED #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED flat in float exposure; #extension GL_ARB_shader_image_load_store: enable #extension GL_ARB_shading_language_packing: enable uniform usampler1D texBlockData; uniform sampler3D texLpv1; uniform sampler3D texLpv2; #include "/lib/hsv.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" #endif float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } #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 in vec3 refractedSunVec; #include "/lib/lightning_stuff.glsl" #include "/lib/climate_settings.glsl" #include "/lib/scene_controller.glsl" #include "/lib/volumetricClouds.glsl" #include "/lib/overworld_fog.glsl" #include "/lib/aurora.glsl" #endif #ifdef NETHER_SHADER #include "/lib/nether_fog.glsl" #endif #ifdef END_SHADER #include "/lib/end_fog.glsl" #endif void waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient){ inColor *= exp(-rayLength * waterCoefs); //No need to take the integrated value int spCount = rayMarchSampleCount; vec3 start = toShadowSpaceProjected(toWorldSpace(rayStart)); vec3 end = toShadowSpaceProjected(toWorldSpace(rayEnd)); vec3 dV = (end-start); //limit ray length at 32 blocks for performance and reducing integration error //you can't see above this anyway float maxZ = min(rayLength,12.0)/(1e-8+rayLength); dV *= maxZ; rayLength *= maxZ; float dY = normalize(mat3(gbufferModelViewInverse) * rayEnd).y * rayLength; estEndDepth *= maxZ; estSunDepth *= maxZ; vec3 wpos = toWorldSpace(rayStart); vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); vec3 absorbance = vec3(1.0); vec3 vL = vec3(0.0); 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 } sh *= getCloudShadow(progressW, WsunVec * lightCol.a); #endif float bubble = exp2(-10.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0)); float caustics = max(max(waterCaustics(progressW, WsunVec), phase*0.5) * mix(0.5, 1.5, bubble), phase) ; vec3 sunAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface/abs(WsunVec.y))); vec3 WaterAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface + thing)); vec3 Directlight = lightSource * sh * phase * caustics * sunAbsorbance; vec3 Indirectlight = ambient * WaterAbsorbance; vec3 light = (Indirectlight + Directlight) * scatterCoef; vec3 volumeCoeff = exp(-waterCoefs * length(dd*dVWorld)); vL += (light - light * volumeCoeff) / waterCoefs * absorbance; absorbance *= volumeCoeff; } return vec4(vL, dot(absorbance,vec3(0.335))); } vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } float fogPhase2(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; } uniform int framemod8; #include "/lib/TAA_jitter.glsl" float convertHandDepth(float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; return ndcDepth * 0.5 + 0.5; } vec3 alterCoords(in vec3 coords, bool lighting){ float theDistance = length(coords + (lighting ? vec3(0.0) : cameraPosition)); coords.x = coords.x*3; coords.y = coords.y; coords.z = coords.z*3; return coords; } vec4 raymarchTest( in vec3 viewPosition, in vec2 dither ){ vec3 color = vec3(0.0); float totalAbsorbance = 1.0; float expFactor = 16.0; float minHeight = 250.0; float maxHeight = minHeight + 100.0; #ifdef DISTANT_HORIZONS float maxdist = dhFarPlane - 16.0; #else float maxdist = far*4; #endif float referenceDistance = length(viewPosition) < maxdist ? length(viewPosition) - 1.0 : 100000000.0; int SAMPLECOUNT = 8; //project pixel position into projected shadowmap space vec3 wpos = toWorldSpace(viewPosition); vec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz; vec3 dVWorldN = normalize(dVWorld); float cloudRange = max(minHeight - cameraPosition.y, 0.0); vec3 rayDirection = dVWorldN.xyz * ((maxHeight - minHeight) / length(alterCoords(dVWorldN, false)) / SAMPLECOUNT); // float cloudRange = mix(max(cameraPosition.y - maxHeight,0.0), max(minHeight - cameraPosition.y,0.0), clamp(rayDirection.y,0.0,1.0)); vec3 rayProgress = rayDirection + cameraPosition + (rayDirection / length(alterCoords(rayDirection, false))) * 200.0; float dL = length(rayDirection); for (int i = 0; i < SAMPLECOUNT; i++) { if(length(rayProgress - cameraPosition) > referenceDistance) break; 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 theDistance = length(alterCoords(rayProgress-cameraPosition, true)); float fogDensity = min(max(texture2D(noisetex, rayProgress.xz/2048).b-0.5,0.0)*2.0,1.0) * clamp((minHeight+50) - theDistance, 0.0, clamp(theDistance-minHeight,0,1)); float fogVolumeCoeff = exp(-fogDensity*dd*dL); // vec3 lighting = vec3(1.0) * (1.0-clamp((minHeight-50) - theDistance,0,1)); vec3 lighting = vec3(1.0) * clamp(minHeight - theDistance/1.2,0,1); color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance; totalAbsorbance *= fogVolumeCoeff; rayProgress += rayDirection; } return vec4(color, totalAbsorbance); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* RENDERTARGETS:0 */ 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 - 0.5)/VL_RENDER_RESOLUTION*texelSize; bool iswater = texture2D(colortex7,tc).a > 0.99; float depth = texelFetch2D(depthtex0, ivec2(tc/texelSize),0).x; float z0 = depth < 0.56 ? convertHandDepth(depth) : depth; float DH_z0 = 0.0; #ifdef DISTANT_HORIZONS DH_z0 = texelFetch2D(dhDepthTex, ivec2(tc/texelSize),0).x; #endif vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0); vec3 viewPos0_water = toScreenSpace(vec3(tc/RENDER_SCALE, z0)); vec3 playerPos = toWorldSpace(viewPos0); vec3 playerPos_normalized = normalize(playerPos); 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 = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 scatterCoef = Dirt_Amount * 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; float cloudPlaneDistance = 0.0; #ifdef OVERWORLD_SHADER vec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WsunVec, directLightColor + aurEmit * 0.2, indirectLightColor + aurEmit * 0.01, cloudPlaneDistance); #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); #endif float atmosphereAlpha = 1.0; vec3 sceneColor = texelFetch2D(colortex3,ivec2(tc/texelSize),0).rgb * VolumetricClouds.a + VolumetricClouds.rgb; vec4 VolumetricFog = GetVolumetricFog(viewPos0, WsunVec, BN, directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb, cloudPlaneDistance); VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a * VolumetricClouds.a); #else vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN.x, BN.y); #endif if (isEyeInWater == 1){ vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0_water, length(viewPos0_water), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0_water), normalize(sunVec* lightCol.a ))); VolumetricFog = vec4(underWaterFog.rgb, 1.0); } gl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0); } ================================================ FILE: shaders/dimensions/composite2.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/util.glsl" flat out vec4 lightCol; flat out vec3 averageSkyCol; flat out vec3 averageSkyCol_Clouds; #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED flat out float exposure; #endif uniform int worldDay; #include "/lib/scene_controller.glsl" flat out vec3 WsunVec; flat out vec3 refractedSunVec; uniform vec2 texelSize; uniform sampler2D colortex4; uniform float sunElevation; uniform vec3 sunPosition; uniform vec3 moonPosition; uniform mat4 gbufferModelViewInverse; flat out vec2 TAA_Offset; uniform int framemod8; #include "/lib/TAA_jitter.glsl" uniform float frameTimeCounter; #include "/lib/Shadow_Params.glsl" #include "/lib/sky_gradient.glsl" //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// 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; averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb; averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #endif #ifdef NETHER_SHADER lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); averageSkyCol_Clouds = vec3(0.0); #endif #ifdef END_SHADER lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); averageSkyCol_Clouds = vec3(5.0); #endif lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); vec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition); vec3 WmoonVec = moonVec; if(dot(-moonVec, WsunVec) < 0.9999) WmoonVec = -moonVec; WsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1)); refractedSunVec = refract(lightCol.a*WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333); #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED exposure = texelFetch2D(colortex4,ivec2(10,37),0).r; #endif #ifdef TAA TAA_Offset = offsets[framemod8]; #else TAA_Offset = vec2(0.0); #endif } ================================================ FILE: shaders/dimensions/composite3.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" flat in vec3 zMults; flat in vec2 TAA_Offset; flat in vec3 WsunVec; #ifdef OVERWORLD_SHADER flat in vec3 skyGroundColor; #endif uniform sampler2D depthtex0; uniform sampler2D depthtex1; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex0; // uniform sampler2D colortex1; uniform sampler2D colortex2; uniform sampler2D colortex3; uniform sampler2D colortex4; // uniform sampler2D colortex5; uniform sampler2D colortex6; uniform sampler2D colortex7; // uniform sampler2D colortex8; uniform sampler2D colortex9; uniform sampler2D colortex10; uniform sampler2D colortex11; uniform sampler2D colortex12; // uniform sampler2D colortex13; // uniform sampler2D colortex14; // uniform sampler2D colortex15; uniform vec2 texelSize; // uniform float viewHeight; // uniform float viewWidth; // uniform vec3 sunVec; uniform float frameTimeCounter; uniform float far; uniform float near; uniform float farPlane; uniform int dhRenderDistance; uniform int hideGUI; uniform int isEyeInWater; uniform ivec2 eyeBrightnessSmooth; uniform ivec2 eyeBrightness; uniform float nightVision; uniform float rainStrength; uniform float wetness; uniform float blindness; uniform float darknessFactor; uniform float darknessLightFactor; uniform float caveDetection; uniform float waterEnteredAltitude; uniform float fogEnd; uniform vec3 fogColor; uniform float eyeAltitude; #include "/lib/waterBump.glsl" #include "/lib/res_params.glsl" #include "/lib/projections.glsl" #include "/lib/DistantHorizons_projections.glsl" #ifdef OVERWORLD_SHADER #include "/lib/climate_settings.glsl" #include "/lib/rainbow.glsl" #endif #include "/lib/sky_gradient.glsl" vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0); } vec3 normVec(vec3 vec){ return vec*inversesqrt(dot(vec,vec)); } float ld(float depth) { return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near } float linearize(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); } vec2 clampUV(in vec2 uv, vec2 texcoord){ // get the gradient when a refracted axis and non refracted axis go above 1.0 or below 0.0 // use this gradient to lerp between refracted and non refracted uv // the goal of this is to stretch the uv back to normal when the refracted image exposes off screen uv // emphasis on *stretch*, as i want the transition to remain looking like refraction, not a sharp cut. float vignette = max(uv.x * texcoord.x, 0.0); vignette = max(uv.y * texcoord.y, vignette); vignette = max((uv.x-1.0) * (texcoord.x-1.0), vignette); vignette = max((uv.y-1.0) * (texcoord.y-1.0), vignette); vignette *= vignette * vignette * vignette * vignette; return clamp(mix(uv, texcoord, vignette), 0.0, 0.9999999); } vec3 doRefractionEffect(inout vec2 passTexcoord, vec2 normal, float linearDistance, bool isReflectiveEntity, bool underwater){ // correct normal directions to match texcoord directions (right facing X, up facing Y) normal.y = -normal.y; vec2 texcoord = passTexcoord; vec3 color = vec3(0.0); float refractAmount = float(FAKE_REFRACTION_AMOUNT)/4.0; float dispersionAmount = float(FAKE_DISPERSION_AMOUNT)/4.0; float smudgeAmount = float(REFRACTION_SMUDGE_AMOUNT)/4.0; refractAmount *= 0.5 / (1.0 + pow(linearDistance,0.8) * (underwater ? 0.1 : 1.0)); if(isReflectiveEntity) refractAmount *= 0.5; dispersionAmount *= 0.035; smudgeAmount *= 0.035; vec2 dispersion = (clamp(normal, -0.2, 0.2) / 0.2); #if REFRACTION_SMUDGE_AMOUNT > 0 vec2 smudge = smudgeAmount * dispersion * (blueNoise()-0.5); #else vec2 smudge = vec2(0.0); #endif dispersion *= dispersionAmount; #if FAKE_DISPERSION_AMOUNT > 0 // do not offset texcoord if alpha is 1.0 refractAmount *= min(decodeVec2(texelFetch2D(colortex11, ivec2(clampUV(texcoord - ((normal + dispersion) + smudge)*refractAmount, texcoord)/texelSize),0).b).g, decodeVec2(texelFetch2D(colortex11, ivec2(clampUV(texcoord - ((normal - dispersion) + smudge)*refractAmount, texcoord)/texelSize),0).b).g) > 0.0 ? 1.0 : 0.0; // create offsets vec2 offsetTexcoord = clampUV(texcoord - (normal + smudge)*refractAmount, texcoord); passTexcoord = offsetTexcoord; // sample color with offsetted texcoord. in this case, the red and blue channels have offsets in opposite directions for a dispersion effect. color.g = texture2D(colortex3, offsetTexcoord).g; offsetTexcoord = clampUV(texcoord - ((normal + dispersion) + smudge)*refractAmount, texcoord); color.r = texture2D(colortex3, offsetTexcoord).r; offsetTexcoord = clampUV(texcoord - ((normal - dispersion) + smudge)*refractAmount, texcoord); color.b = texture2D(colortex3, offsetTexcoord).b; #else // do not offset texcoord if alpha is 1.0 refractAmount *= decodeVec2(texelFetch2D(colortex11, ivec2(clampUV(texcoord - (normal + smudge)*refractAmount, texcoord)/texelSize),0).b).g > 0.0 ? 1.0 : 0.0; // create offsets vec2 offsetTexcoord = clampUV(texcoord - (normal + smudge)*refractAmount, texcoord); passTexcoord = offsetTexcoord; // sample color with distorted texcoords color.rgb = texture2D(colortex3, offsetTexcoord).rgb; #endif return color; } vec4 bilateralUpsample(out float outerEdgeResults, float referenceDepth, sampler2D depth, bool hand){ vec4 colorSum = vec4(0.0); float edgeSum = 0.0; float threshold = 0.005; vec2 coord = gl_FragCoord.xy - 1.5; vec2 UV = coord; const ivec2 SCALE = ivec2(1.0/VL_RENDER_RESOLUTION); ivec2 UV_DEPTH = ivec2(UV*VL_RENDER_RESOLUTION)*SCALE; ivec2 UV_COLOR = ivec2(UV*VL_RENDER_RESOLUTION); ivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1); ivec2 OFFSET[5] = ivec2[]( ivec2(-1,-1), ivec2( 1, 1), ivec2(-1, 1), ivec2( 1,-1), ivec2( 0, 0) ); for(int i = 0; i < 5; i++) { #ifdef DISTANT_HORIZONS float offsetDepth = sqrt(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE,0).a/65000.0); #else float offsetDepth = linearize(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE, 0).r); #endif float edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7; outerEdgeResults = max(outerEdgeResults, abs(referenceDepth - offsetDepth)); vec4 offsetColor = texelFetch2D(colortex0, UV_COLOR + OFFSET[i] + UV_NOISE, 0).rgba; colorSum += offsetColor*edgeDiff; edgeSum += edgeDiff; } outerEdgeResults = outerEdgeResults > (hand ? 0.005 : referenceDepth*0.05 + 0.1) ? 1.0 : 0.0; return colorSum / edgeSum; } vec4 VLTemporalFiltering(vec3 viewPos, in float referenceDepth, sampler2D depth, bool hand){ vec2 offsetTexcoord = gl_FragCoord.xy * texelSize; vec2 VLtexCoord = offsetTexcoord * VL_RENDER_RESOLUTION; // get previous frames position stuff for UV vec3 previousPosition = toPreviousPos(viewPos); previousPosition = toClipSpace3Prev(previousPosition); vec2 velocity = previousPosition.xy - offsetTexcoord; previousPosition.xy = offsetTexcoord + velocity; vec4 currentFrame = texture2D(colortex0, VLtexCoord); // to fill pixel gaps in geometry edges, do a bilateral upsample. // pass a mask to only show upsampled color around the edges of blocks. this is so it doesnt blur reprojected results. float outerEdgeResults = 0.0; vec4 upsampledCurrentFrame = bilateralUpsample(outerEdgeResults, referenceDepth, depth, hand); 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)))))))); vec4 frameHistory = texture2D(colortex10, previousPosition.xy*RENDER_SCALE); vec4 clampedFrameHistory = clamp(frameHistory, colMin, colMax); float blendingFactor = 0.1; if(abs(clampedFrameHistory.a - frameHistory.a) > 0.1) blendingFactor = 1.0; vec4 reprojectFrame = mix(clampedFrameHistory, currentFrame, blendingFactor); // return clamp(reprojectFrame,0.0,65000.0); return clamp(mix(reprojectFrame, upsampledCurrentFrame, outerEdgeResults),0.0,65000.0); } void blendAllFogTypes(inout vec3 color, inout float bloomyFogMult, vec4 volumetrics, float linearDistance, vec3 playerPos, vec3 cameraPosition, bool isSky){ // blend cave fog #if defined OVERWORLD_SHADER && defined CAVE_FOG if (isEyeInWater == 0 && eyeAltitude < 1500){ vec3 cavefogCol = vec3(CaveFogColor_R, CaveFogColor_G, CaveFogColor_B) * 0.3; cavefogCol *= 1.0-pow(1.0-pow(1.0 - max(1.0 - linearDistance/far,0),2),CaveFogFallOff); cavefogCol *= exp(-7.0*clamp(playerPos.y*0.5+0.5,0,1)) * 0.999 + 0.001; #ifdef CAVE_FOG_DARKEN_SKY float skyhole = pow(clamp(1.0-pow(max(playerPos.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2); color.rgb = mix(color.rgb + cavefogCol * caveDetection, cavefogCol, isSky ? skyhole * caveDetection : 0.0); #else color.rgb += cavefogCol * caveDetection; #endif } #endif /// water absorption; it is completed when volumetrics are blended. if(isEyeInWater == 1){ vec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); vec3 scatterCoef = Dirt_Amount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; float distanceFromWaterSurface = playerPos.y + 1.0 + (cameraPosition.y - waterEnteredAltitude)/waterEnteredAltitude; distanceFromWaterSurface = clamp(distanceFromWaterSurface,0,1); vec3 transmittance = exp(-totEpsilon * linearDistance); color.rgb *= transmittance; vec3 transmittance2 = exp(-totEpsilon * 50.0); float fogfade = 1.0 - max((1.0 - linearDistance / min(far, 16.0*7.0) ),0); color.rgb += (transmittance2 * scatterCoef) * fogfade; bloomyFogMult *= dot(transmittance,vec3(0.3333))*0.5; } /// blend volumetrics color = color * volumetrics.a + volumetrics.rgb; // make bloomy fog only work outside of the overworld (unless underwater) #ifndef OVERWORLD_SHADER bloomyFogMult *= volumetrics.a; #endif // blend vanilla fogs (blindness, darkness, lava, powdered snow) if(isEyeInWater > 1 || blindness > 0 || darknessFactor > 0){ float enviornmentFogDensity = 1.0 - clamp(linearDistance/fogEnd,0,1); enviornmentFogDensity = 1.0 - enviornmentFogDensity*enviornmentFogDensity; enviornmentFogDensity *= enviornmentFogDensity; enviornmentFogDensity = mix(enviornmentFogDensity, 1.0, min(darknessLightFactor*2.0,1)); color = mix(color, toLinear(fogColor), enviornmentFogDensity); } } void blendForwardRendering( inout vec3 color, vec4 translucentShader ){ // REMEMBER that forward rendered color is written as color.rgb/10.0, invert it. if(translucentShader.a > 0) { color = color * (1.0 - translucentShader.a) + translucentShader.rgb * 10.0; } } float getBorderFogDensity(float linearDistance, vec3 playerPos, bool sky){ if(sky) return 0.0; #ifdef DISTANT_HORIZONS float borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / dhRenderDistance,0.0)*3.0,1.0) ); #else float borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / far,0.0)*3.0,1.0) ); #endif borderFogDensity *= exp(-10.0 * pow(clamp(playerPos.y,0.0,1.0)*4.0,2.0)); borderFogDensity *= (1.0-caveDetection); return borderFogDensity; } void main() { /* RENDERTARGETS:7,3,10 */ ////// --------------- SETUP STUFF --------------- ////// vec2 texcoord = gl_FragCoord.xy*texelSize; float depth = texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy),0).x; bool hand = depth < 0.56; float z = depth; float z2 = texture2D(depthtex1, texcoord).x; float frDepth = linearize(z); float swappedDepth = z; #ifdef DISTANT_HORIZONS float DH_depth0 = texture2D(dhDepthTex,texcoord).x; float depthOpaque = z; float depthOpaqueL = linearizeDepthFast(depthOpaque, near, farPlane); float dhDepthOpaque = DH_depth0; float dhDepthOpaqueL = linearizeDepthFast(dhDepthOpaque, dhNearPlane, dhFarPlane); if (depthOpaque >= 1.0 || (dhDepthOpaqueL < depthOpaqueL && dhDepthOpaque > 0.0)){ depthOpaque = dhDepthOpaque; depthOpaqueL = dhDepthOpaqueL; } swappedDepth = depthOpaque; #else float DH_depth0 = 0.0; #endif bool isSky = swappedDepth >= 1.0; vec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth0); vec3 playerPos = toWorldSpace(viewPos); float linearDistance = length(playerPos); float linearDistance_cylinder = length(playerPos.xz); vec3 playerPos_normalized = normalize(playerPos); vec3 viewPos_alt = toScreenSpace(vec3(texcoord/RENDER_SCALE, z2)); vec3 playerPos_alt = toWorldSpace(viewPos_alt); float linearDistance_cylinder_alt = length(playerPos_alt.xz); float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240.,2) ,0.0,1.0); float lightleakfixfast = clamp(eyeBrightness.y/240.,0.0,1.0); ////// --------------- UNPACK OPAQUE GBUFFERS --------------- ////// // float opaqueMasks = decodeVec2(texture2D(colortex1,texcoord).a).y; // bool isOpaque_entity = abs(opaqueMasks-0.45) < 0.01; ////// --------------- UNPACK TRANSLUCENT GBUFFERS --------------- ////// vec4 data = texelFetch2D(colortex11,ivec2(texcoord/texelSize),0).rgba; vec4 unpack0 = vec4(decodeVec2(data.r),decodeVec2(data.g)) ; vec4 unpack1 = vec4(decodeVec2(data.b),decodeVec2(data.a)) ; vec4 albedo = vec4(unpack0.ba,unpack1.rg); vec2 tangentNormals = unpack0.xy*2.0-1.0; bool nameTagMask = abs(unpack1.a - 0.1) < 0.01; float nametagbackground = nameTagMask ? 0.25 : 1.0; if(albedo.a < 0.01) tangentNormals = vec2(0.0); ////// --------------- UNPACK MISC --------------- ////// // 1.0 = water mask // 0.9 = entity mask // 0.8 = reflective entities // 0.7 = reflective blocks float translucentMasks = texture2D(colortex7, texcoord).a; bool isWater = translucentMasks > 0.99; bool isReflectiveEntity = abs(translucentMasks - 0.8) < 0.01; bool isReflective = abs(translucentMasks - 0.7) < 0.01 || isWater || isReflectiveEntity; bool isEntity = abs(translucentMasks - 0.9) < 0.01 || isReflectiveEntity; ////// --------------- get volumetrics #ifdef OVERWORLD_SHADER float DH_mixedLinearZ = sqrt(texelFetch2D(colortex12,ivec2(gl_FragCoord.xy),0).a/65000.0); vec4 temporallyFilteredVL = VLTemporalFiltering(viewPos, DH_mixedLinearZ, colortex12, hand); #else vec4 temporallyFilteredVL = VLTemporalFiltering(viewPos, frDepth, depthtex0, hand); #endif gl_FragData[2] = temporallyFilteredVL; float bloomyFogMult = 1.0; ////// --------------- distort texcoords as a refraction effect vec2 refractedCoord = texcoord; ////// --------------- MAIN COLOR BUFFER #if FAKE_REFRACTION_AMOUNT > 0 vec3 color = doRefractionEffect(refractedCoord, tangentNormals.xy, linearDistance, isReflectiveEntity, isWater && isEyeInWater == 1); #else vec3 color = texture2D(colortex3, texcoord).rgb; #endif ////// --------------- START BLENDING FOGS AND FORWARD RENDERED COLOR vec4 TranslucentShader = texture2D(colortex2, texcoord); // blend border fog. be sure to blend before and after forward rendered color blends. #if defined BorderFog && defined OVERWORLD_SHADER vec4 borderFog = vec4(skyGroundColor, getBorderFogDensity(linearDistance_cylinder, playerPos_normalized, swappedDepth >= 1.0)); #ifndef SKY_GROUND borderFog.rgb = skyFromTex(playerPos_normalized, colortex4)/1200.0 * Sky_Brightness; #endif #ifndef DISTANT_HORIZONS if(!isWater) color = mix(color, borderFog.rgb, getBorderFogDensity(linearDistance_cylinder_alt, normalize(playerPos_alt), z2 >= 1.0 || TranslucentShader.a <= 0)); #endif #else vec4 borderFog = vec4(0.0); #endif // 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; // apply multiplicative color blend for glass n stuff #ifdef Glass_Tint if(!isWater) color *= mix(normalize(albedo.rgb+1e-7), vec3(1.0), max(borderFog.a, min(max(0.1-albedo.a,0.0) * 10.0,1.0))) ; #endif // blend forward rendered programs onto the color. blendForwardRendering(color, TranslucentShader); #if defined BorderFog && defined OVERWORLD_SHADER color = mix(color, borderFog.rgb, getBorderFogDensity(linearDistance_cylinder, playerPos_normalized, swappedDepth >= 1.0)); #endif // tweaks to VL for nametag rendering #ifdef IS_IRIS temporallyFilteredVL.a = min(temporallyFilteredVL.a + (1.0-nametagbackground),1.0); temporallyFilteredVL.rgb *= nametagbackground; #endif // bloomy rain effect #ifdef OVERWORLD_SHADER float rainDrops = clamp(texture2D(colortex9, texcoord).a, 0.0, 1.0); if(rainDrops > 0.0) bloomyFogMult *= clamp(1.0 - pow(rainDrops * 5.0, 2), 0.0, 1.0); #endif // blend all fog types. volumetric fog, volumetric clouds, distance based fogs for lava, powdered snow, blindness, and darkness. blendAllFogTypes(color, bloomyFogMult, temporallyFilteredVL, linearDistance, playerPos_normalized, cameraPosition, isSky); ////// --------------- RAINBOWS #if RAINBOW > 0 && defined OVERWORLD_SHADER vec3 rainbow = drawRainbow(playerPos); float bottomLayerHeight = min(CloudLayer0_height, CloudLayer1_height); float bottomLayerTallness = CloudLayer0_height < CloudLayer1_height ? CloudLayer0_tallness : CloudLayer1_tallness; rainbow = mix(rainbow * temporallyFilteredVL.a, rainbow, smoothstep(bottomLayerHeight + bottomLayerTallness, bottomLayerHeight, playerPos_normalized.y * RAINBOW_DISTANCE + cameraPosition.y)); // Insert cloud color += rainbow; #endif ////// --------------- FINALIZE #ifdef display_LUT float zoomLevel = 1.0; vec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy/zoomLevel),0).rgb /1200.0; if(luma(thingy) > 0.0) { color.rgb = thingy; bloomyFogMult = 1.0; } if(hideGUI == 1) { #ifdef OVERWORLD_SHADER color.rgb = skyCloudsFromTex(playerPos_normalized, colortex4).rgb/1200.0; #else color.rgb = volumetricsFromTex(playerPos_normalized, colortex4, 0.0).rgb/1200.0; #endif } #endif 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); } ================================================ FILE: shaders/dimensions/composite3.vsh ================================================ #include "/lib/settings.glsl" out vec2 texcoord; flat out vec3 zMults; #ifdef BorderFog uniform sampler2D colortex4; flat out vec3 skyGroundColor; #endif flat out vec3 WsunVec; flat out vec2 TAA_Offset; uniform float far; uniform float near; uniform float dhFarPlane; uniform float dhNearPlane; uniform mat4 gbufferModelViewInverse; uniform vec3 sunPosition; uniform float sunElevation; uniform int framemod8; #include "/lib/TAA_jitter.glsl" //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { #ifdef OVERWORLD_SHADER #ifdef BorderFog skyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 1200.0 * Sky_Brightness; #endif WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); #endif #ifdef TAA TAA_Offset = offsets[framemod8]; #else TAA_Offset = vec2(0.0); #endif zMults = vec3(1.0/(far * near),far+near,far-near); gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; } ================================================ FILE: shaders/dimensions/composite4.fsh ================================================ #include "/lib/settings.glsl" uniform sampler2D colortex3; // Compute 3x3 min max for TAA //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:06 */ ivec2 center = ivec2(gl_FragCoord.xy); // vec3 current = texelFetch2D(colortex3, center, 0).rgb; // vec3 cMin = current; // vec3 cMax = current; // current = texelFetch2D(colortex3, center + ivec2(-1, -1), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(-1, 0), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(-1, 1), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(0, -1), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(0, 1), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(1, -1), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(1, 0), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // current = texelFetch2D(colortex3, center + ivec2(1, 1), 0).rgb; // cMin = min(cMin, current); // cMax = max(cMax, current); // gl_FragData[0].rgb = cMax; // gl_FragData[1].rgb = cMin; vec3 col0 = texelFetch2D(colortex3, center, 0).rgb; vec3 col1 = texelFetch2D(colortex3, center + ivec2(1, 1), 0).rgb; vec3 col2 = texelFetch2D(colortex3, center + ivec2(1, -1), 0).rgb; vec3 col3 = texelFetch2D(colortex3, center + ivec2(-1, -1), 0).rgb; vec3 col4 = texelFetch2D(colortex3, center + ivec2(-1, 1), 0).rgb; vec3 col5 = texelFetch2D(colortex3, center + ivec2(0, 1), 0).rgb; vec3 col6 = texelFetch2D(colortex3, center + ivec2(0, -1), 0).rgb; vec3 col7 = texelFetch2D(colortex3, center + ivec2(-1, 0), 0).rgb; vec3 col8 = texelFetch2D(colortex3, center + ivec2(1, 0), 0).rgb; 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 + colMin5); colMax = 0.5 * (colMax + colMax5); gl_FragData[0].rgb = colMax; gl_FragData[1].rgb = colMin; } ================================================ FILE: shaders/dimensions/composite4.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; #endif } ================================================ FILE: shaders/dimensions/composite5.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/util.glsl" /* const int colortex0Format = RGBA16F; // low res clouds (deferred->composite2) + low res VL (composite5->composite15) const int colortex1Format = RGBA16; // terrain gbuffer (gbuffer->composite2) const int colortex2Format = RGBA16F; // forward + transparencies (gbuffer->composite4) const int colortex3Format = R11F_G11F_B10F; // frame buffer + bloom (deferred6->final) const int colortex4Format = RGBA16F; // light values and skyboxes (everything) const int colortex6Format = R11F_G11F_B10F; // additionnal buffer for bloom (composite3->final) 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 colortex11Format = RGBA16; // unchanged translucents albedo, alpha and tangent normals const int colortex12Format = RGBA16F; // DISTANT HORIZONS + VANILLA MIXED DEPTHs const int colortex13Format = RGBA16F; // low res VL (composite5->composite15) const int colortex14Format = RGBA16; // rg = SSAO and SS-SSS. a = skylightmap for translucents. const int colortex15Format = RGBA8; // flat normals and vanilla AO */ //no need to clear the buffers, saves a few fps const bool colortex0Clear = false; const bool colortex1Clear = false; const bool colortex2Clear = true; const bool colortex3Clear = false; const bool colortex4Clear = false; const bool colortex5Clear = false; const bool colortex6Clear = false; const bool colortex7Clear = false; const bool colortex8Clear = false; const bool colortex9Clear = true; const bool colortex10Clear = false; const bool colortex11Clear = true; const bool colortex12Clear = false; const bool colortex13Clear = false; const bool colortex14Clear = true; const bool colortex15Clear = false; #ifdef SCREENSHOT_MODE /* const int colortex5Format = RGBA32F; //TAA buffer (everything) */ #else /* const int colortex5Format = RGBA16F; //TAA buffer (everything) */ #endif in vec2 texcoord; flat in float tempOffsets; uniform sampler2D colortex0; uniform sampler2D colortex1; uniform sampler2D colortex3; uniform sampler2D colortex5; uniform sampler2D colortex6; uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform vec2 texelSize; uniform float frameTimeCounter; uniform float viewHeight; uniform float viewWidth; uniform mat4 gbufferPreviousModelViewInverse; uniform int hideGUI; #ifdef DAMAGE_TAKEN_EFFECT uniform float CriticalDamageTaken; #endif #include "/lib/tonemaps.glsl" #include "/lib/projections.glsl" uniform int framemod8; #include "/lib/TAA_jitter.glsl" float interleaved_gradientNoise(){ return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets); } float triangularize(float dither){ float center = dither*2.0-1.0; dither = center*inversesqrt(abs(center)); return clamp(dither-fsign(center),0.0,1.0); } vec4 fp10Dither(vec4 color ,float dither){ const vec3 mantissaBits = vec3(6.,6.,5.); vec3 exponent = floor(log2(color.rgb)); return vec4(color.rgb + dither*exp2(-mantissaBits)*exp2(exponent), color.a); } void convertHandDepth(inout float depth){ float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } float convertHandDepth2( float depth){ float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; return ndcDepth * 0.5 + 0.5; } #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; #endif uniform float near; uniform float far; #include "/lib/DistantHorizons_projections.glsl" float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); } float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); } //Modified texture interpolation from inigo quilez vec4 smoothfilter(in sampler2D tex, in vec2 uv){ vec2 textureResolution = vec2(viewWidth,viewHeight); uv = uv*textureResolution + 0.5; vec2 iuv = floor( uv ); vec2 fuv = fract( uv ); uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); uv = (uv - 0.5)/textureResolution; 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 ); uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); uv = (uv - 0.5)/textureResolution; return uv; } //approximation from SMAA presentation from siggraph 2016 vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount){ vec2 position = rtMetrics.zw * texcoord; vec2 centerPosition = floor(position - 0.5) + 0.5; vec2 f = position - centerPosition; vec2 f2 = f * f; vec2 f3 = f * f2; float c = sharpenAmount; vec2 w0 = -c * f3 + 2.0 * c * f2 - c * f; vec2 w1 = (2.0 - c) * f3 - (3.0 - c) * f2 + 1.0; vec2 w2 = -(2.0 - c) * f3 + (3.0 - 2.0 * c) * f2 + c * f; vec2 w3 = c * f3 - c * f2; 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(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; } 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 closestToCamera5taps_DH(vec2 texcoord, sampler2D depth, sampler2D dhDepth, bool depthCheck){ vec2 du = vec2(texelSize.x*2., 0.0); vec2 dv = vec2(0.0, texelSize.y*2.); vec3 dtl = vec3(texcoord,0.); vec3 dtr = vec3(texcoord,0.); vec3 dmc = vec3(texcoord,0.); vec3 dbl = vec3(texcoord,0.); vec3 dbr = vec3(texcoord,0.); dtl += vec3(-texelSize, depthCheck ? texture2D(dhDepth, texcoord - dv - du).x : texture2D(depth, texcoord - dv - du).x); dtr += vec3( texelSize.x, -texelSize.y, depthCheck ? texture2D(dhDepth, texcoord - dv + du).x : texture2D(depth, texcoord - dv + du).x); dmc += vec3( 0.0, 0.0, depthCheck ? texture2D(dhDepth, texcoord).x : texture2D(depth, texcoord).x); dbl += vec3(-texelSize.x, texelSize.y, depthCheck ? texture2D(dhDepth, texcoord + dv - du).x : texture2D(depth, texcoord + dv - du).x); dbr += vec3( texelSize.x, texelSize.y, depthCheck ? texture2D(dhDepth, texcoord + dv + du).x : 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; } vec4 computeTAA(vec2 texcoord, bool hand){ vec2 jitter = offsets[framemod8]*texelSize*0.5; vec2 adjTC = clamp(texcoord*RENDER_SCALE - texelSize*0.5, vec2(0.0), RENDER_SCALE- texelSize*1.5); vec2 adjTC_noJitter = adjTC + jitter; // get previous frames position stuff for UV //use velocity from the nearest texel from camera in a 3x3 box in order to improve edge quality in motion #ifdef DISTANT_HORIZONS bool depthCheck = texture2D(depthtex0,adjTC).x >= 1.0; vec3 closestToCamera = closestToCamera5taps_DH(adjTC, depthtex0, dhDepthTex, depthCheck); vec3 viewPos = toScreenSpace_DH_special(closestToCamera, depthCheck); #else vec3 closestToCamera = closestToCamera5taps(adjTC, depthtex0); vec3 viewPos = toScreenSpace(closestToCamera); #endif vec3 previousPosition = toPreviousPos(viewPos); #ifdef DISTANT_HORIZONS previousPosition = toClipSpace3Prev_DH(previousPosition, depthCheck); #else previousPosition = toClipSpace3Prev(previousPosition); #endif vec2 velocity = previousPosition.xy - closestToCamera.xy; previousPosition.xy = texcoord + (hand ? vec2(0.0) : velocity); // sample current frame, and make sure it is de-jittered #ifdef TAA_UPSCALING vec3 currentFrame = smoothfilter(colortex3, adjTC_noJitter).rgb; #else vec3 currentFrame = texelFetch2D(colortex3, ivec2(adjTC_noJitter/texelSize), 0).rgb; #endif //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); #ifdef TAA_UPSCALING // Interpolating neighboorhood clampling boundaries between pixels vec3 colMax = texture2D(colortex0, adjTC).rgb; vec3 colMin = texture2D(colortex6, adjTC).rgb; #else // Assuming the history color is a blend of the 3x3 neighborhood, we clamp the history to the min and max of each channel in the 3x3 neighborhood vec3 col0 = currentFrame; // can use this because its the center sample. vec3 col1 = texture2D(colortex3, adjTC_noJitter + vec2( texelSize.x, texelSize.y)).rgb; vec3 col2 = texture2D(colortex3, adjTC_noJitter + vec2( texelSize.x, -texelSize.y)).rgb; vec3 col3 = texture2D(colortex3, adjTC_noJitter + vec2(-texelSize.x, -texelSize.y)).rgb; vec3 col4 = texture2D(colortex3, adjTC_noJitter + vec2(-texelSize.x, texelSize.y)).rgb; vec3 col5 = texture2D(colortex3, adjTC_noJitter + vec2( 0.0, texelSize.y)).rgb; vec3 col6 = texture2D(colortex3, adjTC_noJitter + vec2( 0.0, -texelSize.y)).rgb; vec3 col7 = texture2D(colortex3, adjTC_noJitter + vec2(-texelSize.x, 0.0)).rgb; vec3 col8 = texture2D(colortex3, adjTC_noJitter + vec2( texelSize.x, 0.0)).rgb; 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))))); #endif #ifdef DAMAGE_TAKEN_EFFECT ////// when this triggers, use current frame UV to sample history, for a funny trailing effect. if(CriticalDamageTaken > 0.01) previousPosition.xy = texcoord; #endif vec3 frameHistory = max(FastCatmulRom(colortex5, previousPosition.xy, vec4(texelSize, 1.0/texelSize), 0.75).xyz,0.0); vec3 clampedframeHistory = clamp(frameHistory, colMin, colMax); float blendingFactor = BLEND_FACTOR; // reduce history usage if the camera moves to reduce artifacts in motion. float cameraMovement = length(velocity/texelSize); blendingFactor = clamp(cameraMovement, blendingFactor, BLEND_FACTOR_DURING_MOVEMENT); if(hand) blendingFactor = clamp(cameraMovement, blendingFactor, 1.0); ////// Increases blending factor when far from AABB, reduces ghosting blendingFactor = clamp(blendingFactor + luma(abs(clampedframeHistory - frameHistory)/clampedframeHistory),0.0,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. if(CriticalDamageTaken > 0.01) finalResult = mix(finalResult, frameHistory, sqrt(CriticalDamageTaken)*0.8); #endif #ifdef SCREENSHOT_MODE // when this is on, do "infinite frame accumulation" if (hideGUI == 0) return vec4(finalResult, 1.0); vec4 superSampledHistory = texture2D(colortex5, previousPosition.xy); vec3 superSampledResult = superSampledHistory.rgb * superSampledHistory.a + currentFrame; return vec4(superSampledResult/(superSampledHistory.a+1.0), superSampledHistory.a+1.0); #endif return vec4(finalResult, 1.0); } void main() { /* DRAWBUFFERS:5 */ #ifdef TAA vec2 taauTC = clamp(texcoord*RENDER_SCALE, vec2(0.0), RENDER_SCALE - texelSize*2.0); float dataUnpacked = decodeVec2(texelFetch2D(colortex1,ivec2(gl_FragCoord.xy*RENDER_SCALE),0).w).y; bool hand = abs(dataUnpacked-0.75) < 0.01 && texture2D(depthtex1,taauTC).x < 1.0; vec4 color = computeTAA(texcoord, hand); #ifdef SCREENSHOT_MODE gl_FragData[0] = clamp(color, 0.0, 65000.0); #else gl_FragData[0] = clamp(fp10Dither(color, triangularize(interleaved_gradientNoise())), 0.0, 65000.0); #endif #else vec3 color = clamp(fp10Dither(vec4(texture2D(colortex3,texcoord).rgb,1.0), triangularize(interleaved_gradientNoise())).rgb,0.0,65000.); gl_FragData[0].rgb = color; #endif } ================================================ FILE: shaders/dimensions/composite5.vsh ================================================ #include "/lib/res_params.glsl" #include "/lib/util.glsl" out vec2 texcoord; flat out float tempOffsets; uniform int frameCounter; uniform int framemod8; #include "/lib/TAA_jitter.glsl" void main() { gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; tempOffsets = Hammersley(frameCounter%10000); #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; #endif } ================================================ FILE: shaders/dimensions/composite6.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" uniform sampler2D depthtex0; uniform sampler2D colortex1; uniform sampler2D colortex5; uniform vec2 texelSize; uniform float viewWidth; uniform float viewHeight; vec2 decodeVec2(float a){ const vec2 constant1 = 65535. / vec2(256., 65536.); const float constant2 = 256. / 255.; return fract(a * constant1) * constant2; } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:3 */ vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); vec2 quarterResTC = gl_FragCoord.xy*2.0*resScale*texelSize; // vec2 texcoord = (gl_FragCoord.xy*2.0*resScale*texelSize) * RENDER_SCALE; // bool hand = abs(decodeVec2(texture2D(colortex1,texcoord).w).y-0.75) < 0.01 && texture2D(depthtex0,texcoord).x < 1.0; //0.5 gl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; //0.25 gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; //0.125 gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; //0.125 gl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125; gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); if (quarterResTC.x > 1.0 - 3.5*texelSize.x || quarterResTC.y > 1.0 -3.5*texelSize.y || quarterResTC.x < 3.5*texelSize.x || quarterResTC.y < 3.5*texelSize.y) gl_FragData[0].rgb = vec3(0.0); } ================================================ FILE: shaders/dimensions/composite6.vsh ================================================ uniform float viewWidth; uniform float viewHeight; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); gl_Position = ftransform(); //*0.51 to avoid errors when sampling outside since clearing is disabled gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0; } ================================================ FILE: shaders/dimensions/composite7.fsh ================================================ uniform sampler2D colortex3; uniform vec2 texelSize; uniform float viewWidth; uniform float viewHeight; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:6 */ vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); vec2 quarterResTC = gl_FragCoord.xy*2.*texelSize; //0.5 gl_FragData[0] = texture2D(colortex3,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex3,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; //0.25 gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; //0.125 gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; //0.125 gl_FragData[0] += texture2D(colortex3,quarterResTC)*0.125; gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); } ================================================ FILE: shaders/dimensions/composite7.vsh ================================================ uniform float viewWidth; uniform float viewHeight; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); gl_Position = ftransform(); //*0.51 to avoid errors when sampling outside since clearing is disabled gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26/clampedRes*vec2(1920.0,1080.)*2-1.0; } ================================================ FILE: shaders/dimensions/composite8.fsh ================================================ uniform sampler2D colortex6; uniform vec2 texelSize; in vec2 texcoord; uniform float viewWidth; uniform float viewHeight; vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ vec4 tot = vec4(0.); float maxTC = 0.25*resScale.x; float minTC = 0.; for (int i = -maxIT;i minTC && spCoord.x < maxTC); } return tot.rgb/max(1.0,tot.a); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:6 */ vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; vec2 gaussDir = vec2(1.0,0.0); gl_FragData[0].rgb = vec3(0.0); vec2 tc2 = texcoord*vec2(2.0,1.)/2.; if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(tc2/2,gaussDir,0.16,0); vec2 tc4 = texcoord*vec2(4.0,1.)/2.-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*2.0; if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(tc4/2,gaussDir,0.16,3); vec2 tc8 = texcoord*vec2(8.0,1.)/2.-vec2(0.75*resScale.x+8.*texelSize.x,0.)*4.0; if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(tc8/2,gaussDir,0.035,6); vec2 tc16 = texcoord*vec2(8.0,1./2.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*8.0; if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(tc16/2,gaussDir,0.0085,12); vec2 tc32 = texcoord*vec2(16.0,1./2.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*16.0; if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(tc32/2,gaussDir,0.002,28); vec2 tc64 = texcoord*vec2(32.0,1./2.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*32.0; if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(tc64/2,gaussDir,0.0005,60); gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); } ================================================ FILE: shaders/dimensions/composite8.vsh ================================================ uniform float viewWidth; uniform float viewHeight; out vec2 texcoord; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0)); gl_Position = ftransform(); //0-0.25 gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; //0-0.5 gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); } ================================================ FILE: shaders/dimensions/composite9.fsh ================================================ uniform sampler2D colortex6; uniform vec2 texelSize; in vec2 texcoord; uniform float viewWidth; uniform float viewHeight; vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ vec4 tot = vec4(0.); float maxTC = 0.25*resScale.y; float minTC = 0.; for (int i = -maxIT;i minTC && spCoord.y < maxTC); } return tot.rgb/max(1.0,tot.a); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:6 */ vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; vec2 gaussDir = vec2(0.0,1.0); gl_FragData[0].rgb = vec3(0.0); vec2 tc2 = texcoord*vec2(2.0,1.); if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,4.0),gaussDir,0.16,0); vec2 tc4 = texcoord*vec2(4.0,2.)-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*4.0; if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,2.0),gaussDir,0.16,3); vec2 tc8 = texcoord*vec2(8.0,4.)-vec2(0.75*resScale.x+8.*texelSize.x,0.)*8.0; if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,2.0)/vec2(2.0,2.0),gaussDir,0.035,6); vec2 tc16 = texcoord*vec2(16.0,8.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*16.0; if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,4.0)/vec2(2.0,2.0),gaussDir,0.0085,12); vec2 tc32 = texcoord*vec2(32.0,16.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*32.0; if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,8.0)/vec2(2.0,2.0),gaussDir,0.002,30); vec2 tc64 = texcoord*vec2(64.0,32.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*64.0; if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,16.0)/vec2(2.0,2.0),gaussDir,0.0005,60); gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); } ================================================ FILE: shaders/dimensions/composite9.vsh ================================================ uniform float viewWidth; uniform float viewHeight; out vec2 texcoord; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0)); gl_Position = ftransform(); //0-0.25 gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; //0-0.5 gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); } ================================================ FILE: shaders/dimensions/deferred.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" flat in vec3 averageSkyCol_Clouds; flat in vec3 averageSkyCol; flat in vec3 lightSourceColor; flat in vec3 sunColor; flat in vec3 moonColor; flat in vec2 tempOffsets; flat in float exposure; flat in float avgBrightness; flat in float rodExposure; flat in float avgL2; flat in float centerDepth; uniform sampler2D colortex1; uniform sampler2D colortex4; uniform float frameTime; uniform float frameTimeCounter; uniform int worldTime; uniform int worldDay; uniform float rainStrength; uniform float eyeAltitude; uniform vec3 sunVec; uniform vec2 texelSize; uniform mat4 shadowModelViewI; uniform float sunElevation; uniform vec3 sunPosition; uniform vec3 moonPosition; uniform ivec2 eyeBrightnessSmooth; // uniform ivec2 eyeBrightness; uniform float caveDetection; uniform int isEyeInWater; uniform float nightVision; vec4 lightCol = vec4(lightSourceColor, float(sunElevation > 1e-5)*2-1.); #include "/lib/Shadow_Params.glsl" #include "/lib/waterBump.glsl" #include "/lib/projections.glsl" #include "/lib/DistantHorizons_projections.glsl" #include "/lib/scene_controller.glsl" #include "/lib/atmosphere.glsl" #include "/lib/sky_gradient.glsl" vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec; #define DHVLFOG uniform float near; float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); } float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } #ifdef OVERWORLD_SHADER // uniform sampler2D colortex12; // const bool shadowHardwareFiltering = true; uniform sampler2DShadow shadow; #ifdef TRANSLUCENT_COLORED_SHADOWS uniform sampler2D shadowcolor0; uniform sampler2DShadow shadowtex0; uniform sampler2DShadow shadowtex1; #endif #include "/lib/lightning_stuff.glsl" #define VL_CLOUDS_DEFERRED #include "/lib/climate_settings.glsl" #include "/lib/volumetricClouds.glsl" #include "/lib/overworld_fog.glsl" #include "/lib/aurora.glsl" #endif #ifdef NETHER_SHADER #include "/lib/nether_fog.glsl" #endif #ifdef END_SHADER #include "/lib/end_fog.glsl" #endif vec3 rodSample(vec2 Xi){ float r = sqrt(1.0f - Xi.x*Xi.y); float phi = TAU * Xi.y; return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; } uniform bool worldTimeChangeCheck; uniform int hideGUI; void main() { /* DRAWBUFFERS:4 */ gl_FragData[0] = vec4(0.0); float mixhistory = 0.06; #ifdef OVERWORLD_SHADER ////////////////////////////////////////////// /// --- STORE DAILY WEATHER PARAMETERS --- /// ////////////////////////////////////////////// // the idea is to store the 8 values, coverage + density of 3 cloud layers and 2 fog density values. if (gl_FragCoord.x > 1 && gl_FragCoord.x < 4 && gl_FragCoord.y > 1 && gl_FragCoord.y < 4){ mixhistory = 10.0 * frameTime; gl_FragData[0].rgb = writeSceneControllerParameters(gl_FragCoord.xy, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); } /////////////////////////////// /// --- STORE COLOR LUT --- /// /////////////////////////////// vec3 AmbientLightTint = vec3(AmbientLight_R, AmbientLight_G, AmbientLight_B); // --- the color of the atmosphere + the average color of the atmosphere. vec3 skyGroundCol = skyFromTex(vec3(0, -1 ,0), colortex4).rgb;// * clamp(WsunVec.y*2.0,0.2,1.0); /// --- Save light values if (gl_FragCoord.x < 1. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) { gl_FragData[0] = vec4(averageSkyCol_Clouds * AmbientLightTint,1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } if (gl_FragCoord.x > 1. && gl_FragCoord.x < 2. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) { gl_FragData[0] = vec4((skyGroundCol/150.0) * AmbientLightTint,1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } #ifdef ambientLight_only if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); if (gl_FragCoord.x > 8. && gl_FragCoord.x < 9. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); if (gl_FragCoord.x > 13. && gl_FragCoord.x < 14. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); #else if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) { gl_FragData[0] = vec4(lightSourceColor,1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } if (gl_FragCoord.x > 8. && gl_FragCoord.x < 9. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) { gl_FragData[0] = vec4(sunColor,1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } if (gl_FragCoord.x > 9. && gl_FragCoord.x < 10. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) { gl_FragData[0] = vec4(moonColor,1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } #endif #if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT // sample center pixel of albedo color, and interpolate it overtime. if (gl_FragCoord.x > 15 && gl_FragCoord.x < 16 && gl_FragCoord.y > 2 && gl_FragCoord.y < 3){ mixhistory = 0.01; vec3 data = texelFetch2D(colortex1, ivec2(0.5/texelSize), 0).rgb; vec3 decodeAlbedo = vec3(decodeVec2(data.x).x,decodeVec2(data.y).x, decodeVec2(data.z).x); vec3 albedo = toLinear(decodeAlbedo); albedo = normalize(albedo + 1e-7) * (dot(albedo,vec3(0.21, 0.72, 0.07))*0.5+0.5); gl_FragData[0] = vec4(albedo,1.0); } #endif //////////////////////////////// /// --- ATMOSPHERE IMAGE --- /// //////////////////////////////// /// --- Sky only if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.,1.))/256.+tempOffsets/256.,0.0,1.0); vec3 viewVector = cartToSphere(p); vec2 planetSphere = vec2(0.0); vec3 sky = vec3(0.0); vec3 skyAbsorb = vec3(0.0); sky = calculateAtmosphere((averageSkyCol*4000.0/2.0), viewVector, vec3(0.0,1.0,0.0), WsunVec, -WsunVec, planetSphere, skyAbsorb, blueNoise()); // fade atmosphere conditions for rain away when you pass above the cloud plane. float heightRelativeToClouds = clamp(1.0 - max(eyeAltitude - CloudLayer0_height,0.0) / 200.0 ,0.0,1.0); if(rainStrength > 0.0) sky = mix(sky, 3.0 + averageSkyCol*4000 * (skyAbsorb*0.7+0.3), clamp(1.0 - exp(pow(clamp(-viewVector.y+0.9,0.0,1.0),2) * -5.0),0.0,1.0) * heightRelativeToClouds * rainStrength); #ifdef AEROCHROME_MODE sky *= vec3(0.0, 0.18, 0.35); #endif gl_FragData[0] = vec4(sky / 4000.0 , 1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } /// --- Sky + clouds + fog if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+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(toWorldSpace(sunPosition));// * (float(sunElevation > 1e-5)*2.0-1.0); vec3 WmoonVec = normalize(toWorldSpace(moonPosition)); if(dot(-WmoonVec, WsunVec) < 0.9999) WmoonVec = -WmoonVec; WsunVec = mix(WmoonVec, WsunVec, clamp(float(sunElevation > 1e-5)*2.0-1.0 ,0,1)); 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)); vec3 suncol = lightSourceColor; #ifdef ambientLight_only suncol = vec3(0.0); #endif float cloudPlaneDistance = 0.0; vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, suncol*2.5, skyGroundCol/30.0, cloudPlaneDistance); float atmosphereAlpha = 1.0; vec4 volumetricFog = GetVolumetricFog(viewPos, WsunVec, vec2(noise, 1.0-noise), suncol*2.5, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha, volumetricClouds.rgb, cloudPlaneDistance); sky += volumetricClouds.rgb * volumetricClouds.a + volumetricFog.rgb * volumetricFog.a; gl_FragData[0] = vec4(sky,1.0); if(worldTimeChangeCheck) mixhistory = 1.0; } #endif #if defined NETHER_SHADER || defined END_SHADER vec2 fogPos = vec2(256.0 - 256.0*0.12,1.0); //Sky gradient with clouds 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); BackgroundColor += VL_Fog.rgb + vec3(0.5,0.75,1.0) * nightVision; gl_FragData[0] = vec4(BackgroundColor*8.0, 1.0); } #endif #ifdef END_SHADER /* ---------------------- TIMER ---------------------- */ float flash = 0.0; float maxWaitTime = 5; float Timer = texelFetch2D(colortex4, ivec2(3,1), 0).x/150.0; Timer -= frameTime; if(Timer <= 0.0){ flash = 1.0; Timer = pow(hash11(frameCounter), 5) * maxWaitTime; } vec2 pixelPos0 = vec2(3,1); if (gl_FragCoord.x > pixelPos0.x && gl_FragCoord.x < pixelPos0.x + 1 && gl_FragCoord.y > pixelPos0.y && gl_FragCoord.y < pixelPos0.y + 1){ mixhistory = 1.0; gl_FragData[0] = vec4(Timer, 0.0, 0.0, 1.0); } /* ---------------------- FLASHING ---------------------- */ vec2 pixelPos1 = vec2(1,1); if (gl_FragCoord.x > pixelPos1.x && gl_FragCoord.x < pixelPos1.x + 1 && gl_FragCoord.y > pixelPos1.y && gl_FragCoord.y < pixelPos1.y + 1){ mixhistory = clamp(4.0 * frameTime,0.0,1.0); gl_FragData[0] = vec4(flash, 0.0, 0.0, 1.0); } /* ---------------------- POSITION ---------------------- */ vec2 pixelPos2 = vec2(2,1); if (gl_FragCoord.x > pixelPos2.x && gl_FragCoord.x < pixelPos2.x + 1 && gl_FragCoord.y > pixelPos2.y && gl_FragCoord.y < pixelPos2.y + 1){ mixhistory = clamp(500.0 * frameTime,0.0,1.0); vec3 LastPos = (texelFetch2D(colortex4,ivec2(2,1),0).xyz/150.0) * 2.0 - 1.0; LastPos += (hash31(frameCounter / 50) * 2.0 - 1.0); LastPos = LastPos * 0.5 + 0.5; if(Timer > maxWaitTime * 0.7 ){ LastPos = vec3(0.0); } gl_FragData[0] = vec4(LastPos, 1.0); } #endif //Temporally accumulate sky and light values vec3 frameHistory = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; vec3 currentFrame = gl_FragData[0].rgb*150.; gl_FragData[0].rgb = clamp(mix(frameHistory, currentFrame, clamp(mixhistory,0.0,1.0)),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) gl_FragData[0] = vec4(exposure, avgBrightness, avgL2,1.0); if (gl_FragCoord.x > 14. && gl_FragCoord.x < 15. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) gl_FragData[0] = vec4(rodExposure, centerDepth,0.0, 1.0); } ================================================ FILE: shaders/dimensions/deferred.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/util.glsl" // uniform int dhRenderDistance; uniform float frameTimeCounter; #include "/lib/Shadow_Params.glsl" flat out vec3 averageSkyCol_Clouds; flat out vec3 averageSkyCol; flat out vec3 sunColor; flat out vec3 moonColor; flat out vec3 lightSourceColor; flat out vec2 tempOffsets; flat out float exposure; flat out float avgBrightness; flat out float rodExposure; flat out float avgL2; flat out float centerDepth; uniform int hideGUI; uniform sampler2D colortex4; uniform sampler2D colortex6; uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D depthtex2; uniform mat4 gbufferModelViewInverse; uniform vec3 sunPosition; uniform vec2 texelSize; uniform float sunElevation; uniform float eyeAltitude; uniform float near; // uniform float far; uniform float frameTime; uniform int frameCounter; uniform int worldTime; uniform int worldDay; uniform float rainStrength; uniform float nightVision; #include "/lib/climate_settings.glsl" #include "/lib/scene_controller.glsl" #include "/lib/atmosphere.glsl" #include "/lib/sky_gradient.glsl" #include "/lib/aurora.glsl" vec3 rodSample(vec2 Xi) { float r = sqrt(1.0 - Xi.x * Xi.y); float phi = TAU * Xi.y; return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; } float ld(float depth) { return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near } void main() { gl_Position = ftransform() * 0.5 + 0.5; gl_Position.xy = gl_Position.xy * vec2(18.0 + 258.0 * 2.0, 258.0) * texelSize; gl_Position.xy = gl_Position.xy * 2.0 - 1.0; #ifdef OVERWORLD_SHADER vec3 sunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); /////////////////////////////////// /// --- AMBIENT LIGHT STUFF --- /// /////////////////////////////////// averageSkyCol_Clouds = vec3(0.0); averageSkyCol = vec3(0.0); vec2 sample3x3[9] = vec2[]( vec2(-1.0, -0.3), vec2( 0.0, 0.0), vec2( 1.0, -0.3), vec2(-1.0, -0.5), vec2( 0.0, -0.5), vec2( 1.0, -0.5), vec2(-1.0, -1.0), vec2( 0.0, -1.0), vec2( 1.0, -1.0) ); // sample in a 3x3 pattern to get a good area for average color float maxIT = 20.0; for (int i = 0; i < int(maxIT); i++) { vec2 ij = R2_samples(((i*50+1)%1000)*int(maxIT)+i) ;//* vec2(0.3183,0.9000); vec3 pos = normalize(rodSample(ij)) * vec3(1.0,0.5,1.0) + vec3(0.0,0.5,0.0); averageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0; averageSkyCol += 1.5 * skyFromTex(pos,colortex4).rgb/maxIT/150.0; } vec3 minimumlight = MIN_LIGHT_AMOUNT * vec3(0.01) + nightVision * 0.05; // luminance based reinhard is useful ouside of tonemapping too. averageSkyCol_Clouds = 1.5 * (averageSkyCol_Clouds / (1.0+luma(averageSkyCol_Clouds) * 0.2)); averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS,0.0) + minimumlight; #ifdef USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS averageSkyCol = luma(averageSkyCol) * vec3(SKY_GROUND_R,SKY_GROUND_G,SKY_GROUND_B); #endif //////////////////////////////////////// /// --- SUNLIGHT/MOONLIGHT STUFF --- /// //////////////////////////////////////// vec2 planetSphere = vec2(0.0); vec3 skyAbsorb = vec3(0.0); float sunVis = clamp(sunElevation,0.0,0.05)/0.05*clamp(sunElevation,0.0,0.05)/0.05; float moonVis = clamp(-sunElevation,0.0,0.05)/0.05*clamp(-sunElevation,0.0,0.05)/0.05; sunColor = calculateAtmosphere(vec3(0.0), sunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 0.0); sunColor = sunColorBase/4000.0 * skyAbsorb; moonColor = moonColorBase/4000.0; // lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis; lightSourceColor = sunColor * sunVis + moonColor * moonVis; #ifdef TWILIGHT_FOREST_FLAG lightSourceColor = vec3(0.0); moonColor = vec3(0.0); #endif /////////////////////////////////////////// /// --- SCENE CONTROLLER PARAMETERS --- /// /////////////////////////////////////////// // components are split for readability/user friendliness within this function applySceneControllerParameters( parameters.smallCumulus.x, parameters.smallCumulus.y, parameters.largeCumulus.x, parameters.largeCumulus.y, parameters.altostratus.x, parameters.altostratus.y, parameters.fog.x, parameters.fog.y ); #endif ////////////////////////////// /// --- EXPOSURE STUFF --- /// ////////////////////////////// float avgLuma = 0.0; float m2 = 0.0; int n=100; vec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.)); float avgExp = 0.0; float avgB = 0.0; vec2 resScale = vec2(1920.,1080.)/clampedRes; const int maxITexp = 50; float w = 0.0; for (int i = 0; i < maxITexp; i++){ 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))); avgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2)); } avgExp = exp(avgExp/maxITexp); avgB = exp(avgB/maxITexp); avgBrightness = clamp(mix(avgExp,texelFetch2D(colortex4,ivec2(10,37),0).g,0.95),0.00003051757,65000.0); 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 = (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); float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; exposure = max(targetExposure * EXPOSURE_MULTIPLIER, 0.0); float currCenterDepth = ld(texture2D(depthtex2, vec2(0.5)*RENDER_SCALE).r); centerDepth = mix(sqrt(texelFetch2D(colortex4,ivec2(14,37),0).g/65000.0), currCenterDepth, clamp(DoF_Adaptation_Speed*exp(-0.016/frameTime+1.0)/(6.0+currCenterDepth*far),0.0,1.0)); centerDepth = centerDepth * centerDepth * 65000.0; rodExposure = targetrodExposure; #ifndef AUTO_EXPOSURE exposure = Manual_exposure_value; rodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0); #endif } ================================================ FILE: shaders/dimensions/deferred1.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/projections.glsl" #include "/lib/DistantHorizons_projections.glsl" uniform sampler2D colortex4; uniform sampler2D colortex1; uniform sampler2D colortex12; uniform vec2 texelSize; uniform sampler2D depthtex0; uniform sampler2D depthtex1; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif uniform float near; uniform float far; float linZ(float depth) { return (2.0 * near) / (far + near - depth * (far - near)); } float DH_linZ(float dist) { return (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - dist * (dhFarPlane - dhNearPlane)); } void convertHandDepth(inout float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } vec2 decodeVec2(float a){ const vec2 constant1 = 65535. / vec2(256., 65536.); const float constant2 = 256. / 255.; return fract(a * constant1) * constant2 ; } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* RENDERTARGETS:4,12 */ vec3 oldTex = texelFetch2D(colortex4, ivec2(gl_FragCoord.xy), 0).xyz; float newTex = texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy*4), 0).x; float dataUnpacked = decodeVec2(texelFetch2D(colortex1,ivec2(gl_FragCoord.xy*4),0).w).y; bool hand = abs(dataUnpacked-0.75) < 0.01; if(hand) convertHandDepth(newTex); #ifdef DISTANT_HORIZONS float QuarterResDepth = texelFetch2D(dhDepthTex, ivec2(gl_FragCoord.xy*4), 0).x; QuarterResDepth = DH_linZ(QuarterResDepth); gl_FragData[1].a = QuarterResDepth*QuarterResDepth*65000.0; #endif newTex = linZ(newTex); gl_FragData[0] = vec4(oldTex, newTex*newTex*65000.0); } ================================================ FILE: shaders/dimensions/deferred1.vsh ================================================ #include "/lib/settings.glsl" uniform vec2 texelSize; #include "/lib/res_params.glsl" void main() { gl_Position = ftransform(); vec2 scaleRatio = max(vec2(0.25), vec2(18.+258*2,258.)*texelSize); gl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(scaleRatio+0.01,0.0,1.0)*2.0-1.0; } ================================================ FILE: shaders/dimensions/deferred2.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" uniform sampler2D depthtex0; uniform sampler2D dhDepthTex; uniform sampler2D colortex1; uniform sampler2D colortex2; uniform vec2 texelSize; float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy; float noise = fract(52.9829189 * fract((coord.x * 0.06711056) + (coord.y * 0.00583715))); return noise; } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// #if RESOURCEPACK_SKY != 0 /* RENDERTARGETS:1,2 */ #endif void main() { vec2 texcoord = gl_FragCoord.xy * texelSize; gl_FragData[0] = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy),0); if( texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy), 0).x < 1.0 #ifdef DISTANT_HORIZONS || texelFetch2D(dhDepthTex, ivec2(gl_FragCoord.xy), 0).x < 1.0 #endif ) { // doing this for precision reasons, DH does NOT like depth => 1.0 }else{ vec3 skyColor = texelFetch2D(colortex2, ivec2(gl_FragCoord.xy),0).rgb; skyColor.rgb = max(skyColor.rgb - skyColor.rgb * interleaved_gradientNoise()*0.05, 0.0); gl_FragData[0].rgb = skyColor/50.0; gl_FragData[0].a = 0.0; } gl_FragData[1] = vec4(0,0,0,0); } ================================================ FILE: shaders/dimensions/deferred2.vsh ================================================ #include "/lib/res_params.glsl" void main() { gl_Position = ftransform(); #ifdef TAA_UPSCALING gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; #endif } ================================================ FILE: shaders/dimensions/final.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" #include "/lib/projections.glsl" uniform sampler2D colortex1; uniform sampler2D colortex5; uniform sampler2D colortex6; uniform sampler2D colortex7; uniform sampler2D colortex14; uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D depthtex2; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex0; #endif uniform float rainStrength; #ifdef OVERWORLD_SHADER uniform int worldTime; uniform int worldDay; flat in vec3 WsunVec; #include "/lib/scene_controller.glsl" uniform sampler2D colortex4; #define CLOUDSHADOWSONLY #include "/lib/volumetricClouds.glsl" #endif in vec2 texcoord; uniform vec2 texelSize; uniform vec2 viewSize; uniform float frameTime; uniform float frameTimeCounter; uniform float viewHeight; uniform float viewWidth; uniform float aspectRatio; uniform int hideGUI; #include "/lib/tonemaps.glsl" #include "/lib/color_dither.glsl" #include "/lib/res_params.glsl" #include "/lib/lensflare.glsl" #include "/lib/gameplay_effects.glsl" #if DEBUG_VIEW == debug_LIGHTS && defined LPV_SHADOWS uniform usampler1D texCloseLights; uniform usampler3D texSortLights; #include "/lib/text.glsl" #include "/lib/cube/lightData.glsl" #endif uniform float near; uniform float far; float ld(float dist){ return (2.0 * near) / (far + near - dist * (far - near)); } 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; } void doCameraGridLines(inout vec3 color, vec2 UV){ float lineThicknessY = 0.001; float lineThicknessX = lineThicknessY/aspectRatio; float horizontalLines = abs(UV.x-0.33); horizontalLines = min(abs(UV.x-0.66), horizontalLines); float verticalLines = abs(UV.y-0.33); verticalLines = min(abs(UV.y-0.66), verticalLines); float gridLines = horizontalLines < lineThicknessX || verticalLines < lineThicknessY ? 1.0 : 0.0; if(hideGUI > 0.0) gridLines = 0.0; color = mix(color, vec3(1.0), gridLines); } vec3 doMotionBlur(vec2 texcoord, float depth, float noise, bool hand){ float samples = 4.0; vec3 color = vec3(0.0); float blurMult = 1.0; if(hand) blurMult = 0.0; vec3 viewPos = toScreenSpace(vec3(texcoord, depth)); vec3 previousPosition = toPreviousPos(viewPos); previousPosition = toClipSpace3(previousPosition); vec2 velocity = texcoord - previousPosition.xy; // thank you Capt Tatsu for letting me use these velocity /= 1.0 + length(velocity); // ensure the blurring stays sane where UV is beyond 1.0 or -1.0 velocity /= 1.0 + frameTime * 1000.0 * samples * 0.25; // ensure the blur radius stays roughly the same no matter the framerate velocity *= blurMult * MOTION_BLUR_STRENGTH; // remove hand blur and add user control texcoord = texcoord - velocity*(samples*0.5 + noise); vec2 screenEdges = 2.0/viewSize; for (int i = 0; i < int(samples); i++) { texcoord += velocity; color += texture2D(colortex7, clamp(texcoord, screenEdges, 1.0-screenEdges)).rgb; } return color / samples; } 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 *= 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); } vec3 applyFishEye(vec2 uv, vec3 color) { vec2 coords = uv; coords = (coords - 0.5) * 2.0; vec2 coordOffset = vec2(0.0); coordOffset.x = (1.0 - coords.y * coords.y) * coords.x; coordOffset.y = (1.0 - coords.x * coords.x) * coords.y; coordOffset *= 0.1 * FISHEYE_STRENGTH; vec2 fisheyeUV = uv - coordOffset; fisheyeUV = clamp(fisheyeUV, vec2(0.0), vec2(1.0)); return texture2D(colortex7, fisheyeUV).rgb; } void main() { float noise = blueNoise(); vec3 COLOR = texture2D(colortex7,texcoord).rgb; #ifdef MOTION_BLUR float depth = texture2D(depthtex0, texcoord*RENDER_SCALE).r; bool hand = depth < 0.56; float depth2 = convertHandDepth_2(depth, hand); COLOR = doMotionBlur(texcoord, depth2, noise, hand); #endif #ifdef FISHEYE_EFFECT COLOR = applyFishEye(texcoord, COLOR); #endif #ifdef OVERWORLD_SHADER #ifdef LENS_FLARE if(isEyeInWater == 0 && WsunVec.y > 0.0){ vec3 sunNDC = toNDC3(WsunVec); vec2 sunPos = sunNDC.xy * 0.5 + 0.5; float screenVis = smoothstep(0.5, 0.45, abs(sunPos.x - 0.5)) * smoothstep(0.5, 0.45, abs(sunPos.y - 0.5)); float depthVis = step(1.0, texture2D(depthtex0, sunPos).x); #ifdef DISTANT_HORIZONS depthVis *= step(1.0, texture2D(dhDepthTex0, sunPos).x); #endif float cloudVis = 1.0; #if defined VOLUMETRIC_CLOUDS && (defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2) cloudVis = getSunOcculsion(cameraPosition, WsunVec); cloudVis = clamp(1.0 - cloudVis * 32.0, 0.0, 1.0); #endif float lfAmount = smoothstep(0.0, 0.3, WsunVec.y); float sunVis = screenVis * depthVis * cloudVis * lfAmount; vec3 lf = lensflare(texcoord, sunPos) * sunVis; COLOR += lf; } #endif #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); #endif #ifdef VIGNETTE COLOR *= doVignette(texcoord, noise); #endif #ifdef CAMERA_GRIDLINES doCameraGridLines(COLOR, texcoord); #endif #if DEBUG_VIEW == debug_LIGHTS && defined LPV_SHADOWS beginText(ivec2(gl_FragCoord.xy * 0.25), ivec2(0, viewHeight*0.25)); for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { uint data = texelFetch(texCloseLights, i, 0).r; printString((_L, _i, _g, _h, _t, _space)); printInt(i); float dist; ivec3 pos; uint id; if (!getLightData(data, dist, pos, id)) { printString((_colon, _space, _n, _u, _l, _l)); } else { printString((_colon, _space, _d, _colon, _space)); printFloat(dist); printString((_comma, _space, _x, _colon, _space)); printInt(pos.x - 15); printString((_comma, _space, _y, _colon, _space)); printInt(pos.y - 15); printString((_comma, _space, _z, _colon, _space)); printInt(pos.z - 15); printString((_comma, _space, _i, _d, _colon, _space)); printInt(int(id)); } printLine(); } endText(COLOR); int curLight = int(frameTimeCounter * 2.0) % LPV_SHADOWS_LIGHT_COUNT; ivec3 coords = ivec3((texcoord - vec2(0.75, 0)) * vec2(4.0, 2.0) * textureSize(texSortLights, 0).xy, curLight); if(texcoord.x > 0.75 && texcoord.y < 0.5) { COLOR.rgb = vec3(texelFetch(texSortLights, coords, 0).rgb / 4294967295.0); } beginText(ivec2(gl_FragCoord.xy * 0.25), ivec2(viewWidth * 0.19, viewHeight * 0.135)); printString((_L, _i, _g, _h, _t, _colon, _space)); printInt(curLight); endText(COLOR); vec2 shadowUV = texcoord * vec2(4.0, 2.0); if(shadowUV.x < 1.0 && shadowUV.y < 1.0) COLOR = texture2D(shadowcolor1,shadowUV).rgb; #endif #if DEBUG_VIEW == debug_SHADOWMAP vec2 shadowUV = texcoord * vec2(2.0, 1.0) ; if(shadowUV.x < 1.0 && shadowUV.y < 1.0 && hideGUI == 1) COLOR = texture2D(shadowcolor1,shadowUV).rgb; #elif DEBUG_VIEW == debug_DEPTHTEX0 COLOR = vec3(ld(texture2D(depthtex0, texcoord*RENDER_SCALE).r)); #elif DEBUG_VIEW == debug_DEPTHTEX1 COLOR = vec3(ld(texture2D(depthtex1, texcoord*RENDER_SCALE).r)); #endif gl_FragColor.rgb = COLOR; } ================================================ FILE: shaders/dimensions/final.vsh ================================================ #include "/lib/settings.glsl" uniform mat4 gbufferModelViewInverse; out vec2 texcoord; #ifdef OVERWORLD_SHADER uniform vec3 sunPosition; uniform sampler2D colortex4; flat out vec3 WsunVec; uniform int worldDay; #include "/lib/scene_controller.glsl" #endif //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; #ifdef OVERWORLD_SHADER WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #endif } ================================================ FILE: shaders/dimensions/fogBehindTranslucent_pass.fsh ================================================ #include "/lib/settings.glsl" #include "/lib/util.glsl" #include "/lib/dither.glsl" // #if defined END_SHADER || defined NETHER_SHADER #undef IS_LPV_ENABLED // #endif flat in vec4 lightCol; flat in vec3 averageSkyCol; flat in vec3 averageSkyCol_Clouds; // uniform int dhRenderDistance; uniform sampler2D depthtex0; uniform sampler2D depthtex1; #ifdef DISTANT_HORIZONS uniform sampler2D dhDepthTex; uniform sampler2D dhDepthTex1; #endif uniform sampler2D colortex2; uniform sampler2D colortex3; uniform sampler2D colortex4; uniform sampler2D colortex6; uniform sampler2D colortex7; uniform sampler2D colortex11; uniform sampler2D colortex14; flat in vec3 WsunVec; uniform vec3 sunVec; uniform float sunElevation; uniform float near; // uniform float far; // uniform float dhFarPlane; uniform float frameTimeCounter; uniform int worldTime; uniform int worldDay; // in vec2 texcoord; uniform vec2 texelSize; // flat in vec2 TAA_Offset; uniform int isEyeInWater; uniform float rainStrength; uniform ivec2 eyeBrightnessSmooth; uniform float eyeAltitude; uniform float caveDetection; uniform float nightVision; #define DHVLFOG #include "/lib/tonemaps.glsl" #include "/lib/color_dither.glsl" #include "/lib/projections.glsl" #include "/lib/res_params.glsl" #include "/lib/sky_gradient.glsl" #include "/lib/Shadow_Params.glsl" #include "/lib/waterBump.glsl" #include "/lib/DistantHorizons_projections.glsl" float linearizeDepthFast(const in float depth, const in float near, const in float far) { return (near * far) / (depth * (near - far) + far); } #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 in vec3 refractedSunVec; #include "/lib/scene_controller.glsl" #include "/lib/diffuse_lighting.glsl" #include "/lib/lightning_stuff.glsl" // #define CLOUDSHADOWSONLY #include "/lib/climate_settings.glsl" #include "/lib/volumetricClouds.glsl" #include "/lib/overworld_fog.glsl" #endif #ifdef NETHER_SHADER #include "/lib/nether_fog.glsl" #endif #ifdef END_SHADER #include "/lib/end_fog.glsl" #endif vec4 blueNoise(vec2 coord){ return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ; } float fogPhase2(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; } vec4 waterVolumetrics( 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(toWorldSpace(rayStart)); vec3 end = toShadowSpaceProjected(toWorldSpace(rayEnd)); vec3 dV = (end-start); //limit ray length at 32 blocks for performance and reducing integration error //you can't see above this anyway float maxZ = min(rayLength,12.0)/(1e-8+rayLength); dV *= maxZ; rayLength *= maxZ; estEndDepth *= maxZ; estSunDepth *= maxZ; vec3 wpos = toWorldSpace(rayStart); vec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz; vec3 absorbance = vec3(1.0); vec3 vL = vec3(0.0); float expFactor = 11.0; float phase = 1.0; vec3 sh = vec3(1.0); #ifdef OVERWORLD_SHADER phase *= fogPhase(VdotL) * 5.0; // do this outside raymarch loop, masking the water surface is good enough sh *= getCloudShadow(wpos+cameraPosition, WsunVec); #endif float thing = -normalize(dVWorld).y; thing = clamp(thing - 0.333,0.0,1.0); thing = pow(1.0-pow(1.0-thing,2.0),2.0); thing *= 15.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 } #endif vec3 sunAbsorbance = exp(-waterCoefs * estSunDepth * d); vec3 ambientAbsorbance = exp(-waterCoefs * (estEndDepth * d + thing)); vec3 Directlight = lightSource * sh * phase * sunAbsorbance; vec3 Indirectlight = ambient * ambientAbsorbance; vec3 light = (Indirectlight + Directlight) * scatterCoef; vec3 volumeCoeff = exp(-waterCoefs * dd * rayLength); vL += (light - light * volumeCoeff) / waterCoefs * absorbance; absorbance *= volumeCoeff; } return vec4(vL, dot(absorbance,vec3(0.335))); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* RENDERTARGETS:13 */ gl_FragData[0] = vec4(0,0,0,1); vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize; float alpha = texture2D(colortex7,tc).a ; float blendedAlpha = texture2D(colortex2, tc).a; bool iswater = alpha > 0.99; ////////////////////////////////////////////////////////// ///////////////// BEHIND OF TRANSLUCENTS ///////////////// ////////////////////////////////////////////////////////// if(blendedAlpha > 0.0 || iswater){ float noise_1 = R2_dither(); float noise_2 = blueNoise(); float z0 = texelFetch2D(depthtex0, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0).x; float z = texelFetch2D(depthtex1, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0).x; float DH_z0 = 0.0; float DH_z = 0.0; #ifdef DISTANT_HORIZONS DH_z0 = texelFetch2D(dhDepthTex, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;//texture2D(dhDepthTex,tc).x; DH_z = texelFetch2D(dhDepthTex1, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;//texture2D(dhDepthTex,tc).x; #endif // vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.); // 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 = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);//dirtEpsilon * Dirt_Amount + waterEpsilon; vec3 scatterCoef = Dirt_Amount * 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 data = texelFetch2D(colortex11,ivec2(tc/texelSize),0).gb; vec3 wateralbedo = vec3(decodeVec2(data.x),decodeVec2(data.y).r); scatterCoef = Dirt_Amount * (normalize(wateralbedo.rgb+1e-7) * 0.5 + 0.5) / 3.14; } #endif vec3 directLightColor = lightCol.rgb / 2400.0; vec3 indirectLightColor = averageSkyCol / 1200.0; vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.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; #ifdef OVERWORLD_SHADER 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(texelFetch2D(colortex14,ivec2(tc/texelSize),0).a); lightmap.y = 1.0; #endif float Vdiff = distance(viewPos1, viewPos0); float estimatedDepth = Vdiff * abs(normalize(playerPos).y); float estimatedSunDepth = Vdiff / abs(WsunVec.y); //assuming water plane indirectLightColor_dynamic *= ambient_brightness * lightmap.y*lightmap.y; 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) * TORCH_AMOUNT; vec4 finalVolumetrics = vec4(0.0,0.0,0.0,1.0); float cloudPlaneDistance = 0.0; #ifdef OVERWORLD_SHADER vec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WsunVec, directLightColor, indirectLightColor,cloudPlaneDistance); float atmosphereAlpha = 1.0; vec4 VolumetricFog = GetVolumetricFog(viewPos1, WsunVec, vec2(noise_1, noise_2), directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb,cloudPlaneDistance); finalVolumetrics.rgb += VolumetricClouds.rgb; finalVolumetrics.a *= VolumetricClouds.a; #else vec4 VolumetricFog = GetVolumetricFog(viewPos1, noise_1, noise_2); #endif finalVolumetrics.rgb = finalVolumetrics.rgb * VolumetricFog.a + VolumetricFog.rgb; finalVolumetrics.a *= VolumetricFog.a; vec4 underwaterVlFog = vec4(0,0,0,1); float lightleakfix = clamp(lightmap.y + (1-caveDetection),0.0,1.0); if(iswater && isEyeInWater != 1) { vec4 underWaterFog = waterVolumetrics(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos1), normalize(sunVec*lightCol.a)) ,lightleakfix); finalVolumetrics.rgb = finalVolumetrics.rgb * underWaterFog.a*underWaterFog.a + underWaterFog.rgb; finalVolumetrics.a *= underWaterFog.a; } gl_FragData[0] = clamp(finalVolumetrics, 0.0, 65000.0); } } ================================================ FILE: shaders/dimensions/fogBehindTranslucent_pass.vsh ================================================ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/util.glsl" flat out vec4 lightCol; flat out vec3 averageSkyCol; flat out vec3 averageSkyCol_Clouds; uniform int worldDay; #include "/lib/scene_controller.glsl" flat out vec3 WsunVec; flat out vec3 refractedSunVec; // flat out float tempOffsets; uniform sampler2D colortex4; uniform float sunElevation; uniform vec2 texelSize; uniform vec3 sunPosition; uniform vec3 moonPosition; uniform mat4 gbufferModelViewInverse; uniform float frameTimeCounter; #include "/lib/Shadow_Params.glsl" #include "/lib/sky_gradient.glsl" //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); // gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51*2.0-1.0; gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0; lightCol.rgb = vec3(0.0); averageSkyCol = vec3(0.0); #ifdef OVERWORLD_SHADER lightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb; averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb; averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog); #endif #ifdef NETHER_SHADER averageSkyCol_Clouds = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb; #endif #ifdef END_SHADER averageSkyCol_Clouds = vec3(15.0); #endif lightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0; WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition); vec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition); vec3 WmoonVec = moonVec; if(dot(-moonVec, WsunVec) < 0.9999) WmoonVec = -moonVec; WsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1)); refractedSunVec = refract(WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333); } ================================================ FILE: shaders/dimensions/setup.csh ================================================ layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; const ivec3 workGroups = ivec3(6, 6, 1); #ifdef IS_LPV_ENABLED #include "/lib/items.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/lpv_blocks.glsl" const vec3 LightColor_Amethyst = vec3(0.464, 0.227, 0.788); const vec3 LightColor_Candles = vec3(1.0, 0.4, 0.1); const vec3 LightColor_CopperBulb = vec3(1.0); const vec3 LightColor_LightBlock = vec3(1.0); const vec3 LightColor_RedstoneTorch = vec3(0.939, 0.305, 0.164); const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); const vec3 LightColor_Candles_Black = vec3(0.200); const vec3 LightColor_Candles_Blue = vec3(0.000, 0.259, 1.000); const vec3 LightColor_Candles_Brown = vec3(0.459, 0.263, 0.149); const vec3 LightColor_Candles_Cyan = vec3(0.000, 0.839, 0.839); const vec3 LightColor_Candles_Gray = vec3(0.329, 0.357, 0.388); const vec3 LightColor_Candles_Green = vec3(0.263, 0.451, 0.000); const vec3 LightColor_Candles_LightBlue = vec3(0.153, 0.686, 1.000); const vec3 LightColor_Candles_LightGray = vec3(0.631, 0.627, 0.624); const vec3 LightColor_Candles_Lime = vec3(0.439, 0.890, 0.000); const vec3 LightColor_Candles_Magenta = vec3(0.757, 0.098, 0.812); const vec3 LightColor_Candles_Orange = vec3(1.000, 0.459, 0.000); const vec3 LightColor_Candles_Pink = vec3(1.000, 0.553, 0.718); const vec3 LightColor_Candles_Purple = vec3(0.569, 0.000, 1.000); const vec3 LightColor_Candles_Red = vec3(0.859, 0.000, 0.000); const vec3 LightColor_Candles_White = vec3(1.000); const vec3 LightColor_Candles_Yellow = vec3(1.000, 0.878, 0.000); uint BuildLpvMask(const in uint north, const in uint east, const in uint south, const in uint west, const in uint up, const in uint down) { return east | (west << 1) | (down << 2) | (up << 3) | (south << 4) | (north << 5); } mat4 GetSaturationMatrix(const in float saturation) { const vec3 luminance = vec3(0.3086, 0.6094, 0.0820); vec3 lumSat = luminance * (1.0 - saturation); vec2 satZero = vec2(saturation, 0.0); return mat4( vec4(lumSat.r + satZero.xyy, 0.0), vec4(lumSat.g + satZero.yxy, 0.0), vec4(lumSat.b + satZero.yyx, 0.0), vec4(0.0, 0.0, 0.0, 1.0)); } #endif void main() { #ifdef IS_LPV_ENABLED int blockId = int(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 48); if (blockId >= 2048) return; vec3 lightColor = vec3(0.0); float lightRange = 0.0; float mixWeight = 0.0; uint mixMask = 0xFFFF; vec3 tintColor = vec3(1.0); if (blockId == BLOCK_SSS_WEAK || blockId == BLOCK_SSS_WEAK_3 || blockId == BLOCK_SSS_STRONG) { mixWeight = 1.0; } switch (blockId) { case BLOCK_WATER: mixWeight = 0.8; break; case BLOCK_BAMBOO: mixWeight = 0.8; break; case BLOCK_GRASS_SHORT: case BLOCK_GRASS_TALL_UPPER: case BLOCK_GRASS_TALL_LOWER: mixWeight = 0.85; break; case BLOCK_GROUND_WAVING: case BLOCK_GROUND_WAVING_VERTICAL: case BLOCK_AIR_WAVING: mixWeight = 0.9; break; case BLOCK_SAPLING: mixWeight = 0.9; break; } // lightsources if (blockId == BLOCK_AMETHYST_BUD_SMALL || blockId == ITEM_AMETHYST_BUD_SMALL) { lightColor = LightColor_Amethyst; lightRange = 1.0; mixWeight = 1.0; } if (blockId == BLOCK_AMETHYST_BUD_MEDIUM || blockId == ITEM_AMETHYST_BUD_MEDIUM) { lightColor = LightColor_Amethyst; lightRange = 2.0; mixWeight = 0.8; } if (blockId == BLOCK_AMETHYST_BUD_LARGE || blockId == ITEM_AMETHYST_BUD_LARGE) { lightColor = LightColor_Amethyst; lightRange = 4.0; mixWeight = 0.6; } if (blockId == BLOCK_AMETHYST_CLUSTER || blockId == ITEM_AMETHYST_CLUSTER) { lightColor = LightColor_Amethyst; lightRange = 5.0; mixWeight = 0.4; } if (blockId == BLOCK_BEACON || blockId == ITEM_BEACON) { lightColor = vec3(1.0); lightRange = 15.0; } if (blockId == BLOCK_BREWING_STAND) { lightColor = vec3(0.636, 0.509, 0.179); lightRange = 1.0; mixWeight = 0.8; } #ifdef LPV_COLORED_CANDLES if (blockId >= BLOCK_CANDLES_PLAIN_LIT_1 && blockId <= BLOCK_CANDLES_YELLOW_LIT_4) { switch (blockId) { case BLOCK_CANDLES_PLAIN_LIT_1: lightColor = LightColor_Candles; lightRange = 3.0; break; case BLOCK_CANDLES_PLAIN_LIT_2: lightColor = LightColor_Candles; lightRange = 6.0; break; case BLOCK_CANDLES_PLAIN_LIT_3: lightRange = 9.0; break; case BLOCK_CANDLES_PLAIN_LIT_4: lightColor = LightColor_Candles; lightRange = 12.0; break; case BLOCK_CANDLES_BLACK_LIT_1: lightColor = LightColor_Candles_Black; lightRange = 3.0; break; case BLOCK_CANDLES_BLACK_LIT_2: lightColor = LightColor_Candles_Black; lightRange = 6.0; break; case BLOCK_CANDLES_BLACK_LIT_3: lightColor = LightColor_Candles_Black; lightRange = 9.0; break; case BLOCK_CANDLES_BLACK_LIT_4: lightColor = LightColor_Candles_Black; lightRange = 12.0; break; case BLOCK_CANDLES_BLUE_LIT_1: lightColor = LightColor_Candles_Blue; lightRange = 3.0; break; case BLOCK_CANDLES_BLUE_LIT_2: lightColor = LightColor_Candles_Blue; lightRange = 6.0; break; case BLOCK_CANDLES_BLUE_LIT_3: lightColor = LightColor_Candles_Blue; lightRange = 9.0; break; case BLOCK_CANDLES_BLUE_LIT_4: lightColor = LightColor_Candles_Blue; lightRange = 12.0; break; case BLOCK_CANDLES_BROWN_LIT_1: lightColor = LightColor_Candles_Brown; lightRange = 3.0; break; case BLOCK_CANDLES_BROWN_LIT_2: lightColor = LightColor_Candles_Brown; lightRange = 6.0; break; case BLOCK_CANDLES_BROWN_LIT_3: lightColor = LightColor_Candles_Brown; lightRange = 9.0; break; case BLOCK_CANDLES_BROWN_LIT_4: lightColor = LightColor_Candles_Brown; lightRange = 12.0; break; case BLOCK_CANDLES_CYAN_LIT_1: lightColor = LightColor_Candles_Cyan; lightRange = 3.0; break; case BLOCK_CANDLES_CYAN_LIT_2: lightColor = LightColor_Candles_Cyan; lightRange = 6.0; break; case BLOCK_CANDLES_CYAN_LIT_3: lightColor = LightColor_Candles_Cyan; lightRange = 9.0; break; case BLOCK_CANDLES_CYAN_LIT_4: lightColor = LightColor_Candles_Cyan; lightRange = 12.0; break; case BLOCK_CANDLES_GRAY_LIT_1: lightColor = LightColor_Candles_Gray; lightRange = 3.0; break; case BLOCK_CANDLES_GRAY_LIT_2: lightColor = LightColor_Candles_Gray; lightRange = 6.0; break; case BLOCK_CANDLES_GRAY_LIT_3: lightColor = LightColor_Candles_Gray; lightRange = 9.0; break; case BLOCK_CANDLES_GRAY_LIT_4: lightColor = LightColor_Candles_Gray; lightRange = 12.0; break; case BLOCK_CANDLES_GREEN_LIT_1: lightColor = LightColor_Candles_Green; lightRange = 3.0; break; case BLOCK_CANDLES_GREEN_LIT_2: lightColor = LightColor_Candles_Green; lightRange = 6.0; break; case BLOCK_CANDLES_GREEN_LIT_3: lightColor = LightColor_Candles_Green; lightRange = 9.0; break; case BLOCK_CANDLES_GREEN_LIT_4: lightColor = LightColor_Candles_Green; lightRange = 12.0; break; case BLOCK_CANDLES_LIGHT_BLUE_LIT_1: lightColor = LightColor_Candles_LightBlue; lightRange = 3.0; break; case BLOCK_CANDLES_LIGHT_BLUE_LIT_2: lightColor = LightColor_Candles_LightBlue; lightRange = 6.0; break; case BLOCK_CANDLES_LIGHT_BLUE_LIT_3: lightColor = LightColor_Candles_LightBlue; lightRange = 9.0; break; case BLOCK_CANDLES_LIGHT_BLUE_LIT_4: lightColor = LightColor_Candles_LightBlue; lightRange = 12.0; break; case BLOCK_CANDLES_LIGHT_GRAY_LIT_1: lightColor = LightColor_Candles_LightGray; lightRange = 3.0; break; case BLOCK_CANDLES_LIGHT_GRAY_LIT_2: lightColor = LightColor_Candles_LightGray; lightRange = 6.0; break; case BLOCK_CANDLES_LIGHT_GRAY_LIT_3: lightColor = LightColor_Candles_LightGray; lightRange = 9.0; break; case BLOCK_CANDLES_LIGHT_GRAY_LIT_4: lightColor = LightColor_Candles_LightGray; lightRange = 12.0; break; case BLOCK_CANDLES_LIME_LIT_1: lightColor = LightColor_Candles_Lime; lightRange = 3.0; break; case BLOCK_CANDLES_LIME_LIT_2: lightColor = LightColor_Candles_Lime; lightRange = 6.0; break; case BLOCK_CANDLES_LIME_LIT_3: lightColor = LightColor_Candles_Lime; lightRange = 9.0; break; case BLOCK_CANDLES_LIME_LIT_4: lightColor = LightColor_Candles_Lime; lightRange = 12.0; break; case BLOCK_CANDLES_MAGENTA_LIT_1: lightColor = LightColor_Candles_Magenta; lightRange = 3.0; break; case BLOCK_CANDLES_MAGENTA_LIT_2: lightColor = LightColor_Candles_Magenta; lightRange = 6.0; break; case BLOCK_CANDLES_MAGENTA_LIT_3: lightColor = LightColor_Candles_Magenta; lightRange = 9.0; break; case BLOCK_CANDLES_MAGENTA_LIT_4: lightColor = LightColor_Candles_Magenta; lightRange = 12.0; break; case BLOCK_CANDLES_ORANGE_LIT_1: lightColor = LightColor_Candles_Orange; lightRange = 3.0; break; case BLOCK_CANDLES_ORANGE_LIT_2: lightColor = LightColor_Candles_Orange; lightRange = 6.0; break; case BLOCK_CANDLES_ORANGE_LIT_3: lightColor = LightColor_Candles_Orange; lightRange = 9.0; break; case BLOCK_CANDLES_ORANGE_LIT_4: lightColor = LightColor_Candles_Orange; lightRange = 12.0; break; case BLOCK_CANDLES_PINK_LIT_1: lightColor = LightColor_Candles_Pink; lightRange = 3.0; break; case BLOCK_CANDLES_PINK_LIT_2: lightColor = LightColor_Candles_Pink; lightRange = 6.0; break; case BLOCK_CANDLES_PINK_LIT_3: lightColor = LightColor_Candles_Pink; lightRange = 9.0; break; case BLOCK_CANDLES_PINK_LIT_4: lightColor = LightColor_Candles_Pink; lightRange = 12.0; break; case BLOCK_CANDLES_PURPLE_LIT_1: lightColor = LightColor_Candles_Purple; lightRange = 3.0; break; case BLOCK_CANDLES_PURPLE_LIT_2: lightColor = LightColor_Candles_Purple; lightRange = 6.0; break; case BLOCK_CANDLES_PURPLE_LIT_3: lightColor = LightColor_Candles_Purple; lightRange = 9.0; break; case BLOCK_CANDLES_PURPLE_LIT_4: lightColor = LightColor_Candles_Purple; lightRange = 12.0; break; case BLOCK_CANDLES_RED_LIT_1: lightColor = LightColor_Candles_Red; lightRange = 3.0; break; case BLOCK_CANDLES_RED_LIT_2: lightColor = LightColor_Candles_Red; lightRange = 6.0; break; case BLOCK_CANDLES_RED_LIT_3: lightColor = LightColor_Candles_Red; lightRange = 9.0; break; case BLOCK_CANDLES_RED_LIT_4: lightColor = LightColor_Candles_Red; lightRange = 12.0; break; case BLOCK_CANDLES_WHITE_LIT_1: lightColor = LightColor_Candles_White; lightRange = 3.0; break; case BLOCK_CANDLES_WHITE_LIT_2: lightColor = LightColor_Candles_White; lightRange = 6.0; break; case BLOCK_CANDLES_WHITE_LIT_3: lightColor = LightColor_Candles_White; lightRange = 9.0; break; case BLOCK_CANDLES_WHITE_LIT_4: lightColor = LightColor_Candles_White; lightRange = 12.0; break; case BLOCK_CANDLES_YELLOW_LIT_1: lightColor = LightColor_Candles_Yellow; lightRange = 3.0; break; case BLOCK_CANDLES_YELLOW_LIT_2: lightColor = LightColor_Candles_Yellow; lightRange = 6.0; break; case BLOCK_CANDLES_YELLOW_LIT_3: lightColor = LightColor_Candles_Yellow; lightRange = 9.0; break; case BLOCK_CANDLES_YELLOW_LIT_4: lightColor = LightColor_Candles_Yellow; lightRange = 12.0; break; } #else if (blockId >= BLOCK_CANDLES_LIT_1 && blockId <= BLOCK_CANDLES_LIT_4) { switch (blockId) { case BLOCK_CANDLES_LIT_1: lightColor = LightColor_Candles; lightRange = 3.0; break; case BLOCK_CANDLES_LIT_2: lightColor = LightColor_Candles; lightRange = 6.0; break; case BLOCK_CANDLES_LIT_3: lightColor = LightColor_Candles; lightRange = 9.0; break; case BLOCK_CANDLES_LIT_4: lightColor = LightColor_Candles; lightRange = 12.0; break; } #endif mixWeight = 1.0; } if (blockId == ITEM_BLAZE_ROD) { lightColor = vec3(0.864, 0.598, 0.348); lightRange = 8.0; mixWeight = 1.0; } if (blockId == BLOCK_CAVE_VINE_BERRIES || blockId == ITEM_GLOW_BERRIES) { lightColor = vec3(1.0, 1.0, 0.5); lightRange = 14.0; mixWeight = 1.0; } if (blockId == BLOCK_FIREFLY_BUSH || blockId == ITEM_FIREFLY_BUSH) { lightColor = vec3(1.0, 1.0, 0.5); lightRange = 4.0; mixWeight = 0.2; } #ifdef LPV_REDSTONE_LIGHTS if (blockId == BLOCK_COMPARATOR_LIT) { lightColor = LightColor_RedstoneTorch; lightRange = 4.0; } #endif switch (blockId) { case BLOCK_COPPER_BULB_LIT: lightColor = LightColor_CopperBulb; lightRange = 15.0; break; case BLOCK_COPPER_BULB_EXPOSED_LIT: lightColor = LightColor_CopperBulb; lightRange = 12.0; break; case BLOCK_COPPER_BULB_OXIDIZED_LIT: lightColor = LightColor_CopperBulb; lightRange = 4.0; break; case BLOCK_COPPER_BULB_WEATHERED_LIT: lightColor = LightColor_CopperBulb; lightRange = 8.0; break; case BLOCK_CONDUIT: lightColor = vec3(1.0); lightRange = 15.0; break; } if (blockId == BLOCK_CRYING_OBSIDIAN) { lightColor = vec3(0.390, 0.065, 0.646); lightRange = 10.0; } if (blockId == BLOCK_END_GATEWAY) { lightColor = vec3(1.0); lightRange = 15.0; } if (blockId == BLOCK_END_ROD || blockId == ITEM_END_ROD) { lightColor = vec3(0.957, 0.929, 0.875); lightRange = 14.0; } if (blockId == BLOCK_FIRE) { lightColor = vec3(0.864, 0.598, 0.348); lightRange = 15.0; mixWeight = 1.0; } if (blockId == BLOCK_FIRE_FLIES) { lightColor = vec3(0.729, 0.639, 0.31); lightRange = 2.0; mixWeight = 1.0; } if (blockId == BLOCK_FROGLIGHT_OCHRE || blockId == ITEM_FROGLIGHT_OCHRE) { lightColor = vec3(0.768, 0.648, 0.108); lightRange = 15.0; } if (blockId == BLOCK_FROGLIGHT_PEARLESCENT || blockId == ITEM_FROGLIGHT_PEARLESCENT) { lightColor = vec3(0.737, 0.435, 0.658); lightRange = 15.0; } if (blockId == BLOCK_FROGLIGHT_VERDANT || blockId == ITEM_FROGLIGHT_VERDANT) { lightColor = vec3(0.463, 0.763, 0.409); lightRange = 15.0; } if (blockId == BLOCK_FURNACE_LIT) { lightColor = vec3(0.7, 0.4, 0.2); lightRange = 15.0; } if (blockId == BLOCK_GLOW_LICHEN || blockId == ITEM_GLOW_LICHEN) { lightColor = vec3(0.1, 0.2, 0.12); lightRange = 7.0; } if (blockId == BLOCK_GLOWSTONE || blockId == ITEM_GLOWSTONE) { lightColor = vec3(0.747, 0.594, 0.326); lightRange = 15.0; } if (blockId == ITEM_GLOWSTONE_DUST) { lightColor = vec3(0.747, 0.594, 0.326); lightRange = 8.0; } if (blockId == BLOCK_JACK_O_LANTERN || blockId == ITEM_JACK_O_LANTERN) { lightColor = vec3(0.864, 0.598, 0.348); lightRange = 15.0; } if (blockId == BLOCK_LANTERN || blockId == ITEM_LANTERN) { lightColor = vec3(0.839, 0.541, 0.2); lightRange = 15.0; mixWeight = 0.8; } if (blockId == BLOCK_LAVA) { lightColor = vec3(0.659, 0.302, 0.106); lightRange = 15.0; } else if (blockId == ITEM_LAVA_BUCKET) { lightColor = vec3(0.659, 0.302, 0.106); lightRange = 8.0; } if (blockId >= BLOCK_LIGHT_1 && blockId <= BLOCK_LIGHT_15) { lightColor = LightColor_LightBlock; mixWeight = 1.0; switch (blockId) { case BLOCK_LIGHT_1: lightRange = 1; break; case BLOCK_LIGHT_2: lightRange = 2; break; case BLOCK_LIGHT_3: lightRange = 3; break; case BLOCK_LIGHT_4: lightRange = 4; break; case BLOCK_LIGHT_5: lightRange = 5; break; case BLOCK_LIGHT_6: lightRange = 6; break; case BLOCK_LIGHT_7: lightRange = 7; break; case BLOCK_LIGHT_8: lightRange = 8; break; case BLOCK_LIGHT_9: lightRange = 9; break; case BLOCK_LIGHT_10: lightRange = 10; break; case BLOCK_LIGHT_11: lightRange = 11; break; case BLOCK_LIGHT_12: lightRange = 12; break; case BLOCK_LIGHT_13: lightRange = 13; break; case BLOCK_LIGHT_14: lightRange = 14; break; case BLOCK_LIGHT_15: lightRange = 15; break; } } if (blockId == BLOCK_MAGMA || blockId == ITEM_MAGMA) { lightColor = vec3(0.747, 0.323, 0.110); lightRange = 3.0; mixWeight = 0.0; } if (blockId == BLOCK_RAIL_POWERED_ON) { lightColor = LightColor_RedstoneTorch; lightRange = 7.0; mixWeight = 0.9; } if (blockId == BLOCK_REDSTONE_LAMP_LIT) { lightColor = vec3(0.953, 0.796, 0.496); lightRange = 15.0; mixWeight = 0.0; } if (blockId == BLOCK_REDSTONE_ORE_LIT || blockId == BLOCK_DEEPSLATE_REDSTONE_ORE_LIT) { lightColor = LightColor_RedstoneTorch; lightRange = 7.0; mixWeight = 0.0; } if (blockId == BLOCK_REDSTONE_TORCH_LIT || blockId == ITEM_REDSTONE_TORCH) { lightColor = LightColor_RedstoneTorch; lightRange = 7.0; mixWeight = 0.9; } switch (blockId) { #ifdef LPV_REDSTONE_LIGHTS case BLOCK_REDSTONE_WIRE_1: lightColor = LightColor_RedstoneTorch; lightRange = 0.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_2: lightColor = LightColor_RedstoneTorch; lightRange = 1.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_3: lightColor = LightColor_RedstoneTorch; lightRange = 1.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_4: lightColor = LightColor_RedstoneTorch; lightRange = 2.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_5: lightColor = LightColor_RedstoneTorch; lightRange = 2.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_6: lightColor = LightColor_RedstoneTorch; lightRange = 3.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_7: lightColor = LightColor_RedstoneTorch; lightRange = 3.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_8: lightColor = LightColor_RedstoneTorch; lightRange = 4.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_9: lightColor = LightColor_RedstoneTorch; lightRange = 4.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_10: lightColor = LightColor_RedstoneTorch; lightRange = 5.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_11: lightColor = LightColor_RedstoneTorch; lightRange = 5.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_12: lightColor = LightColor_RedstoneTorch; lightRange = 6.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_13: lightColor = LightColor_RedstoneTorch; lightRange = 6.5; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_14: lightColor = LightColor_RedstoneTorch; lightRange = 7.0; mixWeight = 1.0; break; case BLOCK_REDSTONE_WIRE_15: lightColor = LightColor_RedstoneTorch; lightRange = 7.5; mixWeight = 1.0; break; case BLOCK_REPEATER_LIT: lightColor = LightColor_RedstoneTorch; lightRange = 4.0; break; #endif case BLOCK_RESPAWN_ANCHOR_4: lightColor = vec3(1.0, 0.2, 1.0); lightRange = 15.0; break; case BLOCK_SCULK_SENSOR_ACTIVE: lightColor = vec3(0.1, 0.4, 1.0); lightRange = 1.0; break; case BLOCK_SEA_PICKLE_WET_1: lightColor = LightColor_SeaPickle; lightRange = 6.0; mixWeight = 1.0; break; case BLOCK_SEA_PICKLE_WET_2: lightColor = LightColor_SeaPickle; lightRange = 9.0; mixWeight = 1.0; break; case BLOCK_SEA_PICKLE_WET_3: lightColor = LightColor_SeaPickle; lightRange = 12.0; mixWeight = 1.0; break; case BLOCK_SEA_PICKLE_WET_4: lightColor = LightColor_SeaPickle; lightRange = 15.0; mixWeight = 1.0; break; } if (blockId == BLOCK_SEA_LANTERN || blockId == ITEM_SEA_LANTERN) { lightColor = vec3(0.553, 0.748, 0.859); lightRange = 15.0; } if (blockId == BLOCK_SHROOMLIGHT || blockId == ITEM_SHROOMLIGHT) { lightColor = vec3(0.848, 0.469, 0.205); lightRange = 15.0; } if (blockId == BLOCK_SOUL_FIRE) { lightColor = vec3(0.1, 0.6, 1.0); lightRange = 10.0; mixWeight = 1.0; } if ( blockId == BLOCK_SOUL_TORCH || blockId == ITEM_SOUL_TORCH || blockId == BLOCK_SOUL_LANTERN || blockId == ITEM_SOUL_LANTERN ) { lightColor = vec3(0.1, 0.6, 1.0); lightRange = 10.0; mixWeight = 0.8; } if (blockId == BLOCK_TORCH || blockId == ITEM_TORCH || blockId == BLOCK_LANTERN || blockId == ITEM_LANTERN ) { lightColor = vec3(TORCH_R, TORCH_G, TORCH_B); lightRange = 14.0; mixWeight = 0.8; } if (blockId >= BLOCK_LAMP_LIT_BLACK && blockId <= BLOCK_LAMP_LIT_YELLOW) { lightRange = 15.0; mixWeight = 0.25; switch (blockId) { case BLOCK_LAMP_LIT_BLACK: lightColor = LightColor_Candles_Black; break; case BLOCK_LAMP_LIT_BLUE: lightColor = LightColor_Candles_Blue; break; case BLOCK_LAMP_LIT_BROWN: lightColor = LightColor_Candles_Brown; break; case BLOCK_LAMP_LIT_CYAN: lightColor = LightColor_Candles_Cyan; break; case BLOCK_LAMP_LIT_GRAY: lightColor = LightColor_Candles_Gray; break; case BLOCK_LAMP_LIT_GREEN: lightColor = LightColor_Candles_Green; break; case BLOCK_LAMP_LIT_LIGHT_BLUE: lightColor = LightColor_Candles_LightBlue; break; case BLOCK_LAMP_LIT_LIGHT_GRAY: lightColor = LightColor_Candles_LightGray; break; case BLOCK_LAMP_LIT_LIME: lightColor = LightColor_Candles_Lime; break; case BLOCK_LAMP_LIT_MAGENTA: lightColor = LightColor_Candles_Magenta; break; case BLOCK_LAMP_LIT_ORANGE: lightColor = LightColor_Candles_Orange; break; case BLOCK_LAMP_LIT_PINK: lightColor = LightColor_Candles_Pink; break; case BLOCK_LAMP_LIT_PURPLE: lightColor = LightColor_Candles_Purple; break; case BLOCK_LAMP_LIT_RED: lightColor = LightColor_Candles_Red; break; case BLOCK_LAMP_LIT_WHITE: lightColor = LightColor_Candles_White; break; case BLOCK_LAMP_LIT_YELLOW: lightColor = LightColor_Candles_Yellow; break; } } // reflective translucents / glass switch (blockId) { case BLOCK_GLASS: tintColor = vec3(1.0); mixWeight = 1.0; break; case BLOCK_GLASS_BLACK: tintColor = vec3(0.3); mixWeight = 1.0; break; case BLOCK_GLASS_BLUE: tintColor = vec3(0.1, 0.1, 0.98); mixWeight = 1.0; break; case BLOCK_GLASS_BROWN: tintColor = vec3(0.566, 0.388, 0.148); mixWeight = 1.0; break; case BLOCK_GLASS_CYAN: tintColor = vec3(0.082, 0.533, 0.763); mixWeight = 1.0; break; case BLOCK_GLASS_GRAY: tintColor = vec3(0.4, 0.4, 0.4); mixWeight = 1.0; break; case BLOCK_GLASS_GREEN: tintColor = vec3(0.125, 0.808, 0.081); mixWeight = 1.0; break; case BLOCK_GLASS_LIGHT_BLUE: tintColor = vec3(0.320, 0.685, 0.955); mixWeight = 1.0; break; case BLOCK_GLASS_LIGHT_GRAY: tintColor = vec3(0.7); mixWeight = 1.0; break; case BLOCK_GLASS_LIME: tintColor = vec3(0.633, 0.924, 0.124); mixWeight = 1.0; break; case BLOCK_GLASS_MAGENTA: tintColor = vec3(0.698, 0.298, 0.847); mixWeight = 1.0; break; case BLOCK_GLASS_ORANGE: tintColor = vec3(0.919, 0.586, 0.185); mixWeight = 1.0; break; case BLOCK_GLASS_PINK: tintColor = vec3(0.949, 0.274, 0.497); mixWeight = 1.0; break; case BLOCK_GLASS_PURPLE: tintColor = vec3(0.578, 0.170, 0.904); mixWeight = 1.0; break; case BLOCK_GLASS_RED: tintColor = vec3(0.999, 0.188, 0.188); mixWeight = 1.0; break; case BLOCK_GLASS_WHITE: tintColor = vec3(0.96, 0.96, 0.96); mixWeight = 1.0; break; case BLOCK_GLASS_YELLOW: tintColor = vec3(0.965, 0.965, 0.123); mixWeight = 1.0; break; case BLOCK_HONEY: tintColor = vec3(0.984, 0.733, 0.251); mixWeight = 1.0; break; case BLOCK_NETHER_PORTAL: lightColor = vec3(0.502, 0.165, 0.831); tintColor = vec3(0.502, 0.165, 0.831); lightRange = 7.0; mixWeight = 1.0; break; case BLOCK_SLIME: tintColor = vec3(0.408, 0.725, 0.329); mixWeight = 1.0; break; // LPV shapes case BLOCK_LPV_IGNORE: mixWeight = 1.00; break; case BLOCK_LPV_MIN: mixWeight = 0.75; break; case BLOCK_LPV_MED: mixWeight = 0.50; break; case BLOCK_LPV_MAX: mixWeight = 0.25; break; case BLOCK_CARPET: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); mixWeight = 0.9; break; case BLOCK_DOOR_N: mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_DOOR_E: mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_DOOR_S: mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_DOOR_W: mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_PRESSURE_PLATE: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); mixWeight = 0.9; break; case BLOCK_SLAB_TOP: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); mixWeight = 0.5; break; case BLOCK_SLAB_BOTTOM: case BLOCK_SNOW_LAYERS: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); mixWeight = 0.5; break; case BLOCK_TRAPDOOR_BOTTOM: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); mixWeight = 0.8; break; case BLOCK_TRAPDOOR_TOP: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); mixWeight = 0.8; break; case BLOCK_TRAPDOOR_N: mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_TRAPDOOR_E: mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_TRAPDOOR_S: mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); mixWeight = 0.8; break; case BLOCK_TRAPDOOR_W: mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); mixWeight = 0.8; break; } // STAIRS if (blockId >= BLOCK_STAIRS_BOTTOM_N && blockId <= BLOCK_STAIRS_TOP_OUTER_S_W) { mixWeight = 0.25; switch (blockId) { case BLOCK_STAIRS_BOTTOM_N: mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 0u); break; case BLOCK_STAIRS_BOTTOM_E: mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 0u); break; case BLOCK_STAIRS_BOTTOM_S: mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 0u); break; case BLOCK_STAIRS_BOTTOM_W: mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 0u); break; case BLOCK_STAIRS_BOTTOM_INNER_S_E: mixMask = BuildLpvMask(0u, 1u, 1u, 0u, 0u, 1u); break; case BLOCK_STAIRS_BOTTOM_INNER_S_W: mixMask = BuildLpvMask(0u, 0u, 1u, 1u, 0u, 1u); break; case BLOCK_STAIRS_BOTTOM_INNER_N_W: mixMask = BuildLpvMask(1u, 0u, 0u, 1u, 0u, 1u); break; case BLOCK_STAIRS_BOTTOM_INNER_N_E: mixMask = BuildLpvMask(1u, 1u, 0u, 0u, 0u, 1u); break; } if (blockId >= BLOCK_STAIRS_BOTTOM_OUTER_N_W && blockId <= BLOCK_STAIRS_BOTTOM_OUTER_S_W) { mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); } switch (blockId) { case BLOCK_STAIRS_TOP_N: mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 0u, 1u); break; case BLOCK_STAIRS_TOP_E: mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 0u, 1u); break; case BLOCK_STAIRS_TOP_S: mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 0u, 1u); break; case BLOCK_STAIRS_TOP_W: mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 0u, 1u); break; case BLOCK_STAIRS_TOP_INNER_S_E: mixMask = BuildLpvMask(0u, 1u, 1u, 0u, 0u, 1u); break; case BLOCK_STAIRS_TOP_INNER_S_W: mixMask = BuildLpvMask(0u, 0u, 1u, 1u, 0u, 1u); break; case BLOCK_STAIRS_TOP_INNER_N_W: mixMask = BuildLpvMask(1u, 0u, 0u, 1u, 0u, 1u); break; case BLOCK_STAIRS_TOP_INNER_N_E: mixMask = BuildLpvMask(1u, 1u, 0u, 0u, 0u, 1u); break; } if (blockId >= BLOCK_STAIRS_TOP_OUTER_N_W && blockId <= BLOCK_STAIRS_TOP_OUTER_S_W) { mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); } } // WALL if (blockId >= BLOCK_WALL_MIN && blockId <= BLOCK_WALL_MAX) { mixWeight = 0.25; if (blockId == BLOCK_WALL_POST_TALL_ALL || blockId == BLOCK_WALL_TALL_ALL || blockId == BLOCK_WALL_POST_TALL_N_W_S || blockId == BLOCK_WALL_POST_TALL_N_E_S || blockId == BLOCK_WALL_POST_TALL_W_N_E || blockId == BLOCK_WALL_POST_TALL_W_S_E) { mixMask = BuildLpvMask(0u, 0u, 0u, 0u, 1u, 1u); mixWeight = 0.125; } else if (blockId == BLOCK_WALL_POST_TALL_N_S || blockId == BLOCK_WALL_TALL_N_S) { mixMask = BuildLpvMask(1u, 0u, 1u, 0u, 1u, 1u); } else if (blockId == BLOCK_WALL_POST_TALL_W_E || blockId == BLOCK_WALL_TALL_W_E) { mixMask = BuildLpvMask(0u, 1u, 0u, 1u, 1u, 1u); } // TODO: more walls } // Misc if (blockId == BLOCK_SIGN) { mixWeight = 0.9; } // Entities if (blockId == ENTITY_BLAZE) { lightColor = vec3(1.000, 0.592, 0.000); lightRange = 8.0; } if (blockId == ENTITY_END_CRYSTAL) { lightColor = vec3(1.000, 0.000, 1.000); lightRange = 8.0; } if (blockId == ENTITY_FIREBALL_SMALL) { lightColor = vec3(0.000, 1.000, 0.000); lightRange = 8.0; mixWeight = 1.0; } if (blockId == ENTITY_GLOW_SQUID) { lightColor = vec3(0.180, 0.675, 0.761); lightRange = 6.0; mixWeight = 0.5; } if (blockId == ENTITY_MAGMA_CUBE) { lightColor = vec3(0.747, 0.323, 0.110); lightRange = 9.0; } if (blockId == ENTITY_TNT) { lightColor = vec3(1.0); lightRange = 8.0; } if (blockId == ENTITY_SPECTRAL_ARROW) { lightColor = vec3(0.839, 0.541, 0.2); lightRange = 8.0; mixWeight = 1.0; } #ifdef EMISSIVE_ORE if (blockId == 266) { lightColor = vec3(EMISSIVE_ORE_R, EMISSIVE_ORE_G, EMISSIVE_ORE_B); lightRange = EMISSIVE_ORE_RANGE; } #endif // hack to increase light (if set) if (lightRange > 0.0) lightRange += 1.0; // apply saturation changes to light color const float saturationF = LPV_SATURATION / 100.0; mat4 matSaturation = GetSaturationMatrix(saturationF); lightColor = (matSaturation * vec4(lightColor, 1.0)).rgb; // apply saturation changes to tint color const float tintSaturationF = LPV_TINT_SATURATION / 100.0; mat4 matTintSaturation = GetSaturationMatrix(tintSaturationF); tintColor = (matTintSaturation * vec4(tintColor, 1.0)).rgb; // lazy fix for migrating from mixWeight to tintColor tintColor *= mixWeight; uint lightColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); uint tintColorMask = packUnorm4x8(vec4(tintColor, 0.0)); tintColorMask |= mixMask << 24; imageStore(imgBlockData, blockId, uvec4(lightColorRange, tintColorMask, 0u, 0u)); #endif } ================================================ FILE: shaders/dimensions/shadowcomp.csh ================================================ #define RENDER_SHADOWCOMP layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; #if LPV_SIZE == 8 const ivec3 workGroups = ivec3(32, 32, 32); #elif LPV_SIZE == 7 const ivec3 workGroups = ivec3(16, 16, 16); #elif LPV_SIZE == 6 const ivec3 workGroups = ivec3(8, 8, 8); #endif #ifdef IS_LPV_ENABLED shared vec4 lpvSharedData[10*10*10]; shared uint voxelSharedData[10*10*10]; const vec2 LpvBlockSkyFalloff = vec2(0.96, 0.96); const ivec3 lpvFlatten = ivec3(1, 10, 100); uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; uniform int frameCounter; #include "/lib/hsv.glsl" #include "/lib/util.glsl" #include "/lib/blocks.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_blocks.glsl" #include "/lib/lpv_buffer.glsl" #include "/lib/voxel_common.glsl" #ifdef LPV_SHADOWS #include "/lib/cube/lightData.glsl" shared bool lightSharedData[10*10*10]; uniform usampler1D texCloseLights; #endif int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} int getSharedIndex(ivec3 pos) { return sumOf(pos * lpvFlatten); } vec4 GetLpvValue(in ivec3 texCoord) { if (clamp(texCoord, ivec3(0), ivec3(LpvSize) - 1) != texCoord) return vec4(0.0); vec4 lpvSample = (frameCounter % 2) == 0 ? imageLoad(imgLpv2, texCoord) : imageLoad(imgLpv1, texCoord); vec4 hsv_sky = vec4(RgbToHsv(lpvSample.rgb), lpvSample.a); hsv_sky.zw = exp2(hsv_sky.zw * LpvBlockSkyRange) - 1.0; lpvSample = vec4(HsvToRgb(hsv_sky.xyz), hsv_sky.w); return lpvSample; } uint GetVoxelBlock(const in ivec3 voxelPos) { if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos) return BLOCK_EMPTY; return imageLoad(imgVoxelMask, voxelPos).r; } void PopulateSharedIndex(const in ivec3 imgCoordOffset, const in ivec3 workGroupOffset, const in uint i) { ivec3 pos = workGroupOffset + ivec3(i / lpvFlatten) % 10; lpvSharedData[i] = GetLpvValue(imgCoordOffset + pos); voxelSharedData[i] = GetVoxelBlock(pos); #ifdef LPV_SHADOWS lightSharedData[i] = false; for (int l = 0; l < LPV_SHADOWS_LIGHT_COUNT; l++) { float dist; ivec3 lpos; uint id; if (getLightData(texelFetch(texCloseLights, l, 0).r, dist, lpos, id)) { if (length(vec3(pos) - vec3(lpos - 15 + int(LpvSize / 2))) < 1.5 && dist < 13) { lightSharedData[i] = true; break; } } else { break; } } #endif } vec4 sampleShared(ivec3 pos, int mask_index) { int shared_index = getSharedIndex(pos + 1); float mixWeight = 1.0; uint mask = 0xFFFF; uint blockId = voxelSharedData[shared_index]; if (blockId > 0 && blockId != BLOCK_EMPTY) { uvec2 blockData = imageLoad(imgBlockData, int(blockId)).rg; mask = (blockData.g >> 24) & 0xFFFF; } return lpvSharedData[shared_index] * ((mask >> mask_index) & 1u); } vec4 mixNeighbours(const in ivec3 fragCoord, const in uint mask) { uvec3 m1 = (uvec3(mask) >> uvec3(0, 2, 4)) & uvec3(1u); uvec3 m2 = (uvec3(mask) >> uvec3(1, 3, 5)) & uvec3(1u); vec4 sX1 = sampleShared(fragCoord + ivec3(-1, 0, 0), 1) * m1.x; vec4 sX2 = sampleShared(fragCoord + ivec3( 1, 0, 0), 0) * m2.x; vec4 sY1 = sampleShared(fragCoord + ivec3( 0, -1, 0), 3) * m1.y; vec4 sY2 = sampleShared(fragCoord + ivec3( 0, 1, 0), 2) * m2.y; vec4 sZ1 = sampleShared(fragCoord + ivec3( 0, 0, -1), 5) * m1.z; vec4 sZ2 = sampleShared(fragCoord + ivec3( 0, 0, 1), 4) * m2.z; const vec4 avgFalloff = (1.0/6.0) * LpvBlockSkyFalloff.xxxy; return (sX1 + sX2 + sY1 + sY2 + sZ1 + sZ2) * avgFalloff; } #endif ////////////////////////////// VOID MAIN ////////////////////////////// void main() { #ifdef IS_LPV_ENABLED uvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize; if (any(greaterThanEqual(chunkPos, LpvSize3))) return; // Pre-populate shared-memory buffer for improved sampling performance uint i = uint(gl_LocalInvocationIndex) * 2u; if (i < 1000u) { ivec3 imgCoordOffset = ivec3(floor(cameraPosition) - floor(previousCameraPosition)); ivec3 workGroupOffset = ivec3(gl_WorkGroupID * gl_WorkGroupSize) - 1; PopulateSharedIndex(imgCoordOffset, workGroupOffset, i); PopulateSharedIndex(imgCoordOffset, workGroupOffset, i + 1u); } barrier(); // Exit early if outside LPV buffer size ivec3 imgCoord = ivec3(gl_GlobalInvocationID); if (any(greaterThanEqual(imgCoord, LpvSize3))) return; vec4 lightValue = vec4(0.0); vec3 lightColor = vec3(0.0); vec3 tintColor = vec3(1.0); float lightRange = 0.0; uint mixMask = 0xFFFF; // Decode light data for current voxel int index = getSharedIndex(ivec3(gl_LocalInvocationID) + 1); uint blockId = voxelSharedData[index]; if (blockId > 0u) { uvec2 blockData = imageLoad(imgBlockData, int(blockId)).rg; vec4 lightColorRange = unpackUnorm4x8(blockData.r); lightColor = srgbToLinear(lightColorRange.rgb); lightRange = lightColorRange.a * 255.0; vec4 tintColorMask = unpackUnorm4x8(blockData.g); tintColor = srgbToLinear(tintColorMask.rgb); mixMask = (blockData.g >> 24) & 0xFFFF; } // Mix neighbor voxel light values if (any(greaterThan(tintColor, vec3(0.0)))) { vec4 lightMixed = mixNeighbours(ivec3(gl_LocalInvocationID), mixMask); lightMixed.rgb *= tintColor; lightValue += lightMixed; } // Add light for current voxel if (lightRange > 0.0) { vec3 hsv = RgbToHsv(lightColor); hsv.z = exp2(lightRange) - 1.0; #ifdef LPV_SHADOWS if (lightSharedData[index]) hsv.z *= LPV_SHADOWS_LIGHT_MULT; #endif lightValue.rgb += HsvToRgb(hsv); } // Convert back to linear RGB space vec4 hsv_sky = vec4(RgbToHsv(lightValue.rgb), lightValue.a); hsv_sky.zw = log2(hsv_sky.zw + 1.0) / LpvBlockSkyRange; lightValue = vec4(HsvToRgb(hsv_sky.xyz), hsv_sky.w); // Store final value if (frameCounter % 2 == 0) imageStore(imgLpv1, imgCoord, lightValue); else imageStore(imgLpv2, imgCoord, lightValue); #endif } ================================================ FILE: shaders/dimensions/shadowcomp3.csh ================================================ #define RENDER_SHADOWCOMP layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; const ivec3 workGroups = ivec3(2, 1, 1); #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS uniform vec3 cameraPosition; layout(r32ui) restrict writeonly uniform uimage3D imgSortLights; #include "/lib/lpv_common.glsl" #include "/lib/lpv_blocks.glsl" #include "/lib/voxel_common.glsl" uint GetVoxelBlock(const in ivec3 voxelPos) { if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos) return BLOCK_EMPTY; return imageLoad(imgVoxelMask, voxelPos).r; } #ifdef LPV_HAND_SHADOWS uniform int heldItemId; uniform int heldItemId2; void storeHandLight(const in int itemId, inout uint[LPV_SHADOWS_LIGHT_COUNT] allData) { uint blockData = imageLoad(imgBlockData, itemId).r; if (unpackUnorm4x8(blockData).a > 0.0) { uvec3 posU = uvec3(15); // no distance for hand light uint data = posU.x << 21 | posU.y << 16 | posU.z << 11 | itemId; for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { uint minData = min(allData[i], data); if (minData == data) data = allData[i]; allData[i] = minData; } } } #endif #endif #endif void main() { #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS // total coverage of 32x32 // 8x8 blocks per group, map the 8 z blocks to 2x4, for a total coverage per group of 16x32 uvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize * uvec3(2,1,1); uvec2 xyPos = chunkPos.xy + uvec2(8) * uvec2(gl_LocalInvocationID.z / 4, gl_LocalInvocationID.z % 4) + gl_LocalInvocationID.xy; uint[LPV_SHADOWS_LIGHT_COUNT] allData; for(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { allData[i] = 4294967295u; } for (int z = 0; z < 32; z++) { ivec3 pos = ivec3(xyPos.xy, z) - 16; ivec3 posGlob = pos + int(LpvSize / 2); uint blockId = GetVoxelBlock(posGlob); if (blockId != BLOCK_EMPTY) { uint blockData = imageLoad(imgBlockData, int(blockId)).r; if (unpackUnorm4x8(blockData.r).a > 0) { uvec3 posU = uvec3(pos + 15); float dist = min(length(vec3(pos) - fract(cameraPosition)), 15.9); if (clamp(posU, uvec3(0), uvec3(31)) == posU) { uint data = uint(dist*4) << 26 | posU.x << 21 | posU.y << 16 | posU.z << 11 | blockId; for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { uint minData = min(allData[i], data); if (minData == data) data = allData[i]; allData[i] = minData; } } } } } #ifdef LPV_HAND_SHADOWS // only do this once if (xyPos.xy == uvec2(16)) { if (heldItemId > 0) { storeHandLight(heldItemId, allData); } if (heldItemId2 > 0) { storeHandLight(heldItemId2, allData); } } #endif for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { imageStore(imgSortLights, ivec3(xyPos.xy, i), uvec4(allData[i])); } #endif #endif } ================================================ FILE: shaders/dimensions/shadowcomp4.csh ================================================ #define RENDER_SHADOWCOMP layout (local_size_x = 4, local_size_y = 4, local_size_z = 2) in; const ivec3 workGroups = ivec3(1, 1, 1); #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS layout(r32ui) restrict uniform uimage3D imgSortLights; #endif #endif void main() { #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS // total coverage of 32x1 uint[LPV_SHADOWS_LIGHT_COUNT] allData; for(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { allData[i] = 4294967295u; } for (int y = 0; y < 32; y++) { for (int z = 0; z < LPV_SHADOWS_LIGHT_COUNT; z++) { ivec3 pos = ivec3(gl_LocalInvocationIndex, y, z); uint data = imageLoad(imgSortLights, pos).r; // insert for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { uint minData = min(allData[i], data); if (minData == data) data = allData[i]; allData[i] = minData; if (minData == 4294967295u) break; } } } for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { imageStore(imgSortLights, ivec3(gl_LocalInvocationIndex, 0, i), uvec4(allData[i])); } #endif #endif } ================================================ FILE: shaders/dimensions/shadowcomp5.csh ================================================ #define RENDER_SHADOWCOMP layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; const ivec3 workGroups = ivec3(1, 1, 1); #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS layout(r32ui) restrict uniform uimage3D imgSortLights; #endif #endif void main() { #ifdef IS_LPV_ENABLED #ifdef LPV_SHADOWS // total coverage of 1 uint[LPV_SHADOWS_LIGHT_COUNT] allData; for(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { allData[i] = 4294967295u; } for (int x = 0; x < 32; x++) { for (int z = 0; z < LPV_SHADOWS_LIGHT_COUNT; z++) { ivec3 pos = ivec3(x, 0, z); uint data = imageLoad(imgSortLights, pos).r; // insert for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { uint minData = min(allData[i], data); if (minData == data) data = allData[i]; allData[i] = minData; if (minData == 4294967295u) break; } /*uint minData = min(allData[z], data); if (minData == data) data = allData[z]; allData[z] = minData; if (minData == 4294967295u) break;*/ } } for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { imageStore(imgSortLights, ivec3(0, 0, i), uvec4(allData[i])); } #endif #endif } ================================================ FILE: shaders/entity.properties ================================================ entity.1601=player entity.1602=minecraft:lightning_bolt weather2:lightning_bolt ## misc stuff entity.1603=blaze entity.1604=ender_dragon wither entity.1605=end_crystal entity.1606=glow_squid entity.1607=item_frame item_display entity.1608=magma_cube entity.1609=tnt firework_rocket entity.1610=small_fireball entity.1611=spectral_arrow bigglobe:torch_arrow entity_flame ################################################ ###### SUB-SURFACE SCATTERING ################################################ ## medium sss (same as strong sss for blocks) 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 \ 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 ################################################ ###### REFLECTIVE TRANSLUCENTS ################################################ entity.1803=slime ================================================ FILE: shaders/item.properties ================================================ item.1000=soul_lantern conduit beacon sea_pickle sea_lantern glowstone redstone_torch jack_o_lantern magma_block lantern shroomlight end_rod lava_bucket 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:conquest:iron_candelabrum_1 conquest: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 item.1001=medium_amethyst_bud item.1002=large_amethyst_bud item.1003=amethyst_cluster item.1004=beacon item.1005=blaze_rod item.1006=end_rod item.1007=ochre_froglight item.1008=pearlescent_froglight item.1009=verdant_froglight item.1010=glow_berries item.1011=glow_lichen item.1012=glowstone item.1013=glowstone_dust item.1014=jack_o_lantern item.1015=lantern item.1016=lava_bucket ## ITEM_LIGHT # item.* = light item.1017=magma_block item.1018=redstone_torch item.1019=sculk_catalyst item.1020=sea_lantern betternether:willow_torch item.1021=shroomlight item.1022=soul_lantern item.1023=soul_torch item.1024=torch item.1025=firefly_bush ================================================ FILE: shaders/lang/en_us.lang ================================================ option.SHADER_VERSION_LABEL = Bliss-BSPT by WF99 prefix.SHADER_VERSION_LABEL = # profile.veryLow=§aVery Low profile.Low=§bLow profile.Medium=§9Medium profile.High=§dHigh profile.veryHigh=§cVery High screen.World=World screen.Sky=Sky Configuration option.sunPathRotation=Sun Angle suffix.sunPathRotation=° option.RAINBOW=Rainbow Type value.RAINBOW.0=OFF value.RAINBOW.1=Realistic value.RAINBOW.2=All time option.RAINBOW_STRENGTH=Rainbow Strength screen.Sky_coefficients=Sky option.Sky_Brightness=Sky Brightness option.sky_coefficientRayleighR=Rayleigh R option.sky_coefficientRayleighG=Rayleigh G option.sky_coefficientRayleighB=Rayleigh B option.sky_coefficientMieR=Mie R option.sky_coefficientMieG=Mie G option.sky_coefficientMieB=Mie B screen.Sun_and_Moon=Sun & Moon option.sunColorR=Sun R option.sunColorG=Sun G option.sunColorB=Sun B option.moonColorR=Moon R option.moonColorG=Moon G option.moonColorB=Moon B option.colortype=Color Type value.colortype.1=RGB value.colortype.2=Temperature option.Sun_temp=Sun Temperature suffix.Sun_temp=K option.Moon_temp=Moon Temperature suffix.Moon_temp=K option.sun_illuminance=Sun Illuminance suffix.sun_illuminance=LX option.moon_illuminance=Moon Illuminance suffix.moon_illuminance=LX option.MOONPHASE_BASED_MOONLIGHT=Moonphase Brightness Levels screen.Aurora=Aurora option.AURORA_BRIGHTNESS=Aurora Brightness option.AURORA_SPEED=Aurora Speed option.AURORA_SNOWY=Aurora Appears Snow Biome ONLY option.AUR_ENV_OFFSET=Aurora Light Contribution to Environment option.AURORA_UPPER_R=Aurora Upper Color R option.AURORA_UPPER_G=Aurora Upper Color G option.AURORA_UPPER_B=Aurora Upper Color B option.AURORA_LOWER_R=Aurora Lower Color R option.AURORA_LOWER_G=Aurora Lower Color G option.AURORA_LOWER_B=Aurora Lower Color B screen.Shooting_Stars=Stars & Shooting Stars option.STAR_DENSITY=Star Density option.STAR_MOVEMENT_MULT=Star Rotation Speed option.SHOOTING_STARS=Shooting Stars option.SHOOTING_STARS_SPEED=Shooting Star Speed option.SHOOTING_STARS_FREQUENCY=Shooting Star Frequency option.SHOOTING_STARS_TRAIL_VISIBILITY=Shooting Star Trail Visibility option.SHOOTING_STARS_TRAIL_LENGTH=Shooting Star Trail Length option.SHOOTING_STARS_TRAIL_WIDTH=Shooting Star Trail Width screen.Weather=Weather option.RAIN_VISIBILITY=Rain/Snow Visibility option.Rain_coverage=Rain Cloud Coverage option.WATER_RIPPLES=Water Ripples option.GROUND_RIPPLES=Ground Ripples screen.Rain_Fog= Rain Fog option.RainFog_amount=Rain Fog Density option.RAINFOG_R=Rain Fog Color R option.RAINFOG_G=Rain Fog Color G option.RAINFOG_B=Rain Fog Color B screen.DAILY_WEATHER=Daily Weather Settings option.Daily_Weather=Daily Weather option.CHOOSE_RANDOM_WEATHER_PROFILE=Random Weather Profile screen.DAY0_WEATHER = Day 0 Weather Profile option.DAY0_l0_coverage = Small Cumulus Coverage option.DAY0_l0_density = Small Cumulus Density option.DAY0_l1_coverage = Large Cumulus Coverage option.DAY0_l1_density = Large Cumulus Density option.DAY0_l2_coverage = Altostratus Clouds Coverage option.DAY0_l2_density = Altostratus Clouds Density option.DAY0_ufog_density = Uniform Fog Density option.DAY0_cfog_density = Cloudy Fog Density screen.DAY1_WEATHER = Day 1 Weather Profile option.DAY1_l0_coverage = Small Cumulus Coverage option.DAY1_l0_density = Small Cumulus Density option.DAY1_l1_coverage = Large Cumulus Coverage option.DAY1_l1_density = Large Cumulus Density option.DAY1_l2_coverage = Altostratus Clouds Coverage option.DAY1_l2_density = Altostratus Clouds Density option.DAY1_ufog_density = Uniform Fog Density option.DAY1_cfog_density = Cloudy Fog Density screen.DAY2_WEATHER = Day 2 Weather Profile option.DAY2_l0_coverage = Small Cumulus Coverage option.DAY2_l0_density = Small Cumulus Density option.DAY2_l1_coverage = Large Cumulus Coverage option.DAY2_l1_density = Large Cumulus Density option.DAY2_l2_coverage = Altostratus Clouds Coverage option.DAY2_l2_density = Altostratus Clouds Density option.DAY2_ufog_density = Uniform Fog Density option.DAY2_cfog_density = Cloudy Fog Density screen.DAY3_WEATHER = Day 3 Weather Profile option.DAY3_l0_coverage = Small Cumulus Coverage option.DAY3_l0_density = Small Cumulus Density option.DAY3_l1_coverage = Large Cumulus Coverage option.DAY3_l1_density = Large Cumulus Density option.DAY3_l2_coverage = Altostratus Clouds Coverage option.DAY3_l2_density = Altostratus Clouds Density option.DAY3_ufog_density = Uniform Fog Density option.DAY3_cfog_density = Cloudy Fog Density screen.DAY4_WEATHER = Day 4 Weather Profile option.DAY4_l0_coverage = Small Cumulus Coverage option.DAY4_l0_density = Small Cumulus Density option.DAY4_l1_coverage = Large Cumulus Coverage option.DAY4_l1_density = Large Cumulus Density option.DAY4_l2_coverage = Altostratus Clouds Coverage option.DAY4_l2_density = Altostratus Clouds Density option.DAY4_ufog_density = Uniform Fog Density option.DAY4_cfog_density = Cloudy Fog Density screen.DAY5_WEATHER = Day 5 Weather Profile option.DAY5_l0_coverage = Small Cumulus Coverage option.DAY5_l0_density = Small Cumulus Density option.DAY5_l1_coverage = Large Cumulus Coverage option.DAY5_l1_density = Large Cumulus Density option.DAY5_l2_coverage = Altostratus Clouds Coverage option.DAY5_l2_density = Altostratus Clouds Density option.DAY5_ufog_density = Uniform Fog Density option.DAY5_cfog_density = Cloudy Fog Density screen.DAY6_WEATHER = Day 6 Weather Profile option.DAY6_l0_coverage = Small Cumulus Coverage option.DAY6_l0_density = Small Cumulus Density option.DAY6_l1_coverage = Large Cumulus Coverage option.DAY6_l1_density = Large Cumulus Density option.DAY6_l2_coverage = Altostratus Clouds Coverage option.DAY6_l2_density = Altostratus Clouds Density option.DAY6_ufog_density = Uniform Fog Density option.DAY6_cfog_density = Cloudy Fog Density screen.DAY7_WEATHER = Day 7 Weather Profile option.DAY7_l0_coverage = Small Cumulus Coverage option.DAY7_l0_density = Small Cumulus Density option.DAY7_l1_coverage = Large Cumulus Coverage option.DAY7_l1_density = Large Cumulus Density option.DAY7_l2_coverage = Altostratus Clouds Coverage option.DAY7_l2_density = Altostratus Clouds Density option.DAY7_ufog_density = Uniform Fog Density option.DAY7_cfog_density = Cloudy Fog Density screen.DAY8_WEATHER = Day 8 Weather Profile option.DAY8_l0_coverage = Small Cumulus Coverage option.DAY8_l0_density = Small Cumulus Density option.DAY8_l1_coverage = Large Cumulus Coverage option.DAY8_l1_density = Large Cumulus Density option.DAY8_l2_coverage = Altostratus Clouds Coverage option.DAY8_l2_density = Altostratus Clouds Density option.DAY8_ufog_density = Uniform Fog Density option.DAY8_cfog_density = Cloudy Fog Density screen.DAY9_WEATHER = Day 9 Weather Profile option.DAY9_l0_coverage = Small Cumulus Coverage option.DAY9_l0_density = Small Cumulus Density option.DAY9_l1_coverage = Large Cumulus Coverage option.DAY9_l1_density = Large Cumulus Density option.DAY9_l2_coverage = Altostratus Clouds Coverage option.DAY9_l2_density = Altostratus Clouds Density option.DAY9_ufog_density = Uniform Fog Density option.DAY9_cfog_density = Cloudy Fog Density option.PER_BIOME_ENVIRONMENT=Per Biome Environments screen.Biome=Biome Settings screen.SWAMP=Swamp and Its Variants option.SWAMP_ENV=Swamp Environment option.SWAMP_UNIFORM_DENSITY=Uniform Fog Density option.SWAMP_CLOUDY_DENSITY=Cloudy Fog Density option.SWAMP_R=Red Amount option.SWAMP_G=Green Amount option.SWAMP_B=Blue Amount screen.JUNGLE=Jungle and Its Variants option.JUNGLE_ENV=Jungle Environment option.JUNGLE_UNIFORM_DENSITY=Uniform Fog Density option.JUNGLE_CLOUDY_DENSITY=Cloudy Fog Density option.JUNGLE_R=Red Amount option.JUNGLE_G=Green Amount option.JUNGLE_B=Blue Amount screen.DARKFOREST=Black Forest and Its Variants option.DARKFOREST_ENV=Black Forest Environment option.DARKFOREST_UNIFORM_DENSITY=Uniform Fog Density option.DARKFOREST_CLOUDY_DENSITY=Cloudy Fog Density option.DARKFOREST_R=Red Amount option.DARKFOREST_G=Green Amount option.DARKFOREST_B=Blue Amount screen.SNOWY=Snowy Biomes option.SNOWY_ENV=Snowy Biomes Environment option.SNOWY_UNIFORM_DENSITY=Uniform Fog Density option.SNOWY_CLOUDY_DENSITY=Cloudy Fog Density option.SNOWY_R=Red Amount option.SNOWY_G=Green Amount option.SNOWY_B=Blue Amount screen.DRY=Dry Biomes option.DRY_ENV=Dry Biomes Environment option.DRY_UNIFORM_DENSITY=Uniform Fog Density option.DRY_CLOUDY_DENSITY=Cloudy Fog Density option.DRY_R=Red Amount option.DRY_G=Green Amount option.DRY_B=Blue Amount screen.Waving_Stuff=Waving Stuff option.WAVY_PLANTS=Waving Plants option.RP_MODEL_FIX=Disable 3D Plants Waving option.WAVY_STRENGTH=Waving Strength option.WAVY_SPEED=Waving Speed option.SKY_GROUND=Atmosphere ground screen.Ambient_Light_Shadow=Ambient Light and Shadow Settings screen.Torch_Settings=Torch Settings option.TORCH_AMOUNT=Torch Light Brightness option.TORCH_R=Red Amount option.TORCH_G=Green Amount option.TORCH_B=Blue Amount screen.Ambient_Colors=Ambient Light Color option.ambient_brightness=Ambient Light Brightness option.MIN_LIGHT_AMOUNT=Minimum Light Brightness option.AmbientLight_R=Red Amount option.AmbientLight_G=Green Amount option.AmbientLight_B=Blue Amount option.indirect_effect=Indirect Lighting value.indirect_effect.0=Vanilla AO value.indirect_effect.1=SSAO value.indirect_effect.2=GTAO value.indirect_effect.3=RTAO option.indirect_RTGI=Ray-Traced Global Illumination value.indirect_RTGI.0=OFF value.indirect_RTGI.1=SSGI value.indirect_RTGI.2=HQ SSGI screen.AO=AO Settings option.AO_Strength=AO Multiplier option.AO_in_sunlight=AO In Sunlight screen.GI=GI Settings option.GI_Strength=GI Multiplier option.RAY_COUNT=Ray Count option.RT_ITERATION=Ray Iteration option.UseQuarterResDepth=Use Quarter Resolution Depth screen.HAND_HELD_LIGHT=Hand Held Light/Flashlight Settings option.Hand_Held_lights=Hand Held Light option.HANDHELD_LIGHT_RANGE=Hand Held Light Range option.FLASHLIGHT=Flashlight screen.FLASHLIGHT_SETTING=Flashlight Settings option.FLASHLIGHT_RANGE=Flashlight Range option.FLASHLIGHT_BRIGHTNESS_MULT=Flashlight Brightness option.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT=Flashlight Brightness Falloff option.FLASHLIGHT_SPECULAR=Flashlight Specular option.FLASHLIGHT_SIZE=Flashlight Size option.FLASHLIGHT_R=Red Amount option.FLASHLIGHT_G=Green Amount option.FLASHLIGHT_B=Blue Amount option.FLASHLIGHT_BOUNCED_INDIRECT=Flashlight Light Bounce option.FLASHLIGHT_FOG_ILLUMINATION=Flashlight Fog Illumination screen.Shadows=Shadow Settings option.TRANSLUCENT_COLORED_SHADOWS=Translucent Colored Shadows option.SCREENSPACE_CONTACT_SHADOWS=Screespace Shadows option.RENDER_ENTITY_SHADOWS=Shadows for Entities option.RENDER_PLAYER_SHADOWS=Shadows for the Player option.shadowMapResolution=Shadow Resolution option.shadowDistance=Shadow Distance value.shadowDistance.16 = 1 Chunk value.shadowDistance.32 = 2 Chunks value.shadowDistance.48 = 3 Chunks value.shadowDistance.64 = 4 Chunks value.shadowDistance.80 = 5 Chunks value.shadowDistance.96 = 6 Chunks value.shadowDistance.128 = 8 Chunks value.shadowDistance.160 = 10 Chunks value.shadowDistance.192 = 12 Chunks value.shadowDistance.256 = 16 Chunks value.shadowDistance.512 = 32 Chunks value.shadowDistance.1024 = 64 Chunks value.shadowDistance.2048 = 128 Chunks value.shadowDistance.4096 = 256 Chunks value.shadowDistance.8192 = 512 Chunks screen.Filtering=Shadow Filtering Settings option.BASIC_SHADOW_FILTER=Basic Shadow Filter option.SHADOW_FILTER_SAMPLE_COUNT=Basic Shadow Filter Samples option.Min_Shadow_Filter_Radius=Minimum Shadow filter Radius option.Variable_Penumbra_Shadows=Variable Penumbra Shadows option.VPS_Search_Samples=VPS Filter Samples option.Max_Shadow_Filter_Radius=Maximum Shadow Filter Radius option.Max_Filter_Depth=Sun Size Factor screen.LPV=FloodFill - §cIRIS REQUIRED§r option.LPV_ENABLED=Enabled option.LPV_SIZE=Size value.LPV_SIZE.6=Small [64] value.LPV_SIZE.7=Medium [128] value.LPV_SIZE.8=Large [256] option.LPV_BLOCKLIGHT_SCALE=LPV Range option.LPV_SATURATION=Light Saturation suffix.LPV_SATURATION=% option.LPV_TINT_SATURATION=Tint Saturation suffix.LPV_TINT_SATURATION=% option.LPV_NORMAL_STRENGTH=LPV Normal Strength suffix.LPV_NORMAL_STRENGTH=% value.LPV_NORMAL_STRENGTH.0=OFF option.LPV_ENTITY_LIGHTS=Entity Lights option.LPV_REDSTONE_LIGHTS=Redstone Lights option.LPV_COLORED_CANDLES=Colored Candles option.LPV_NOSHADOW_HACK=Iris <= 1.7.0 Fix option.LPV_VL_FOG_ILLUMINATION=Fog Light Propagation option.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=Fog Light Propagation Brightness suffix.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=% option.VANILLA_LIGHTMAP_MASK=Vanilla LPV Lighting screen.BLOCK_SHADOWS=Block Light Shadow Settings option.LPV_SHADOWS=LPV Shadow option.LPV_SHADOWS_LIGHT_COUNT=LPV Shadow Light Intensity option.LPV_COLOR_SHADOWS=LPV Colored Shadow option.LPV_SHADOWS_LIGHT_MULT=LPV Light Mult option.LPV_HAND_SHADOWS=LPV Hand Shadow screen.Fog=Fog Settings option.VL_RENDER_RESOLUTION=Fog Resolution Scaling option.VL_SAMPLES=Fog Samples option.BLOOMY_FOG=Bloomy Fog Multiplier option.Haze_amount=Atmospheric Haze Density option.BorderFog=Chunk Border Fog option.FOG_START_HEIGHT=Fog Start Heigt screen.Fog_Color=Fog Color option.fog_coefficientMieR=Mie R option.fog_coefficientMieG=MieG option.fog_coefficientMieB=MieB screen.TOD_fog = Time Of Day Fog option.TOD_Fog_mult = Fog Density Multiplier option.Morning_Uniform_Fog = Morning Fog Density option.Noon_Uniform_Fog = Noon Fog Density option.Evening_Uniform_Fog = Evening Fog Density option.Night_Uniform_Fog = Night Fog Density option.Morning_Cloudy_Fog = Cloudy Morning Fog Density option.Noon_Cloudy_Fog = Cloudy Noon Fog Density option.Evening_Cloudy_Fog = Cloudy Evening Fog Density option.Night_Cloudy_Fog = Cloudy Night Fog Density screen.Cave_Fog = Cave Fog option.Cave_Fog = Cave Fog option.CaveFogFallOff = Fog Falloff option.CaveFogColor_R = Fog R option.CaveFogColor_G = Fog G option.CaveFogColor_B = Fog B screen.Nether_Fog = Nether Fog option.NETHER_PLUME_DENSITY = Nether Smoke Density option.NETHER_PLUME_R = Nether Plume R option.NETHER_PLUME_G = Nether Plume G option.NETHER_PLUME_B = Nether Plume B screen.End_Fog = End Fog option.END_STORM_DENSITY = End Storm Density option.END_FOG_R = End Fog R option.END_FOG_G = End Fog G option.END_FOG_B = End Fog B option.END_VORTEX_R = End Vortex R option.END_VORTEX_G = End Vortex G option.END_VORTEX_B = End Vortex B option.END_LIGHTNING_R = End Lightning Offset R option.END_LIGHTNING_G = End Lightning Offset G option.END_LIGHTNING_B = End Lightning Offset B screen.Clouds = Cloud Settings option.VOLUMETRIC_CLOUDS = Volumetric Clouds option.CLOUDS_QUALITY = Cloud Resolution Scaling option.CLOUDS_SHADOWS = Cloud Shadows option.CLOUD_SHADOW_STRENGTH = Cloud Shadow Multiplier option.HQ_CLOUDS = High Quality Cloud option.ERODE_AMOUNT = Cloud Erosion Amount option.Cloud_Speed = Cloud Speed screen.S_Cumulus_Cloud = Small Cumulus Cloud Settings screen.L_Cumulus_Cloud = Large Cumulus Cloud Settings screen.Altostratus_Cloud = Altostratus Cloud Settings option.CloudLayer0=Small Cumulus Cloud option.CloudLayer0_coverage=Coverage option.CloudLayer0_density=Density option.CloudLayer0_height=Height option.CloudLayer0_tallness=Tallness option.CloudLayer0_scale=Scale option.CloudLayer1=Large Cumulus Cloud option.CloudLayer1_coverage=Coverage option.CloudLayer1_density=Density option.CloudLayer1_height=Height option.CloudLayer1_tallness=Tallness option.CloudLayer1_scale=Scale option.CloudLayer2=Altostratus Cloud option.CloudLayer2_coverage=Coverage option.CloudLayer2_density=Density option.CloudLayer2_height=Height option.CloudLayer2_scale=Scale screen.Climate = Climate Settings option.Seasons = Seasonal Colors option.Season_Length = Season Length (In Days) option.Start_Season = Starting Season value.Start_Season.0 = Summer (Default) value.Start_Season.1 = Fall value.Start_Season.2 = Winter value.Start_Season.3 = Spring screen.Summer_colors = Summer Colors option.Summer_R = Red Amount option.Summer_G = Green Amount option.Summer_B = Blue Amount option.Summer_Leaf_R = Red Amount (for leaves) option.Summer_Leaf_G = Green Amount (for leaves) option.Summer_Leaf_B = Blue Amount (for leaves) screen.Fall_colors = Fall Colors option.Fall_R = Red Amount option.Fall_G = Green Amount option.Fall_B = Blue Amount option.Fall_Leaf_R = Red Amount (for leaves) option.Fall_Leaf_G = Green Amount (for leaves) option.Fall_Leaf_B = Blue Amount (for leaves) screen.Winter_colors = Winter Colors option.Winter_R = Red Amount option.Winter_G = Green Amount option.Winter_B = Blue Amount option.Winter_Leaf_R = Red Amount (for leaves) option.Winter_Leaf_G = Green Amount (for leaves) option.Winter_Leaf_B = Blue Amount (for leaves) screen.Spring_colors = Spring Colors option.Spring_R = Red Amount option.Spring_G = Green Amount option.Spring_B = Blue Amount option.Spring_Leaf_R = Red Amount (for leaves) option.Spring_Leaf_G = Green Amount (for leaves) option.Spring_Leaf_B = Blue Amount (for leaves) screen.Water = Water Settings option.rayMarchSampleCount = RayMarch Sample Count option.WATER_SUN_SPECULAR = Sun/Moon Reflections option.FAKE_REFRACTION_EFFECT_AMOUNT = Refraction In Water/Glass value.FAKE_REFRACTION_AMOUNT.0 = OFF value.FAKE_REFRACTION_AMOUNT.1 = 0.25x value.FAKE_REFRACTION_AMOUNT.2 = 0.50x value.FAKE_REFRACTION_AMOUNT.3 = 0.75x value.FAKE_REFRACTION_AMOUNT.4 = 1.00x value.FAKE_REFRACTION_AMOUNT.5 = 1.25x value.FAKE_REFRACTION_AMOUNT.6 = 1.50x value.FAKE_REFRACTION_AMOUNT.7 = 1.75x value.FAKE_REFRACTION_AMOUNT.8 = 2.00x option.FAKE_DISPERSION_EFFECT_AMOUNT = Dispersion In Water/Glass value.FAKE_DISPERSION_AMOUNT.0 = OFF value.FAKE_DISPERSION_AMOUNT.1 = 0.25x value.FAKE_DISPERSION_AMOUNT.2 = 0.50x value.FAKE_DISPERSION_AMOUNT.3 = 0.75x value.FAKE_DISPERSION_AMOUNT.4 = 1.00x value.FAKE_DISPERSION_AMOUNT.5 = 1.25x value.FAKE_DISPERSION_AMOUNT.6 = 1.50x value.FAKE_DISPERSION_AMOUNT.7 = 1.75x value.FAKE_DISPERSION_AMOUNT.8 = 2.00x option.REFRACTION_SMUDGE_AMOUNT = Refraction Smudge value.REFRACTION_SMUDGE_AMOUNT.0 = OFF value.REFRACTION_SMUDGE_AMOUNT.1 = 0.25x value.REFRACTION_SMUDGE_AMOUNT.2 = 0.50x value.REFRACTION_SMUDGE_AMOUNT.3 = 0.75x value.REFRACTION_SMUDGE_AMOUNT.4 = 1.00x value.REFRACTION_SMUDGE_AMOUNT.5 = 1.25x value.REFRACTION_SMUDGE_AMOUNT.6 = 1.50x value.REFRACTION_SMUDGE_AMOUNT.7 = 1.75x value.REFRACTION_SMUDGE_AMOUNT.8 = 2.00x option.Dirt_Amount = Dirt Amount 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 option.WATER_DISTORTION_AMOUNT = Water Distortion Amount option.WATER_WAVE_SPEED=Wave Speed option.Vanilla_like_water=Vanilla Water Texture screen.Water_fog_color = Water Fog Settings option.Dirt_Scatter_R = Scatter Red (dirt) option.Dirt_Scatter_G = Scatter Green (dirt) option.Dirt_Scatter_B = Scatter Blue (dirt) option.Dirt_Absorb_R = Absorb Red (dirt) option.Dirt_Absorb_G = Absorb Green (dirt) option.Dirt_Absorb_B = Absorb Blue (dirt) option.Water_Absorb_R = Absorb Red (water) option.Water_Absorb_G = Absorb Green (water) option.Water_Absorb_B = Absorb Blue (water) option.PLANET_CURVATURE = Planet Curvation option.CURVATURE_AMOUNT = Curvation Amount screen.Post_Processing = Post Processing screen.COLOR_GRADING = Color Grading option.LUMINANCE_CURVE = Tone Curve option.LOWER_CURVE = Lower Curve option.UPPER_CURVE = Upper Curve option.COLOR_GRADING_ENABLED=Color Grading option.SHADOWS_GRADE_R = Shadows §cRed option.SHADOWS_GRADE_G = Shadows §aGreen option.SHADOWS_GRADE_B = Shadows §9Blue option.SHADOWS_GRADE_MUL = Shadows Brightness option.MIDS_GRADE_R = Midtones §cRed option.MIDS_GRADE_G = Midtones §aGreen option.MIDS_GRADE_B = Midtones §9Blue option.MIDS_GRADE_MUL = Midtones Brightness option.HIGHLIGHTS_GRADE_R = Highlights §cRed option.HIGHLIGHTS_GRADE_G = Highlights §aGreen option.HIGHLIGHTS_GRADE_B = Highlights §9Blue option.HIGHLIGHTS_GRADE_MUL = Highlights Brightness screen.Exposure = Exposure Settings screen.DepthOfField = Depth Of Field Settings screen.Purkinje_effect = Purkinje Effect Settings option.Purkinje_strength = Purkinje Effect Blending Amount value.Purkinje_strength.0 = OFF suffix.Purkinje_strength =% option.SHARPENING = Sharpening Amount option.BLOOM_STRENGTH = Bloom Multiplier screen.TAA_OPTIONS = Anti-Aliasing Settings option.SCREENSHOT_MODE = Screenshot Mode option.TAA = TAA option.RESPONSIVE_TAA = Responsive TAA §a(TURN THIS OFF WITH TEMPORAL UPSCALING) option.BLEND_FACTOR = Blend Factor option.TAA_UPSCALING = Temporal Upscaling option.SCALE_FACTOR = Scale Factor option.CAMERA_GRIDLINES = Camera Gridlines option.MOTION_BLUR = Motion Blur option.MOTION_BLUR_STRENGTH = Motion Blur Strength option.CHROMATIC_ABERRATION = Chromatic Aberration option.CHROMATIC_ABERRATION_STRENGTH = Chromatic Aberration Strength option.VIGNETTE = Vignette option.VIGNETTE_STRENGTH = Vignette Strength screen.Resource_Pack_Support=Resource Pack Support screen.Reflections=Specular Reflections option.DEFERRED_SPECULAR=Deferred Specular option.FORWARD_SPECULAR=Forward Specular option.DEFERRED_ENVIRONMENT_REFLECTION=Deferred Environment Reflection option.FORWARD_ENVIRONMENT_REFLECTION=Forward Environment Reflection option.DEFERRED_BACKGROUND_REFLECTION=Deferred Background Reflection option.FORWARD_BACKGROUND_REFLECTION=Forward Background Reflection option.DEFERRED_ROUGH_REFLECTION=Deferred Roughness Reflection option.FORWARD_ROUGH_REFLECTION=Forward Roughness Reflection option.ROUGHNESS_THRESHOLD=Roughness Threshold option.SUN_SPECULAR_MULT=Sun Specular Strength option.MATERIAL_WETNESS_TYPE=Material Wetness Reflection value.MATERIAL_WETNESS_TYPE.0=Adaptive value.MATERIAL_WETNESS_TYPE.1=Unified screen.Emissives = Emissives option.Emissive_Brightness = Emission Multiplier option.Emissive_Curve = Emission Curve option.EMISSIVE_TYPE = Mode value.EMISSIVE_TYPE.0 = No emission value.EMISSIVE_TYPE.1 = Hardcoded only value.EMISSIVE_TYPE.2 = Hardcoded + Lab Emission value.EMISSIVE_TYPE.3 = Lab Emission only screen.Subsurface_Scattering = Subsurface Scattering option.LabSSS_Curve = LabSSS Curve option.sss_density_multiplier=SSS Density Multiplier option.sss_absorbance_multiplier=SSS Absorbance Multiplier option.MISC_BLOCK_SSS = SSS for Specific Blocks option.MOB_SSS = SSS for MOBs option.Ambient_SSS = SSS from the Sky option.ambientsss_brightness = Sky SSS Brightness option.SSS_TYPE = Mode value.SSS_TYPE.0 = None value.SSS_TYPE.1 = Hardcoded only value.SSS_TYPE.2 = Hardcoded + LabSSS value.SSS_TYPE.3 = LabSSS only screen.POM=Parallax Occlusion Mapping / POM option.POM = Parallax Occlusion Mapping option.MAX_ITERATIONS=Quality option.POM_DEPTH=Depth option.MAX_DIST=Maximum Distance option.Adaptive_Step_length=Dynamic Quality screen.Porosity = Porosity / Puddles option.Porosity = Porosity option.Puddles = Puddles option.Puddle_Size = Puddle Size Multiplier option.MATERIAL_AO = Material Ambient Occlusion option.MATERIAL_NORMAL_STRENGTH = Material Normal Strength option.RESOURCEPACK_SKY = Resource Pack Sky value.RESOURCEPACK_SKY.0 = Full Shader Sky value.RESOURCEPACK_SKY.1 = Sky + Shader Sun/Moon value.RESOURCEPACK_SKY.2 = Full Sky value.RESOURCEPACK_SKY.3 = Shader Sky + RP Sun/Moon option.ISOLATE_RESOURCEPACK_SKY=Isolate Resource Pack Sky option.DOF_QUALITY=Depth Of Field value.DOF_QUALITY.-1=Off value.DOF_QUALITY.0=Hexagonal value.DOF_QUALITY.1=Low value.DOF_QUALITY.2=Medium value.DOF_QUALITY.3=High value.DOF_QUALITY.4=Ultra value.DOF_QUALITY.5=Jitter option.MANUAL_FOCUS=Focus option.DOF_ANAMORPHIC_RATIO=Anamorphic Ratio value.MANUAL_FOCUS.-2=Autofocus value.MANUAL_FOCUS.-1=Brightness Slider option.DOF_DISPERSION_MULT=DoF Dispersion Strength option.focal=Focal option.aperture=Aperture option.DoF_Adaptation_Speed=DoF Adaptation Speed option.FAR_BLUR_ONLY=Only Bluring Faraway option.REMOVE_HAND_BLUR=Remove Hand Blur screen.JITTER_DOF=Jitter DOF Settings option.JITTER_STRENGTH=Jitter Strength option.FOCUS_LASER_COLOR=Focus value.FOCUS_LASER_COLOR.0=Red value.FOCUS_LASER_COLOR.1=Green value.FOCUS_LASER_COLOR.2=Blue value.FOCUS_LASER_COLOR.3=Pink value.FOCUS_LASER_COLOR.4=Yellow value.FOCUS_LASER_COLOR.5=White screen.Effects=Effect Settings screen.Emissive_Ore = Emissive Ore Settings option.EMISSIVE_ORE = Emissive Ore option.EMISSIVE_ORE_RANGE = Emissive Ore Lit Range option.EMISSIVE_ORE_R = Emissive Ore R option.EMISSIVE_ORE_G = Emissive Ore G option.EMISSIVE_ORE_B = Emissive Ore B screen.GAMEPLAY_EFFECTS=Gameplay Effect Settings option.MOTION_AMOUNT=Motion Amount option.DAMAGE_TAKEN_EFFECT=Damage Taken Effect option.LOW_HEALTH_EFFECT=Low Health Effect option.LOW_HEALTH_EFFECT_START=HP for Low Health option.CRITICALLY_LOW_HEALTH_EFFECT_START=HP for Critical Health screen.LENS_EFFECTS=Lens Effect Settings option.DISTORT_EFFECT_AMOUNT=Distortion Amount option.WATER_ON_CAMERA_EFFECT=Water on Camera Effect option.ON_FIRE_DISTORT_EFFECT=Fire Distortion Effect option.RAIN_ON_CAMERA_EFFECT=Rain on Camera Effect option.LENS_FLARE = Lens Flare option.LENS_FLARE_STRENGTH = Lens Flare Strength option.FISHEYE_EFFECT = Fish Eye Lens option.FISHEYE_STRENGTH = Fish Eye Lens Aberration Strength screen.Aerochrome_Mode=Aerochrome Mode Settings option.AEROCHROME_MODE=Aerochrome Mode option.AEROCHROME_PINKNESS=Aerochrome Red:Pink Ratio option.AEROCHROME_WOOL_ENABLED=Aerochrome Wool option.FANCY_END_PORTAL=Fancy End Portal screen.COLOR=Tone-Map / Color Grading Settings option.TONEMAP=Tone-Map option.USE_ACES_COLORSPACE_APPROXIMATION=ACES Colorspace Approximation option.AGX_LOOK=Alternative Preset of AGX value.AGX_LOOK.0=Standard value.AGX_LOOK.1=WF99 value.AGX_LOOK.2=Golden value.AGX_LOOK.3=Punchy option.SATURATION=Saturation option.CROSSTALK=Crosstalk option.AUTO_EXPOSURE=Auto Exposure option.EXPOSURE_MULTIPLIER=Exposure Multiplier option.Exposure_Speed=Exposure Speed option.Manual_exposure_value=Manual Exposure Value option.EXPOSURE_DARKENING=Exposure Darkening option.EXPOSURE_BRIGHTENING=Exposure Brightening option.Purkinje_strength=Purkinje Strength option.Purkinje_R=Purkinje R option.Purkinje_G=Purkinje G option.Purkinje_B=Purkinje B option.Purkinje_Multiplier=Purkinje Multiplier screen.Misc_Settings = Misc Settings screen.EXPERIMENTAL_STUFF=Experimental Settings option.CLOUDS_INTERSECT_TERRAIN=Cloud Intersect Terrain option.BLOOMY_PARTICLES=Bloomy Particals option.BIOME_TINT_WATER=Biome Tint Water option.HYPER_DETAILED_WAVES=Hyper Detailed Wave option.OLD_BLOOM=Old Bloom option.OLD_INDIRECT_SSS=Old SSS option.PLANET_GROUND_BRIGHTNESS=Planet Ground Brightness option.LIT_PARTICLE_BRIGHTNESS=Lit Particle Brightness option.WATER_CAUSTICS_BRIGHTNESS=Water Caustics Brightness option.WATER_CAUSTICS_STRENGTH=Water Caustics Strength option.OLD_CAVE_DETECTION=Old Cave Detection option.FORCE_TRANSLUCENT_GLASS=Force Translucent Glass option.LARGE_WAVE_DISPLACEMENT=Large Wave Displacement option.LIGHTLEAKFIX_MODE=Light Leak Fix Mode option.LIGHTNING_FLASH=Lightning Flash Fix option.Texture_MipMap_Bias=Texture Mipmap Bias option.DEBUG_VIEW=DEBUG View value.DEBUG_VIEW.debug_OFF=OFF value.DEBUG_VIEW.debug_SHADOWMAP=Shadowmap value.DEBUG_VIEW.debug_NORMALS=Normal value.DEBUG_VIEW.debug_SPECULAR=Specular value.DEBUG_VIEW.debug_INDIRECT=Indirect Lighting value.DEBUG_VIEW.debug_DIRECT=Direct Lighting value.DEBUG_VIEW.debug_VIEW_POSITION=ViewPos value.DEBUG_VIEW.debug_DH_WATER_BLENDING=DH Water Blending value.DEBUG_VIEW.debug_FILTERED_STUFF=Filtered Stuff value.DEBUG_VIEW.debug_TEMPORAL_REPROJECTION=Temporal Reprojection value.DEBUG_VIEW.debug_LIGHTS=Light option.display_LUT=Display LUT option.WhiteWorld=White World option.SSS_view=SSS View option.ambientLight_only=Ambient Light Only option.DISABLE_ENCHANT_GLINT=Disable Enchant Glint option.DISABLE_VANILLA_EMISSIVES=Disable Vanilla Emissives option.PARTICLE_RENDERING_FIX=Particle Rendering Fix option.TRANSLUCENT_ENTITIES=Translucent Entities option.LIGHTING_EFFECTS_BLUR_FILTER=Lighting Effects Blur Filter screen.selection_box_outline=Selection Box Outline option.SELECT_BOX=Selection Box option.SELECT_BOX_COL_R=Selection Box R option.SELECT_BOX_COL_G=Selection Box G option.SELECT_BOX_COL_B=Selection Box B screen.SCENE_CONTROLLER=Scene Controller option.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS = Custom Diffuse Colors screen.DIFFUSE_LIGHTING_COLORS=Diffuse Color Settings option.DIRECTLIGHT_DIFFUSE_R = Sun R option.DIRECTLIGHT_DIFFUSE_G = Sun G option.DIRECTLIGHT_DIFFUSE_B = Sun B option.INDIRECTLIGHT_DIFFUSE_R = Ambient R option.INDIRECTLIGHT_DIFFUSE_G = Ambient G option.INDIRECTLIGHT_DIFFUSE_B = Ambient B option.USE_CUSTOM_CLOUD_LIGHTING_COLORS = Custom Cloud Colors screen.CLOUD_LIGHTING_COLORS=Cloud Color Settings option.DIRECTLIGHT_CLOUDS_R = Sun R option.DIRECTLIGHT_CLOUDS_G = Sun G option.DIRECTLIGHT_CLOUDS_B = Sun B option.INDIRECTLIGHT_CLOUDS_R = Ambient R option.INDIRECTLIGHT_CLOUDS_G = Ambient G option.INDIRECTLIGHT_CLOUDS_B = Ambient B option.USE_CUSTOM_FOG_LIGHTING_COLORS = Custom Fog Colors screen.FOG_LIGHTING_COLORS=Fog Color Settings option.DIRECTLIGHT_FOG_R = Sun R option.DIRECTLIGHT_FOG_G = Sun G option.DIRECTLIGHT_FOG_B = Sun B option.INDIRECTLIGHT_FOG_R = Ambient R option.INDIRECTLIGHT_FOG_G = Ambient G option.INDIRECTLIGHT_FOG_B = Ambient B option.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS = Custom Atmosphere Ground Color screen.SKY_GROUND_LIGHTING_COLORS=Atmosphere Ground Color Settings option.SKY_GROUND_R = Ground R option.SKY_GROUND_G = Ground G option.SKY_GROUND_B = Ground B screen.Mod_support = Settings for Supported Mods screen.DISTANT_HORIZONS_SETTINGS = §2Distant Horizons §fSettings option.DH_OVERDRAW_PREVENTION = Overdraw Prevention option.OVERDRAW_MAX_DISTANCE = Max Distance for Overdraw Prevention value.OVERDRAW_MAX_DISTANCE.0 = Unlimited value.OVERDRAW_MAX_DISTANCE.32 = 2 Chunks value.OVERDRAW_MAX_DISTANCE.48 = 3 Chunks value.OVERDRAW_MAX_DISTANCE.64 = 4 Chunks value.OVERDRAW_MAX_DISTANCE.80 = 5 Chunks value.OVERDRAW_MAX_DISTANCE.96 = 6 Chunks value.OVERDRAW_MAX_DISTANCE.112 = 7 Chunks value.OVERDRAW_MAX_DISTANCE.128 = 8 Chunks value.OVERDRAW_MAX_DISTANCE.144 = 9 Chunks value.OVERDRAW_MAX_DISTANCE.160 = 10 Chunks value.OVERDRAW_MAX_DISTANCE.176 = 11 Chunks value.OVERDRAW_MAX_DISTANCE.192 = 12 Chunks value.OVERDRAW_MAX_DISTANCE.208 = 13 Chunks value.OVERDRAW_MAX_DISTANCE.224 = 14 Chunks value.OVERDRAW_MAX_DISTANCE.240 = 15 Chunks value.OVERDRAW_MAX_DISTANCE.256 = 16 Chunks option.DH_AMBIENT_OCCLUSION=Ambient Occlusion on LOD Chunks option.DH_SUBSURFACE_SCATTERING=Subsurface Scattering on LOD Chunks option.DH_SCREENSPACE_REFLECTIONS=Screen Space Reflections on LOD Chunks option.DH_TAA_JITTER=DH TAA Jitter option.DH_NOISE_TEXTURE=DH Noise Texture option.NOISE_RESOLUTION=DH Noise Resolution option.NOISE_INTENSITY=DH Noise Intensity option.NOISE_DROPOFF=DH Noise Dropoff option.DH_KNOWN_ISSUES=DH Known Issues value.DH_KNOWN_ISSUES.0=§c Click to Cycle the Page value.DH_KNOWN_ISSUES.1=§a GTAO and SSGI Disfunctional in DH LOD - Not Supported option.DISTANT_HORIZONS_SHADOWMAP=DH Shadowmap Support option.TOGGLE_VL_FOG=Toggle Volumetric Fog screen.PHYSICS_MOD_OCEAN_SETTINGS = §2Physics Mod §fSettings ////////////////////////////////// COMMENT ////////////////////////////////// option.sunPathRotation.comment=Configure the angle of the sun or moon to cast longer shadows. option.sun_illuminance.comment=Configure the brightness of the sun. option.moon_illuminance.comment=Configure the brightness of the moon. option.MOONPHASE_BASED_MOONLIGHT.comment=Toggle to adjust moonlight brightness dynamically based on moon phase. option.STAR_DENSITY.comment=Configure the density of the starfield. option.STAR_MOVEMENT_MULT.comment=Configure the moving/rotating speed of stars. option.RAINBOW.comment=Choose the rainbow Type for belowing settings. Rainbow will always follow the law of nature with both Realistic & All Time, which will make rainbow invisible in specific sun angle. Realistic = Only appears after rain. option.Sky_Brightness.comment=Configure the brightness of the skybox. option.colortype.comment=Choose the color type for following settings. option.Sun_temp.comment=Configure the temperature of the sun. Higher = White. Lower = Yellow. option.Moon_temp.comment=Configure the temperature of the moon. Higher = White. Lower = Yellow. option.AURORA_BRIGHTNESS.comment=Configure the brightness of the aurora. option.AURORA_SPEED.comment=Configure the moving speed of the aurora. option.AURORA_SNOWY.comment=Toggle to restrict aurora to snowy biomes only. option.AUR_ENV_OFFSET.comment=Configure the contribution of lighting to the ground/cloud from the aurora. option.SHOOTING_STARS.comment=Toggle to enable shooting stars. option.SHOOTING_STARS_SPEED.comment=Configure the speed of shooting stars. option.SHOOTING_STARS_FREQUENCY.comment=Configure the amount of shooting stars. option.SHOOTING_STARS_TRAIL_VISIBILITY.comment=Configure the visibility of the shooting stars' trails. option.SHOOTING_STARS_TRAIL_LENGTH.comment=Configure the length of the shooting stars' trails. option.SHOOTING_STARS_TRAIL_WIDTH.comment=Configure the width of the shooting stars' trails. option.Rain_coverage.comment=Configure how much of the sky the clouds cover during rain. option.RainFog_amount.comment=Configure how dense the fog gets during rain. option.RAIN_VISIBILITY.comment=Configure the particle size of raindrop/snow. option.WATER_RIPPLES.comment=Toggle ripples on water surface during rain. option.GROUND_RIPPLES.comment=Toggle ripples on ground surface during rain. option.LIT_PARTICLE_BRIGHTNESS.comment=Configure the brightness of raindrop/snow particles lit by lightsources. option.Daily_Weather.comment=Toggle daily weather cycle. option.CHOOSE_RANDOM_WEATHER_PROFILE.comment=Configure the shader to randomly choose the weather from one of the days below. When this is turned off, the shader will choose the day in order. option.PER_BIOME_ENVIRONMENT.comment=Toggle biome-specific environmental effects. option.SWAMP_ENV.comment=Toggle the special environment in Swamp biome and its variants. option.JUNGLE_ENV.comment=Toggle the special environment in Jungle biome and its variants. option.DARKFOREST_ENV.comment=Toggle the special environment in Dark Forest biome and its variants. option.SNOWY_ENV.comment=Toggle the special environment include blizzard effect in all snowy biomes. option.DRY_ENV.comment=Toggle the special environment include sandstorm effect in all dry biomes. option.WAVY_PLANTS.comment=Toggle the plant waving animation. option.RP_MODEL_FIX.comment=Toggle to disable specific groups of plant waving animation. Some RPs may contain 3D models for vanilla plants, disable them from waving will avoid some graphic flaws. option.WAVY_STRENGTH.comment=Configure the amount the plants wave. option.WAVY_SPEED.comment=Configure the speed the plants wave. option.SKY_GROUND.comment=Configure the strength of atomsphere color affected by sky light. option.TORCH_AMOUNT.comment=Configure the brightness of light from torches or other placed lightsources. option.ambient_brightness.comment=Configure ambient light brightness in shaded areas. option.MIN_LIGHT_AMOUNT.comment=Configure the minimum amount of light that can be in shaded places. option.indirect_effect.comment=Toggle different types of effects to make lighting in shaded places higher quality. option.indirect_RTGI.comment=Toggle different types of GI to enable bounced light form ray tracing. ONLY work with RTAO. option.AO_Strength.comment=Configure ambient occlusion strength (SSAO / GTAO / RTAO). option.GI_Strength.comment=Configure the strength of the global illumination created by (HQ) SSGI. option.RAY_COUNT.comment=Configure the ray count that involves in ray tracing, higher value will result a less noisy graphic. option.RT_ITERATION.comment=Configure the ray tracing quality. option.AO_in_sunlight.comment=Toggle the ambient occlusion created by the sun. option.UseQuarterResDepth.comment=Toggle 1/4 resolution depth instead of full to improve performance. option.Hand_Held_lights.comment=Toggle handheld light source. option.HANDHELD_LIGHT_RANGE.comment=Configure the light range of hand held light. option.FLASHLIGHT.comment=Toggle the flashlight. Can't work with hand held light simultaneously. option.FLASHLIGHT_RANGE.comment=Configure the light range of the flashlight. option.FLASHLIGHT_BRIGHTNESS_MULT.comment=Configure the brightness of the flashlight. option.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT.comment=Configure how quickly the flashlight brightness reaches its brightest part. option.FLASHLIGHT_SPECULAR.comment=Toggle the specular reflection from the flashlight. option.FLASHLIGHT_SIZE.comment=Configure the size of the flashlight. option.FLASHLIGHT_BOUNCED_INDIRECT.comment=Toggle bounced light from the flashlight. option.FLASHLIGHT_FOG_ILLUMINATION.comment=Toggle fog illuminination by the flashlight. option.TRANSLUCENT_COLORED_SHADOWS.comment=Toggle translucent things like stained glass to color the sunlight as it passes through it. option.SCREENSPACE_CONTACT_SHADOWS.comment=Toggle shadows for things far away and on small details nearby. option.RENDER_ENTITY_SHADOWS.comment=Toggle shadows on all types of entities like mobs, chests, banners or signs. option.RENDER_PLAYER_SHADOWS.comment=Toggle shadows on all players. option.shadowMapResolution.comment=Configure the quality of shadows from the sun casted by things in the world. option.shadowDistance.comment=Configure the maximum distance the shadowmap can render. The distance is not measured linearly in chunks when set to un-optimized. option.BASIC_SHADOW_FILTER.comment=Toggle basic shadow filter. option.SHADOW_FILTER_SAMPLE_COUNT.comment=Configure the quality of the basic shadow filter. The filter is only used for soften the shadows. option.Min_Shadow_Filter_Radius.comment=Configure the maximum softness of the basic shadow filter. option.Variable_Penumbra_Shadows.comment=Toggle adaptive shadow soften strength bases on distance from what casted it. This effect is used to create higher quality shadows and Sub-surface scattering. option.VPS_Search_Samples.comment=Configure the quality of the variable penumbra shadow filter. option.Max_Shadow_Filter_Radius.comment=Configure the maximum softness the shadows can get when far away from what casted it. option.Max_Filter_Depth.comment=Configure the size of the sun. Larger sun will make shadows get softer closer to what casts them. option.LPV_ENABLED.comment=Toggle the LPV floodfill lighting. option.LPV_SIZE.comment=Configure colored lighting volume size (in blocks). option.LPV_BLOCKLIGHT_SCALE.comment=Configure the scale of colored lighting. option.LPV_SATURATION.comment=Configures the intensity of colored lighting. option.LPV_TINT_SATURATION.comment=Configures the intensity of tinting by translucent blocks on colored lighting. option.LPV_NORMAL_STRENGTH.comment=Configure the amount surface normals will affect lighting direction. option.LPV_ENTITY_LIGHTS.comment=Toggle entities' contribution to colored lighting. option.LPV_REDSTONE_LIGHTS.comment=Toggle redstone blocks' contribution to colored lighting. option.LPV_COLORED_CANDLES.comment=Toggle colored candles' emission to match colored lighting. option.LPV_NOSHADOW_HACK.comment=Fix for Iris 1.7.0 and lower! Allows floodfill to work in Nether & End, but disables entity & dropped item lights. option.LPV_VL_FOG_ILLUMINATION.comment=Toggle the air / fog illumination of colored lighting. option.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS.comment=Configure the brightness of lit up fog. option.VANILLA_LIGHTMAP_MASK.comment=Toggle the vanilla like LPV lighting by disabling effects. option.LPV_SHADOWS.comment=Toggle the LPV based shadowmap. option.LPV_SHADOWS_LIGHT_COUNT.comment=Configure the ray count that involves in LPV shadows. option.LPV_COLOR_SHADOWS.comment=Toggle LPV colored shadow. option.LPV_SHADOWS_LIGHT_MULT.comment=Configure the brightness in LPV shadowed areas. option.LPV_HAND_SHADOWS.comment=Toggle the LPV shadow for hands. option.VL_RENDER_RESOLUTION.comment=Configure the resolution of the volumetric fog. option.VL_SAMPLES.comment=Configure the quality of the volumetric fog. option.BLOOMY_FOG.comment=Configure the strength of bloom that is applied to fog. option.Haze_amount.comment=Configure atmospheric haze density. option.BorderFog.comment=Toggle a fog that attempts to hide the chunks loading in. option.FOG_START_HEIGHT.comment=Configure the height where the fog starts. option.TOD_Fog_mult.comment=Configure the density of fog that appears at specific times of the day. option.CAVE_FOG.comment=Toggle the fog that appears in dark places. It is impossible to accurately tell when you are in a cave with a shader, so this fog might appear in places that are not a cave. option.CaveFogFallOff.comment=Configure how quickly the fog gradient reaches its brightest part. option.NETHER_PLUME_DENSITY.comment=Configure the density of plume shape fog in nether. option.END_STORM_DENSITY.comment=Configure the overall volume of fog in end. option.VOLUMETRIC_CLOUDS.comment=Toggle the volumetric clouds. option.CLOUDS_QUALITY.comment=Configure the resolution of the volumetric clouds. option.CLOUDS_SHADOWS.comment=Toggle shadows that are casted from the clouds onto the ground, and fog below them. option.CLOUD_SHADOW_STRENGTH.comment=Configure the density of cloud shadows. option.HQ_CLOUDS.comment=Toggle high quality cloud density. option.ERODE_AMOUNT.comment=Configure the erosion strength of the cloud edge. option.Cloud_Speed.comment=Configure cloud movement speed. It's based on world day, an overlarge world day value may cause clouds freezing. option.CloudLayer0.comment=Configure the small cumulus cloud that appear in lower positions. option.CloudLayer0_coverage.comment=Configure how much of the sky these clouds cover. option.CloudLayer0_density.comment=Configure how dense, or thick these clouds are. option.CloudLayer0_height.comment=Configure the height at which these clouds at. option.CloudLayer0_tallness.comment=Configure the tallness of these clouds. Recommend to keep it as default. option.CloudLayer0_scale.comment=Configure the scale of there clouds. option.CloudLayer1.comment=Configure the large cumulus flocculus appearing in the middle. option.CloudLayer1_coverage.comment=Configure how much of the sky these clouds cover. option.CloudLayer1_density.comment=Configure how dense, or thick these clouds are. option.CloudLayer1_height.comment=Configure the height at which these clouds at. Can't be set lower than small cumulus cloud layer. option.CloudLayer1_tallness.comment=Configure the tallness of these clouds. Recommend to keep it as default. option.CloudLayer1_scale.comment=Configure the scale of there clouds. option.CloudLayer2.comment=Configure the cirrus cloud that appear at higher positions. option.CloudLayer2_coverage.comment=Configure how much of the sky these clouds cover. option.CloudLayer2_density.comment=Configure how dense, or thick these clouds are. option.CloudLayer2_height.comment=Configure the height at which these clouds at. option.CloudLayer2_scale.comment=Configure the scale of there clouds. option.rayMarchSampleCount.comment=Configure the raymarch sample count of water. option.FAKE_REFRACTION_AMOUNT.comment=Configure the amount of distortion refraction will do. §bWhat is this?§r you could think of refraction as light bending when going through water or glass, making the things viewed through them look stretched, squished, distorted. §aPERFORMANCE COST:§r very low option.FAKE_DISPERSION_AMOUNT.comment=Configure the amount of dispersion within the refraction. §bWhat is this?§r when refraction happens, the parts that get really distorted will get a "chromatic abberation", faking the look of a rainbow or light prism. §aPERFORMANCE COST:§r very low option.REFRACTION_SMUDGE_AMOUNT.comment=Configure the amount of smudge within the refraction. §bWhat is this?§r when refraction happens, the parts that get really distorted will get smudged. §cWill cause visaul noise within refraction. §aPERFORMANCE COST:§r very low option.Dirt_Amount.comment=Configure how much dirt is in water. This controls how much fog is within water. option.WATER_WAVE_STRENGTH.comment=Configure how strong the waves appear. option.SNELLS_WINDOW.comment=Toggle the dark reflective circle under water. This is an approximation of a thing that happens in reality known as "total internal reflection". option.MINIMUM_WATER_ABSORBANCE.comment=Configure how clear the water is in shallow areas. AUTO allows water to be clear outdoors, adjust to 7 for minimal when indoors to make it clearly visible. §dTHIS SETTING DOES NOT IMPACT UNDER-WATER VISUALS. option.WATER_DISTORTION_AMOUNT.comment=Configure the animation intensity of distortion under water. option.WATER_WAVE_SPEED.comment=Configure the movement speed of water waves. option.Vanilla_like_water.comment=Toggle vanilla water texture style. option.PLANET_CURVATURE.comment=Toggle planet curvature to enhance immersion and hide distant graphic flaws. option.CURVATURE_AMOUNT.comment=Configure the curvature amount. Will affect view distance. option.SHARPENING.comment=Configure the amount of contrast adapitive sharpening that is applied to the image. This can bring out lost details from anti-aliasing or upscaling. option.BLOOM_STRENGTH.comment=Configure the amount of bloom that is applied to the image. option.SCREENSHOT_MODE.comment=Toggle frame accumulation to get a low noise and high quality image. option.TAA.comment=Toggle temporal anti-aliasing to remove all jagged edges on things, softens the image, and helps remove noise for many effects. This will cause ghosting or trailing. option.RESPONSIVE_TAA.comment=Toggle the faster mode of TAA at the cost of AA quality. option.BLEND_FACTOR.comment=Configure how much of frame history is used. Higher value means it relies less on frame history, so it may look flickery and noisy. Lower value rely more on frame history, so it may look less moisy, but more smudged with more trailing. option.TAA_UPSCALING.comment=Toggle temporal upscaling. This retains a good amount of quality from a lower resolution image when it upscales. option.SCALE_FACTOR.comment=Configure from what fraction of your resolution to upscale from. Higher value means it uses larger native resolution. Lower value is the oppsite so it will have better performance. option.LUMINANCE_CURVE.comment=Toggle the tone curve. This is independent from color grading and is applied first. option.LOWER_CURVE.comment=Configure the lower tone curve. option.UPPER_CURVE.comment=Configure the upper tone curve. option.COLOR_GRADING_ENABLED.comment=Toggle the color grading. The RGB sliders will not affect the brightness. This is applied after the tone curve. option.CAMERA_GRIDLINES.comment=Toggle the camera grindlines overlay. option.MOTION_BLUR.comment=Toggle the motion blur effect. option.MOTION_BLUR_STRENGTH.comment=Configure the motion blur strength. option.FISHEYE_EFFECT.comment=Toggle the fish eye lens effect. option.FISHEYE_STRENGTH.comment=Configure the fish eye lens aberration strength. option.CHROMATIC_ABERRATION.comment=Toggle the chromatic aberration effect to create unique graphic. option.CHROMATIC_ABERRATION_STRENGTH.comment=Configure the chromatic aberration strength. option.VIGNETTE.comment=Toggle the camera vignette effect. option.VIGNETTE_STRENGTH.comment=Toggle the camera vignette strength. option.LENS_FLARE.comment = Toggle the lens flare. option.LENS_FLARE_STRENGTH.comment = Configure the lens flare strength. option.DEFERRED_SPECULAR.comment=[WIP] option.FORWARD_SPECULAR.comment=[WIP] option.DEFERRED_ENVIRONMENT_REFLECTION.comment=[WIP] option.FORWARD_ENVIRONMENT_REFLECTION.comment=[WIP] option.DEFERRED_BACKGROUND_REFLECTION.comment=[WIP] option.FORWARD_BACKGROUND_REFLECTION.comment=[WIP] option.DEFERRED_ROUGH_REFLECTION.comment=[WIP] option.FORWARD_ROUGH_REFLECTION.comment=[WIP] option.ROUGHNESS_THRESHOLD.comment=Configure the roughness threshold. If the roughness reaches this threshold, all reflections except the sun do not render in order to improve performance. option.SUN_SPECULAR_MULT.comment=Configure how bright the sun's reflection is. option.MATERIAL_WETNESS_TYPE.comment = Configure how reflective material will be while rain. Use Adaptive will allow material to decide the reflectiveness base on its roughness. option.Emissive_Brightness.comment=Configure emissive texture brightness. option.Emissive_Curve.comment=Configure how quickly the emissive texture reaches its brightest point. 1.0 = linear. option.EMISSIVE_TYPE.comment=Configure how texture emission is applied to the world. §bHardcoded:§r The shader decides what gets it. §bLabSSS:§r The resourcepack decides what gets it. option.LabSSS_Curve.comment=Configure the LabSSS curve. option.sss_density_multiplier.comment=Configure the SSS strength. option.sss_absorbance_multiplier.comment=Configure the SSS light absorbance strength. option.MISC_BLOCK_SSS.comment=Toggle the SSS for grass, grass blocks & sand blocks. option.MOB_SSS.comment=Toggle the SSS for MOBs. Players are included. option.Ambient_SSS.comment=Toggle the SSS from light coming from the sky, instead of the sun. If SSAO is enabled this costs very little, but costs more if SSAO is OFF option.ambientsss_brightness.comment=Configure the brightness of SSS from the sky's light. option.SSS_TYPE.comment=Configure how the SSS is applied to the world. §bHardcoded:§r The shader decides what gets it. §bLabSSS:§r The resourcepack decides what gets it. option.POM.comment=Toggle POM to simulate 3D geometry using resource pack data. option.MAX_ITERATIONS.comment=Configure the quality of the POM effect. if you see individual layers when looking up close, inscreasing this makes more layers. option.POM_DEPTH.comment=Configure how deep the POM effect can go into a surface. option.MAX_DIST.comment=Configure the maximum distance from the camera that the POM effect can render. option.Adaptive_Step_length.comment=Toggle to increase visual quality without needing to increase the actual quality. This may causes artifacts at close distance, or have a very busy heightmap with sharp varying heights. option.Porosity.comment=Toggle the prosity to make textures get darker when they are in wet stage. option.Puddles.comment=Toggle puddles for when it rains. option.Puddle_Size.comment=Configure the size of the puddles. option.MATERIAL_AO.comment=Toggle the ambient occlusion for material normal. option.MATERIAL_NORMAL_STRENGTH.comment=Configure the strength of material normal. option.RESOURCEPACK_SKY.comment=Toggle resourcepack sky support. Configure settings to use the whole resourcepack sky, or keep the shader's sun and moon. option.ISOLATE_RESOURCEPACK_SKY.comment=Toggle to prevent resourcepack sky from affected by the shader or emit lighiting. option.DOF_QUALITY.comment=Toggle the depth of field effect. option.MANUAL_FOCUS.comment=Toggle the distance of manual focus. option.DOF_ANAMORPHIC_RATIO.comment=Configure the strength of the DOF anamorphic lens. option.DOF_DISPERSION_MULT.comment=Configure the strength of the DOF light dispersion. option.focal.comment=Configure the focal of the lens. option.aperture.comment=Configure the aperture of the lens. option.DoF_Adaptation_Speed.comment=Configure the responsiveness of DOF. option.FAR_BLUR_ONLY.comment=Toggle the DOF ONLY to the far away objects. option.REMOVE_HAND_BLUR.comment=Toggle the DOF ignore the hand. option.JITTER_STRENGTH.comment=Configure the strength of jitter DOF. option.FOCUS_LASER_COLOR.comment=Configure the color of focus point. option.EMISSIVE_ORE.comment=Toggle the ore emission rendered by shader. option.EMISSIVE_ORE_RANGE.comment=Toggle the ore emission range. option.MOTION_AMOUNT.comment=Configure the effect strength of bellowing settings. §aFor Iris users ONLY. option.DAMAGE_TAKEN_EFFECT.comment=Toggle the damage taken effect filter. option.LOW_HEALTH_EFFECT.comment=Toggle the low health effect filter. option.LOW_HEALTH_EFFECT_START.comment=Configure how much HP left is considered low health. option.CRITICALLY_LOW_HEALTH_EFFECT_START.comment=Configure how much HP left is considered critical health. option.DISTORT_EFFECT_AMOUNT.comment=Configure the distortion strength of bellowing settings. option.WATER_ON_CAMERA_EFFECT.comment=Toggle the effect of water drops slicing over the camera while entering and leaving the water. option.ON_FIRE_DISTORT_EFFECT.comment=Toggle the heat distortion effect while on fire. option.RAIN_ON_CAMERA_EFFECT.comment=Toggle the effect of rain drops slicing over the camera while raining. option.AEROCHROME_MODE.comment=Toggle the infrared film mode. Google "Aerochrome" to get an idea of what it does. option.AEROCHROME_PINKNESS.comment=Configure the Aerochrome mode color. Higher = Pink. Lower = Red. option.AEROCHROME_WOOL_ENABLED.comment=Toggle the Aerochrome mode for the wool objects. option.FANCY_END_PORTAL.comment=Toggle the unique end portal effect. option.TONEMAP.comment=Configure the tonemapping preset. option.USE_ACES_COLORSPACE_APPROXIMATION.comment=Toggle the ACES colorspace approximation. option.AGX_LOOK.comment=Configure the alternative preset of AGX tone-map. Only work with Tonemap_AGX_Minimal & Tonemap_AGX. option.SATURATION.comment=Configure the overall saturation of the graphic. option.CROSSTALK.comment=Configure the light crosstalk to the graphic. option.AUTO_EXPOSURE.comment=Toggle the auto exposure. option.EXPOSURE_MULTIPLIER.comment=Configure the intensity of exposure. option.Exposure_Speed.comment=Configure the exposure speed. option.Manual_exposure_value.comment=Configure the manual exposure settings. option.EXPOSURE_DARKENING.comment=Configure the darkening level of the graphic. option.EXPOSURE_BRIGHTENING.comment=Configure the brightening level of the graphic. option.Purkinje_strength.comment=Configure the effect strength of weakening saturation and enhancing brightness in dark places. option.Purkinje_Multiplier.comment=Configure the effect multiplier of weakening saturation and enhancing brightness in dark places. option.CLOUDS_INTERSECT_TERRAIN.comment=[WIP]. option.BLOOMY_PARTICLES.comment=[WIP] option.BIOME_TINT_WATER.comment=Toggle the special water color in specific biomes. option.HYPER_DETAILED_WAVES.comment=Toggle the alternative detailed normal for water. option.OLD_BLOOM.comment=Toggle the old bloom. option.OLD_INDIRECT_SSS.comment=Toggle the old SSS. option.PLANET_GROUND_BRIGHTNESS.comment=Configure the brightness of ground when look into it from a very high position. option.WATER_CAUSTICS_BRIGHTNESS.comment=Configure the brightness of water caustics. option.WATER_CAUSTICS_STRENGTH.comment=Configure the strength of water caustics. option.OLD_CAVE_DETECTION.comment=Toggle the old cave detection method. option.FORCE_TRANSLUCENT_GLASS.comment=Toggle to force glass and other transparent objects include water to be translucent. option.LARGE_WAVE_DISPLACEMENT.comment=Toggle the alternative large wave normal for water. option.LIGHTLEAKFIX_MODE.comment=Toggle the light leak fix method. There is no perfect fix for light leaking, switch mode when you encounter a buggy scenario. option.LIGHTNING_FLASH.comment=Toggle the fixed lightning flash to avoid disabling lightning with specific RPs for Optifine users. option.Texture_MipMap_Bias.comment=Configure the level of Mipmap texture use. Use lower value to get more detailed texture, Higher value can improve performance at the cost of details. option.DEBUG_VIEW.comment=Configure the DEBUG view. option.SELECT_BOX.comment=Toggle the customizable selection box. option.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS.comment = Toggle the custom diffuse lightings. option.USE_CUSTOM_CLOUD_LIGHTING_COLORS.comment = Toggle the custom cloud lightings. option.USE_CUSTOM_FOG_LIGHTING_COLORS.comment = Toggle the custom fog lightings. option.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS.comment = Toggle the custom atomsphere lightings. option.DH_OVERDRAW_PREVENTION.comment=Toggle the DH overdraw prevention. option.OVERDRAW_MAX_DISTANCE.comment=Configure the DH overdraw prevention distance. Recommend to keep it as default. option.DH_AMBIENT_OCCLUSION.comment=[WIP] Toggle the AO in DH chunks. ONLY work with SSAO. option.DH_SUBSURFACE_SCATTERING.comment=[WIP] Toggle the SSS in DH chunks. option.DH_SCREENSPACE_REFLECTIONS.comment=[WIP] Toggle the SSR in DH chunks. option.DH_TAA_JITTER.comment=Toggle TAA Jitter in DH chuncks. option.DH_NOISE_TEXTURE.comment=Toggle noise texture in DH chuncks to make transition between normal chunks and DH chuncks less obvious. option.NOISE_RESOLUTION.comment=Configure the noise resolution used in DH chunks. option.NOISE_INTENSITY.comment=Configure the noise intensity used in DH chunks. option.NOISE_DROPOFF.comment=Configure the dropoff of noise. option.DH_KNOWN_ISSUES.comment=Click to cycle the known issues. option.DISTANT_HORIZONS_SHADOWMAP.comment=§c DO NOT USE IF YOU DO NOT KNOW WHAT THIS IS option.TOGGLE_VL_FOG.comment=Toggle the volumetric fog in DH chunks. ================================================ FILE: shaders/lang/zh_cn.lang ================================================ option.SHADER_VERSION_LABEL = Bliss-BSPT by WF99 prefix.SHADER_VERSION_LABEL = # profile.veryLow=§a低质量 profile.Low=§b较低质量 profile.Medium=§9中等质量 profile.High=§d较高质量 profile.veryHigh=§c高质量 screen.World=世界 screen.Sky=天空配置 option.sunPathRotation=日月倾角 suffix.sunPathRotation=° option.RAINBOW=彩虹类型 value.RAINBOW.0=关 value.RAINBOW.1=真实 value.RAINBOW.2=全天 option.RAINBOW_STRENGTH=彩虹强度 screen.Sky_coefficients=天空系数 option.Sky_Brightness=天空亮度 option.sky_coefficientRayleighR=天空瑞利系数 - 红色比重 option.sky_coefficientRayleighG=天空瑞利系数 - 绿色比重 option.sky_coefficientRayleighB=天空瑞利系数 - 蓝色比重 option.sky_coefficientMieR=天空米氏系数 - 红色比重 option.sky_coefficientMieG=天空米氏系数 - 绿色比重 option.sky_coefficientMieB=天空米氏系数 - 蓝色比重 screen.Sun_and_Moon=日月 option.sunColorR=太阳 - 红色比重 option.sunColorG=太阳 - 绿色比重 option.sunColorB=太阳 - 蓝色比重 option.moonColorR=月亮 - 红色比重 option.moonColorG=月亮 - 绿色比重 option.moonColorB=月亮 - 蓝色比重 option.colortype=颜色模式 value.colortype.1=RGB 模式 value.colortype.2=黑体模式 option.Sun_temp=阳光色温 suffix.Sun_temp=K option.Moon_temp=月光色温 suffix.Moon_temp=K option.sun_illuminance=阳光照度 suffix.sun_illuminance=LX option.moon_illuminance=月光照度 suffix.moon_illuminance=LX option.MOONPHASE_BASED_MOONLIGHT=月相亮度水平 screen.Aurora=极光配置 option.AURORA_BRIGHTNESS=极光亮度 option.AURORA_SPEED=极光速度 option.AURORA_SNOWY=仅在寒冷群系出现 option.AUR_ENV_OFFSET=极光光照环境补偿 option.AURORA_UPPER_R=极光上部 - 红色比重 option.AURORA_UPPER_G=极光上部 - 绿色比重 option.AURORA_UPPER_B=极光上部 - 蓝色比重 option.AURORA_LOWER_R=极光下部 - 红色比重 option.AURORA_LOWER_G=极光下部 - 绿色比重 option.AURORA_LOWER_B=极光下部 - 蓝色比重 screen.Stars_and_Shooting_Stars=星星与流星 option.STAR_DENSITY=星星密度 option.STAR_MOVEMENT_MULT=星星旋转速度 option.SHOOTING_STARS=流星 option.SHOOTING_STARS_SPEED=流星速度 option.SHOOTING_STARS_FREQUENCY=流星频率 option.SHOOTING_STARS_TRAIL_VISIBILITY=流星尾迹可见性 option.SHOOTING_STARS_TRAIL_LENGTH=流星尾迹长度 option.SHOOTING_STARS_TRAIL_WIDTH=流星尾迹宽度 screen.Weather=天气配置 option.RAIN_VISIBILITY=雨雪能见度 option.Rain_coverage=雨云覆盖率 option.WATER_RIPPLES=水面涟漪 option.GROUND_RIPPLES=地表涟漪 screen.Rain_Fog=雨雾配置 option.RainFog_amount=雨雾倍率 option.RAINFOG_R=雨雾 - 红色比重 option.RAINFOG_G=雨雾 - 绿色比重 option.RAINFOG_B=雨雾 - 蓝色比重 screen.DAILY_WEATHER=周期循环的天气配置 option.Daily_Weather=周期循环的天气 option.CHOOSE_RANDOM_WEATHER_PROFILE=随机天气配置 screen.DAY0_WEATHER=第 0 天天气配置 option.DAY0_l0_coverage=小型积云覆盖率 option.DAY0_l0_density=小型积云密度 option.DAY0_l1_coverage=大型积云覆盖率 option.DAY0_l1_density=大型积云密度 option.DAY0_l2_coverage=高层云覆盖率 option.DAY0_l2_density=高层云密度 option.DAY0_ufog_density=均匀雾气密度 option.DAY0_cfog_density=云雾密度 screen.DAY1_WEATHER=第 1 天天气配置 option.DAY1_l0_coverage=小型积云覆盖率 option.DAY1_l0_density=小型积云密度 option.DAY1_l1_coverage=大型积云覆盖率 option.DAY1_l1_density=大型积云密度 option.DAY1_l2_coverage=高层云覆盖率 option.DAY1_l2_density=高层云密度 option.DAY1_ufog_density=均匀雾气密度 option.DAY1_cfog_density=云雾密度 screen.DAY2_WEATHER=第 2 天天气配置 option.DAY2_l0_coverage=小型积云覆盖率 option.DAY2_l0_density=小型积云密度 option.DAY2_l1_coverage=大型积云覆盖率 option.DAY2_l1_density=大型积云密度 option.DAY2_l2_coverage=高层云覆盖率 option.DAY2_l2_density=高层云密度 option.DAY2_ufog_density=均匀雾气密度 option.DAY2_cfog_density=云雾密度 screen.DAY3_WEATHER=第 3 天天气配置 option.DAY3_l0_coverage=小型积云覆盖率 option.DAY3_l0_density=小型积云密度 option.DAY3_l1_coverage=大型积云覆盖率 option.DAY3_l1_density=大型积云密度 option.DAY3_l2_coverage=高层云覆盖率 option.DAY3_l2_density=高层云密度 option.DAY3_ufog_density=均匀雾气密度 option.DAY3_cfog_density=云雾密度 screen.DAY4_WEATHER=第 4 天天气配置 option.DAY4_l0_coverage=小型积云覆盖率 option.DAY4_l0_density=小型积云密度 option.DAY4_l1_coverage=大型积云覆盖率 option.DAY4_l1_density=大型积云密度 option.DAY4_l2_coverage=高层云覆盖率 option.DAY4_l2_density=高层云密度 option.DAY4_ufog_density=均匀雾气密度 option.DAY4_cfog_density=云雾密度 screen.DAY5_WEATHER=第 5 天天气配置 option.DAY5_l0_coverage=小型积云覆盖率 option.DAY5_l0_density=小型积云密度 option.DAY5_l1_coverage=大型积云覆盖率 option.DAY5_l1_density=大型积云密度 option.DAY5_l2_coverage=高层云覆盖率 option.DAY5_l2_density=高层云密度 option.DAY5_ufog_density=均匀雾气密度 option.DAY5_cfog_density=云雾密度 screen.DAY6_WEATHER=第 6 天天气配置 option.DAY6_l0_coverage=小型积云覆盖率 option.DAY6_l0_density=小型积云密度 option.DAY6_l1_coverage=大型积云覆盖率 option.DAY6_l1_density=大型积云密度 option.DAY6_l2_coverage=高层云覆盖率 option.DAY6_l2_density=高层云密度 option.DAY6_ufog_density=均匀雾气密度 option.DAY6_cfog_density=云雾密度 screen.DAY7_WEATHER=第 7 天天气配置 option.DAY7_l0_coverage=小型积云覆盖率 option.DAY7_l0_density=小型积云密度 option.DAY7_l1_coverage=大型积云覆盖率 option.DAY7_l1_density=大型积云密度 option.DAY7_l2_coverage=高层云覆盖率 option.DAY7_l2_density=高层云密度 option.DAY7_ufog_density=均匀雾气密度 option.DAY7_cfog_density=云雾密度 screen.DAY8_WEATHER=第 8 天天气配置 option.DAY8_l0_coverage=小型积云覆盖率 option.DAY8_l0_density=小型积云密度 option.DAY8_l1_coverage=大型积云覆盖率 option.DAY8_l1_density=大型积云密度 option.DAY8_l2_coverage=高层云覆盖率 option.DAY8_l2_density=高层云密度 option.DAY8_ufog_density=均匀雾气密度 option.DAY8_cfog_density=云雾密度 screen.DAY9_WEATHER=第 9 天天气配置 option.DAY9_l0_coverage=小型积云覆盖率 option.DAY9_l0_density=小型积云密度 option.DAY9_l1_coverage=大型积云覆盖率 option.DAY9_l1_density=大型积云密度 option.DAY9_l2_coverage=高层云覆盖率 option.DAY9_l2_density=高层云密度 option.DAY9_ufog_density=均匀雾气密度 option.DAY9_cfog_density=云雾密度 option.PER_BIOME_ENVIRONMENT=群系特色环境 screen.Biome=群系配置 screen.SWAMP=沼泽及其变种 option.SWAMP_ENV=沼泽环境 option.SWAMP_UNIFORM_DENSITY=均匀雾气密度 option.SWAMP_CLOUDY_DENSITY=云雾密度 option.SWAMP_R=红色比重 option.SWAMP_G=绿色比重 option.SWAMP_B=蓝色比重 screen.JUNGLE=丛林及其变种 option.JUNGLE_ENV=丛林环境 option.JUNGLE_UNIFORM_DENSITY=均匀雾气密度 option.JUNGLE_CLOUDY_DENSITY=云雾密度 option.JUNGLE_R=红色比重 option.JUNGLE_G=绿色比重 option.JUNGLE_B=蓝色比重 screen.DARKFOREST=黑森林 option.DARKFOREST_ENV=黑森林环境 option.DARKFOREST_UNIFORM_DENSITY=均匀雾气密度 option.DARKFOREST_CLOUDY_DENSITY=云雾密度 option.DARKFOREST_R=红色比重 option.DARKFOREST_G=绿色比重 option.DARKFOREST_B=蓝色比重 screen.SNOWY=寒冷群系 option.SNOWY_ENV=寒冷群系环境 option.SNOWY_UNIFORM_DENSITY=均匀雾气密度 option.SNOWY_CLOUDY_DENSITY=云雾密度 option.SNOWY_R=红色比重 option.SNOWY_G=绿色比重 option.SNOWY_B=蓝色比重 screen.DRY=干旱群系 option.DRY_ENV=干旱群系环境 option.DRY_UNIFORM_DENSITY=均匀雾气密度 option.DRY_CLOUDY_DENSITY=云雾密度 option.DRY_R=红色比重 option.DRY_G=绿色比重 option.DRY_B=蓝色比重 screen.Waving_Stuff=摇晃相关 option.WAVY_PLANTS=植物摇晃 option.RP_MODEL_FIX=禁用 3D 植物摇晃 option.WAVY_STRENGTH=摇晃强度 option.WAVY_SPEED=摇晃速度 option.SKY_GROUND=地表大气 screen.Ambient_Light_Shadow=环境光与阴影配置 screen.Torch_Settings=照明配置 option.TORCH_AMOUNT=照明强度倍率 option.TORCH_R=照明红色比重 option.TORCH_G=照明绿色比重 option.TORCH_B=照明蓝色比重 screen.Ambient_Colors=环境光颜色 option.ambient_brightness=环境光照明亮度 option.MIN_LIGHT_AMOUNT=最小照明亮度 option.AmbientLight_R=环境光红色比重 option.AmbientLight_G=环境光绿色比重 option.AmbientLight_B=环境光蓝色比重 option.indirect_effect=间接照明模式 value.indirect_effect.0=原版 AO value.indirect_effect.1=SSAO value.indirect_effect.2=GTAO value.indirect_effect.3=RTAO option.indirect_RTGI=光线追踪全局光照模式 value.indirect_RTGI.0=OFF value.indirect_RTGI.1=SSGI value.indirect_RTGI.2=高质量 SSGI screen.AO=环境光遮蔽配置 option.AO_Strength=环境光遮蔽倍率 option.AO_in_sunlight=阳光遮蔽 screen.GI=全局光照配置 option.GI_Strength=全局照明倍率 option.RAY_COUNT=光照数量 option.RT_ITERATION=光照迭代次数 option.UseQuarterResDepth=使用1/4分辨率深度 screen.HAND_HELD_LIGHT=手持光源/手电筒配置 option.Hand_Held_lights=手持光源 option.HANDHELD_LIGHT_RANGE=手持光源范围 option.FLASHLIGHT=手电筒 screen.FLASHLIGHT_SETTING=手电筒配置 option.FLASHLIGHT_RANGE=手电筒照明距离 option.FLASHLIGHT_BRIGHTNESS_MULT=手电筒照明亮度 option.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT=手电筒照明亮度衰减 option.FLASHLIGHT_SPECULAR=手电筒照明高光反射 option.FLASHLIGHT_SIZE=手电筒照明尺寸 option.FLASHLIGHT_R=手电筒照明红色比重 option.FLASHLIGHT_G=手电筒照明绿色比重 option.FLASHLIGHT_B=手电筒照明蓝色比重 option.FLASHLIGHT_BOUNCED_INDIRECT=手电筒光线反弹 option.FLASHLIGHT_FOG_ILLUMINATION=手电筒雾气照明 screen.Shadows=阴影配置 option.TRANSLUCENT_COLORED_SHADOWS=半透明彩色阴影 option.SCREENSPACE_CONTACT_SHADOWS=屏幕空间阴影 option.RENDER_ENTITY_SHADOWS=实体阴影 option.RENDER_PLAYER_SHADOWS=玩家阴影 option.shadowMapResolution=阴影分辨率 option.shadowDistance=阴影距离 value.shadowDistance.16 = 1 区块 value.shadowDistance.32 = 2 区块 value.shadowDistance.48 = 3 区块 value.shadowDistance.64 = 4 区块 value.shadowDistance.80 = 5 区块 value.shadowDistance.96 = 6 区块 value.shadowDistance.128 = 8 区块 value.shadowDistance.160 = 10 区块 value.shadowDistance.192 = 12 区块 value.shadowDistance.256 = 16 区块 value.shadowDistance.512 = 32 区块 value.shadowDistance.1024 = 64 区块 value.shadowDistance.2048 = 128 区块 value.shadowDistance.4096 = 256 区块 value.shadowDistance.8192 = 512 区块 screen.Filtering=阴影过滤配置 option.BASIC_SHADOW_FILTER=基础阴影过滤 option.SHADOW_FILTER_SAMPLE_COUNT=基础阴影过滤采样数 option.Min_Shadow_Filter_Radius=最小阴影过滤半径 option.Variable_Penumbra_Shadows=可变半阴影 VPS option.VPS_Search_Samples=VPS 过滤采样数 option.Max_Shadow_Filter_Radius=最大阴影过滤半径 option.Max_Filter_Depth=最大过滤深度 screen.LPV=FloodFill 彩色照明 option.LPV_ENABLED=启用 LPV - §c需要使用Iris加载器 option.LPV_SIZE=LPV 规模 value.LPV_SIZE.6=小 [64] value.LPV_SIZE.7=中 [128] value.LPV_SIZE.8=大 [256] option.LPV_BLOCKLIGHT_SCALE=LPV 光照距离 option.LPV_SATURATION=光照饱和度 suffix.LPV_SATURATION=% option.LPV_TINT_SATURATION=透光饱和度 suffix.LPV_TINT_SATURATION=% option.LPV_NORMAL_STRENGTH=LPV 法线强度 suffix.LPV_NORMAL_STRENGTH=% value.LPV_NORMAL_STRENGTH.0=关闭 option.LPV_ENTITY_LIGHTS=实体光源 option.LPV_REDSTONE_LIGHTS=红石光源 option.LPV_COLORED_CANDLES=彩色蜡烛 option.LPV_NOSHADOW_HACK=Iris版本 <= 1.7.0 修复 option.LPV_VL_FOG_ILLUMINATION=LPV 泛光体积雾 option.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=LPV 泛光体积雾亮度 suffix.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=% option.VANILLA_LIGHTMAP_MASK=原版 LPV 光照 screen.BLOCK_SHADOWS=FloodFill 阴影 option.LPV_SHADOWS=LPV 阴影 - §c需要开启 LPV option.LPV_SHADOWS_LIGHT_COUNT=LPV 阴影精度 option.LPV_COLOR_SHADOWS=LPV 彩色阴影 option.LPV_SHADOWS_LIGHT_MULT=LPV 阴影区域亮度 option.LPV_HAND_SHADOWS=LPV 手部阴影 screen.Fog=雾气配置 option.VL_RENDER_RESOLUTION=雾气渲染分辨率 option.VL_SAMPLES=雾气采样值 option.BLOOMY_FOG=泛光雾倍率 option.Haze_amount=大气雾霾密度 option.BorderFog=区块边界雾 option.FOG_START_HEIGHT=雾气起始高度 screen.Fog_Color=雾气颜色 option.fog_coefficientMieR=雾气米氏系数 - 红色比重 option.fog_coefficientMieG=雾气米氏系数 - 绿色比重 option.fog_coefficientMieB=雾气米氏系数 - 蓝色比重 screen.TOD_fog = 全天雾气 option.TOD_Fog_mult = 全局雾气密度倍率 option.Morning_Uniform_Fog = 清晨 - 雾气密度 option.Noon_Uniform_Fog = 正午 - 雾气密度 option.Evening_Uniform_Fog = 傍晚 - 雾气密度 option.Night_Uniform_Fog = 夜晚 - 雾气密度 option.Morning_Cloudy_Fog = 清晨 - 云雾密度 option.Noon_Cloudy_Fog = 正午 - 云雾密度 option.Evening_Cloudy_Fog = 傍晚 - 云雾密度 option.Night_Cloudy_Fog =夜晚 - 云雾密度 screen.Cave_Fog = 洞穴雾气 option.CAVE_FOG=洞穴雾气 option.CaveFogFallOff = 洞穴雾气衰减曲线 option.CaveFogColor_R = 洞穴雾气红色比重 option.CaveFogColor_G = 洞穴雾气绿色比重 option.CaveFogColor_B = 洞穴雾气蓝色比重 screen.Nether_Fog = 下界雾气 option.NETHER_PLUME_DENSITY = 下界烟柱密度 option.NETHER_PLUME_R = 下界烟柱红色补偿 option.NETHER_PLUME_G = 下界烟柱绿色补偿 option.NETHER_PLUME_B = 下界烟柱蓝色补偿 screen.End_Fog = 末地雾气 option.END_STORM_DENSITY = 末地风暴密度 option.END_FOG_R = 末地雾气红色比重 option.END_FOG_G = 末地雾气绿色比重 option.END_FOG_B = 末地雾气蓝色比重 option.END_VORTEX_R = 末地漩涡红色比重 option.END_VORTEX_G = 末地漩涡绿色比重 option.END_VORTEX_B = 末地漩涡蓝色比重 option.END_LIGHTNING_R = 末地闪电红色补偿 option.END_LIGHTNING_G = 末地闪电绿色补偿 option.END_LIGHTNING_B = 末地闪电蓝色补偿 screen.Clouds = 云层配置 option.VOLUMETRIC_CLOUDS = 体积云 option.CLOUDS_QUALITY = 云层渲染分辨率 option.CLOUDS_SHADOWS = 云层阴影 option.CLOUD_SHADOW_STRENGTH = 云层阴影强度 option.HQ_CLOUDS = 高质量云层 option.ERODE_AMOUNT = 云层侵蚀强度 option.Cloud_Speed = 云层速度倍率 screen.S_Cumulus_Cloud = 小型积云配置 screen.L_Cumulus_Cloud = 大型积云配置 screen.Altostratus_Cloud = 高层云配置 option.CloudLayer0 = 小型积云 option.CloudLayer0_coverage = 覆盖率 option.CloudLayer0_density = 密度 option.CloudLayer0_height = 高度 option.CloudLayer0_tallness = 厚度 option.CloudLayer0_scale = 尺寸 option.CloudLayer1 = 大型积云 option.CloudLayer1_coverage = 覆盖率 option.CloudLayer1_density = 密度 option.CloudLayer1_height = 高度 option.CloudLayer1_tallness = 厚度 option.CloudLayer1_scale = 尺寸 option.CloudLayer2 = 高层云 option.CloudLayer2_coverage = 覆盖率 option.CloudLayer2_density = 密度 option.CloudLayer2_height = 高度 option.CloudLayer2_scale = 尺寸 screen.Seasons = 季节配置 option.Seasons = 四季颜色 option.Season_Length = 季节长度 (天) option.Start_Season = 起始季节 value.Start_Season.0 = 夏季 (默认) value.Start_Season.1 = 秋季 value.Start_Season.2 = 冬季 value.Start_Season.3 = 春季 screen.Summer_colors = 夏季颜色 option.Summer_R = 植被红色比重 option.Summer_G = 植被绿色比重 option.Summer_B = 植被蓝色比重 option.Summer_Leaf_R = 树叶红色比重 option.Summer_Leaf_G = 树叶绿色比重 option.Summer_Leaf_B = 树叶蓝色比重 screen.Fall_colors = 秋季颜色 option.Fall_R = 植被红色比重 option.Fall_G = 植被绿色比重 option.Fall_B = 植被蓝色比重 option.Fall_Leaf_R = 树叶红色比重 option.Fall_Leaf_G = 树叶绿色比重 option.Fall_Leaf_B = 树叶蓝色比重 screen.Winter_colors = 冬季颜色 option.Winter_R = 植被红色比重 option.Winter_G = 植被绿色比重 option.Winter_B = 植被蓝色比重 option.Winter_Leaf_R = 树叶红色比重 option.Winter_Leaf_G = 树叶 - 绿 option.Winter_Leaf_B = 树叶蓝色比重 screen.Spring_colors = 春季颜色 option.Spring_R = 植被红色比重 option.Spring_G = 植被绿色比重 option.Spring_B = 植被蓝色比重 option.Spring_Leaf_R = 树叶红色比重 option.Spring_Leaf_G = 树叶绿色比重 option.Spring_Leaf_B = 树叶蓝色比重 screen.Water = 水体配置 option.rayMarchSampleCount = 水体光照采样值 option.WATER_SUN_SPECULAR = 日月反射 option.FAKE_REFRACTION_EFFECT = 折射 (水体/玻璃) option.FAKE_DISPERSION_EFFECT = 散射 (水体/玻璃) option.REFRACTION_SMUDGE = 折射涂抹 option.Dirt_Amount = 水体浑浊程度 option.WATER_WAVE_STRENGTH = 水波强度 option.SNELLS_WINDOW = 斯涅尔窗 option.MINIMUM_WATER_ABSORBANCE = 最小水体吸收 value.MINIMUM_WATER_ABSORBANCE.-1 = 自动 option.WATER_DISTORTION_AMOUNT = 水下失真强度 option.WATER_WAVE_SPEED=水体摇晃速度 option.Vanilla_like_water=原版水体样式 screen.Water_fog_color = 水雾配置 option.Dirt_Scatter_R = 红色色散 (污物) option.Dirt_Scatter_G = 绿色色散 (污物) option.Dirt_Scatter_B = 蓝色色散 (污物) option.Dirt_Absorb_R = 红色吸收 (污物) option.Dirt_Absorb_G = 绿色吸收 (污物) option.Dirt_Absorb_B = 蓝色吸收 (污物) option.Water_Absorb_R = 红色吸收 (水体) option.Water_Absorb_G = 绿色吸收 (水体) option.Water_Absorb_B = 蓝色吸收 (水体) option.PLANET_CURVATURE = 弯曲地表 option.CURVATURE_AMOUNT = 弯曲度 screen.Post_Processing = 后处理 screen.COLOR_GRADING = 颜色分级 option.LUMINANCE_CURVE = 色调曲线 option.LOWER_CURVE = 下部曲线 option.UPPER_CURVE = 上部曲线 option.COLOR_GRADING_ENABLED = 颜色分级 option.SHADOWS_GRADE_R = 暗部 - §c红色比重 option.SHADOWS_GRADE_G = 暗部 - §a绿色比重 option.SHADOWS_GRADE_B = 暗部 - §9蓝色比重 option.SHADOWS_GRADE_MUL = 暗部 - 亮度 option.MIDS_GRADE_R = 中性部 - §c红色比重 option.MIDS_GRADE_G = 中性部 - §a绿色比重 option.MIDS_GRADE_B = 中性部 - §9蓝色比重 option.MIDS_GRADE_MUL = 中性部分 - 亮度 option.HIGHLIGHTS_GRADE_R = 亮部 - §c红色比重 option.HIGHLIGHTS_GRADE_G = 亮部 - §a绿色比重 option.HIGHLIGHTS_GRADE_B = 亮部 - §9蓝色比重 option.HIGHLIGHTS_GRADE_MUL = 亮部 - 亮度 screen.Exposure = 曝光 screen.DepthOfField = 景深 DOF 配置 screen.Purkinje_effect = 浦肯野现象配置 option.Purkinje_strength = 浦肯野现象混合比率 value.Purkinje_strength.0 = 关闭 suffix.Purkinje_strength =% option.SHARPENING = 锐化强度 option.BLOOM_STRENGTH = 泛光强度 screen.TAA_OPTIONS = 抗锯齿配置 option.SCREENSHOT_MODE = 截图模式 option.TAA = 时间性抗锯齿 TAA option.RESPONSIVE_TAA = 快速 TAA §a(使用 TAA 升采样时请关闭该选项) option.BLEND_FACTOR = 混合比重 option.TAA_UPSCALING = TAA 升采样 option.SCALE_FACTOR = 缩放倍率 option.CAMERA_GRIDLINES = 相机网格线 option.MOTION_BLUR = 动态模糊 option.MOTION_BLUR_STRENGTH = 动态模糊强度 option.CHROMATIC_ABERRATION = 色差 option.CHROMATIC_ABERRATION_STRENGTH = 色差强度 option.VIGNETTE = 相机暗角 option.VIGNETTE_STRENGTH = 相机暗角强度 screen.Resource_Pack_Support = 资源包配置 screen.Reflections = 高光反射 option.DEFERRED_SPECULAR = 延迟高光反射 option.FORWARD_SPECULAR = 前向高光反射 option.DEFERRED_ENVIRONMENT_REFLECTION = 延迟环境反射 option.FORWARD_ENVIRONMENT_REFLECTION = 前向环境反射 option.DEFERRED_BACKGROUND_REFLECTION = 延迟背景反射 option.FORWARD_BACKGROUND_REFLECTION = 前向背景反射 option.DEFERRED_ROUGH_REFLECTION = 延迟粗糙度反射 option.FORWARD_ROUGH_REFLECTION = 前向粗糙度反射 option.ROUGHNESS_THRESHOLD = 粗糙度反射阀值 option.SUN_SPECULAR_MULT = 太阳反射强度 option.MATERIAL_WETNESS_TYPE=潮湿反射模式 value.MATERIAL_WETNESS_TYPE.0=自适应 value.MATERIAL_WETNESS_TYPE.1=统一 screen.Emissives = 发光效果 option.Emissive_Brightness = 发光倍率 option.Emissive_Curve = 发光曲线 option.EMISSIVE_TYPE = 发光模式 value.EMISSIVE_TYPE.0 = 无 value.EMISSIVE_TYPE.1 = 硬编码 value.EMISSIVE_TYPE.2 = 硬编码 + LabPBR 自发光 value.EMISSIVE_TYPE.3 = 仅 LabPBR 自发光 screen.Subsurface_Scattering = 次表面散射 option.LabSSS_Curve = LabSSS 曲线 option.sss_density_multiplier=次表面散射强度倍率 option.sss_absorbance_multiplier=次表面散射吸光倍率 option.MISC_BLOCK_SSS = 特定方块次表面散射 option.MOB_SSS = 生物次表面散射 option.Ambient_SSS = 天空光次表面散射 option.ambientsss_brightness = 天空光次表面散射亮度 option.SSS_TYPE = 次表面散射模式 value.SSS_TYPE.0 = 无 value.SSS_TYPE.1 = 硬编码 value.SSS_TYPE.2 = 硬编码 + LabSSS value.SSS_TYPE.3 = 仅 LabSSS screen.POM=视差遮蔽映射/POM option.POM=视差 option.MAX_ITERATIONS=视差质量 option.POM_DEPTH=视差深度 option.MAX_DIST=视差最大距离 option.Adaptive_Step_length=动态质量 screen.Porosity=孔隙率/水坑 option.Porosity=孔隙率 option.Puddles=水坑 option.Puddle_Size=水坑尺寸倍率 option.MATERIAL_AO=材质环境光遮蔽 option.MATERIAL_NORMAL_STRENGTH=材质法线强度 option.RESOURCEPACK_SKY = 资源包天空 value.RESOURCEPACK_SKY.0 = 完整着色器天空 value.RESOURCEPACK_SKY.1 = 资源包天空 + 着色器日月 value.RESOURCEPACK_SKY.2 = 完整资源包天空 value.RESOURCEPACK_SKY.3 = 着色器天空 + 资源包日月 option.ISOLATE_RESOURCEPACK_SKY=独立的资源包天空 option.DOF_QUALITY=景深 DOF value.DOF_QUALITY.-1=关闭 value.DOF_QUALITY.0=六边形 value.DOF_QUALITY.1=低质量 value.DOF_QUALITY.2=中质量 value.DOF_QUALITY.3=高质量 value.DOF_QUALITY.4=极高质量 value.DOF_QUALITY.5=抖动 option.MANUAL_FOCUS=对焦距离 option.DOF_ANAMORPHIC_RATIO=景深变形比 value.MANUAL_FOCUS.-2=自动对焦 value.MANUAL_FOCUS.-1=亮度滑块 option.DOF_DISPERSION_MULT=景深散射倍率 option.focal=焦距 option.aperture=光圈 option.DoF_Adaptation_Speed=景深虚化自适应速度 option.FAR_BLUR_ONLY=仅虚化远处 option.REMOVE_HAND_BLUR=忽略手部景深 screen.JITTER_DOF=抖动景深配置 option.JITTER_STRENGTH=抖动强度 option.FOCUS_LASER_COLOR=聚焦点 value.FOCUS_LASER_COLOR.0=红 value.FOCUS_LASER_COLOR.1=绿 value.FOCUS_LASER_COLOR.2=蓝 value.FOCUS_LASER_COLOR.3=粉 value.FOCUS_LASER_COLOR.4=黄 value.FOCUS_LASER_COLOR.5=白 screen.Effects=特效配置 screen.Emissive_Ore = 矿物发光配置 option.EMISSIVE_ORE = 矿物发光 option.EMISSIVE_ORE_RANGE = 矿物光照距离 option.EMISSIVE_ORE_R = 矿物光照红色比重 option.EMISSIVE_ORE_G = 矿物光照绿色比重 option.EMISSIVE_ORE_B = 矿物光照蓝色比重 screen.GAMEPLAY_EFFECTS=游玩效果配置 option.MOTION_AMOUNT=效果强度 option.DAMAGE_TAKEN_EFFECT=受伤效果 option.LOW_HEALTH_EFFECT=低生命值效果 option.LOW_HEALTH_EFFECT_START=配置低生命值的剩余 HP option.CRITICALLY_LOW_HEALTH_EFFECT_START=配置危险生命值的剩余 HP screen.LENS_EFFECTS=镜头效果配置 option.DISTORT_EFFECT_AMOUNT=失真效果强度 option.WATER_ON_CAMERA_EFFECT=相机覆水效果 option.ON_FIRE_DISTORT_EFFECT=灼烧扭曲效果 option.RAIN_ON_CAMERA_EFFECT=相机覆雨效果 option.LENS_FLARE = 镜头光晕 option.LENS_FLARE_STRENGTH = 镜头光晕强度 option.FISHEYE_EFFECT = 鱼眼镜头 option.FISHEYE_STRENGTH = 鱼眼镜头畸变强度 screen.Aerochrome_Mode=Aerochrome 模式 option.AEROCHROME_MODE=Aerochrome 模式 option.AEROCHROME_PINKNESS=Aerochrome 模式 红色: 粉色 比例 option.AEROCHROME_WOOL_ENABLED=Aerochrome 模式作用于羊毛 option.FANCY_END_PORTAL=华丽的末地传送门 screen.COLOR=色调映射/色彩配置 option.TONEMAP=色调映射配置 option.USE_ACES_COLORSPACE_APPROXIMATION=启用 ACES 色彩空间的近似值拟合 option.AGX_LOOK=AGX预设方案 value.AGX_LOOK.0=标准 value.AGX_LOOK.1=WF99 value.AGX_LOOK.2=金色 value.AGX_LOOK.3=强对比 option.SATURATION=饱和度 option.CROSSTALK=光照干扰 option.AUTO_EXPOSURE=自动曝光 option.EXPOSURE_MULTIPLIER=曝光强度 option.Exposure_Speed=曝光速度 option.Manual_exposure_value=手动曝光值 option.EXPOSURE_DARKENING=暗化曝光 option.EXPOSURE_BRIGHTENING=亮化曝光 option.Purkinje_strength=浦肯野现象强度 option.Purkinje_R=浦肯野 - 红色比重 option.Purkinje_G=浦肯野 - 绿色比重 option.Purkinje_B=浦肯野 - 蓝色比重 option.Purkinje_Multiplier=浦肯野现象倍率 screen.Misc_Settings = 杂项 screen.EXPERIMENTAL_STUFF=实验性选项 option.CLOUDS_INTERSECT_TERRAIN=地平线云层 option.BLOOMY_PARTICLES=泛光粒子 option.BIOME_TINT_WATER=群系色调水体 option.HYPER_DETAILED_WAVES=超细节水波 option.OLD_BLOOM=旧版泛光 option.OLD_INDIRECT_SSS=旧版 SSS option.PLANET_GROUND_BRIGHTNESS=行星地表亮度 option.LIT_PARTICLE_BRIGHTNESS=提高粒子亮度 option.WATER_CAUSTICS_BRIGHTNESS=水体焦散线亮度 option.WATER_CAUSTICS_STRENGTH=水体焦散线强度 option.OLD_CAVE_DETECTION=旧版洞穴检测 option.FORCE_TRANSLUCENT_GLASS=强制玻璃半透明 option.LARGE_WAVE_DISPLACEMENT=大型波浪 option.LIGHTLEAKFIX_MODE=漏光修复模式 option.LIGHTNING_FLASH=闪电闪烁 option.Texture_MipMap_Bias=纹理 Mipmap 偏移 option.DEBUG_VIEW=DEBUG视图 value.DEBUG_VIEW.debug_OFF=关闭 value.DEBUG_VIEW.debug_SHADOWMAP=阴影图 value.DEBUG_VIEW.debug_NORMALS=法线 value.DEBUG_VIEW.debug_SPECULAR=高光 value.DEBUG_VIEW.debug_INDIRECT=间接照明 value.DEBUG_VIEW.debug_DIRECT=直接照明 value.DEBUG_VIEW.debug_VIEW_POSITION=查看位置 value.DEBUG_VIEW.debug_DH_WATER_BLENDING=DH 水体混合 value.DEBUG_VIEW.debug_FILTERED_STUFF=滤镜相关 value.DEBUG_VIEW.debug_TEMPORAL_REPROJECTION=时间重投影 value.DEBUG_VIEW.debug_LIGHTS=光照 option.display_LUT=显示 LUT option.WhiteWorld=全白世界 option.SSS_view=次表面散射视图 option.ambientLight_only=仅启用环境光 option.DISABLE_ENCHANT_GLINT=禁用附魔光效 option.DISABLE_VANILLA_EMISSIVES=禁用原版光照 option.PARTICLE_RENDERING_FIX=粒子渲染修复 option.TRANSLUCENT_ENTITIES=半透明实体 option.LIGHTING_EFFECTS_BLUR_FILTER=光照模糊效果滤镜 screen.selection_box_outline=选择框框线 option.SELECT_BOX=选择框 option.SELECT_BOX_COL_R=选择框颜色 - 红色比重 option.SELECT_BOX_COL_G=选择框颜色 - 绿色比重 option.SELECT_BOX_COL_B=选择框颜色 - 蓝色比重 screen.SCENE_CONTROLLER=环境配置器 option.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS = 自定义散射光 screen.DIFFUSE_LIGHTING_COLORS=散射光颜色配置 option.DIRECTLIGHT_DIFFUSE_R = 来自直接照明 - 红色比重 option.DIRECTLIGHT_DIFFUSE_G = 来自直接照明 - 绿色比重 option.DIRECTLIGHT_DIFFUSE_B = 来自直接照明 - 蓝色比重 option.INDIRECTLIGHT_DIFFUSE_R = 来自间接照明 - 红色比重 option.INDIRECTLIGHT_DIFFUSE_G = 来自间接照明 - 绿色比重 option.INDIRECTLIGHT_DIFFUSE_B = 来自间接照明 - 蓝色比重 option.USE_CUSTOM_CLOUD_LIGHTING_COLORS = 自定义云层 screen.CLOUD_LIGHTING_COLORS=云层颜色配置 option.DIRECTLIGHT_CLOUDS_R = 来自直接照明 - 红色比重 option.DIRECTLIGHT_CLOUDS_G = 来自直接照明 - 绿色比重 option.DIRECTLIGHT_CLOUDS_B = 来自直接照明 - 蓝色比重 option.INDIRECTLIGHT_CLOUDS_R = 来自间接照明 - 红色比重 option.INDIRECTLIGHT_CLOUDS_G = 来自间接照明 - 绿色比重 option.INDIRECTLIGHT_CLOUDS_B = 来自间接照明 - 蓝色比重 option.USE_CUSTOM_FOG_LIGHTING_COLORS = 自定义雾气 screen.FOG_LIGHTING_COLORS=雾气颜色配置 option.DIRECTLIGHT_FOG_R = 来自直接照明 - 红色比重 option.DIRECTLIGHT_FOG_G = 来自直接照明 - 绿色比重 option.DIRECTLIGHT_FOG_B = 来自直接照明 - 蓝色比重 option.INDIRECTLIGHT_FOG_R = 来自间接照明 - 红色比重 option.INDIRECTLIGHT_FOG_G = 来自间接照明 - 绿色比重 option.INDIRECTLIGHT_FOG_B = 来自间接照明 - 蓝色比重 option.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS = 自定义地表大气 screen.SKY_GROUND_LIGHTING_COLORS=地表光颜色配置 option.SKY_GROUND_R = 地表大气 - 红色比重 option.SKY_GROUND_G = 地表大气 - 绿色比重 option.SKY_GROUND_B = 地表大气 - 蓝色比重 screen.Mod_support = 支持的模组配置 screen.DISTANT_HORIZONS_SETTINGS = §2Distant Horizons §f配置 option.DH_OVERDRAW_PREVENTION = 防止过度绘制 option.OVERDRAW_MAX_DISTANCE = 防止过度绘制的最大距离 value.OVERDRAW_MAX_DISTANCE.0 = 无限制 value.OVERDRAW_MAX_DISTANCE.32 = 2 区块 value.OVERDRAW_MAX_DISTANCE.48 = 3 区块 value.OVERDRAW_MAX_DISTANCE.64 = 4 区块 value.OVERDRAW_MAX_DISTANCE.80 = 5 区块 value.OVERDRAW_MAX_DISTANCE.96 = 6 区块 value.OVERDRAW_MAX_DISTANCE.112 = 7 区块 value.OVERDRAW_MAX_DISTANCE.128 = 8 区块 value.OVERDRAW_MAX_DISTANCE.144 = 9 区块 value.OVERDRAW_MAX_DISTANCE.160 = 10 区块 value.OVERDRAW_MAX_DISTANCE.176 = 11 区块 value.OVERDRAW_MAX_DISTANCE.192 = 12 区块 value.OVERDRAW_MAX_DISTANCE.208 = 13 区块 value.OVERDRAW_MAX_DISTANCE.224 = 14 区块 value.OVERDRAW_MAX_DISTANCE.240 = 15 区块 value.OVERDRAW_MAX_DISTANCE.256 = 16 区块 option.DH_AMBIENT_OCCLUSION = LOD 区块的 AO option.DH_SUBSURFACE_SCATTERING = LOD 区块的 SSS option.DH_SCREENSPACE_REFLECTIONS = LOD 区块的 SSR option.DH_TAA_JITTER = DH 抖动 TAA option.DH_NOISE_TEXTURE = DH 噪声贴图 option.NOISE_RESOLUTION = DH 噪声分辨率 option.NOISE_INTENSITY = DH 噪声强度 option.NOISE_DROPOFF = DH 噪声衰减 option.DH_KNOWN_ISSUES =DH 支持已知问题 value.DH_KNOWN_ISSUES.0 = §c 点击此处文本循环查看已知问题列表 value.DH_KNOWN_ISSUES.1 = §a LOD 区域的 GTAO, RTAO 和 SSGI 不生效 - 未能实现对 DH 的支持 option.DISTANT_HORIZONS_SHADOWMAP = DH 阴影图支持 option.TOGGLE_VL_FOG = 体积雾 screen.PHYSICS_MOD_OCEAN_SETTINGS = §2物理模组 §f配置 ////////////////////////////////// COMMENT ////////////////////////////////// option.sunPathRotation.comment=配置太阳和月亮的角度, 用以投射出更长的阴影. option.sun_illuminance.comment=配置太阳的亮度. option.moon_illuminance.comment=配置月亮的亮度. option.MOONPHASE_BASED_MOONLIGHT.comment=开启此选项以根据月相调整每晚的月光亮度. option.STAR_DENSITY.comment=配置夜晚星星的密度. option.STAR_MOVEMENT_MULT.comment=配置夜晚星星移动的速度. option.RAINBOW.comment=使用此选项以循环彩虹类型. 真实或全天模式下的彩虹特性均遵循真实的自然规律, 在特定的太阳角度下将不可见. 使用真实模式以令彩虹仅在雨后出现. option.Sky_Brightness.comment=配置天空的亮度. option.colortype.comment=请根据选择的模式使用对应的颜色调节选项. option.Sun_temp.comment=配置太阳的色温. 色温越高颜色将越偏向白色, 反之将越偏向黄色. option.Moon_temp.comment=配置月亮的色温. 色温越高颜色将越偏向白色, 反之将越偏向黄色. option.AURORA_BRIGHTNESS.comment=配置夜晚极光的亮度. option.AURORA_SPEED.comment=配置夜晚极光移动的速度. option.AURORA_SNOWY.comment=此选项使极光仅在会下雪的群系生成. option.AUR_ENV_OFFSET.comment=配置极光照明对云层/地面的增益系数. option.SHOOTING_STARS.comment=使用此选项以启用流星. option.SHOOTING_STARS_SPEED.comment=配置流星的速度. option.SHOOTING_STARS_FREQUENCY.comment=配置流星出现的频率. option.SHOOTING_STARS_TRAIL_VISIBILITY.comment=配置流星尾迹的可见性. option.SHOOTING_STARS_TRAIL_LENGTH.comment=配置流星尾迹的长度. option.SHOOTING_STARS_TRAIL_WIDTH.comment=配置流星尾迹的宽度. option.Rain_coverage.comment=配置雨天云层覆盖天空的增益系数. option.RainFog_amount.comment=配置雨天雾气的密度. option.RAIN_VISIBILITY.comment=配置雨雪粒子的尺寸. option.WATER_RIPPLES.comment=开启此选项以在雨天应用水面涟漪. §a性能开销中等. option.GROUND_RIPPLES.comment=开启此选项以在雨天应用地表涟漪. §a性能开销很高. option.LIT_PARTICLE_BRIGHTNESS.comment=配置雨雪粒子受光源影响的水平. option.Daily_Weather.comment=配置可循环的天气系统. option.CHOOSE_RANDOM_WEATHER_PROFILE.comment=随机选择以下其中一天的天气配置. option.PER_BIOME_ENVIRONMENT.comment=开启此选项将在特定群系应用特殊的环境效果. §a性能开销中等. option.SWAMP_ENV.comment=开启此选项以应用沼泽/红树林沼泽的雾气与色彩滤镜. option.JUNGLE_ENV.comment=开启此选项以应用丛林/稀树丛林/竹林的雾气与色彩滤镜. option.DARKFOREST_ENV.comment=开启此选项以应用黑森林/苍白之圆的雾气与色彩滤镜. option.SNOWY_ENV.comment=开启此选项以应用寒冷群系的雾气与色彩滤镜, 同时包含暴风雪特效. option.DRY_ENV.comment=开启此选项以应用干旱群系的雾气与色彩滤镜 同时包含沙尘暴特效. option.WAVY_PLANTS.comment=开启此选项以启用植物摇晃的所有功能. §a性能开销很低. option.RP_MODEL_FIX.comment=开启此选项以禁用一些可能含有 3D 模型的植物摇晃. 用以避免一些图像问题. option.WAVY_STRENGTH.comment=配置植物摇晃的强度. option.WAVY_SPEED.comment=配置植物摇晃的速度. option.SKY_GROUND.comment=配置天空光对地表的作用程度. option.TORCH_AMOUNT.comment=配置照明的亮度. option.ambient_brightness.comment=配置环境光的亮度. option.MIN_LIGHT_AMOUNT.comment=配置阴影区域的最小照明亮度. option.indirect_effect.comment=配置间接照明类型以在相互接触的表面上产生柔和的阴影. option.indirect_RTGI.comment=配置全局光照模式以使用光线追踪计算反弹光. 仅在开启 RTAO 时生效. option.AO_Strength.comment=配置由 SSAO, GTAO, RTAO 渲染的环境光遮蔽强度. option.GI_Strength.comment=配置由 (高质量) SSGI 渲染的全局光照强度. option.RAY_COUNT.comment=配置光线追踪使用的光线数量, 更高的光线数量有助于提升光照准确度, 降低暗部噪点水平. option.RT_ITERATION.comment=配置光线追踪使用的光线迭代次数. option.AO_in_sunlight.comment=配置由太阳产生的环境光遮蔽效果. option.UseQuarterResDepth.comment=开启此选项以使用1/4的分辨率深度作为光线追踪的采样, 有助于提高性能. §a性能开销很低. option.Hand_Held_lights.comment=开启此选项以使用手持光源. §a性能开销较低. option.HANDHELD_LIGHT_RANGE.comment=配置手持光源的照明距离. option.FLASHLIGHT.comment=开启此选项以使用手持光源. §a手持光源无法与手电筒同时使用. option.FLASHLIGHT_RANGE.comment=配置手电筒的照明距离. option.FLASHLIGHT_BRIGHTNESS_MULT.comment=配置手电筒的照明亮度. option.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT.comment=配置手电筒的照明亮度梯度淡出的容易程度/速度. option.FLASHLIGHT_SPECULAR.comment=开启此选项以使手电筒照明能够产生高光反射. option.FLASHLIGHT_SIZE.comment=配置手电筒照明光斑的尺寸. option.FLASHLIGHT_BOUNCED_INDIRECT.comment=开启此选项以允许手电筒光线反弹. option.FLASHLIGHT_FOG_ILLUMINATION.comment=开启此选项以允许手电筒照明能够点亮雾气. option.TRANSLUCENT_COLORED_SHADOWS.comment=开启此选项以使像染色玻璃等半透明方块对穿过的光线染色. §a性能开销中等. option.SCREENSPACE_CONTACT_SHADOWS.comment=开启此选项以为远处物体补充小范围的阴影, 并为近处部分阴影区域添加细节. §a性能开销中等. option.RENDER_ENTITY_SHADOWS.comment=开启此选项以为所有类型实体渲染阴影, 例如怪物, 箱子, 或者告示牌. §a性能开销中等. option.RENDER_PLAYER_SHADOWS.comment=开启此选项以为所有玩家渲染阴影. §a性能开销较低. option.shadowMapResolution.comment=配置来自直接光照所产生的阴影质量. option.shadowDistance.comment=配置阴影可渲染的最大距离. option.BASIC_SHADOW_FILTER.comment=开启此选项以启用基础阴影过滤器. option.SHADOW_FILTER_SAMPLE_COUNT.comment=配置基础阴影过滤器质量. 过滤器仅用于软化阴影. option.Min_Shadow_Filter_Radius.comment=配置基础阴影过滤器的最小作用半径. option.Variable_Penumbra_Shadows.comment=开启此选项使阴影离投射它的地方距离越远越柔和. 用于渲染更高质量的阴影和次表面散射. §a性能开销中等. option.VPS_Search_Samples.comment=配置可变半阴影过滤器质量. option.Max_Shadow_Filter_Radius.comment=配置基础阴影过滤器的最大作用半径. option.Max_Filter_Depth.comment=配置阴影过滤器的作用深度. 用于调整阴影的柔和程度. option.LPV_ENABLED.comment=开启此选项以启用 LPV 的所有功能. §a性能开销较高. option.LPV_SIZE.comment=配置由方块产生的彩色光照的体积规模. option.LPV_BLOCKLIGHT_SCALE.comment=配置由方块产生的彩色光照的照明范围. option.LPV_SATURATION.comment=配置彩色光照的强度. option.LPV_TINT_SATURATION.comment=配置彩色光照穿过半透明方块后映射的色调强度. option.LPV_NORMAL_STRENGTH.comment=配置影响光照方向的表面法线规模. option.LPV_ENTITY_LIGHTS.comment=开启此选项以允许实体产生彩色光照. §a性能开销中等. option.LPV_REDSTONE_LIGHTS.comment=开启此选项以允许红石方块产生彩色光照. §a性能开销中等. option.LPV_COLORED_CANDLES.comment=开启此选项以允许彩色蜡烛产生对应的彩色光照. §a性能开销中等. option.LPV_NOSHADOW_HACK.comment=开启此选项以允许 Floodfill 在下界及末地中生效, 但禁止了实体及掉落物的彩色光照效果. §a仅在Iris版本低于 1.7.0 时开启! option.LPV_VL_FOG_ILLUMINATION.comment=开启此选项以允许彩色光照点亮光源周围的空气. §a性能开销较高. option.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS.comment=配置泛光雾亮度. option.VANILLA_LIGHTMAP_MASK.comment=开启此选项以使用原版风格的 LPV 光照, 将会禁用部分 LPV 特效. option.LPV_SHADOWS.comment=开启此选项以允许使用LPV计算阴影. 用于生成更精确的阴影. §a性能开销很高. option.LPV_SHADOWS_LIGHT_COUNT.comment=配置LPV计算阴影使用的光线数量. option.LPV_COLOR_SHADOWS.comment=开启此选项以允许光源的颜色作用于阴影. §a性能开销中等. option.LPV_SHADOWS_LIGHT_MULT.comment=配置LPV阴影的亮度. option.LPV_HAND_SHADOWS.comment=开启此选项以允许LPV计算第一人称下手部的阴影. §a性能开销中等. option.VL_RENDER_RESOLUTION.comment=配置体积雾渲染分辨率. option.VL_SAMPLES.comment=配置体积雾采样质量. option.BLOOMY_FOG.comment=配置作用于雾气的泛化强度. option.Haze_amount.comment=配置远距离的蓝色大气雾霾密度. option.BorderFog.comment=配置区块边界的雾气. 用于隐藏区块边界. option.FOG_START_HEIGHT.comment=配置雾气生成的高度. option.TOD_Fog_mult.comment=配置一天中特定时段的总体雾气量. option.CAVE_FOG.comment=配置仅出现在洞穴等黑暗区域的雾气, 由于着色器的局限性, 可能在一些非洞穴区域启用. option.CaveFogFallOff.comment=配置雾气衰减的容易程度/速度. option.NETHER_PLUME_DENSITY.comment=配置下界柱状烟雾的密度. option.END_STORM_DENSITY.comment=配置末地总体雾气的密度. option.VOLUMETRIC_CLOUDS.comment=体积云所有功能的总开关. option.CLOUDS_QUALITY.comment=配置体积云渲染分辨率. §a性能开销高. option.CLOUDS_SHADOWS.comment=开启此选项以允许云层或雾气向地面投射阴影. §a性能开销中等. option.CLOUD_SHADOW_STRENGTH.comment=配置云雾阴影的强度. option.HQ_CLOUDS.comment=开启此选项以应用更精细的云层密度. §a性能开销较低. option.ERODE_AMOUNT.comment=配置云层边缘不规则侵蚀的强度. option.Cloud_Speed.comment=配置体积云移动的速度. option.CloudLayer0.comment=配置在较低位置出现的团状小型积云. option.CloudLayer0_coverage.comment=配置小型积云覆盖天空的程度. option.CloudLayer0_density.comment=配置小型积云的密度. option.CloudLayer0_height.comment=配置小型积云的高度位置. option.CloudLayer0_tallness.comment=配置小型积云厚度. 建议保持默认. option.CloudLayer0_scale.comment=配置小型积云的尺寸缩放. 数值与尺寸成反比关系. option.CloudLayer1.comment=配置在中间位置出现的絮状大型积云. option.CloudLayer1_coverage.comment=配置大型积云覆盖天空的程度. option.CloudLayer1_density.comment=配置大型积云的密度. option.CloudLayer1_height.comment=配置大型积云的高度位置. 不得低于小型积云高度. option.CloudLayer1_tallness.comment=配置大型积云厚度. 建议保持默认. option.CloudLayer1_scale.comment=配置大型积云的尺寸缩放. 数值与尺寸成反比关系. option.CloudLayer2.comment=配置在较高位置出现的卷云. option.CloudLayer2_coverage.comment=配置高层云覆盖天空的程度. option.CloudLayer2_density.comment=配置高层云的密度. option.CloudLayer2_height.comment=配置高层云的高度位置. option.CloudLayer2_scale.comment=配置高层云的尺寸缩放. 数值与尺寸成反比关系. option.rayMarchSampleCount.comment=配置水体对环境光吸收的采样次数. option.FAKE_REFRACTION_EFFECT.comment=开启此选项以使穿过水体或其他半透明方块的光线折射. §a性能开销较低. option.FAKE_DISPERSION_EFFECT.comment=开启此选项以使穿过水体或其他半透明方块的光线散射. §a性能开销较低. option.REFRACTION_SMUDGE.comment=开启此选项以使穿过水体或其他半透明方块的光线扭曲. §a性能开销中等. option.Dirt_Amount.comment=配置水体的浑浊程度. option.WATER_WAVE_STRENGTH.comment=配置水波法线的高度. option.SNELLS_WINDOW.comment=开启此选项以应用在水下看到的黑色反射圆圈. 这是对现实水下会发生的情况的模拟, 称为 "全内反射". §a性能开销较低. option.MINIMUM_WATER_ABSORBANCE.comment=配置水体随深度变化时对颜色的吸收程度. option.WATER_DISTORTION_AMOUNT.comment=配置水下视觉失真效果的强度. 将数值调整为 0 以关闭水下失真效果. option.WATER_WAVE_SPEED.comment=配置水波运动的速度. option.Vanilla_like_water.comment=开启此选项以应用原版水面贴图. §a性能开销很低. option.PLANET_CURVATURE.comment=开启此选项以弯曲画面. 用以增强沉浸感. §a性能开销较低. option.CURVATURE_AMOUNT.comment=配置地表弯曲的程度. 弯曲的地表可能会影响可视距离. option.SHARPENING.comment=配置自适应对比度锐化作用于图像的强度. 用以降低因抗锯齿和升分辨率产生的细节损失. option.BLOOM_STRENGTH.comment=配置作用于图像的泛光强度. option.SCREENSHOT_MODE.comment=开启此选项将启用多帧画面积累. 用以输出含有更少噪点的高质量图像. §a性能开销较高. option.TAA.comment=配置与时间性抗锯齿相关的功能. option.RESPONSIVE_TAA.comment=开启此选项以使用近似时间性抗锯齿. 用以以损失图像质量为代价大幅提升性能. §a性能开销很低. option.BLEND_FACTOR.comment=配置历史帧使用比重. 更高的数值意味着依赖更少的历史帧, 将为图像带来更多噪点与潜在的闪烁. 反之则依赖更多的历史帧, 将会造成图像的涂抹感. option.TAA_UPSCALING.comment=开启此选项以使用时间性升分辨率. 相比常规升分辨率有更好的性能. §a性能开销很低. option.SCALE_FACTOR.comment=配置原始分辨率使用比重. 更高的数值意味着依赖更高的原始分辨率, 相比更低的数值会保留更多的细节. option.LUMINANCE_CURVE.comment=开启此选项以启用色调曲线. 独立于颜色分级且首先应用. §a性能开销很低. option.LOWER_CURVE.comment=配置下部曲线的补偿数值. option.UPPER_CURVE.comment=配置上部曲线的补偿数值. option.COLOR_GRADING_ENABLED.comment=开启此选项以启用后处理的颜色分级. §a性能开销较低. option.CAMERA_GRIDLINES.comment=开启此选项以启用相机网格线效果. §a性能开销很低. option.MOTION_BLUR.comment=开启此选项以启用动态模糊效果. §a性能开销很低. option.MOTION_BLUR_STRENGTH.comment=配置动态模糊效果的强度. option.FISHEYE_EFFECT.comment=开启此选项以启用鱼眼镜头效果. option.FISHEYE_STRENGTH.comment=配置鱼眼镜头畸变效果的强度. option.CHROMATIC_ABERRATION.comment=开启此选项以启用应用于图像两侧的红蓝色差效果. 用以创造一些独特的图像效果. §a性能开销很低. option.CHROMATIC_ABERRATION_STRENGTH.comment=配置色差效果的强度. option.VIGNETTE.comment=开启此选项以启用相机暗角效果. §a性能开销很低. option.VIGNETTE_STRENGTH.comment=配置相机暗角效果强度. option.LENS_FLARE.comment=开启此选项以启用镜头光晕效果. §a性能开销较低. option.LENS_FLARE_STRENGTH.comment=配置镜头光晕效果的强度. option.DEFERRED_SPECULAR.comment=WIP选项 option.FORWARD_SPECULAR.comment=WIP选项 option.DEFERRED_ENVIRONMENT_REFLECTION.comment=WIP选项 option.FORWARD_ENVIRONMENT_REFLECTION.comment=WIP选项 option.DEFERRED_BACKGROUND_REFLECTION.comment=WIP选项 option.FORWARD_BACKGROUND_REFLECTION.comment=WIP选项 option.DEFERRED_ROUGH_REFLECTION.comment=WIP选项 option.FORWARD_ROUGH_REFLECTION.comment=WIP选项 option.ROUGHNESS_THRESHOLD.comment=配置反射的粗糙度阈值. 粗糙度达到阈值后不渲染除了太阳反射外的所有反射. 有助于提升性能. option.SUN_SPECULAR_MULT.comment=配置材质反射太阳光的强度. option.MATERIAL_WETNESS_TYPE.comment=配置材质在雨天的反射模式. 使用自适应模式以令材质根据其粗糙度自动调整潮湿反射率. option.Emissive_Brightness.comment=配置方块发光量或自发光强度. option.Emissive_Curve.comment=配置自发光纹理达到最高亮度的容易程度/速度. option.EMISSIVE_TYPE.comment=配置自发光纹理如何在世界应用. 硬编码: 由着色器控制. LabPBR: 由资源包控制. option.LabSSS_Curve.comment=配置 LabSSS 的透光曲线补偿. option.sss_density_multiplier.comment=配置次表面散射的强度. option.sss_absorbance_multiplier.comment=配置次表面散射吸光部分的吸收倍率. option.MISC_BLOCK_SSS.comment=开启此选项以启用草与沙子等特定方块的次表面散射. option.MOB_SSS.comment=开启此选项以启用生物与玩家的次表面散射. option.Ambient_SSS.comment=开启此选项以启用来自天空光的次表面散射. 使用 SSAO 时, 本选项的性能开销会很小, 反之如果关闭了则会变大. option.ambientsss_brightness.comment=配置天空光次表面散射的亮度. option.SSS_TYPE.comment=配置次表面散射如何在世界应用. 硬编码: 由着色器控制. LabSSS: 由资源包控制. option.POM.comment=开启此选项以启用资源包提供的视差信息. 用以在实际没有的区域模拟 3D 几何图形. option.MAX_ITERATIONS.comment=配置视差效果的质量. 提高本数值以在近距离渲染完整的视差层. option.POM_DEPTH.comment=配置视差效果的凹陷深度. option.MAX_DIST.comment=配置视差效果的最大可见距离. option.Adaptive_Step_length.comment=开启此选项以使视差质量随距离而降低. 用以提升性能. option.Porosity.comment=开启此选项以启用由着色器控制的材质孔隙率. option.Puddles.comment=开启此选项以启用雨天水坑. option.Puddle_Size.comment=配置水坑尺寸的缩放倍率. option.MATERIAL_AO.comment=开启此选项以使材质法线作用与环境光遮蔽效果. option.MATERIAL_NORMAL_STRENGTH.comment=配置材质法线的强度水平. option.RESOURCEPACK_SKY.comment=使用此选项以循环资源包天空支持类型. 配置设置来使用完整的资源包天空, 或保持着色器的日月. option.ISOLATE_RESOURCEPACK_SKY.comment=开启此选项以使资源包天空不受着色器的影响, 并阻止其产生对地表的光照. option.DOF_QUALITY.comment=配置景深的相关功能. option.MANUAL_FOCUS.comment=配置手动对焦的距离. option.DOF_ANAMORPHIC_RATIO.comment=配置景深变形镜头的比重. option.DOF_DISPERSION_MULT.comment=配置景深散射效果的强度. option.focal.comment=配置镜头的焦距. option.aperture.comment=配置镜头的光圈大小. option.DoF_Adaptation_Speed.comment=配置景深虚化随距离变化的反应速度. option.FAR_BLUR_ONLY.comment=开启此选项以仅虚化远处物体. option.REMOVE_HAND_BLUR.comment=开启此选项以在启用景深时不虚化手部. option.JITTER_STRENGTH.comment=配置抖动景深效果的强度. option.FOCUS_LASER_COLOR.comment=配置聚焦点颜色. option.EMISSIVE_ORE.comment=开启此选项以应用着色器的矿物发光特效. option.EMISSIVE_ORE_RANGE.comment=配置矿物发光的光照距离. option.MOTION_AMOUNT.comment=配置屏幕特效滤镜的效果强度. §aIRIS限定功能. option.DAMAGE_TAKEN_EFFECT.comment=开启此选项以启用受击效果. option.LOW_HEALTH_EFFECT.comment=开启此选项以启用低生命值效果. option.LOW_HEALTH_EFFECT_START.comment=配置低生命值的阈值. option.CRITICALLY_LOW_HEALTH_EFFECT_START.comment=配置危险生命值的阈值. option.DISTORT_EFFECT_AMOUNT.comment=配置失真扭曲滤镜的效果强度. option.WATER_ON_CAMERA_EFFECT.comment=开启此选项以在进出水体时启用相机覆水效果. option.ON_FIRE_DISTORT_EFFECT.comment=开启此选项以在着火时启用扭曲效果. option.RAIN_ON_CAMERA_EFFECT.comment=开启此选项以在下雨时启用相机覆雨效果. option.AEROCHROME_MODE.comment=开启此选项以启用受Chrome浏览器启发而开发的 Aerochrome 红外胶片效果. option.AEROCHROME_PINKNESS.comment=配置 Aerochrome 模式的颜色. 数值越高越接近粉色, 反之越接近红色. option.AEROCHROME_WOOL_ENABLED.comment=开启此选项以使羊毛方块也受 Aerochrome 模式影响. option.FANCY_END_PORTAL.comment=开启此选项以启用特殊的末地传送门效果. option.TONEMAP.comment=配置使用的色调映射方案. option.USE_ACES_COLORSPACE_APPROXIMATION.comment=开启此选项以启用 ACES 色彩空间的近似值拟合. option.AGX_LOOK.comment=配置AGX预设方案. 仅在使用 Tonemap_AGX_Minimal 与 Tonemap_AGX 时生效. option.SATURATION.comment=配置图像的整体饱和度. option.CROSSTALK.comment=配置图像的光照干扰. 用以减少光照对图像色彩的影响. option.AUTO_EXPOSURE.comment=开启此选项以启用自动调节的曝光值. option.EXPOSURE_MULTIPLIER.comment=配置曝光的强度. option.Exposure_Speed.comment=配置曝光的速度. option.Manual_exposure_value.comment=配置手动曝光值. 仅在关闭自动曝光时生效. option.EXPOSURE_DARKENING.comment=配置曝光的暗化水平. 用以调节画面质量. option.EXPOSURE_BRIGHTENING.comment=配置曝光的亮化水平. 用以调节画面质量. option.Purkinje_strength.comment=配置在暗处时淡化色彩并强化明暗的效果强度. option.Purkinje_Multiplier.comment=配置在暗处时淡化色彩并强化明暗的效果倍率. option.CLOUDS_INTERSECT_TERRAIN.comment=WIP选项. 用以使云层能自然过渡到地平线而非维持在固定高度. option.BLOOMY_PARTICLES.comment=WIP选项. 用以控制雨雪等粒子的泛光效果. option.BIOME_TINT_WATER.comment=开启此选项将在特定群系应用特殊颜色的水体. option.HYPER_DETAILED_WAVES.comment=开启此选项以启用超细节水波. option.OLD_BLOOM.comment=开启此选项以替换为旧版的泛光系统. option.OLD_INDIRECT_SSS.comment=开启此选项以替换为旧版的 SSS. option.PLANET_GROUND_BRIGHTNESS.comment=配置从极高空看向地面时地表的亮度水平. option.WATER_CAUSTICS_BRIGHTNESS.comment=配置水体底部焦散线的亮度. option.WATER_CAUSTICS_STRENGTH.comment=配置水体底部焦散线的强度. option.OLD_CAVE_DETECTION.comment=开启此选项以替换为旧版洞穴检测机制. option.FORCE_TRANSLUCENT_GLASS.comment=开启此选项以强制玻璃透光. 用以避免一些潜在的 BUG. option.LARGE_WAVE_DISPLACEMENT.comment=WIP选项. 开启此选项以应用大型波浪法线. option.OLD_LIGHTLEAK_FIX.comment=配置漏光修复模式. 不存在完美的漏光修复, 当你遇到有问题的场景时请尝试切换模式. option.LIGHTNING_FLASH.comment=开启此选项以启用全局覆盖的闪电闪烁. 用以在使用 Optifine 时避免在使用一些改变天空盒颜色资源包时影响闪电闪烁的BUG. option.Texture_MipMap_Bias.comment=配置纹理 Mipmap 的级别. 使用较低的值可以得到更精细的纹理, 而较高的值则会以损失纹理细节而获得更高的性能. option.DEBUG_VIEW.comment=配置 DEBUG 视图模式. 正常游玩请勿使用. option.SELECT_BOX.comment=开启此选项以启用可自定义色彩的选择框. option.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的散射光. option.USE_CUSTOM_CLOUD_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的云层. option.USE_CUSTOM_FOG_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的雾气. option.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的地表大气. option.DH_OVERDRAW_PREVENTION.comment=开启此选项以防止着色器的一些元素过度绘制导致视觉问题. option.OVERDRAW_MAX_DISTANCE.comment=配置防止过度绘制的最大距离. 建议保持默认. option.DH_AMBIENT_OCCLUSION.comment=WIP选项. 开启此选项以在 LOD 区块内使用 AO. option.DH_SUBSURFACE_SCATTERING.comment=WIP选项. 开启此选项以在 LOD 区块内使用 SSS. option.DH_SCREENSPACE_REFLECTIONS.comment=WIP选项. 开启此选项以在 LOD 区块内使用 SSR. option.DH_TAA_JITTER.comment=开启此选项以在 DH 区块内使用特殊的噪声贴图. option.DH_NOISE_TEXTURE.comment=开启此选项以在 DH 区块内使用特殊的噪声贴图. 用以使普通区块与 DH 区块之间的过渡更自然. option.NOISE_RESOLUTION.comment=配置 DH 区块内的噪声分辨率. option.NOISE_INTENSITY.comment=配置 DH 区块内的噪声强度. option.NOISE_DROPOFF.comment=配置 DH 区块内的噪声衰减速度/容易程度. option.DH_KNOWN_ISSUES.comment=点击以循环已知问题. option.DISTANT_HORIZONS_SHADOWMAP.comment=§c 如果不知道本选项作用,请勿使用本选项. option.TOGGLE_VL_FOG.comment=配置 DH 区块的体积雾密度. ================================================ FILE: shaders/lib/DistantHorizons_projections.glsl ================================================ /////// ALL OF THIS IS BASED OFF OF THE DISTANT HORIZONS EXAMPLE PACK BY NULL uniform mat4 dhPreviousProjection; uniform mat4 dhProjectionInverse; uniform mat4 dhProjection; uniform float dhFarPlane; uniform float dhNearPlane; vec3 DH_toScreenSpace(vec3 p) { vec4 iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw); vec3 feetPlayerPos = p * 2. - 1.; vec4 viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3]; return viewPos.xyz / viewPos.w; } vec3 DH_toClipSpace3(vec3 viewSpacePosition) { return projMAD(dhProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; } vec3 toScreenSpace_DH(vec2 texcoord, float depth, float DHdepth) { vec4 viewPos = vec4(0.0); vec3 feetPlayerPos = vec3(0.0); vec4 iProjDiag = vec4(0.0); #ifdef DISTANT_HORIZONS if (depth < 1.0) { #endif iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); feetPlayerPos = vec3(texcoord, depth) * 2.0 - 1.0; viewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3]; viewPos.xyz /= viewPos.w; #ifdef DISTANT_HORIZONS } else { iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw); feetPlayerPos = vec3(texcoord, DHdepth) * 2.0 - 1.0; viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3]; viewPos.xyz /= viewPos.w; } #endif return viewPos.xyz; } 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 toClipSpace3_DH(vec3 viewSpacePosition, bool depthCheck) { #ifdef DISTANT_HORIZONS mat4 projectionMatrix = depthCheck ? dhProjection : gbufferProjection; return projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; #else return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; #endif } 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 } mat4 DH_shadowProjectionTweak(in mat4 projection) { #ifdef DH_SHADOWPROJECTIONTWEAK float _far = (3.0 * far); #ifdef DISTANT_HORIZONS _far = 2.0 * dhFarPlane; #endif mat4 newProjection = projection; newProjection[2][2] = -2.0 / _far; newProjection[3][2] = 0.0; return newProjection; #else return projection; #endif } float DH_ld(float dist) { return (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - dist * (dhFarPlane - dhNearPlane)); } float DH_inv_ld (float lindepth) { return - ((2.0 * dhNearPlane / lindepth) - dhFarPlane - dhNearPlane) / (dhFarPlane - dhNearPlane); } ================================================ FILE: shaders/lib/PhotonGTAO.glsl ================================================ // Common constants const float e = exp(1.0); const float hand_depth = 0.56; #if defined TAA && defined TAA_UPSCALING const float taau_render_scale = RENDER_SCALE.x; #else const float taau_render_scale = 1.0; #endif // Helper functions float max_of(vec2 v) { return max(v.x, v.y); } float length_squared(vec2 v) { return dot(v, v); } float length_squared(vec3 v) { return dot(v, v); } float rcp_length(vec2 v) { return inversesqrt(dot(v, v)); } float rcp_length(vec3 v) { return inversesqrt(dot(v, v)); } float fast_acos(float x) { const float C0 = 1.57018; const float C1 = -0.201877; const float C2 = 0.0464619; float res = (C2 * abs(x) + C1) * abs(x) + C0; // p(x) res *= sqrt(1.0 - abs(x)); return x >= 0 ? res : PI - res; // Undo range reduction } vec2 fast_acos(vec2 v) { return vec2(fast_acos(v.x), fast_acos(v.y)); } float linear_step(float edge0, float edge1, float x) { return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); } vec2 linear_step(vec2 edge0, vec2 edge1, vec2 x) { return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); } vec4 project(mat4 m, vec3 pos) { return vec4(m[0].x, m[1].y, m[2].zw) * pos.xyzz + m[3]; } vec3 project_and_divide(mat4 m, vec3 pos) { vec4 homogenous = project(m, pos); return homogenous.xyz / homogenous.w; } vec3 screen_to_view_space(vec3 screen_pos, bool handle_jitter) { vec3 ndc_pos = 2.0 * screen_pos - 1.0; return project_and_divide(gbufferProjectionInverse, ndc_pos); } vec3 view_to_screen_space(vec3 view_pos, bool handle_jitter) { vec3 ndc_pos = project_and_divide(gbufferProjection, view_pos); return ndc_pos * 0.5 + 0.5; } // --------------------- // ambient occlusion // --------------------- #define GTAO_SLICES 2 #define GTAO_HORIZON_STEPS 3 #define GTAO_RADIUS 2.0 #define GTAO_FALLOFF_START 0.75 float integrate_arc(vec2 h, float n, float cos_n) { vec2 tmp = cos_n + 2.0 * h * sin(n) - cos(2.0 * h - n); return 0.25 * (tmp.x + tmp.y); } float calculate_maximum_horizon_angle( vec3 view_slice_dir, vec3 viewer_dir, vec3 screen_pos, vec3 view_pos, float radius, float dither ) { const float step_size = GTAO_RADIUS / float(GTAO_HORIZON_STEPS); float max_cos_theta = -1.0; vec2 ray_step = (view_to_screen_space(view_pos + view_slice_dir * step_size, true) - screen_pos).xy; vec2 ray_pos = screen_pos.xy + ray_step * (dither + max_of(texelSize) * rcp_length(ray_step)); for (int i = 0; i < GTAO_HORIZON_STEPS; ++i, ray_pos += ray_step) { float depth = texelFetch2D(depthtex1, ivec2(clamp(ray_pos,0.0,1.0) * viewSize * taau_render_scale - 0.5), 0).x; if (depth == 1.0 || depth < hand_depth || depth == screen_pos.z) continue; vec3 offset = screen_to_view_space(vec3(ray_pos, depth), true) - view_pos; float len_sq = length_squared(offset); float norm = inversesqrt(len_sq); float distance_falloff = linear_step(GTAO_FALLOFF_START * GTAO_RADIUS, GTAO_RADIUS, len_sq * norm); float cos_theta = dot(viewer_dir, offset) * norm; cos_theta = mix(cos_theta, -1.0, distance_falloff); max_cos_theta = max(cos_theta, max_cos_theta); } return fast_acos(clamp(max_cos_theta, -1.0, 1.0)); } float ambient_occlusion(vec3 screen_pos, vec3 view_pos, vec3 view_normal, vec2 dither) { float ao = 0.0; // Construct local working space vec3 viewer_dir = normalize(-view_pos); vec3 viewer_right = normalize(cross(vec3(0.0, 1.0, 0.0), viewer_dir)); vec3 viewer_up = cross(viewer_dir, viewer_right); mat3 local_to_view = mat3(viewer_right, viewer_up, viewer_dir); // Reduce AO radius very close up, makes some screen-space artifacts less obvious float ao_radius = max(0.25 + 0.75 * smoothstep(0.0, 81.0, length_squared(view_pos)), 0.5); for (int i = 0; i < GTAO_SLICES; ++i) { float slice_angle = (i + dither.x) * (PI / float(GTAO_SLICES)); vec3 slice_dir = vec3(cos(slice_angle), sin(slice_angle), 0.0); vec3 view_slice_dir = local_to_view * slice_dir; vec3 ortho_dir = slice_dir - dot(slice_dir, viewer_dir) * viewer_dir; vec3 axis = cross(slice_dir, viewer_dir); vec3 projected_normal = view_normal - axis * dot(view_normal, axis); float len_sq = dot(projected_normal, projected_normal); float norm = inversesqrt(len_sq); float sgn_gamma = sign(dot(ortho_dir, projected_normal)); float cos_gamma = clamp(dot(projected_normal, viewer_dir) * norm, 0.0, 1.0); float gamma = sgn_gamma * fast_acos(cos_gamma); vec2 max_horizon_angles; max_horizon_angles.x = calculate_maximum_horizon_angle(-view_slice_dir, viewer_dir, screen_pos, view_pos, ao_radius, dither.y); max_horizon_angles.y = calculate_maximum_horizon_angle( view_slice_dir, viewer_dir, screen_pos, view_pos, ao_radius, dither.y); max_horizon_angles = gamma + clamp(vec2(-1.0, 1.0) * max_horizon_angles - gamma, -hPI, hPI) ; ao += integrate_arc(max_horizon_angles, gamma, cos_gamma) * len_sq * norm ; } const float albedo = 0.2; ao /= float(GTAO_SLICES); ao /= albedo * ao + (1.0 - albedo); return ao; } ================================================ FILE: shaders/lib/Shadow_Params.glsl ================================================ uniform float far; uniform int dhRenderDistance; const float k = 1.8; const float d0 = 0.04 + (1.0-clamp(shadowDistance - 64.0, 0.0, 1.0)) * 0.1; const float d1 = 0.61; float a = exp(d0); float b = (exp(d1)-a)*150./128.0; // thank you Espen // #ifdef DISTANT_HORIZONS_SHADOWMAP // float b = (exp(d1)-a)*min(dhRenderDistance, shadowDistance)/shadowDistance; // #else // float b = (exp(d1)-a)*min(far+16.0*3.5, shadowDistance)/shadowDistance; // #endif vec4 BiasShadowProjection(in vec4 projectedShadowSpacePosition) { float distortFactor = log(length(projectedShadowSpacePosition.xy)*b+a)*k; projectedShadowSpacePosition.xy /= distortFactor; return projectedShadowSpacePosition; } float calcDistort(vec2 worldpos) { return 1.0/(log(length(worldpos)*b+a)*k); } ================================================ FILE: shaders/lib/Shadows.glsl ================================================ // Emin's and Gri's combined ideas to stop peter panning and light leaking, also has little shadowacne so thats nice // https://www.complementary.dev/reimagined // https://github.com/gri573 void GriAndEminShadowFix( inout vec3 WorldPos, vec3 FlatNormal, float transition ) { transition = 1.0-transition; transition *= transition*transition*transition*transition*transition*transition; float zoomLevel = mix(0.0, 0.5, transition); if(zoomLevel > 0.001 && isEyeInWater != 1) WorldPos = WorldPos - (fract(WorldPos+cameraPosition - WorldPos*0.0001)*zoomLevel - zoomLevel*0.5); } void applyShadowBias(inout vec3 projectedShadowPosition, in vec3 playerPos, in vec3 geoNormals) { // Calculate the bias size according to the 1:1 ratio of one shadow texel to one full block const float biasSize = (shadowDistance / shadowMapResolution * 2.0) * 2.0; float biasDistanceFactor = length(projectedShadowPosition.xy); biasDistanceFactor = 1.0 + biasDistanceFactor * ((16.0*8.0) / shadowDistance) * 0.1; projectedShadowPosition += (mat3(shadowModelView) * geoNormals) * biasSize * 0.15 * biasDistanceFactor; } ================================================ FILE: shaders/lib/TAA_jitter.glsl ================================================ // swap out jitter pattern to be a 4 frame pattern instead of an 8 frame halton sequence #if defined RESPONSIVE_TAA || defined DH_TAA_OVERRIDE const vec2[4] offsets = vec2[4]( vec2(-0.125, -0.875), vec2(0.875, -0.125), vec2(0.125, 0.875), vec2(-0.875, 0.125) ); #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 ================================================ FILE: shaders/lib/atmosphere.glsl ================================================ //Original atmosphere code : https://www.shadertoy.com/view/WcdSW4, heavily customized. uniform int moonPhase; const float sunAngularSize = 0.533333; const float moonAngularSize = 0.516667; const float INFINITY = 1.0 / 0.0; const float EARTH_RADIUS = 6731e3; const float ATMOSPHERE_HEIGHT = 110e3; const float ATMOSPHERE_RADIUS = EARTH_RADIUS + ATMOSPHERE_HEIGHT; const float RAYLEIGH_SCALE_HEIGHT = 32.4e4; const vec3 RAYLEIGH_SCATTERING_COEFFICIENTS = vec3(6.184e-6, 12.30e-6, 28.04e-6); const vec3 RAYLEIGH_EXTINCTION_COEFFICIENTS = RAYLEIGH_SCATTERING_COEFFICIENTS * skyRL; const float MIE_SCALE_HEIGHT = 14.0e4; const vec3 MIE_SCATTERING_COEFFICIENTS = vec3(1.252e-5, 1.689e-5, 2.530e-5); const vec3 MIE_EXTINCTION_COEFFICIENTS = MIE_SCATTERING_COEFFICIENTS * skyMie * 1.1; const float OZONE_SCALE_HEIGHT = 45.5e4; const vec3 OZONE_EXTINCTION_COEFFICIENTS = vec3(1.224e-6, 2.883e-6, 5.441e-8); #ifdef MOONPHASE_BASED_MOONLIGHT float moonlightbrightness = abs(4-moonPhase)/4.0; #else float moonlightbrightness = 1.0; #endif #if colortype == 1 #define sunColorBase vec3(sunColorR, sunColorG, sunColorB) * sun_illuminance #define moonColorBase vec3(moonColorR, moonColorG, moonColorB) * moon_illuminance * moonlightbrightness #else #define sunColorBase blackbody(Sun_temp) * sun_illuminance #define moonColorBase blackbody(Moon_temp) * moon_illuminance * moonlightbrightness #endif float erfcx(float x) { float t = abs(x); float t2 = t * t; float A = 0.56418958354775629 / (t + 2.06955023132914151); float B = (t2 + 2.71078540045147805 * t + 5.80755613130301624) / (t2 + 3.47954057099518960 * t + 12.06166887286239555); float C = (t2 + 3.47469513777439592 * t + 12.07402036406381411) / (t2 + 3.72068443960225092 * t + 8.44319781003968454); float D = (t2 + 4.00561509202259545 * t + 9.30596659485887898) / (t2 + 3.90225704029924078 * t + 6.36161630953880464); float E = (t2 + 5.16722705817812584 * t + 9.1266167673673262) / (t2 + 4.03296893109262491 * t + 5.13578530585681539); float F = (t2 + 5.95908795446633271 * t + 9.19435612886969243) / (t2 + 4.11240942957450885 * t + 4.48640329523408675); float y = A * B * C * D * E * F; return (x < 0.0) ? 2.0 * exp(t2) - y : y; } float air_mass(float r, float z, float t, float H) { float a = 0.5 * sqrt(PI) * H * exp(-(r * r - EARTH_RADIUS * EARTH_RADIUS) / (H * H)); float b = r * z / H; if (isinf(t)) return a * erfcx(b); float c = t / H + b; float d = exp(b * b - c * c); return (z >= 0.0 || t + r * z >= 0.0) ? a * (erfcx(b) - d * erfcx(c)) : a * (d * erfcx(-c) - erfcx(-b)); } float rayleighPhase(float mu) { return 3.0 * rPI / 16.0 * (1.0 + mu * mu); } float miePhase(float mu) { float g = 0.77; float g2 = g * g; return rPI / 4.0 * (1.0 - g2) / pow(1.0 + g2 - 2.0 * g * mu, 1.5); } float calculateDistance(vec3 origin, vec3 direction, float radius) { float r = length(origin); float z = dot(normalize(origin), direction); float d = radius * radius - r * r * (1.0 - z * z); if (d < 0.0) return INFINITY; float t1 = sqrt(d) - r * z; float t2 = -sqrt(d) - r * z; return (t1 > 0.0) ? ((t2 > 0.0) ? min(t1, t2) : t1) : ((t2 > 0.0) ? t2 : INFINITY); } vec3 skyTransmittance(vec3 origin, vec3 direction, float t) { float r = length(origin); float z = dot(normalize(origin), direction); vec3 tau_r = RAYLEIGH_EXTINCTION_COEFFICIENTS * air_mass(r, z, t, RAYLEIGH_SCALE_HEIGHT); vec3 tau_m = MIE_EXTINCTION_COEFFICIENTS * air_mass(r, z, t, MIE_SCALE_HEIGHT); vec3 tau_o = OZONE_EXTINCTION_COEFFICIENTS * air_mass(r, z, t, OZONE_SCALE_HEIGHT); return exp(-(tau_r + tau_m + tau_o)); } vec3 calculateScattering(vec3 origin, vec3 direction, vec3 light_dir, float t, vec3 light_color) { float r = length(origin); float z = dot(normalize(origin), direction); float z_light = dot(normalize(origin), light_dir); float mu = dot(light_dir, direction); vec3 scattering_r = RAYLEIGH_SCATTERING_COEFFICIENTS * air_mass(r, z, t, RAYLEIGH_SCALE_HEIGHT); vec3 scattering_m = MIE_SCATTERING_COEFFICIENTS * air_mass(r, z, t, MIE_SCALE_HEIGHT); vec3 trans_light = skyTransmittance(origin + direction * t * 0.15, light_dir, INFINITY); float phase_r = rayleighPhase(mu); float phase_m = miePhase(mu); vec3 scattering = (scattering_r * phase_r + scattering_m * phase_m) * trans_light * light_color; return scattering; } vec3 colorCorrection(vec3 color) { float luminance = dot(color, vec3(0.299, 0.587, 0.114)); vec3 gray = vec3(luminance); float saturation = mix(0.8, 1.15, smoothstep(0.1, 0.5, luminance)); color = mix(gray, color, saturation); return color; } vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 sunVector, vec3 moonVector, out vec2 pid, out vec3 transmittance, float noise) { vec3 origin = (EARTH_RADIUS + eyeAltitude) * upVector; float t = 100000.0; transmittance = skyTransmittance(origin, viewVector, t); float t_ground = calculateDistance(origin, viewVector, EARTH_RADIUS); pid = vec2(-1.0, t_ground); #ifdef SKY_GROUND float planetGround = exp(-40.0 * pow(max(-viewVector.y * 2.5 + 0.05, 0.0), 1.8)); #else float planetGround = pow(max(viewVector.y + 1.0, 0.0), 1.5); #endif vec3 sunScattering = calculateScattering(origin, viewVector, sunVector, t, sunColorBase); vec3 moonScattering = calculateScattering(origin, viewVector, moonVector, t, moonColorBase); vec3 ambientSky = mix(vec3(0.45, 0.2, 0.37), vec3(0.6, 0.75, 0.85), smoothstep(0.1, 0.3, sunVector.y)) * background; vec3 color = ambientSky + (sunScattering + moonScattering * 0.5) * planetGround; return colorCorrection(color); } ================================================ FILE: shaders/lib/aurora.glsl ================================================ //Original aurora code : https://www.shadertoy.com/view/XtGGRt float speed = AURORA_SPEED; mat2 mm2(float a) { float c = cos(a), s = sin(a); return mat2(c,s,-s,c); } const mat2 m2 = mat2(0.95534, 0.29552, -0.29552, 0.95534); float tri(float x) { return clamp(abs(fract(x) - 0.5), 0.01, 0.49); } vec2 tri2(vec2 p) { return vec2(tri(p.x)+tri(p.y),tri(p.y+tri(p.x))); } float triNoise2d(vec2 pos, float speed) { float z = 1.8; float z2 = 2.5; float rz = 0.0; pos *= mm2(pos.x * 0.06); vec2 bp = pos; float sp = worldTime * speed / 60.0; mat2 rot = mm2(sp); for (float i = 0.0; i < 5.0; i++ ) { vec2 dg = tri2(bp * 1.85) * 0.75; dg *= rot; pos -= dg / z2; bp *= 1.3; z2 *= 0.45; z *= 0.42; pos *= 1.21 + (rz - 1.0) * 0.02; rz += tri(pos.x + tri(pos.y)) * z; pos *= -m2; } return clamp(1.0 / pow(rz * 29.0, 1.3), 0.0, 0.55); } vec3 upperColor = vec3(AURORA_UPPER_R, AURORA_UPPER_G, AURORA_UPPER_B); vec3 lowerColor = vec3(AURORA_LOWER_R, AURORA_LOWER_G, AURORA_LOWER_B); vec4 aurora(vec3 dir, float dither) { vec4 outerColor = vec4(0.0); vec4 avgColor = vec4(0.0); const int aurStep = 24; for (int i = 0; i < aurStep; ++i) { float amp = float(i) / float(aurStep - 1); float jitter = 0.012 * dither * clamp(smoothstep(0.0, 15.0, float(i)), 0.0, 1.0); float pt = ((0.8 + pow(amp * 24, 1.4) * 0.004)) / (dir.y * 2.0 + 0.4) - jitter; vec2 aurPos = (pt * dir).zx; float rzt = triNoise2d(aurPos, speed); if (rzt < 0.01) continue; vec4 innerColor; innerColor.rgb = rzt * mix(lowerColor, upperColor, smoothstep(0.0, 1.0, amp)); innerColor.a = rzt; avgColor = mix(avgColor, innerColor, 0.5); outerColor += avgColor * exp2(-(amp * 24) * 0.065 - 2.5) * smoothstep(0.0, 5.0, (amp * 24)) * 24 / aurStep; } outerColor *= clamp(dir.y * 15.0 + 0.4, 0.0, 1.0); return outerColor; } vec3 drawAurora(vec3 rayDir, float dither) { vec3 color = vec3(0.0); float fade = smoothstep(0.0, 0.1, abs(rayDir.y)) * 0.1+0.9; if (rayDir.y > 0.0) { vec4 aur = smoothstep(0.0, 1.5, aurora(rayDir, dither)) * fade; color = color * (1.0 - aur.a) + aur.rgb; } return color; } #ifdef AURORA_SNOWY float applyAurora = Night * smoothBiome_Snowy; #else float applyAurora = Night; #endif float aurEnv = AUR_ENV_OFFSET * applyAurora; float fakeLighting1 = max(sin(frameTimeCounter * AURORA_SPEED), 0.6); float fakeLighting2 = max(cos(frameTimeCounter * AURORA_SPEED / 1.8), 0.75); // Aurora emission vec3 aurEmit = (lowerColor * fakeLighting1 * 0.6 + upperColor * fakeLighting2 * 0.4) * aurEnv; ================================================ FILE: shaders/lib/blocks.glsl ================================================ #define BLOCK_WATER 8 #define BLOCK_BAMBOO 11 #define BLOCK_GRASS_SHORT 12 #define BLOCK_GRASS_TALL_LOWER 13 #define BLOCK_GRASS_TALL_UPPER 14 #define BLOCK_SAPLING 15 #define BLOCK_VINE 16 #define BLOCK_LPV_IGNORE 50 #define BLOCK_LPV_MIN 51 #define BLOCK_LPV_MED 52 #define BLOCK_LPV_MAX 53 #define BLOCK_GROUND_WAVING 54 #define BLOCK_GROUND_WAVING_VERTICAL 55 #define BLOCK_AIR_WAVING 56 #define BLOCK_SSS_STRONG 80 #define BLOCK_SSS_WEAK 81 #define BLOCK_SSS_WEAK_2 82 #define BLOCK_SSS_WEAK_3 83 #define BLOCK_SSS_WEIRD 84 #define BLOCK_GRASS 85 #define BLOCK_FIREFLY_BUSH 99 #define BLOCK_AMETHYST_BUD_SMALL 100 #define BLOCK_AMETHYST_BUD_MEDIUM 101 #define BLOCK_AMETHYST_BUD_LARGE 102 #define BLOCK_AMETHYST_CLUSTER 103 #define BLOCK_BEACON 104 #define BLOCK_BREWING_STAND 105 #define BLOCK_CANDLES_PLAIN_LIT_1 106 #define BLOCK_CANDLES_PLAIN_LIT_2 107 #define BLOCK_CANDLES_PLAIN_LIT_3 108 #define BLOCK_CANDLES_PLAIN_LIT_4 109 #define BLOCK_CANDLES_BLACK_LIT_1 110 #define BLOCK_CANDLES_BLACK_LIT_2 111 #define BLOCK_CANDLES_BLACK_LIT_3 112 #define BLOCK_CANDLES_BLACK_LIT_4 113 #define BLOCK_CANDLES_BLUE_LIT_1 114 #define BLOCK_CANDLES_BLUE_LIT_2 115 #define BLOCK_CANDLES_BLUE_LIT_3 116 #define BLOCK_CANDLES_BLUE_LIT_4 117 #define BLOCK_CANDLES_BROWN_LIT_1 118 #define BLOCK_CANDLES_BROWN_LIT_2 119 #define BLOCK_CANDLES_BROWN_LIT_3 120 #define BLOCK_CANDLES_BROWN_LIT_4 121 #define BLOCK_CANDLES_CYAN_LIT_1 122 #define BLOCK_CANDLES_CYAN_LIT_2 123 #define BLOCK_CANDLES_CYAN_LIT_3 124 #define BLOCK_CANDLES_CYAN_LIT_4 125 #define BLOCK_CANDLES_GRAY_LIT_1 126 #define BLOCK_CANDLES_GRAY_LIT_2 127 #define BLOCK_CANDLES_GRAY_LIT_3 128 #define BLOCK_CANDLES_GRAY_LIT_4 129 #define BLOCK_CANDLES_GREEN_LIT_1 130 #define BLOCK_CANDLES_GREEN_LIT_2 131 #define BLOCK_CANDLES_GREEN_LIT_3 132 #define BLOCK_CANDLES_GREEN_LIT_4 133 #define BLOCK_CANDLES_LIGHT_BLUE_LIT_1 134 #define BLOCK_CANDLES_LIGHT_BLUE_LIT_2 135 #define BLOCK_CANDLES_LIGHT_BLUE_LIT_3 136 #define BLOCK_CANDLES_LIGHT_BLUE_LIT_4 137 #define BLOCK_CANDLES_LIGHT_GRAY_LIT_1 138 #define BLOCK_CANDLES_LIGHT_GRAY_LIT_2 139 #define BLOCK_CANDLES_LIGHT_GRAY_LIT_3 140 #define BLOCK_CANDLES_LIGHT_GRAY_LIT_4 141 #define BLOCK_CANDLES_LIME_LIT_1 142 #define BLOCK_CANDLES_LIME_LIT_2 143 #define BLOCK_CANDLES_LIME_LIT_3 144 #define BLOCK_CANDLES_LIME_LIT_4 145 #define BLOCK_CANDLES_MAGENTA_LIT_1 146 #define BLOCK_CANDLES_MAGENTA_LIT_2 147 #define BLOCK_CANDLES_MAGENTA_LIT_3 148 #define BLOCK_CANDLES_MAGENTA_LIT_4 149 #define BLOCK_CANDLES_ORANGE_LIT_1 150 #define BLOCK_CANDLES_ORANGE_LIT_2 151 #define BLOCK_CANDLES_ORANGE_LIT_3 152 #define BLOCK_CANDLES_ORANGE_LIT_4 153 #define BLOCK_CANDLES_PINK_LIT_1 154 #define BLOCK_CANDLES_PINK_LIT_2 155 #define BLOCK_CANDLES_PINK_LIT_3 156 #define BLOCK_CANDLES_PINK_LIT_4 157 #define BLOCK_CANDLES_PURPLE_LIT_1 158 #define BLOCK_CANDLES_PURPLE_LIT_2 159 #define BLOCK_CANDLES_PURPLE_LIT_3 160 #define BLOCK_CANDLES_PURPLE_LIT_4 161 #define BLOCK_CANDLES_RED_LIT_1 162 #define BLOCK_CANDLES_RED_LIT_2 163 #define BLOCK_CANDLES_RED_LIT_3 164 #define BLOCK_CANDLES_RED_LIT_4 165 #define BLOCK_CANDLES_WHITE_LIT_1 166 #define BLOCK_CANDLES_WHITE_LIT_2 167 #define BLOCK_CANDLES_WHITE_LIT_3 168 #define BLOCK_CANDLES_WHITE_LIT_4 169 #define BLOCK_CANDLES_YELLOW_LIT_1 170 #define BLOCK_CANDLES_YELLOW_LIT_2 171 #define BLOCK_CANDLES_YELLOW_LIT_3 172 #define BLOCK_CANDLES_YELLOW_LIT_4 173 #define BLOCK_CANDLES_LIT_1 174 #define BLOCK_CANDLES_LIT_2 175 #define BLOCK_CANDLES_LIT_3 176 #define BLOCK_CANDLES_LIT_4 177 #define BLOCK_CAVE_VINE_BERRIES 178 #define BLOCK_COMPARATOR_LIT 179 #define BLOCK_COPPER_BULB_LIT 180 #define BLOCK_COPPER_BULB_EXPOSED_LIT 181 #define BLOCK_COPPER_BULB_OXIDIZED_LIT 182 #define BLOCK_COPPER_BULB_WEATHERED_LIT 183 #define BLOCK_CONDUIT 184 #define BLOCK_CRYING_OBSIDIAN 185 #define BLOCK_DEEPSLATE_REDSTONE_ORE_LIT 186 #define BLOCK_END_GATEWAY 187 #define BLOCK_END_ROD 188 #define BLOCK_FIRE 189 #define BLOCK_FIRE_FLIES 190 #define BLOCK_FROGLIGHT_OCHRE 191 #define BLOCK_FROGLIGHT_PEARLESCENT 192 #define BLOCK_FROGLIGHT_VERDANT 193 #define BLOCK_FURNACE_LIT 194 #define BLOCK_GLOW_LICHEN 195 #define BLOCK_GLOWSTONE 196 #define BLOCK_JACK_O_LANTERN 197 #define BLOCK_LANTERN 198 #define BLOCK_LAVA 199 #define BLOCK_LIGHT_1 200 #define BLOCK_LIGHT_2 201 #define BLOCK_LIGHT_3 202 #define BLOCK_LIGHT_4 203 #define BLOCK_LIGHT_5 204 #define BLOCK_LIGHT_6 205 #define BLOCK_LIGHT_7 206 #define BLOCK_LIGHT_8 207 #define BLOCK_LIGHT_9 208 #define BLOCK_LIGHT_10 209 #define BLOCK_LIGHT_11 210 #define BLOCK_LIGHT_12 211 #define BLOCK_LIGHT_13 212 #define BLOCK_LIGHT_14 213 #define BLOCK_LIGHT_15 214 #define BLOCK_MAGMA 215 #define BLOCK_RAIL_POWERED_ON 216 #define BLOCK_REDSTONE_LAMP_LIT 217 #define BLOCK_REDSTONE_ORE_LIT 218 #define BLOCK_REDSTONE_TORCH_LIT 219 #define BLOCK_REDSTONE_WIRE_1 220 #define BLOCK_REDSTONE_WIRE_2 221 #define BLOCK_REDSTONE_WIRE_3 222 #define BLOCK_REDSTONE_WIRE_4 223 #define BLOCK_REDSTONE_WIRE_5 224 #define BLOCK_REDSTONE_WIRE_6 225 #define BLOCK_REDSTONE_WIRE_7 226 #define BLOCK_REDSTONE_WIRE_8 227 #define BLOCK_REDSTONE_WIRE_9 228 #define BLOCK_REDSTONE_WIRE_10 229 #define BLOCK_REDSTONE_WIRE_11 230 #define BLOCK_REDSTONE_WIRE_12 231 #define BLOCK_REDSTONE_WIRE_13 232 #define BLOCK_REDSTONE_WIRE_14 233 #define BLOCK_REDSTONE_WIRE_15 234 #define BLOCK_REPEATER_LIT 235 #define BLOCK_RESPAWN_ANCHOR_4 236 #define BLOCK_SCULK_SENSOR_ACTIVE 237 #define BLOCK_SEA_PICKLE_WET_1 238 #define BLOCK_SEA_PICKLE_WET_2 239 #define BLOCK_SEA_PICKLE_WET_3 240 #define BLOCK_SEA_PICKLE_WET_4 241 #define BLOCK_SEA_LANTERN 242 #define BLOCK_SHROOMLIGHT 243 #define BLOCK_SOUL_FIRE 244 #define BLOCK_SOUL_LANTERN 245 #define BLOCK_SOUL_TORCH 246 #define BLOCK_TORCH 247 #define BLOCK_LAMP_LIT_BLACK 250 #define BLOCK_LAMP_LIT_BLUE 251 #define BLOCK_LAMP_LIT_BROWN 252 #define BLOCK_LAMP_LIT_CYAN 253 #define BLOCK_LAMP_LIT_GRAY 254 #define BLOCK_LAMP_LIT_GREEN 255 #define BLOCK_LAMP_LIT_LIGHT_BLUE 256 #define BLOCK_LAMP_LIT_LIGHT_GRAY 257 #define BLOCK_LAMP_LIT_LIME 258 #define BLOCK_LAMP_LIT_MAGENTA 259 #define BLOCK_LAMP_LIT_ORANGE 260 #define BLOCK_LAMP_LIT_PINK 261 #define BLOCK_LAMP_LIT_PURPLE 262 #define BLOCK_LAMP_LIT_RED 263 #define BLOCK_LAMP_LIT_WHITE 264 #define BLOCK_LAMP_LIT_YELLOW 265 #define BLOCK_GLASS 301 #define BLOCK_GLASS_BLACK 302 #define BLOCK_GLASS_BLUE 303 #define BLOCK_GLASS_BROWN 304 #define BLOCK_GLASS_CYAN 305 #define BLOCK_GLASS_GRAY 306 #define BLOCK_GLASS_GREEN 307 #define BLOCK_GLASS_LIGHT_BLUE 308 #define BLOCK_GLASS_LIGHT_GRAY 309 #define BLOCK_GLASS_LIME 310 #define BLOCK_GLASS_MAGENTA 311 #define BLOCK_GLASS_ORANGE 312 #define BLOCK_GLASS_PINK 313 #define BLOCK_GLASS_PURPLE 314 #define BLOCK_GLASS_RED 315 #define BLOCK_GLASS_WHITE 316 #define BLOCK_GLASS_YELLOW 317 #define BLOCK_SLIME 318 #define BLOCK_HONEY 319 #define BLOCK_ICE 320 #define BLOCK_NETHER_PORTAL 321 #define BLOCK_CARPET 401 #define BLOCK_DOOR_N 402 #define BLOCK_DOOR_E 403 #define BLOCK_DOOR_S 404 #define BLOCK_DOOR_W 405 #define BLOCK_PRESSURE_PLATE 406 #define BLOCK_SLAB_TOP 407 #define BLOCK_SLAB_BOTTOM 408 #define BLOCK_SNOW_LAYERS 409 #define BLOCK_TRAPDOOR_BOTTOM 410 #define BLOCK_TRAPDOOR_TOP 411 #define BLOCK_TRAPDOOR_N 412 #define BLOCK_TRAPDOOR_E 413 #define BLOCK_TRAPDOOR_S 414 #define BLOCK_TRAPDOOR_W 415 #define BLOCK_STAIRS_BOTTOM_N 416 #define BLOCK_STAIRS_BOTTOM_E 417 #define BLOCK_STAIRS_BOTTOM_S 418 #define BLOCK_STAIRS_BOTTOM_W 419 #define BLOCK_STAIRS_BOTTOM_INNER_S_E 420 #define BLOCK_STAIRS_BOTTOM_INNER_S_W 421 #define BLOCK_STAIRS_BOTTOM_INNER_N_W 422 #define BLOCK_STAIRS_BOTTOM_INNER_N_E 423 #define BLOCK_STAIRS_BOTTOM_OUTER_N_W 424 #define BLOCK_STAIRS_BOTTOM_OUTER_N_E 425 #define BLOCK_STAIRS_BOTTOM_OUTER_S_E 426 #define BLOCK_STAIRS_BOTTOM_OUTER_S_W 427 #define BLOCK_STAIRS_TOP_N 428 #define BLOCK_STAIRS_TOP_E 429 #define BLOCK_STAIRS_TOP_S 430 #define BLOCK_STAIRS_TOP_W 431 #define BLOCK_STAIRS_TOP_INNER_S_E 432 #define BLOCK_STAIRS_TOP_INNER_S_W 433 #define BLOCK_STAIRS_TOP_INNER_N_W 434 #define BLOCK_STAIRS_TOP_INNER_N_E 435 #define BLOCK_STAIRS_TOP_OUTER_N_W 436 #define BLOCK_STAIRS_TOP_OUTER_N_E 437 #define BLOCK_STAIRS_TOP_OUTER_S_E 438 #define BLOCK_STAIRS_TOP_OUTER_S_W 439 #define BLOCK_WALL_POST 440 #define BLOCK_WALL_MIN 440 #define BLOCK_WALL_POST_LOW_N 441 #define BLOCK_WALL_POST_LOW_E 442 #define BLOCK_WALL_POST_LOW_S 443 #define BLOCK_WALL_POST_LOW_W 444 #define BLOCK_WALL_POST_LOW_N_S 445 #define BLOCK_WALL_POST_LOW_W_E 446 #define BLOCK_WALL_POST_LOW_N_W 447 #define BLOCK_WALL_POST_LOW_N_E 448 #define BLOCK_WALL_POST_LOW_S_W 449 #define BLOCK_WALL_POST_LOW_S_E 450 #define BLOCK_WALL_POST_LOW_N_W_S 451 #define BLOCK_WALL_POST_LOW_N_E_S 452 #define BLOCK_WALL_POST_LOW_W_N_E 453 #define BLOCK_WALL_POST_LOW_W_S_E 454 #define BLOCK_WALL_POST_LOW_ALL 455 #define BLOCK_WALL_POST_TALL_N 456 #define BLOCK_WALL_POST_TALL_E 457 #define BLOCK_WALL_POST_TALL_S 458 #define BLOCK_WALL_POST_TALL_W 459 #define BLOCK_WALL_POST_TALL_N_S 460 #define BLOCK_WALL_POST_TALL_W_E 461 #define BLOCK_WALL_POST_TALL_N_W 462 #define BLOCK_WALL_POST_TALL_N_E 463 #define BLOCK_WALL_POST_TALL_S_W 464 #define BLOCK_WALL_POST_TALL_S_E 465 #define BLOCK_WALL_POST_TALL_N_W_S 466 #define BLOCK_WALL_POST_TALL_N_E_S 467 #define BLOCK_WALL_POST_TALL_W_N_E 468 #define BLOCK_WALL_POST_TALL_W_S_E 469 #define BLOCK_WALL_POST_TALL_ALL 470 #define BLOCK_WALL_POST_TALL_N_LOW_S 471 #define BLOCK_WALL_POST_TALL_E_LOW_W 472 #define BLOCK_WALL_POST_TALL_S_LOW_N 473 #define BLOCK_WALL_POST_TALL_W_LOW_E 474 #define BLOCK_WALL_POST_TALL_N_S_LOW_W_E 475 #define BLOCK_WALL_POST_TALL_W_E_LOW_N_S 476 #define BLOCK_WALL_POST_TALL_N_W_LOW_S_E 477 #define BLOCK_WALL_POST_TALL_N_E_LOW_S_W 478 #define BLOCK_WALL_POST_TALL_S_W_LOW_N_E 479 #define BLOCK_WALL_POST_TALL_S_E_LOW_N_W 480 #define BLOCK_WALL_LOW_N_S 481 #define BLOCK_WALL_LOW_W_E 482 #define BLOCK_WALL_LOW_N_W 483 #define BLOCK_WALL_LOW_N_E 484 #define BLOCK_WALL_LOW_S_W 485 #define BLOCK_WALL_LOW_S_E 486 #define BLOCK_WALL_LOW_ALL 487 #define BLOCK_WALL_TALL_N_S 488 #define BLOCK_WALL_TALL_W_E 489 #define BLOCK_WALL_TALL_N_W 490 #define BLOCK_WALL_TALL_N_E 491 #define BLOCK_WALL_TALL_S_W 492 #define BLOCK_WALL_TALL_S_E 493 #define BLOCK_WALL_TALL_ALL 494 #define BLOCK_WALL_TALL_N_S_LOW_W_E 495 #define BLOCK_WALL_TALL_W_E_LOW_N_S 496 #define BLOCK_WALL_MAX 496 #define BLOCK_END_PORTAL 500 #define BLOCK_SIGN 501 ================================================ FILE: shaders/lib/bokeh.glsl ================================================ #if DOF_QUALITY == 0 // Original choc hex bokeh #define BOKEH_SAMPLES 60 #define HEXAGONAL_BOKEH const vec2 bokeh_offsets[60] = vec2[60] ( vec2( 0.2165, 0.1250 ), vec2( 0.0000, 0.2500 ), vec2( -0.2165, 0.1250 ), vec2( -0.2165, -0.1250 ), vec2( -0.0000, -0.2500 ), vec2( 0.2165, -0.1250 ), vec2( 0.4330, 0.2500 ), vec2( 0.0000, 0.5000 ), vec2( -0.4330, 0.2500 ), vec2( -0.4330, -0.2500 ), vec2( -0.0000, -0.5000 ), vec2( 0.4330, -0.2500 ), vec2( 0.6495, 0.3750 ), vec2( 0.0000, 0.7500 ), vec2( -0.6495, 0.3750 ), vec2( -0.6495, -0.3750 ), vec2( -0.0000, -0.7500 ), vec2( 0.6495, -0.3750 ), vec2( 0.8660, 0.5000 ), vec2( 0.0000, 1.0000 ), vec2( -0.8660, 0.5000 ), vec2( -0.8660, -0.5000 ), vec2( -0.0000, -1.0000 ), vec2( 0.8660, -0.5000 ), vec2( 0.2163, 0.3754 ), vec2( -0.2170, 0.3750 ), vec2( -0.4333, -0.0004 ), vec2( -0.2163, -0.3754 ), vec2( 0.2170, -0.3750 ), vec2( 0.4333, 0.0004 ), vec2( 0.4328, 0.5004 ), vec2( -0.2170, 0.6250 ), vec2( -0.6498, 0.1246 ), vec2( -0.4328, -0.5004 ), vec2( 0.2170, -0.6250 ), vec2( 0.6498, -0.1246 ), vec2( 0.6493, 0.6254 ), vec2( -0.2170, 0.8750 ), vec2( -0.8663, 0.2496 ), vec2( -0.6493, -0.6254 ), vec2( 0.2170, -0.8750 ), vec2( 0.8663, -0.2496 ), vec2( 0.2160, 0.6259 ), vec2( -0.4340, 0.5000 ), vec2( -0.6500, -0.1259 ), vec2( -0.2160, -0.6259 ), vec2( 0.4340, -0.5000 ), vec2( 0.6500, 0.1259 ), vec2( 0.4325, 0.7509 ), vec2( -0.4340, 0.7500 ), vec2( -0.8665, -0.0009 ), vec2( -0.4325, -0.7509 ), vec2( 0.4340, -0.7500 ), vec2( 0.8665, 0.0009 ), vec2( 0.2158, 0.8763 ), vec2( -0.6510, 0.6250 ), vec2( -0.8668, -0.2513 ), vec2( -0.2158, -0.8763 ), vec2( 0.6510, -0.6250 ), vec2( 0.8668, 0.2513 )); #elif DOF_QUALITY == 1 // Low quality bokeh #define BOKEH_SAMPLES 32 const vec2 bokeh_offsets[32] = vec2[32]( vec2(0.12064426510477419, 0.015554431411765697), vec2(-0.16400077998918963, 0.16180237012184204), vec2(0.020080498035937415, -0.2628838391620438), vec2(0.19686650437195816, 0.27801320993574674), vec2(-0.37362329188851157, -0.049763799980476156), vec2(0.34544673107582735, -0.20696126421568928), vec2(-0.12135781397691386, 0.4507963336805642), vec2(-0.22749138875333694, -0.41407969197383454), vec2(0.4797593802468298, 0.19235249500691445), vec2(-0.5079968434096749, 0.22345015963708734), vec2(0.23843255951864029, -0.5032700515259672), vec2(0.17505863904522073, 0.587555727235086), vec2(-0.5451127409909945, -0.29782530685850084), vec2(0.6300137885218894, -0.12390992876509886), vec2(-0.391501580064061, 0.5662295575692019), vec2(-0.09379538975841809, -0.6746452122696498), vec2(0.5447160222309757, 0.47831268960533435), vec2(-0.7432342062047558, 0.04610937594275518), vec2(0.5345993903170301, -0.520777903066999), vec2(-0.0404139208253129, 0.7953459466435174), vec2(-0.517173266802963, -0.5989723613060595), vec2(0.8080038585189984, 0.12485626574164435), vec2(-0.6926663754026566, 0.494463047083117), vec2(0.183730322451809, -0.8205069509230769), vec2(0.43067753069940745, 0.7747454863024757), vec2(-0.8548041452377114, -0.25576180722119723), vec2(0.8217466662308877, -0.3661258311820314), vec2(-0.36224393661662146, 0.87070999332353), vec2(-0.32376306917956177, -0.8724793262829371), vec2(0.8455529005007657, 0.46224259051084376), vec2(-0.9483903811252437, 0.2643989345002705), vec2(0.5322400733549763, -0.818975339518135) ); #elif DOF_QUALITY == 2 // Medium quality bokeh #define BOKEH_SAMPLES 64 const vec2 bokeh_offsets[64] = vec2[64]( vec2(0.07966914016126773, -0.0005732549414365655), vec2(-0.12160530145582471, 0.10283965425501301), vec2(0.008559818525228833, -0.197458844206032), vec2(0.13356640242431705, 0.18501312713480866), vec2(-0.269830801109193, -0.04676021929400281), vec2(0.23862848827685754, -0.15791561224005177), vec2(-0.09145217101863704, 0.3071892456093635), vec2(-0.16649994145461533, -0.30437045701653237), vec2(0.33360187330480306, 0.12444185472734362), vec2(-0.3648472506019276, 0.14643122426640393), vec2(0.16295804188571, -0.36743756507231173), vec2(0.11814591296857804, 0.40389274018272564), vec2(-0.39109215347150406, -0.22216619295880746), vec2(0.43984778429926974, -0.0991894497563406), vec2(-0.2824726599141313, 0.38881286099524415), vec2(-0.07196259394779835, -0.48861810336110434), vec2(0.3795331553348995, 0.3266462474773111), vec2(-0.5311851850227693, 0.021032353535204915), vec2(0.3723796163057802, -0.3798174856209827), vec2(-0.03421619527550065, 0.5508226133906681), vec2(-0.37133596181036055, -0.43510931729303065), vec2(0.5657057697780938, 0.07671481330934922), vec2(-0.49542832895271105, 0.33806627476843804), vec2(0.12427771910967947, -0.5917579278786026), vec2(0.2988957646566429, 0.536255888187953), vec2(-0.6100770454895419, -0.19242280712483223), vec2(0.5754234023037136, -0.27046195686657265), vec2(-0.2617843818309086, 0.6041130418557645), vec2(-0.2345742995202231, -0.6285079469299325), vec2(0.59225695199046, 0.315282971433257), vec2(-0.6762525075113398, 0.17538638065344198), vec2(0.37071132728294354, -0.5906749150680255), vec2(0.1119798859418661, 0.7017402283731283), vec2(-0.5807270152810202, -0.4435682524557845), vec2(0.7229827225912143, -0.06119326417718071), vec2(-0.5144794788954391, 0.5461387788248901), vec2(-0.005035179534685496, -0.7557546423829214), vec2(0.5055857377426614, 0.5663728829872585), vec2(-0.7810140733390272, -0.07214936952359105), vec2(0.6170681003447506, -0.47552351060683423), vec2(-0.15109977600025168, 0.7820762666899624), vec2(-0.43760314844428994, -0.6821127366950525), vec2(0.7772009255491943, 0.21481487028437787), vec2(-0.742204728724318, 0.3758394044302885), vec2(0.28114246867378123, -0.7824253564882913), vec2(0.3091922614465049, 0.7803683548608), vec2(-0.7789831306606206, -0.36561570268862775), vec2(0.8145440939773348, -0.2543941296975529), vec2(-0.4488757377357506, 0.7504758305912105), vec2(-0.1933624476019976, -0.8604246222601459), vec2(0.7154581485450054, 0.513848417434855), vec2(-0.8988765686147268, 0.11036534262592021), vec2(0.5783350546530844, -0.6902686901177914), vec2(0.024600692161986272, 0.9131155784626814), vec2(-0.6564461645240188, -0.657849672537283), vec2(0.9212949234450745, 0.04697899281368057), vec2(-0.7330423210662792, 0.5978985715758123), vec2(0.12225611512756368, -0.9393399804201348), vec2(0.5334856827883492, 0.7868760176859764), vec2(-0.948368229388031, -0.21678429915641398), vec2(0.8372175428305082, -0.4798472000523386), vec2(-0.31121110469716806, 0.9318623471900049), vec2(-0.41881630178513873, -0.899674402337137), vec2(0.9082566602526256, 0.38845471061254216) ); #elif DOF_QUALITY == 3 // High quality bokeh #define BOKEH_SAMPLES 96 const vec2 bokeh_offsets[96] = vec2[96]( vec2(0.07121012932580298, -0.005700790092752472), vec2(-0.09312976408269022, 0.07873549668993801), vec2(0.013149611337887245, -0.16645720056123525), vec2(0.1152170596849477, 0.14582985633924836), vec2(-0.21415537775596927, -0.043412288570053574), vec2(0.20099989356868228, -0.13417028686218047), vec2(-0.06850983617645874, 0.24558623934474322), vec2(-0.1297860841436839, -0.25375016688247776), vec2(0.2785453377231323, 0.09637361951611127), vec2(-0.29173598389867905, 0.1143278645615103), vec2(0.1392152328130355, -0.30524424497902103), vec2(0.10262628276810476, 0.3245443120276563), vec2(-0.3131648573584685, -0.1866306663416654), vec2(0.3652947607876658, -0.08622057598322416), vec2(-0.22447741224677245, 0.3122316422302745), vec2(-0.052596663134391534, -0.4041877401668016), vec2(0.3160480724583331, 0.2614728148450268), vec2(-0.42755033863187675, 0.011940115357288394), vec2(0.3102072322995241, -0.31535240777916773), vec2(-0.021776857676125607, 0.4445120511380856), vec2(-0.29703399441499195, -0.36049799929262627), vec2(0.4680573756135771, 0.05740465338052286), vec2(-0.3983549879059493, 0.27079722808233325), vec2(0.1076328815172257, -0.4884010542428246), vec2(0.25020791867460324, 0.432618369814755), vec2(-0.4919652729660237, -0.1623452935030104), vec2(0.47599178934545766, -0.22606399244564834), vec2(-0.20758550392653913, 0.4880235037760105), vec2(-0.1853685647531024, -0.5184073191472642), vec2(0.48973632510956305, 0.2521947388069187), vec2(-0.5459973114481342, 0.13796965075175446), vec2(0.3088450800163787, -0.48751677798588744), vec2(0.0975917427828865, 0.5677357677730314), vec2(-0.46800107365064036, -0.3674046909313041), vec2(0.5964734698442213, -0.05519682036954475), vec2(-0.4139101866969282, 0.4406877162294968), vec2(0.002049341904248123, -0.6223038109189813), vec2(0.41896957501138105, 0.45720879309620605), vec2(-0.6315347717590759, -0.06414244292517278), vec2(0.5099945429097319, -0.39349604995429904), vec2(-0.11721190170447472, 0.6333298683840053), vec2(-0.3511409257292949, -0.5621754467118343), vec2(0.6407424471834575, 0.17016287772655794), vec2(-0.59984707457312, 0.3016388593021738), vec2(0.23571241320439879, -0.6440803577969166), vec2(0.25861497309905895, 0.6319353642149682), vec2(-0.6298765140060968, -0.3037567005718222), vec2(0.6712330165260425, -0.21294466649920604), vec2(-0.36034495634397506, 0.6075282203535491), vec2(-0.15171922856817155, -0.707766491614509), vec2(0.5903296808625542, 0.4143227465576124), vec2(-0.7277690961712949, 0.08488019551391128), vec2(0.4783691435335692, -0.5688347547957064), vec2(0.02624692981739339, 0.7403230184135525), vec2(-0.529825500118305, -0.5423647377841855), vec2(0.7583947037976506, 0.033125457614728814), vec2(-0.5923660000472654, 0.48294941004015257), vec2(0.1059822487778383, -0.772200611734827), vec2(0.44174978474925664, 0.6372488486615551), vec2(-0.7681788679771326, -0.18223636845309496), vec2(0.6897458099924982, -0.3970263276035467), vec2(-0.2479422541533022, 0.755629690982855), vec2(-0.33580152966568444, -0.7398138028495373), vec2(0.7477490064797803, 0.31193921366734034), vec2(-0.7736080489368817, 0.26795577022080547), vec2(0.3868886663966537, -0.7349923110069412), vec2(0.2072555967697858, 0.8001249720762448), vec2(-0.7040443194892538, -0.4626423043345493), vec2(0.8322384822401724, -0.1447122942561253), vec2(-0.5252166762643815, 0.664457295558192), vec2(-0.06754632697534207, -0.8600666846898691), vec2(0.6296824993369153, 0.5834370562363421), vec2(-0.869944526760866, -0.014179400625216068), vec2(0.6499749876116837, -0.590431834076035), vec2(-0.08653298327805949, 0.8710652567467342), vec2(-0.5336452473653825, -0.7147165352819029), vec2(0.8765151038515352, 0.15835652829089225), vec2(-0.7637367481190092, 0.46912680629507475), vec2(0.24230314452308632, -0.8766382336302021), vec2(0.41057390183400766, 0.8059431929582904), vec2(-0.8580075067207172, -0.32820494707410347), vec2(0.8541129534247509, -0.3489366841323772), vec2(-0.4020475845121665, 0.8300639316319863), vec2(-0.271383304434805, -0.8982601300128057), vec2(0.806149237823113, 0.4726141519370287), vec2(-0.9246093490373926, 0.18793390244305297), vec2(0.5525228823894455, -0.7768686415915086), vec2(0.11248781322457736, 0.9422381490453825), vec2(-0.7290593513744651, -0.6315956494365766), vec2(0.9641126469581356, -0.03618111342429133), vec2(-0.6958327822205611, 0.6724277225888768), vec2(0.05364990040181975, -0.9804535309203316), vec2(0.6205795080163646, 0.7540570525272473), vec2(-0.9777078995622647, -0.14683634641243257), vec2(0.8189512244871316, -0.564380296276503), vec2(-0.22935101607289898, 0.965189829782074) ); #elif DOF_QUALITY == 4 // Ultra quality bokeh #define BOKEH_SAMPLES 128 const vec2 bokeh_offsets[128] = vec2[128]( vec2(0.0663717288408725, -0.0013834293391071473), vec2(-0.07595079370610941, 0.07174054001593103), vec2(0.016089845306454117, -0.1406025646260119), vec2(0.10448284847446448, 0.12984595992288336), vec2(-0.18076204965577036, -0.03404254503522808), vec2(0.1787729618263991, -0.11264127715283463), vec2(-0.05462931069997152, 0.2162375217952921), vec2(-0.10769609808818306, -0.21620049103190728), vec2(0.24592928641190032, 0.08701560245846723), vec2(-0.24794882541635205, 0.10256443477355368), vec2(0.12526587604780554, -0.26079567080797356), vec2(0.09357891581109577, 0.284617218572553), vec2(-0.26650677420701185, -0.15807329847424043), vec2(0.3210564905494301, -0.07111560942753943), vec2(-0.18970119374354508, 0.27395413373961097), vec2(-0.040848098590723636, -0.3464832511798149), vec2(0.27840760740397325, 0.22999569975767717), vec2(-0.3655675068138925, 0.013894042926387594), vec2(0.27334929144700043, -0.2695495965784895), vec2(-0.014157364124171042, 0.38851232827676874), vec2(-0.25253703711299613, -0.3086468256980197), vec2(0.4100515255479846, 0.053267487825832176), vec2(-0.3402835914128429, 0.2380708784965685), vec2(0.09791475751438991, -0.41941412050652843), vec2(0.22138836163818915, 0.3782120981062479), vec2(-0.4213524763303703, -0.13704154865558862), vec2(0.4169229294039292, -0.1922235606360057), vec2(-0.1750723720198253, 0.42619435161677505), vec2(-0.15583193830129546, -0.44540030818645854), vec2(0.42882604653886824, 0.22196065021043188), vec2(-0.46814559427413643, 0.12303882220514525), vec2(0.2721696329659735, -0.41864831480405745), vec2(0.08921887628752824, 0.4952271972313669), vec2(-0.4005988709418946, -0.3146281961132203), vec2(0.5212631254064987, -0.04424824894529297), vec2(-0.35375478872674765, 0.3852003570933512), vec2(0.006476729988070734, -0.5353773094248466), vec2(0.36754024321057777, 0.3995080293577968), vec2(-0.542223207878615, -0.0519953853311339), vec2(0.44637017778921256, -0.33722397584639424), vec2(-0.09680653666400772, 0.5520333546988624), vec2(-0.29939501415200226, -0.4833046185334542), vec2(0.5596011843818348, 0.1509189745951235), vec2(-0.5147808571281486, 0.26478051462710167), vec2(0.20883488566029573, -0.5542363522278412), vec2(0.22866908434076613, 0.5508256786627931), vec2(-0.5407871145385126, -0.2595074195620819), vec2(0.5860067920083645, -0.18086189108585835), vec2(-0.30736593848152494, 0.5296884720449828), vec2(-0.1266907583446624, -0.6093901619826914), vec2(0.5159424480728841, 0.3623676235874931), vec2(-0.6255645775356298, 0.07706200529609625), vec2(0.41898177852462715, -0.4890717485057145), vec2(0.027432455831161814, 0.6446921406553703), vec2(-0.4541403948372952, -0.46614804133513105), vec2(0.6614910274222918, 0.032241087509198955), vec2(-0.5083020565411538, 0.42180005754033856), vec2(0.0964852676297621, -0.6651917468773848), vec2(0.3872684835471157, 0.5554272911761509), vec2(-0.6605604664806174, -0.15426772487094212), vec2(0.6020393414453297, -0.34028128597305507), vec2(-0.21002234293038552, 0.6579481079477967), vec2(-0.2861107074822046, -0.6371439476352124), vec2(0.6522715831040163, 0.2737008831753178), vec2(-0.6652622751135028, 0.2356101038047024), vec2(0.3397573613737368, -0.6329684132153847), vec2(0.1841905597170904, 0.6964821517232016), vec2(-0.6050183182298694, -0.39710638871623194), vec2(0.7254416154649453, -0.12177092336287425), vec2(-0.45014903629822983, 0.5789904973861583), vec2(-0.05379488725502444, -0.7412859981872281), vec2(0.5500229885821982, 0.5088249119127414), vec2(-0.7486921122201893, -0.008726121449014926), vec2(0.5675967989341455, -0.5077753678100256), vec2(-0.07023781394610165, 0.7579182403995453), vec2(-0.45744839298930007, -0.6154090763560658), vec2(0.7637862945741366, 0.14069437605788096), vec2(-0.656713477836827, 0.4098293315506553), vec2(0.21454262641179686, -0.7556373805496136), vec2(0.36026937695710076, 0.7015208788118822), vec2(-0.7383543496199366, -0.28068022211104154), vec2(0.7443854632051411, -0.29863443306808585), vec2(-0.34348147387975525, 0.7224100512613486), vec2(-0.23032288796555528, -0.7743624920949431), vec2(0.7028476670342306, 0.4128494614683644), vec2(-0.7960332370050228, 0.16630913345088935), vec2(0.48320080015941314, -0.6692343793188953), vec2(0.10211925170659499, 0.8195557731909884), vec2(-0.6266819713189401, -0.5434242776289469), vec2(0.839647992213555, -0.027780163659783332), vec2(-0.5979069183510588, 0.5858930896737415), vec2(0.05116412449643274, -0.8455440653042995), vec2(0.5421395668481722, 0.656586163094272), vec2(-0.8420179306636936, -0.12361040648919945), vec2(0.7139345127041803, -0.4852140742679803), vec2(-0.19392185846495172, 0.8394325117685132), vec2(-0.4204487200571126, -0.7589178553865392), vec2(0.8327210388300782, 0.27198001249322223), vec2(-0.7960210362439597, 0.35875934008010707), vec2(0.3521694740750743, -0.8113417187989848), vec2(0.2956218966152538, 0.8352993597773058), vec2(-0.7802993418734316, -0.4233366042943169), vec2(0.8713623792816834, -0.22102227243790618), vec2(-0.4898157243847507, 0.7501925472112333), vec2(-0.1404730904953662, -0.8933311986231547), vec2(0.7161931362879647, 0.5614815300362244), vec2(-0.9058628529093994, 0.06505632357778653), vec2(0.6327340635903044, -0.6679986961411009), vec2(-0.009601876744475778, 0.9192004679524599), vec2(-0.6108521377052276, -0.6924574614793783), vec2(0.9281555629938579, 0.09338283007560376), vec2(-0.7450460329935668, 0.555586889447176), vec2(0.18065981280216364, -0.9220637339884982), vec2(0.4976041523666884, 0.8004563576254236), vec2(-0.9058072969449353, -0.26025660300795816), vec2(0.8531917506909307, -0.4268234961929668), vec2(-0.33647364470405444, 0.8898636052739477), vec2(-0.3487004193922513, -0.8922603177419213), vec2(0.8692854206244577, 0.4191405201257309), vec2(-0.922200158608347, 0.27426963027794127), vec2(0.5026010788472942, -0.8336545903450451), vec2(0.19912047190109702, 0.953130414632473), vec2(-0.7881026276127884, -0.575672440830542), vec2(0.9797345166178452, -0.1133457865497118), vec2(-0.6426714284056454, 0.743356925293099), vec2(-0.022557857722768027, -0.9912168632834627), vec2(0.694719000547024, 0.7134671125059463), vec2(-0.992326501717018, -0.062069798758671524) ); #endif #if DOF_QUALITY == 5 || defined(DOF_JITTER_SHADOW) // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE) const vec2 jitter_offsets[64] = vec2[]( vec2(0.08838834764831845, 0), vec2(-0.1846432401149469, -0.8598513673187094), vec2(0.017279026012279545, -0.19688558926459543), vec2(-0.3024918972101173, 0.9324356021314415), vec2(-0.9396490219009803, -0.21621104421497742), vec2(0.24734769576390825, -0.1573423572986152), vec2(-0.41009709429808805, -0.8991011473957005), vec2(0.5744249772651445, 0.07728806825078578), vec2(0.3423210807918538, 0.12501510966878018), vec2(-0.44015653024869994, 0.751049085532647), vec2(0.17167724937276072, -0.36686431013087517), vec2(0.12686512045562875, 0.4044659951241622), vec2(-0.42888394095723925, -0.6815394817536159), vec2(0.4485669917863205, -0.09861619481490404), vec2(-0.27375345242708055, 0.3893861159366807), vec2(-0.06324338646074763, -0.4880448484196678), vec2(0.3882523628219502, 0.32721950241874764), vec2(-0.14238056851320097, 0.782649521631399), vec2(0.3810988237928309, -0.37924423067954616), vec2(-0.025496987788449936, 0.5513958683321046), vec2(-0.3626167543233098, -0.4345360623515941), vec2(0.9169758677396763, 0.3890279655539787), vec2(-0.48670912146566037, 0.3386395297098746), vec2(0.13299692659673018, -0.591184672937166), vec2(-0.2530651743438579, 0.6046862967972011), vec2(-0.6013578380024912, -0.19184955218339567), vec2(0.9300141309321251, 0.047552247755117134), vec2(-0.35612804311487684, 0.1470044792078405), vec2(-0.2258550920331724, -0.6279346919884959), vec2(0.6257873078318013, -0.47495025566539767), vec2(-0.6675333000242891, 0.17595963559487854), vec2(0.3794305347699942, -0.5901016601265889), vec2(0.12069909342891681, 0.7023134833145649), vec2(-0.5720078077939695, -0.44299499751434795), vec2(0.731701930078265, -0.06062000923574415), vec2(-0.5057602714083884, 0.5467120337663267), vec2(0.2898616761608319, -0.7818521015468547), vec2(0.514304945229712, 0.5669461379286951), vec2(-0.7722948658519765, -0.07157611458215449), vec2(0.6009761594775107, 0.31585622637469357), vec2(-0.5224659775357187, 0.02160560847664148), vec2(-0.3823729459844533, -0.2215929380173709), vec2(0.785920133036245, 0.21538812522581444), vec2(-0.7334855212372673, 0.3764126593717251), vec2(0.1309753226146144, -0.9387667254786982), vec2(0.31791146893355565, 0.7809416098022366), vec2(0.3076149721436936, 0.5368291431293896), vec2(0.8232633014643855, -0.2538208747561163), vec2(-0.77026392317357, -0.3650424477471912), vec2(-0.112886093968774, 0.10341290919644958), vec2(0.7241773560320561, 0.5144216723762915), vec2(-0.8901573611276761, 0.11093859756735677), vec2(0.5870542621401351, -0.6896954351763548), vec2(0.033319899649036984, 0.913688833404118), vec2(-0.6477269570369681, -0.6572764175958464), vec2(0.5841426097907643, -0.2698887019251361), vec2(-0.7243231135792285, 0.5984718265172488), vec2(0.003684027952365215, -0.7551813874414849), vec2(0.5422048902753999, 0.7874492726274129), vec2(-0.15778073396756462, -0.3037972020750958), vec2(0.8459367503175589, -0.47927394511090204), vec2(0.14228560991136777, 0.18558638207624523), vec2(-0.08273296353158632, 0.30776250055080007), vec2(-0.26111159362214226, -0.046186964352566244) ); #endif mat2 rotate(float angle){ return mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); } ================================================ FILE: shaders/lib/climate_settings.glsl ================================================ // this file contains all things for seasons, weather, and biome specific settings. uniform float Summer; uniform float Autumn; uniform float Winter; uniform float Spring; uniform float smoothSwamps; uniform float smoothJungles; uniform float smoothDarkForests; uniform float smoothBiome_Snowy; uniform float smoothBiome_Dry; uniform float snowStorm; uniform float sandStorm; uniform float sandStorm_red; /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// SEASONS ////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// #ifdef Seasons #ifdef SEASONS_VSH void YearCycleColor( inout vec3 FinalColor, vec3 glcolor, bool isLeaves, bool isPlants ){ // colors for things that arent leaves and using the tint index. vec3 SummerCol = vec3(Summer_R, Summer_G, Summer_B); vec3 AutumnCol = vec3(Fall_R, Fall_G, Fall_B); vec3 WinterCol = vec3(Winter_R, Winter_G, Winter_B) ; vec3 SpringCol = vec3(Spring_R, Spring_G, Spring_B); // decide if you want to replace biome colors or tint them. SummerCol *= glcolor; AutumnCol *= glcolor; WinterCol *= glcolor; SpringCol *= glcolor; // do leaf colors different because thats cool and i like it if(isLeaves) { SummerCol = vec3(Summer_Leaf_R, Summer_Leaf_G, Summer_Leaf_B); AutumnCol = vec3(Fall_Leaf_R, Fall_Leaf_G, Fall_Leaf_B); WinterCol = vec3(Winter_Leaf_R, Winter_Leaf_G, Winter_Leaf_B); SpringCol = vec3(Spring_Leaf_R, Spring_Leaf_G, Spring_Leaf_B); SummerCol *= glcolor; AutumnCol *= glcolor; WinterCol *= glcolor; SpringCol *= glcolor; } // lerp all season colors together vec3 SummerToFall = mix(SummerCol, AutumnCol, Summer); vec3 FallToWinter = mix(SummerToFall, WinterCol, Autumn); vec3 WinterToSpring = mix(FallToWinter, SpringCol, Winter); vec3 SpringToSummer = mix(WinterToSpring, SummerCol, Spring); // make it so that you only have access to parts of the texture that use the tint index #ifdef DH_SEASONS bool IsTintIndex = isPlants || isLeaves; #else bool IsTintIndex = floor(dot(glcolor,vec3(0.5))) < 1.0; #endif // multiply final color by the final lerped color, because it contains all the other colors. if(IsTintIndex) FinalColor = SpringToSummer; } #endif #endif /////////////////////////////////////////////////////////////////////////////// ///////////////////////////// BIOME SPECIFICS ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////// #ifdef PER_BIOME_ENVIRONMENT // these range 0.0-1.0. they will never overlap. float Inbiome = smoothJungles + smoothSwamps + smoothDarkForests + smoothBiome_Snowy + smoothBiome_Dry; void BiomeFogColor(inout vec3 FinalFogColor){ vec3 BiomeColors = vec3(0.0); BiomeColors.r = smoothSwamps*SWAMP_R + smoothJungles*JUNGLE_R + smoothDarkForests*DARKFOREST_R + smoothBiome_Snowy*SNOWY_R + snowStorm*0.6 + smoothBiome_Dry*DRY_R + sandStorm*1.0 + sandStorm_red*1.0; BiomeColors.g = smoothSwamps*SWAMP_G + smoothJungles*JUNGLE_G + smoothDarkForests*DARKFOREST_G + smoothBiome_Snowy*SNOWY_G + snowStorm*0.8 + smoothBiome_Dry*DRY_G + sandStorm*0.85 + sandStorm_red*0.3; BiomeColors.b = smoothSwamps*SWAMP_B + smoothJungles*JUNGLE_B + smoothDarkForests*DARKFOREST_B + smoothBiome_Snowy*SNOWY_B + snowStorm*1.0 + smoothBiome_Dry*DRY_B + sandStorm*0.4 + sandStorm_red*0.2; // 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); // interpoloate between normal fog colors and biome colors. the transition speeds are conrolled by the biome uniforms. FinalFogColor = mix(FinalFogColor, BiomeColors, Inbiome); } void BiomeFogDensity( inout vec4 UniformDensity, inout vec4 CloudyDensity, float maxDistance ){ vec2 BiomeFogDensity = vec2(0.0); // x = uniform || y = cloudy BiomeFogDensity.x = smoothSwamps*SWAMP_UNIFORM_DENSITY + smoothJungles*JUNGLE_UNIFORM_DENSITY + smoothDarkForests*DARKFOREST_UNIFORM_DENSITY + smoothBiome_Snowy*SNOWY_UNIFORM_DENSITY + snowStorm*0.01 + smoothBiome_Dry*DRY_UNIFORM_DENSITY + sandStorm*0.0 + sandStorm_red*0.0; BiomeFogDensity.y = smoothSwamps*SWAMP_CLOUDY_DENSITY + smoothJungles*JUNGLE_CLOUDY_DENSITY + smoothDarkForests*DARKFOREST_CLOUDY_DENSITY + smoothBiome_Snowy*SNOWY_CLOUDY_DENSITY + snowStorm*0.5 + smoothBiome_Dry*DRY_CLOUDY_DENSITY + sandStorm*0.5 + sandStorm_red*0.5; UniformDensity = UniformDensity + vec4(BiomeFogDensity.x) * Inbiome * maxDistance; CloudyDensity = CloudyDensity + vec4(BiomeFogDensity.y) * Inbiome * maxDistance; } float BiomeVLFogColors(inout vec3 DirectLightCol, inout vec3 IndirectLightCol){ vec3 BiomeColors = vec3(0.0); BiomeColors.r = smoothSwamps*SWAMP_R + smoothJungles*JUNGLE_R + smoothDarkForests*DARKFOREST_R + smoothBiome_Snowy*SNOWY_R + snowStorm*0.6 + smoothBiome_Dry*DRY_R + sandStorm*1.0 + sandStorm_red*1.0; BiomeColors.g = smoothSwamps*SWAMP_G + smoothJungles*JUNGLE_G + smoothDarkForests*DARKFOREST_G + smoothBiome_Snowy*SNOWY_G + snowStorm*0.8 + smoothBiome_Dry*DRY_G + sandStorm*0.85 + sandStorm_red*0.3; BiomeColors.b = smoothSwamps*SWAMP_B + smoothJungles*JUNGLE_B + smoothDarkForests*DARKFOREST_B + smoothBiome_Snowy*SNOWY_B + snowStorm*1.0 + smoothBiome_Dry*DRY_B + sandStorm*0.4 + sandStorm_red*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); return Inbiome; } #endif ================================================ FILE: shaders/lib/color_dither.glsl ================================================ //using white noise for color dithering : gives a somewhat more "filmic" look when noise is visible float nrand(vec2 n){ return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453); } float triangWhiteNoise( vec2 n ){ float t = fract( frameTimeCounter ); float rnd = nrand( n + 0.07*t ); float center = rnd*2.0-1.0; rnd = center*inversesqrt(abs(center)); rnd = max(-1.0,rnd); return rnd-sign(center); } vec3 fp10Dither(vec3 color,vec2 tc01){ float dither = triangWhiteNoise(tc01); const vec3 mantissaBits = vec3(6.,6.,5.); vec3 exponent = floor(log2(color)); return color + dither*exp2(-mantissaBits)*exp2(exponent); } vec3 fp16Dither(vec3 color,vec2 tc01){ float dither = triangWhiteNoise(tc01); const vec3 mantissaBits = vec3(10.); vec3 exponent = floor(log2(color)); return color + dither*exp2(-mantissaBits)*exp2(exponent); } vec3 int8Dither(vec3 color,vec2 tc01){ float dither = triangWhiteNoise(tc01); return color + dither*exp2(-8.0); } vec3 int10Dither(vec3 color,vec2 tc01){ float dither = triangWhiteNoise(tc01); return color + dither*exp2(-10.0); } vec3 int16Dither(vec3 color,vec2 tc01){ float dither = triangWhiteNoise(tc01); return color + dither*exp2(-16.0); } ================================================ FILE: shaders/lib/cube/cubeData.glsl ================================================ #if !defined HAND const mat4 cubeProjection = mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, (1000.0+0.01)/(0.01-1000.0), -1.0, 0.0, 0.0, (2.0*1000.0*0.01)/(0.01-1000.0), 0.0); #else const mat4 cubeProjection = mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, (1000.0+0.1)/(0.1-1000.0), -1.0, 0.0, 0.0, (2.0*1000.0*0.1)/(0.1-1000.0), 0.0); #endif const mat4 cubeProjectionInverse = mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0/((2*1000.0*0.01)/(0.01-1000.0)), 0.0, 0.0, -1.0, ((1000.0+0.01) / (0.01-1000.0)) / ((2.0*1000.0*0.01) / (0.01-1000.0))); // LookAt matrix based on https://stackoverflow.com/a/21830596 // eye at 0, because worldspace // left = -x // up = +y // forward = -z const mat4 cubeForward = mat4(-1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0); // left = -z // up = +y // forward = +x const mat4 cubeRight = mat4(0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0); // left = +x // up = +y // forward = +z const mat4 cubeBack = mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); // left = +z // up = +y // forward = -x const mat4 cubeLeft = mat4(0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0); // left = -x // up = -z // forward = -y const mat4 cubeTop = mat4(-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0); // left = -x // up = z // forward = +y const mat4 cubeDown = mat4(-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0); const mat4 directionMatices[6] = mat4[]( cubeBack, cubeTop, cubeDown, cubeLeft, cubeForward, cubeRight); const mat4 directionMaticesInverse[6] = mat4[]( transpose(cubeBack), transpose(cubeTop), transpose(cubeDown), transpose(cubeLeft), transpose(cubeForward), transpose(cubeRight)); const vec2 faceOffsets[6] = vec2[]( vec2(0.0, 0.0), vec2(2.0, 0.0), vec2(1.0, 1.0), vec2(2.0, 1.0), vec2(1.0, 0.0), vec2(0.0, 1.0) ); const vec2 screenRes = vec2(shadowMapResolution); const vec2 cubeTileResolution = floor(screenRes/(vec2(3.0,2.0)*5.0)); const vec2 cubeTileRelativeResolution = cubeTileResolution/screenRes; const ivec2 minBounds[6] = ivec2[]( ivec2(0, cubeTileResolution.y), ivec2(cubeTileResolution.xy), ivec2(cubeTileResolution.x*2,cubeTileResolution.y), ivec2(0, 0), ivec2(cubeTileResolution.x, 0), ivec2(cubeTileResolution.x*2, 0)); const ivec2 maxBounds[6] = ivec2[]( ivec2(cubeTileResolution.x, cubeTileResolution.y*2), ivec2(cubeTileResolution.x*2, cubeTileResolution.y*2), ivec2(cubeTileResolution.x*3, cubeTileResolution.y*2), ivec2(cubeTileResolution.x, cubeTileResolution.y), ivec2(cubeTileResolution.x*2, cubeTileResolution.y), ivec2(cubeTileResolution.x*3, cubeTileResolution.y)); const vec2 cubeFaceOffsets[6] = vec2[]( vec2(0.0, cubeTileRelativeResolution.y), vec2(cubeTileRelativeResolution.xy), vec2(cubeTileRelativeResolution.x*2.0, cubeTileRelativeResolution.y), vec2(0.0, 0.0), vec2(cubeTileRelativeResolution.x, 0.0), vec2(cubeTileRelativeResolution.x*2.0, 0.0)); const vec2 renderOffsets[9] = vec2[]( vec2(0.0, cubeTileRelativeResolution.y*8.0), vec2(cubeTileRelativeResolution.x*3.0, cubeTileRelativeResolution.y*8.0), vec2(cubeTileRelativeResolution.x*6.0, cubeTileRelativeResolution.y*8.0), vec2(cubeTileRelativeResolution.x*9.0, cubeTileRelativeResolution.y*8.0), vec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*8.0), vec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*6.0), vec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*4.0), vec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*2.0), vec2(cubeTileRelativeResolution.x*12.0, 0.0)); const vec2 renderBounds[9] = vec2[]( vec2(0.0, cubeTileResolution.y*8.0), vec2(cubeTileResolution.x*3.0, cubeTileResolution.y*8.0), vec2(cubeTileResolution.x*6.0, cubeTileResolution.y*8.0), vec2(cubeTileResolution.x*9.0, cubeTileResolution.y*8.0), vec2(cubeTileResolution.x*12.0, cubeTileResolution.y*8.0), vec2(cubeTileResolution.x*12.0, cubeTileResolution.y*6.0), vec2(cubeTileResolution.x*12.0, cubeTileResolution.y*4.0), vec2(cubeTileResolution.x*12.0, cubeTileResolution.y*2.0), vec2(cubeTileResolution.x*12.0, 0.0)); const vec2 cornerOffset = vec2(-1.0 + cubeTileRelativeResolution); ================================================ FILE: shaders/lib/cube/emit.glsl ================================================ #include "/lib/cube/cubeData.glsl" void emitCubemap(mat4 directionMatrix, vec2 offset, vec3 lightPosition) { vec4[] positions = vec4[3]( cubeProjection*directionMatrix*vec4(worldPos[0] - lightPosition, 1.0), cubeProjection*directionMatrix*vec4(worldPos[1] - lightPosition, 1.0), cubeProjection*directionMatrix*vec4(worldPos[2] - lightPosition, 1.0)); if ((positions[0].x < positions[0].w || (positions[1].x) < positions[1].w || (positions[2].x) < positions[2].w) && (positions[0].x > -positions[0].w || (positions[1].x) > -positions[1].w || (positions[2].x) > -positions[2].w)) { for (int i = 0; i < 3; i++) { #if defined OVERWORLD_SHADER && defined TRANSLUCENT_COLORED_SHADOWS Fcolor = color[i].rgb; #endif // move vertex to cube face positions[i].xy = positions[i].xy*cubeTileRelativeResolution + (cornerOffset + offset) *positions[i].w; gl_Position = positions[i]; Ftexcoord = texcoord[i]; EmitVertex(); } EndPrimitive(); } } ================================================ FILE: shaders/lib/cube/lightData.glsl ================================================ bool getLightData(in uint data, out float dist, out ivec3 pos, out uint id) { if (data == 4294967295u) { return false; } else { dist = float((data & 0xFC000000u) >> 26) * 0.25; pos = ivec3((data & 0x03E00000u) >> 21, (data & 0x001F0000u) >> 16, (data & 0x0000F800u) >> 11); id = (data & 0x000007FFu); return true; } } ================================================ FILE: shaders/lib/diffuse_lighting.glsl ================================================ #ifdef IS_LPV_ENABLED vec3 GetHandLight(const in int itemId, const in vec3 playerPos, const in vec3 normal) { vec3 lightFinal = vec3(0.0); vec3 lightColor = vec3(0.0); float lightRange = 0.0; uvec2 blockData = texelFetch(texBlockData, itemId, 0).rg; vec4 lightColorRange = unpackUnorm4x8(blockData.r); lightColor = srgbToLinear(lightColorRange.rgb); #if defined LPV_SHADOWS && defined LPV_HAND_SHADOWS lightColor *= LPV_SHADOWS_LIGHT_MULT; #endif lightRange = lightColorRange.a * 255.0; if (lightRange > 0.0) { float lightDist = length(playerPos); vec3 lightDir = playerPos / lightDist; float NoL = 1.0;//max(dot(normal, lightDir), 0.0); float falloff = pow(1.0 - lightDist / lightRange, 3.0); lightFinal = lightColor * NoL * max(falloff, 0.0); } return lightFinal; } #ifdef LPV_SHADOWS #include "/lib/cube/cubeData.glsl" #include "/lib/cube/lightData.glsl" uniform usampler1D texCloseLights; #ifdef LPV_HAND_SHADOWS uniform vec3 relativeEyePosition; uniform vec3 playerLookVector; #endif #if !defined TRANSLUCENT_COLORED_SHADOWS || defined DAMAGE_BLOCK_EFFECT || !defined OVERWORLD_SHADER uniform sampler2DShadow shadowtex0; #ifdef LPV_COLOR_SHADOWS uniform sampler2DShadow shadowtex1; uniform sampler2D shadowcolor0; #endif #endif vec3 worldToCube(vec3 worldPos, out int faceIndex) { vec3 worldPosAbs = abs(worldPos); /* cubeBack, 0 cubeTop, 1 cubeDown, 2 cubeLeft, 3 cubeForward, 4 cubeRight 5 */ if (worldPosAbs.z >= worldPosAbs.x && worldPosAbs.z >= worldPosAbs.y) { // looking in z direction (forward | back) faceIndex = worldPos.z <= 0.0 ? 0 : 4; } else if (worldPosAbs.y >= worldPosAbs.x) { // looking in y direction (up | down) faceIndex = worldPos.y <= 0.0 ? 2 : 1; } else { // looking in x direction (left | right) faceIndex = worldPos.x <= 0.0 ? 5 : 3; } vec4 coord = cubeProjection * directionMatices[faceIndex] * vec4(worldPos, 1.0); coord.xyz /= coord.w; return coord.xyz * 0.5 + 0.5; } vec2 cubeOffset(vec2 relativeCoord, int faceIndex, int cube) { return relativeCoord*cubeTileRelativeResolution + cubeFaceOffsets[faceIndex] + renderOffsets[cube]; } vec3 getCubeShadow(vec3 cubeShadowPos, int faceIndex, int cube) { vec3 pos = vec3(cubeOffset(cubeShadowPos.xy, faceIndex, cube), cubeShadowPos.z); float solid = texture(shadowtex0, pos); #ifdef LPV_COLOR_SHADOWS float noTrans = texture(shadowtex1, pos); return noTrans > solid ? texture(shadowcolor0, pos.xy).rgb : vec3(solid); #else return vec3(solid); #endif } #endif #endif vec3 doBlockLightLighting( vec3 lightColor, float lightmap, vec3 playerPos, vec3 lpvPos, vec3 normalWorld ){ 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.5, lightmapBrightspot); vec3 blockLight = lightmapCurve * lightColor; #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. float fadeLength = 10.0; // in meters vec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0); float voxelRangeFalloff = cubicRadius.x*cubicRadius.y*cubicRadius.z; 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 + lightColor * 2.5 * min(max(lightmap-0.999,0.0)/(1.0-0.999), 1.0), voxelRangeFalloff); #ifdef Hand_Held_lights // create handheld lightsources const vec3 normal = vec3(0.0); // TODO if (heldItemId > 0) blockLight += GetHandLight(heldItemId, playerPos, normal); if (heldItemId2 > 0) blockLight += GetHandLight(heldItemId2, playerPos, normal); #endif #ifdef LPV_SHADOWS for(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++){ uint data = texelFetch(texCloseLights, i, 0).r; float dist; ivec3 pos; uint blockId; if (getLightData(data, dist, pos, blockId)) { vec3 lightPos = -fract(previousCameraPosition) - cameraPosition + previousCameraPosition + vec3(pos) - 14.5; #ifdef LPV_HAND_SHADOWS if (dist < 0.0001) { vec2 viewDir = normalize(playerLookVector.xz) * 0.25; lightPos = -relativeEyePosition + vec3(viewDir.x, 0, viewDir.y); } #endif int face = 0; vec3 dir = playerPos - lightPos; float d = dot(-normalWorld, normalize(dir)); if (d > 0) { uint blockData = texelFetch(texBlockData, int(blockId), 0).r; vec4 lightColorRange = unpackUnorm4x8(blockData); lightColorRange.a *= 255.0; float dist = length(dir); if (dist < lightColorRange.a) { const float bias = (3072.0 / shadowMapResolution) * 0.05; vec3 pos = worldToCube(dir + normalWorld * (0.05 + bias - bias * d), face); float blend = (1.0 - dist / lightColorRange.a) / (1.0 + dist * -0.3 + dist * dist * 0.4); blockLight += d * srgbToLinear(lightColorRange.rgb) * getCubeShadow(pos, face, i) * blend; } } } else { // since lights are sorted, if one light is invalid all followings are aswell break; } } #endif #endif return blockLight * TORCH_AMOUNT; } vec3 doIndirectLighting(vec3 lightColor, vec3 minimumLightColor, float lightmap){ float lightmapCurve = pow(lightmap, 15.0) + pow(lightmap, 2.5) / 3.0; //make sure its 0.0-1.0; vec3 indirectLight = lightColor * lightmapCurve * ambient_brightness; indirectLight += minimumLightColor * ((MIN_LIGHT_AMOUNT * 0.2 + nightVision) * 0.02); return indirectLight; } uniform float centerDepthSmooth; #ifdef VIVECRAFT uniform bool vivecraftIsVR; uniform vec3 vivecraftRelativeMainHandPos; uniform vec3 vivecraftRelativeOffHandPos; uniform mat4 vivecraftRelativeMainHandRot; uniform mat4 vivecraftRelativeOffHandRot; #endif vec3 calculateFlashlight(in vec2 texcoord, in vec3 viewPos, in vec3 albedo, in vec3 normal, out vec4 flashLightSpecularData, bool hand) { vec3 shiftedViewPos; vec3 shiftedPlayerPos; float forwardOffset; #ifdef VIVECRAFT if (vivecraftIsVR) { forwardOffset = 0.0; shiftedPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + vivecraftRelativeMainHandPos; shiftedViewPos = shiftedPlayerPos * mat3(vivecraftRelativeMainHandRot); } else #endif { forwardOffset = 0.5; shiftedViewPos = viewPos + vec3(-0.25, 0.2, 0.0); shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition) * 3.0; shiftedViewPos = mat3(gbufferPreviousModelView) * shiftedPlayerPos + gbufferPreviousModelView[3].xyz; } vec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - forwardOffset, 1e-7); float linearDistance = length(shiftedPlayerPos); float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); lightFalloff = max(exp(-10.0 * FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT * lightFalloff),0.0); #if defined FLASHLIGHT_SPECULAR && (defined DEFERRED_SPECULAR || defined FORWARD_SPECULAR) float flashLightSpecular = lightFalloff * exp2(-7.0*shiftedLinearDistance*shiftedLinearDistance) * FLASHLIGHT_BRIGHTNESS_MULT; flashLightSpecularData = vec4(normalize(shiftedPlayerPos), flashLightSpecular); #endif float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); float lenseDirt = texture2D(noisetex, scaledViewPos * 0.2 + 0.1).b; float lenseShape = (pow(abs(pow(abs(projectedCircle-1.0),2.0)*2.0 - 0.5),2.0) + lenseDirt*0.2) * 10.0; float offsetNdotL = clamp(dot(-normal, normalize(shiftedPlayerPos)),0,1); vec3 flashlightDiffuse = vec3(1.0) * lightFalloff * offsetNdotL * pow(1.0-pow(1.0-projectedCircle,2),2) * lenseShape * FLASHLIGHT_BRIGHTNESS_MULT; if(hand){ flashlightDiffuse = vec3(0.0); flashLightSpecularData = vec4(0.0); } #ifdef FLASHLIGHT_BOUNCED_INDIRECT float lightWidth = 1.0+linearDistance*3.0; vec3 pointPos = mat3(gbufferModelViewInverse) * (toScreenSpace(vec3(texcoord, centerDepthSmooth)) + vec3(-0.25, 0.2, 0.0)); float flashLightHitPoint = distance(pointPos, shiftedPlayerPos); float indirectFlashLight = exp(-10.0 * (1.0 - clamp(1.0-length(shiftedViewPos.xy)/lightWidth,0.0,1.0)) ); indirectFlashLight *= pow(clamp(1.0-flashLightHitPoint/lightWidth,0,1),2.0); flashlightDiffuse += albedo/150.0 * indirectFlashLight * lightFalloff; #endif return flashlightDiffuse * vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B); } ================================================ FILE: shaders/lib/dither.glsl ================================================ uniform sampler2D noisetex; uniform int frameCounter; 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 R2_dither(){ 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(){ #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 } vec2 randNoise(vec2 p){ vec2 co = floor(p); vec2 mu = fract(p); mu = 3.*mu*mu-2.*mu*mu*mu; vec2 a = simpleRand22((co+vec2(0.,0.))); vec2 b = simpleRand22((co+vec2(1.,0.))); vec2 c = simpleRand22((co+vec2(0.,1.))); vec2 d = simpleRand22((co+vec2(1.,1.))); return mix(mix(a, b, mu.x), mix(c, d, mu.x), mu.y); } ================================================ FILE: shaders/lib/end_fog.glsl ================================================ // Hash without Sine // MIT License... /* Copyright (c)2014 David Hoskins. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/ //---------------------------------------------------------------------------------------- // Integer Hash - II // - Inigo Quilez, Integer Hash - II, 2017 // https://www.shadertoy.com/view/XlXcW4 //---------------------------------------------------------------------------------------- uvec3 iqint2(uvec3 x){ const uint k = 1103515245u; x = ((x>>8U)^x.yzx)*k; x = ((x>>8U)^x.yzx)*k; x = ((x>>8U)^x.yzx)*k; return x; } uvec3 hash(vec2 s){ uvec4 u = uvec4(s, uint(s.x) ^ uint(s.y), uint(s.x) + uint(s.y)); // Play with different values for 3rd and 4th params. Some hashes are okay with constants, most aren't. return iqint2(u.xyz); } //---------------------------------------------------------------------------------------- float vortexBoundRange = 300.0; vec3 LightSourcePosition(vec3 worldPos, vec3 cameraPos, float vortexBounds){ // this is static so it can just sit in one place vec3 vortexPos = worldPos - vec3(0.0,200.0,0.0); vec3 lightningPos = worldPos - cameraPos; // snap-to coordinates in worldspace. float cellSize = 200.0; lightningPos += fract(cameraPos/cellSize)*cellSize - cellSize*0.5; // make the position offset to random places (RNG.xyz from non-clearing buffer). vec3 randomOffset = (texelFetch2D(colortex4,ivec2(2,1),0).xyz / 150.0) * 2.0 - 1.0; lightningPos -= randomOffset * 2.5; return mix(lightningPos, vortexPos, vortexBounds); } float densityAtPosFog(in vec3 pos){ pos /= 16.0; pos.xz *= 0.5; vec3 p = floor(pos); vec3 f = fract(pos); f = (f*f) * (3.-2.*f); vec2 uv = p.xz + f.xz + p.y * vec2(0.0,192.0); vec2 coord = uv * 0.002; vec2 xy = texture2D(noisetex, coord).yx; return mix(xy.r,xy.g, f.y); } // Create a rising swirl centered around some origin. void SwirlAroundOrigin(inout vec3 alteredOrigin, vec3 origin){ float radiance = 2.39996 + alteredOrigin.y/1.5 + frameTimeCounter/50; mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); // make the swirl only happen within a radius float SwirlBounds = clamp(sqrt(length(vec3(origin.x, origin.y-100,origin.z)) / 200.0 - 1.0),0.0,1.0); alteredOrigin.xz = mix(alteredOrigin.xz * rotationMatrix, alteredOrigin.xz, SwirlBounds); } // control where the fog volume should and should not be using a sphere. void VolumeBounds(inout float Volume, vec3 Origin){ vec3 Origin2 = (Origin - vec3(0,100,0)); Origin2.y *= 0.8; float Center1 = length(Origin2); float Bounds = max(1.0 - Center1 / 75.0, 0.0) * 5.0; float radius = 175.0; float thickness = 7500.0; float Torus = (thickness - clamp(pow(length(vec2(length(Origin.xz) - radius, Origin2.y)),2.0) - radius, 0.0, thickness)) / thickness; Origin2.xz *= 0.5; Origin2.y -= 100; float orb = clamp((1.0 - length(Origin2) / 15.0) * 1.0, 0.0, 1.0); Volume = max(Volume - Bounds - Torus, 0); } // create the volume shape float fogShape(in vec3 pos){ float vortexBounds = clamp(vortexBoundRange - length(pos), 0.0,1.0); vec3 samplePos = pos*vec3(1.0,1.0/48.0,1.0); float fogYstart = -60; // this is below down where you fall to your death. float voidZone = max(exp2(-1.0 * sqrt(max(pos.y + 60.0, 0.0))), 0.0) ; // swirly swirly :DDDDDDDDDDD SwirlAroundOrigin(samplePos, pos); float noise = densityAtPosFog(samplePos * 12.0); float erosion = 1.0 - densityAtPosFog((samplePos - frameTimeCounter/20) * (96.0 + (1 - noise) * 6.0)); float clumpyFog = max(exp(noise * -mix(10,4,vortexBounds)) * mix(2,1,vortexBounds) - erosion * 0.3, 0.0); // apply limts VolumeBounds(clumpyFog, pos); return clumpyFog + voidZone; } float endFogPhase(vec3 LightPos){ float mie = exp(length(LightPos) / -50.0); return (mie * 10.0) * (mie * 10.0); } vec3 LightSourceColors(float vortexBounds, float lightningflash){ vec3 vortexColor = vec3(END_VORTEX_R, END_VORTEX_G, END_VORTEX_B); vec3 lightningColor = vec3(END_LIGHTNING_R, END_LIGHTNING_G, END_LIGHTNING_B) * lightningflash; return mix(lightningColor, vortexColor, vortexBounds); } vec3 LightSourceLighting(vec3 startPos, vec3 lightPos, float noise, float density, vec3 lightColor, float vortexBound){ float phase = endFogPhase(lightPos); float shadow = 0.0; for (int i = 0; i < 3; i++){ vec3 shadowSamplePos = startPos - lightPos * (0.05 + i * 0.25); shadow += fogShape(shadowSamplePos); } vec3 finalLighting = lightColor * phase * exp(-32.0 * shadow); finalLighting += lightColor * phase * phase * (1.0 - exp(-shadow * vec3(END_VORTEX_R, END_VORTEX_G, END_VORTEX_B))) * (1.0 - exp(-density * density)); return finalLighting; } //Mie phase function float phaseEND(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; } vec4 GetVolumetricFog( vec3 viewPosition, float dither, float dither2 ){ #ifndef TOGGLE_VL_FOG return vec4(0.0,0.0,0.0,1.0); #endif /// ------------- RAYMARCHING STUFF ------------- \\\ vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz; vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); vec3 progressW = vec3(0.0); float maxLength = min(length(dVWorld), 480.0) / length(dVWorld); dVWorld *= maxLength; float dL = length(dVWorld); float expFactor = 11.0; /// ------------- COLOR/LIGHTING STUFF ------------- \\\ int SAMPLECOUNT = 16; vec3 color = vec3(0.0); float absorbance = 1.0; float CenterdotV = dot(normalize(vec3(0,100,0)-cameraPosition), normalize(wpos + cameraPosition)); float skyPhase = (0.5 + pow(clamp(normalize(wpos).y * 0.5 + 0.5, 0.0, 1.0), 4.0) * 5.0) * 0.1; float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0; #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 dd = pow(expFactor, float(i+dither2)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition + d*dVWorld; //------ END STORM EFFECT // 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.5; float volumeDensity = fogShape(progressW); float clearArea = 1.0-min(max(1.0 - length(progressW - cameraPosition) / 20.0,0.0),1.0); float stormDensity = min(volumeDensity, clearArea * clearArea * END_STORM_DENSITY); float volumeCoeff = exp(-stormDensity * dd * dL); vec3 lightsources = LightSourceLighting(progressW, lightPosition, dither, volumeDensity, lightColors, vortexBounds); vec3 indirect = vec3(END_FOG_R, END_FOG_G, END_FOG_B) * (exp((volumeDensity * volumeDensity) * -100.0) * 0.8 + 0.2) * 0.05; vec3 stormLighting = indirect + lightsources; color += (stormLighting - stormLighting*volumeCoeff) * absorbance; absorbance *= volumeCoeff; //------ HAZE EFFECT // dont make haze contrube to absorbance. float hazeDensity = 0.001; vec3 hazeLighting = vec3(END_FOG_R, END_FOG_G, END_FOG_B) * skyPhase * 0.5; color += (hazeLighting - hazeLighting * exp(-hazeDensity * dd * dL)) * absorbance; #if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION vec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0); vec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos; vec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - 0.5, 1e-7); float linearDistance = length(shiftedPlayerPos); float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); lightFalloff = max(exp(-30.0 * lightFalloff),0.0); float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5; color += (flashlightGlow - flashlightGlow * exp(-max(stormDensity,0.005)*dd*dL)) * absorbance; #endif //------ LPV FOG EFFECT #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * absorbance; #endif } return vec4(color, absorbance); } float GetEndFogShadow(vec3 WorldPos, vec3 LightPos){ float Shadow = 0.0; for (int i=0; i < 3; i++){ vec3 shadowSamplePos = WorldPos - LightPos * (0.01 + pow(i, 0.75) * 0.25); Shadow += fogShape(shadowSamplePos) * END_STORM_DENSITY; } return clamp(exp2(Shadow * -2.0),0.0,1.0); } ================================================ FILE: shaders/lib/entities.glsl ================================================ #define ENTITY_PLAYER 1601 #define ENTITY_LIGHTNING 1602 #define ENTITY_BLAZE 1603 #define ENTITY_DRAGON_WITHER 1604 #define ENTITY_END_CRYSTAL 1605 #define ENTITY_GLOW_SQUID 1606 #define ENTITY_ITEM_FRAME 1607 #define ENTITY_MAGMA_CUBE 1608 #define ENTITY_TNT 1609 #define ENTITY_FIREBALL_SMALL 1610 #define ENTITY_SPECTRAL_ARROW 1611 #define ENTITY_SSS_MEDIUM 1801 #define ENTITY_SSS_WEAK 1802 #define ENTITY_SLIME 1803 ================================================ FILE: shaders/lib/gameplay_effects.glsl ================================================ #ifdef IS_IRIS uniform float currentPlayerHealth; uniform float maxPlayerHealth; uniform float oneHeart; uniform float threeHeart; uniform float CriticalDamageTaken; uniform float MinorDamageTaken; #else uniform bool isDead; #endif uniform float exitWater; uniform float enterWater; uniform float onFire; // uniform float exitPowderSnow; uniform int isEyeInWater; uniform float rainyAreas; uniform float smoothBiome_Dry; uniform ivec2 eyeBrightness; // uniform float currentPlayerHunger; // uniform float maxPlayerHunger; // uniform float currentPlayerArmor; // uniform float maxPlayerArmor; // uniform float currentPlayerAir; // uniform float maxPlayerAir; // uniform bool is_sneaking; // uniform bool is_sprinting; // uniform bool is_hurt; // uniform bool is_invisible; // uniform bool is_burning; // uniform bool is_on_ground; // uniform bool isSpectator; float rainExposed = rainStrength * rainyAreas * clamp((eyeBrightness.y/240.0 - 0.9) * 10.0, 0.0, 1.0); vec3 distortedRain(){ vec2 uv = texcoord; for (float r = 4.0; r > 0.0; r--) { vec2 gridSize = viewSize * r * 0.015; vec2 p = TAU * uv * gridSize + randNoise(uv * 100.0); vec2 s = sin(p); vec2 gridCoord = round(uv * gridSize - 0.25) / gridSize; vec4 dropData = vec4(randNoise(gridCoord * 200.0), randNoise(gridCoord)); float timeFactor = max(0.0, 1.0 - fract(frameTimeCounter * (dropData.b + 0.1) + dropData.g) * 5.0); float dropShape = (s.x + s.y) * timeFactor * rainExposed * (1.0 -exitWater) * (1.0 -exitWater); if (dropData.r < (5.0 - r) * 0.08 && dropShape > 0.5) { vec3 normal = normalize(-vec3(cos(p), mix(0.2, 2.0, dropShape - 0.5))); vec2 refractedUV = uv - normal.xy * 0.6; return texture2D(colortex7, refractedUV).rgb * 0.5; } } return vec3(0.0); } float distortionBase(float c, float t){ vec2 zoomin = 0.5 + (texcoord - 0.5) * (1.0 - pow(1.0 - clamp(-texcoord.y * 0.5 + 0.75, 0.0, 1.0), 1.0)) * (1.0 - pow(1.0 - c, 2.0)); vec2 UV = zoomin * vec2(aspectRatio, 1.0); return texture2D(noisetex, UV * 0.5 - vec2(0.0, t)).b * clamp(-texcoord.y * 0.3 + 0.3, 0.0, 1.0) * c; } void applyGameplayEffects(inout vec3 color, in vec2 texcoord, float noise){ // detect when health is zero #ifdef IS_IRIS bool isDead = currentPlayerHealth * maxPlayerHealth <= 0.0 && currentPlayerHealth > -1; #else float oneHeart = 0.0; float threeHeart = 0.0; #endif float distortmask = 0.0; float vignette = sqrt(clamp(dot(texcoord*2.0 - 1.0, texcoord*2.0 - 1.0) * 0.5, 0.0, 1.0)); //////////////////////// DAMAGE DISTORTION ///////////////////// #if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT float heartBeat = pow(sin(frameTimeCounter * 15) * 0.5 + 0.5,2.0) * 0.2 + 0.1; // apply low health distortion effects float damageDistortion = vignette * noise * heartBeat * threeHeart; // apply critical hit distortion effect damageDistortion = mix(damageDistortion, vignette * (0.5 + noise), CriticalDamageTaken) * MOTION_AMOUNT; // apply death distortion effect distortmask = isDead ? vignette * (0.7 + noise*0.3) : damageDistortion; #endif //////////////////////// WATER DISTORTION ///////////////////// #ifdef WATER_ON_CAMERA_EFFECT if(exitWater > 0.0){ vec3 scale = vec3(1.0,1.0,0.0); scale.xy = (isEyeInWater == 1 ? vec2(0.3) : vec2(0.5 * aspectRatio, 0.25 + (exitWater * exitWater) * 0.25)); scale.z = isEyeInWater == 1 ? 0.0 : exitWater; float waterDrops = texture2D(noisetex, (texcoord - vec2(0.0, scale.z)) * scale.xy).r ; waterDrops = isEyeInWater == 0 ? sqrt(min(max(waterDrops - (1.0 - sqrt(exitWater)) * 0.7,0.0) * (1.0 + exitWater),1.0)) * 0.3 : 0.0; // apply distortion effects for exiting water and under water distortmask = max(distortmask, waterDrops); float waterDistort = isEyeInWater == 1 ? distortionBase(isEyeInWater, frameTimeCounter * 0.05) * WATER_DISTORTION_AMOUNT : 0.0; distortmask = max(distortmask, waterDistort); } if(enterWater > 0.0){ vec2 zoomTC = 0.5 + (texcoord - 0.5) * (1.0 - (1.0-sqrt(1.0-enterWater))); float waterSplash = texture2D(noisetex, zoomTC * vec2(aspectRatio,1.0)).r * DISTORT_EFFECT_AMOUNT * (1.0-enterWater); distortmask = max(distortmask, waterSplash); } #endif //////////////////////// HEAT DISTORTION ///////////////////// #ifdef ON_FIRE_DISTORT_EFFECT float flameDistort = distortionBase(onFire, frameTimeCounter * 0.3) * DISTORT_EFFECT_AMOUNT; distortmask = max(distortmask, flameDistort); #endif //////////////////////// APPLY DISTORTION ///////////////////// // all of the distortion will be based around zooming the UV in the center vec2 zoomUV = 0.5 + (texcoord - 0.5) * (1.0 - distortmask); vec3 distortedColor = texture2D(colortex7, zoomUV).rgb; #if defined WATER_ON_CAMERA_EFFECT || defined ON_FIRE_DISTORT_EFFECT // apply the distorted water color to the scene, but revert back to before when it ends if(exitWater > 0.01 || onFire > 0.01) color = distortedColor; #endif #ifdef RAIN_ON_CAMERA_EFFECT if(isEyeInWater == 0) color += distortedRain(); #endif //////////////////////// APPLY COLOR EFFECTS ///////////////////// #if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT vec3 distortedColorLuma = vec3(1.0, 0.0, 0.0) * dot(distortedColor, vec3(0.21, 0.72, 0.07)); #ifdef LOW_HEALTH_EFFECT float colorLuma = dot(color, vec3(0.21, 0.72, 0.07)); vec3 LumaRedEdges = mix(vec3(colorLuma), vec3(1.0, 0.3, 0.3) * distortedColorLuma.r, vignette); // apply color effects for when you are at low health color = mix(color, LumaRedEdges, mix(vignette * threeHeart, oneHeart, oneHeart)); #endif #ifdef DAMAGE_TAKEN_EFFECT color = mix(color, distortedColorLuma, vignette * sqrt(min(MinorDamageTaken,1.0))); color = mix(color, distortedColorLuma, sqrt(CriticalDamageTaken)); #endif if(isDead) color = distortedColorLuma * 0.35; #endif } ================================================ FILE: shaders/lib/hsv.glsl ================================================ vec3 RgbToHsv(const in vec3 c) { const vec4 K = vec4(0.0, -1.0, 2.0, -3.0) / 3.0; const float e = 1.0e-10; vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); float d = q.x - min(q.w, q.y); return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); } vec3 HsvToRgb(const in vec3 c) { const vec4 K = vec4(3.0, 2.0, 1.0, 9.0) / 3.0; vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } ================================================ FILE: shaders/lib/indirect_lighting_effects.glsl ================================================ uniform float viewWidth; uniform float viewHeight; vec3 cosineHemisphereSample(vec2 Xi){ float theta = TAU * Xi.y; float r = sqrt(Xi.x); return vec3(r * cos(theta), r * sin(theta), sqrt(1.0 - Xi.x)); } vec3 TangentToWorld(vec3 N, vec3 H){ vec3 T = normalize(cross(abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0), N)); vec3 B = cross(N, T); return vec3((T * H.x) + (B * H.y) + (N * H.z)); } //////////////////////////////////////////////////////////////// ///////////////////////////// SSAO /////////////////////////// //////////////////////////////////////////////////////////////// vec4 BilateralUpscale_SSAO(sampler2D tex, sampler2D depth, vec2 coord, float referenceDepth){ ivec2 scaling = ivec2(1.0); ivec2 posDepth = ivec2(coord) * scaling; ivec2 posColor = ivec2(coord); ivec2 pos = ivec2(gl_FragCoord.xy*texelSize + 1); ivec2 getRadius[4] = ivec2[]( ivec2(-2,-2), ivec2(-2, 0), ivec2( 0, 0), ivec2( 0,-2) ); #ifdef DISTANT_HORIZONS float diffThreshold = 0.0005 ; #else float diffThreshold = 0.005; #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 vec4(1,1,1,1) * SUM/4; return RESULT / SUM; } //////////////////////////////////////////////////////////////////// ///////////////////////////// RTAO/SSGI /////////////////////////// //////////////////////////////////////////////////////////////////// vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ float biasAmount = 0.0001; quality *= 5.0; vec3 clipPosition = toClipSpace3(position); float rayLength = ((position.z + dir.z * far * sqrt(3.0)) > -near) ? (-near - position.z)/dir.z : far * sqrt(3.0); vec3 direction = toClipSpace3(position + dir * rayLength) - clipPosition; //convert to clip space //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; clipPosition.xy *= RENDER_SCALE; stepv.xy *= RENDER_SCALE; vec3 spos = clipPosition + stepv * dither; // spos += stepv*0.3; #if defined DEFERRED_SPECULAR && defined TAA spos.xy += TAA_Offset * texelSize * 0.5/RENDER_SCALE; #endif float minZ = spos.z - biasAmount / linZ(spos.z); float maxZ = spos.z; int maxIterations = int(quality * clamp(1.0 - position.z/far, 0.1, 1.0)); for(int i = 0; i < maxIterations; i++){ #ifdef UseQuarterResDepth float sampleDepth = sqrt(texelFetch2D(colortex4, ivec2(spos.xy * viewSize/4.0), 0).a/65000.0); #else float sampleDepth = linZ(texelFetch2D(depthtex1, ivec2(spos.xy * viewSize), 0).r); #endif float sp = invLinZ(sampleDepth); if((sp < max(minZ, maxZ) && sp > min(minZ, maxZ))) return vec3(spos.xy/RENDER_SCALE,sp); minZ = maxZ - biasAmount / linZ(spos.z); maxZ += stepv.z; spos += stepv; } return vec3(1.1); } vec3 RT_alternate(vec3 dir, vec3 position, float dither, float quality, bool isLOD, inout float CURVE){ vec3 worldpos = mat3(gbufferModelViewInverse) * position; float biasamount = 0.00005; vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight); float dist = 1.0 + 2.0 * length(worldpos)/far; // step length as distance increases float stepSize = dist/10.0; vec3 clipPosition = toClipSpace3(position); float rayLength = ((position.z + dir.z * far * sqrt(3.0)) > -sqrt(3.0) * near) ? (-sqrt(3.0) * near - position.z)/dir.z : sqrt(3.0) * far; vec3 end = toClipSpace3(position + dir * rayLength) ; vec3 direction = end - clipPosition ; //convert to clip space float len = max(abs(direction.x) * viewSize.x, abs(direction.y) * viewSize.y) * stepSize; //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) * 2000.0; vec3 stepv = direction/len; int iterations = int(min(min(len, mult * len) - 2.0, quality)); clipPosition.xy *= RENDER_SCALE; stepv.xy *= RENDER_SCALE; vec3 spos = clipPosition + stepv * dither; spos += stepv * 0.3; spos.xy += TAA_Offset * texelSize * 0.5 * RENDER_SCALE; float minZ = spos.z - biasamount / linZ(spos.z); float maxZ = spos.z; CURVE = 0.0; for(int i = 0; i < iterations; i++) { spos.xy = clamp(spos.xy,screenEdges,1.0-screenEdges); if (any(lessThan(spos, vec3(0.0))) || any(greaterThan(spos, vec3(1.0)))) return vec3(1.1); #ifdef UseQuarterResDepth float sp = invLinZ(sqrt(texelFetch2D(colortex4, ivec2(spos.xy * viewSize/4),0).w/65000.0)); #else float sp = texelFetch2D(depthtex1, ivec2(spos.xy * viewSize),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); minZ = maxZ - biasamount/currZ; maxZ += stepv.z; spos += stepv; CURVE += 1.0/float(iterations); } return vec3(1.1); } vec3 ApplySSRT( in vec3 unchangedIndirect, in vec3 blockLightColor, in vec3 minimumLightColor, vec3 viewPos, vec3 normal, vec3 noise, float lightmap, bool isGrass, bool isLOD ){ int nrays = RAY_COUNT; vec3 radiance = vec3(0.0); vec3 occlusion = vec3(0.0); vec3 skycontribution = vec3(0.0); 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); lowp vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij))); #if indirect_RTGI == 0 || indirect_RTGI == 1 vec3 rayHit = RT_alternate(mat3(gbufferModelView) * rayDir, viewPos, noise.z, RT_ITERATION, isLOD, CURVE); // choc sspt CURVE = 1.0 - pow(1.0-pow(1.0 - CURVE, 2.0), 5.0); CURVE = mix(CURVE, 1.0, clamp(length(viewPos.z)/far, 0.0, 1.0)); #elif indirect_RTGI == 2 vec3 rayHit = rayTrace_GI(mat3(gbufferModelView) * rayDir, viewPos, noise.z, RT_ITERATION); // ssr rt #endif #ifdef OVERWORLD_SHADER #if indirect_RTGI == 0 skycontribution = unchangedIndirect * (max(rayDir.y, pow(1.0-lightmap, 2.0)) * 0.95 + 0.05); #else skycontribution = doIndirectLighting(skyCloudsFromTex(rayDir, colortex4).rgb/1200.0, minimumLightColor, lightmap); skycontribution = mix(skycontribution, vec3(luma(skycontribution)), 0.25) + blockLightColor; #endif #else skycontribution = volumetricsFromTex(rayDir, colortex4, 6).rgb/1200.0 + blockLightColor; #endif radiance += skycontribution; if (rayHit.z < 1.0){ #if indirect_RTGI == 1 || indirect_RTGI == 2 vec3 previousPosition = toPreviousPos(toScreenSpace(rayHit)); previousPosition = toClipSpace3Prev(previousPosition); previousPosition.xy = clamp(previousPosition.xy, 0.0, 1.0); bouncedLight = texture2D(colortex5, previousPosition.xy).rgb; #endif radiance += bouncedLight * GI_Strength; occlusion += skycontribution * CURVE; } } return max((radiance - occlusion)/nrays,0.0); } ================================================ FILE: shaders/lib/items.glsl ================================================ #define ITEM_AMETHYST_BUD_SMALL 1000 #define ITEM_AMETHYST_BUD_MEDIUM 1001 #define ITEM_AMETHYST_BUD_LARGE 1002 #define ITEM_AMETHYST_CLUSTER 1003 #define ITEM_BEACON 1004 #define ITEM_BLAZE_ROD 1005 #define ITEM_END_ROD 1006 #define ITEM_FROGLIGHT_OCHRE 1007 #define ITEM_FROGLIGHT_PEARLESCENT 1008 #define ITEM_FROGLIGHT_VERDANT 1009 #define ITEM_GLOW_BERRIES 1010 #define ITEM_GLOW_LICHEN 1011 #define ITEM_GLOWSTONE 1012 #define ITEM_GLOWSTONE_DUST 1013 #define ITEM_JACK_O_LANTERN 1014 #define ITEM_LANTERN 1015 #define ITEM_LAVA_BUCKET 1016 #define ITEM_MAGMA 1017 #define ITEM_REDSTONE_TORCH 1018 #define ITEM_SCULK_CATALYST 1019 #define ITEM_SEA_LANTERN 1020 #define ITEM_SHROOMLIGHT 1021 #define ITEM_SOUL_LANTERN 1022 #define ITEM_SOUL_TORCH 1023 #define ITEM_TORCH 1024 #define ITEM_FIREFLY_BUSH 1025 ================================================ FILE: shaders/lib/lensflare.glsl ================================================ //Original lens flare code : https://www.shadertoy.com/view/XdfXRX , simplified vec3 lensflare(vec2 uv, vec2 pos) { uv -= 0.5; pos -= 0.5; uv.x *= aspectRatio; pos.x *= aspectRatio; vec2 main = uv - pos; float ang = atan(main.y, main.x); float dist = length(main); dist = pow(dist, 0.1); float n = texture2D(colortex6, vec2((ang - frameTimeCounter / 9.0) * 0.05, dist * 0.1)).x; float f0 = 1.0 / (length(main) * 16.0 + 1.0) * 0.2; f0 += f0 * (sin((ang + frameTimeCounter / 20.0 + n * 0.4) * 16.0) * 0.1 + dist * 0.1 + 2.0); vec2 uvd = uv * length(uv) * 4.0; float f1r = max(1.0/(1.0 + 16.0 * pow(length(uvd + 0.8 * pos),1.6)), 0.0) * 0.5; float f1g = max(1.0/(1.0 + 16.0 * pow(length(uvd + 0.85 * pos),1.6)), 0.0) * 0.46; float f1b = max(1.0/(1.0 + 16.0 * pow(length(uvd + 0.9 * pos),1.6)), 0.0) * 0.42; vec2 uvx = mix(uv,uvd,-0.5); float f2r = max(0.02 - pow(length(uvx + 0.4 * pos),1.2), 0.0) * 3.0; float f2g = max(0.02 - pow(length(uvx + 0.45 * pos),1.2), 0.0) * 2.5; float f2b = max(0.02 - pow(length(uvx + 0.5 * pos),1.2), 0.0) * 1.5; uvx = mix(uv,uvd,-0.25); float f3r = max(0.01 - pow(length(uvx - 0.3 * pos),1.2), 0.0) * 3.0; float f3g = max(0.01 - pow(length(uvx - 0.325 * pos),1.2), 0.0) * 2.5; float f3b = max(0.01 - pow(length(uvx - 0.35 * pos),1.2), 0.0) * 1.5; vec3 c = vec3(0.0); c.r += f1r + f2r + f3r; c.g += f1g + f2g + f3g; c.b += f1b + f2b + f3b; c += vec3(f0); #if colortype == 1 vec3 sunCol = vec3(sunColorR, sunColorG, sunColorB); #else vec3 sunCol = blackbody(Sun_temp); #endif return c * sunCol; } ================================================ FILE: shaders/lib/lightning_stuff.glsl ================================================ uniform vec3 lightningEffect; #ifdef IS_IRIS uniform vec4 lightningBoltPosition; #else vec4 lightningBoltPosition = vec4(0.0, 100.0, 0.0, lightningEffect.x); #endif vec3 Iris_Lightningflash(vec3 feetPlayerPos, vec3 lightningBoltPos, vec3 WorldSpace_normal, inout float Phase){ if(lightningBoltPosition.w > 0.0){ vec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y+16, lightningBoltPosition.y+116.0),lightningBoltPosition.z); // point light, max distance is ~500 blocks (the maximim entity render distance) float lightDistance = 300.0 ; float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0); // the light above ^^^ is a linear curve. me no likey. here's an exponential one instead. lightningLight = exp((1.0 - lightningLight) * -10.0); // a phase for subsurface scattering. vec3 PhasePos = normalize(feetPlayerPos) + vec3(lightningBoltPosition.x, lightningBoltPosition.y + 60, lightningBoltPosition.z); float PhaseOrigin = 1.0 - clamp(dot(normalize(feetPlayerPos), normalize(PhasePos)),0.0,1.0); Phase = exp(sqrt(PhaseOrigin) * -2.0) * 5.0 * lightningLight; // good old NdotL. only normals facing towards the lightning bolt origin rise to 1.0 float NdotL = clamp(dot(LightningPos, -WorldSpace_normal), 0.0, 1.0); return lightningEffect * lightningLight * NdotL; }else return vec3(0.0); } vec3 Iris_Lightningflash_VLcloud(vec3 feetPlayerPos, vec3 lightningBoltPos){ if(lightningBoltPosition.w > 0.0){ vec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y, lightningBoltPosition.y+116.0),lightningBoltPosition.z); float lightDistance = 400.0; float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0); lightningLight = exp((1.0 - lightningLight) * -10.0); return lightningEffect * lightningLight; }else return vec3(0.0); } vec3 Iris_Lightningflash_VLfog(vec3 feetPlayerPos, vec3 lightningBoltPos){ if(lightningBoltPosition.w > 0.0){ if(lightningBoltPosition.w < 1.0) return vec3(0.0); vec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y, lightningBoltPosition.y+116.0),lightningBoltPosition.z); #ifdef TEST float lightningLight = max(1.0 - length(LightningPos) / 50, 0.0); lightningLight = exp((1.0 - lightningLight) * -15.0) ; #else float lightDistance = 300.0; float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0) ; lightningLight = exp((1.0 - lightningLight) * -15.0) ; #endif return lightningEffect * lightningLight; }else return vec3(0.0); } ================================================ FILE: shaders/lib/lpv_blocks.glsl ================================================ /* lightColor 3*8=24 lightRange 8=8 tintColor 3*8=24 lightMask 6=8 */ #ifdef RENDER_SETUP layout(rg32ui) uniform writeonly uimage1D imgBlockData; #else layout(rg32ui) uniform readonly uimage1D imgBlockData; #endif ================================================ FILE: shaders/lib/lpv_buffer.glsl ================================================ #ifdef RENDER_SHADOWCOMP layout(rgba8) uniform restrict image3D imgLpv1; layout(rgba8) uniform restrict image3D imgLpv2; #else layout(rgba8) uniform readonly image3D imgLpv1; layout(rgba8) uniform readonly image3D imgLpv2; #endif ================================================ FILE: shaders/lib/lpv_common.glsl ================================================ // How far light propagates (block, sky) const vec2 LpvBlockSkyRange = vec2(LPV_BLOCKLIGHT_SCALE, 24.0); const uint LpvSize = uint(exp2(LPV_SIZE)); const uvec3 LpvSize3 = uvec3(LpvSize); vec3 GetLpvPosition(const in vec3 playerPos) { vec3 cameraOffset = fract(cameraPosition); return playerPos + cameraOffset + LpvSize3/2u; } ================================================ FILE: shaders/lib/lpv_render.glsl ================================================ float lpvCurve(float values) { #ifdef VANILLA_LIGHTMAP_MASK return sqrt(values); #else return values*values; #endif } vec4 SampleLpvLinear(const in vec3 lpvPos) { vec3 texcoord = lpvPos / LpvSize3; vec4 lpvSample = (frameCounter % 2) == 0 ? textureLod(texLpv1, texcoord, 0) : textureLod(texLpv2, texcoord, 0); 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; } vec3 GetLpvBlockLight(const in vec4 lpvSample) { return lpvSample.rgb * (LPV_BLOCKLIGHT_SCALE/15.0); } float GetLpvSkyLight(const in vec4 lpvSample) { float skyLight = clamp(lpvSample.a, 0.0, 1.0); return skyLight*skyLight; } vec3 LPV_FOG_ILLUMINATION(in vec3 playerPos, float dd, float dL){ vec3 color = vec3(0.0); vec3 lpvPos = GetLpvPosition(playerPos); float fadeLength = 10.0; // in blocks vec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0); float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z; if(LpvFadeF > 0.0){ vec3 lighting = SampleLpvLinear(lpvPos).rgb * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0); float density = exp(-5.0 * (1.0-length(lighting.xyz))) * LpvFadeF; color = lighting - lighting * exp(-density*dd*dL); } return color; } ================================================ FILE: shaders/lib/nether_fog.glsl ================================================ float densityAtPosFog(in vec3 pos){ pos /= 16.0; pos.xz *= 0.5; vec3 p = floor(pos); vec3 f = fract(pos); f = (f*f) * (3.-2.*f); vec2 uv = p.xz + f.xz + p.y * vec2(0.0,192.0); vec2 coord = uv * 0.002; vec2 xy = texture2D(noisetex, coord).yx; return mix(xy.r,xy.g, f.y); } float cloudVol(in vec3 pos){ vec3 samplePos = pos*vec3(1.0,1./48.,1.0); float Wind = pow(max(pos.y-30,0.0) / 15.0,2.1); float Plumes = texture2D(noisetex, (samplePos.xz + Wind)/256.0).b; float floorPlumes = clamp(0.3 - exp(Plumes * -6),0,1); Plumes *= Plumes; float Erosion = densityAtPosFog(samplePos * 400 - frameTimeCounter*10 - Wind*10) *0.7+0.3 ; float RoofToFloorDensityFalloff = exp(max(100-pos.y,0.0) / -15); float FloorDensityFalloff = pow(exp(max(pos.y-31,0.0) / -3.0),2); float RoofDensityFalloff = exp(max(120-pos.y,0.0) / -10); float Output = max((RoofToFloorDensityFalloff - Plumes * (1.0-Erosion)) * 2.0, clamp((FloorDensityFalloff - floorPlumes*0.5) * Erosion ,0.0,1.0)); return Output; } vec4 GetVolumetricFog( vec3 viewPosition, float dither, float dither2 ){ #ifndef TOGGLE_VL_FOG return vec4(0.0,0.0,0.0,1.0); #endif /// ------------- RAYMARCHING STUFF ------------- \\\ int SAMPLECOUNT = 16; vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz; vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); vec3 progressW = vec3(0.0); float maxLength = min(length(dVWorld), far)/length(dVWorld); dVWorld *= maxLength; float dL = length(dVWorld); float expFactor = 11.0; /// ------------- COLOR/LIGHTING STUFF ------------- \\\ vec3 color = vec3(0.0); float absorbance = 1.0; 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+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; float densityVol = cloudVol(progressW); //------ PLUME EFFECT 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),2.0) * NETHER_PLUME_DENSITY); float plumeVolumeCoeff = exp(-plumeDensity*dd*dL); vec3 lighting = vec3(NETHER_PLUME_R, NETHER_PLUME_G, NETHER_PLUME_B) * exp(-15.0*densityVol); color += (lighting - lighting * plumeVolumeCoeff) * absorbance; absorbance *= plumeVolumeCoeff; //------ HAZE EFFECT // dont make haze contrube to absorbance. float hazeDensity = 0.001; float hazeVolumeCoeff = exp(-hazeDensity*dd*dL); vec3 hazeLighting = hazeColor; color += (hazeLighting - hazeLighting*hazeVolumeCoeff) * absorbance; //------ CEILING SMOKE EFFECT 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); color += (ceilingSmoke - ceilingSmoke*ceilingSmokeVolumeCoeff) * (absorbance*0.5+0.5); absorbance *= ceilingSmokeVolumeCoeff; #if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION vec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0); vec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos; vec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - 0.5, 1e-7); float linearDistance = length(shiftedPlayerPos); float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); lightFalloff = max(exp(-30.0 * lightFalloff),0.0); float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5; color += (flashlightGlow - flashlightGlow * exp(-max(plumeDensity,0.005)*dd*dL)) * absorbance; #endif //------ LPV FOG EFFECT #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * absorbance; #endif } return vec4(color, absorbance); } ================================================ FILE: shaders/lib/oceans.glsl ================================================ // THIS FILE IS PUBLIC DOMAIN SO USE IT HOWEVER YOU WANT! // to make it compatible with your shaderpack use: #define PHYSICS_OCEAN_SUPPORT // at the top of your file. When used my mod no longer injects code into // your shaderpack. It replaces this define statement (before compilation) with #define PHYSICS_OCEAN // so you can use #ifdef PHYSICS_OCEAN #endif // #ifdef PhysicsMod_support // to customize the water for the physics ocean // just some basic consts for the wave function based on afl_ext's shader https://www.shadertoy.com/view/Xdlczl // the overall shape must stay consistent because it is also computed on the CPU side // to offset entities (though a custom CPU integration of your shader is possible by // contacting me on my discord server https://discord.gg/VsNs9xP) const int PHYSICS_ITERATIONS_OFFSET = 13; const float PHYSICS_DRAG_MULT = 0.048; const float PHYSICS_XZ_SCALE = 0.035; const float PHYSICS_TIME_MULTIPLICATOR = 0.45; const float PHYSICS_W_DETAIL = 0.75; const float PHYSICS_FREQUENCY = 6.0; const float PHYSICS_SPEED = 2.0; const float PHYSICS_WEIGHT = 0.8; const float PHYSICS_FREQUENCY_MULT = 1.18; const float PHYSICS_SPEED_MULT = 1.07; const float PHYSICS_ITER_INC = 12.0; const float PHYSICS_NORMAL_STRENGTH = 0.6; // this is the surface detail from the physics options, ranges from 13 to 48 (yeah I know weird) uniform int physics_iterationsNormal; // used to offset the 0 point of wave meshes to keep the wave function consistent even // though the mesh totally changes uniform vec2 physics_waveOffset; // used for offsetting the local position to fetch the right pixel of the waviness texture uniform ivec2 physics_textureOffset; // time in seconds that can go faster dependent on weather conditions (affected by weather strength) // multiplier in ocean settings uniform float physics_gameTime; // base value is 13 and gets multiplied by wave height in ocean settings uniform float physics_oceanHeight; // basic texture to determine how shallow/far away from the shore the water is uniform sampler2D physics_waviness; // basic scale for the horizontal size of the waves uniform float physics_oceanWaveHorizontalScale; // used to offset the model to know the ripple position uniform vec3 physics_modelOffset; // used for offsetting the ripple texture uniform float physics_rippleRange; // controlling how much foam generates on the ocean uniform float physics_foamAmount; // controlling the opacity of the foam uniform float physics_foamOpacity; // texture containing the ripples (basic bump map) uniform sampler2D physics_ripples; // foam noise uniform sampler3D physics_foam; // just the generic minecraft lightmap, you can remove this and use the one supplied by Optifine/Iris uniform sampler2D physics_lightmap; #if defined PHYSICSMOD_VERTEX // for the vertex shader stage out vec3 physics_localPosition; out float physics_localWaviness; #endif #if defined PHYSICSMOD_FRAGMENT // for the fragment shader stage in vec3 physics_localPosition; in float physics_localWaviness; #endif float physics_waveHeight(vec2 position, int iterations, float factor, float time) { position = (position - physics_waveOffset) * PHYSICS_XZ_SCALE * physics_oceanWaveHorizontalScale; float iter = 0.0; float frequency = PHYSICS_FREQUENCY; float speed = PHYSICS_SPEED; float weight = 1.0; float height = 0.0; float waveSum = 0.0; float modifiedTime = time * PHYSICS_TIME_MULTIPLICATOR; for (int i = 0; i < iterations; i++) { vec2 direction = vec2(sin(iter), cos(iter)); float x = dot(direction, position) * frequency + modifiedTime * speed; float wave = exp(sin(x) - 1.0); float result = wave * cos(x); vec2 force = result * weight * direction; position -= force * PHYSICS_DRAG_MULT; height += wave * weight; iter += PHYSICS_ITER_INC; waveSum += weight; weight *= PHYSICS_WEIGHT; frequency *= PHYSICS_FREQUENCY_MULT; speed *= PHYSICS_SPEED_MULT; } return height / waveSum * physics_oceanHeight * factor - physics_oceanHeight * factor * 0.5; } vec2 physics_waveDirection(vec2 position, int iterations, float time) { position = (position - physics_waveOffset) * PHYSICS_XZ_SCALE * physics_oceanWaveHorizontalScale; float iter = 0.0; float frequency = PHYSICS_FREQUENCY; float speed = PHYSICS_SPEED; float weight = 1.0; float waveSum = 0.0; float modifiedTime = time * PHYSICS_TIME_MULTIPLICATOR; vec2 dx = vec2(0.0); for (int i = 0; i < iterations; i++) { vec2 direction = vec2(sin(iter), cos(iter)); float x = dot(direction, position) * frequency + modifiedTime * speed; float wave = exp(sin(x) - 1.0); float result = wave * cos(x); vec2 force = result * weight * direction; dx += force / pow(weight, PHYSICS_W_DETAIL); position -= force * PHYSICS_DRAG_MULT; iter += PHYSICS_ITER_INC; waveSum += weight; weight *= PHYSICS_WEIGHT; frequency *= PHYSICS_FREQUENCY_MULT; speed *= PHYSICS_SPEED_MULT; } return vec2(dx / pow(waveSum, 1.0 - PHYSICS_W_DETAIL)); } vec3 physics_waveNormal(const in vec2 position, const in vec2 direction, const in float factor, const in float time) { float oceanHeightFactor = physics_oceanHeight / 13.0; float totalFactor = oceanHeightFactor * factor; vec3 waveNormal = normalize(vec3(direction.x * totalFactor, PHYSICS_NORMAL_STRENGTH, direction.y * totalFactor)); vec2 eyePosition = position + physics_modelOffset.xz; vec2 rippleFetch = (eyePosition + vec2(physics_rippleRange)) / (physics_rippleRange * 2.0); vec2 rippleTexelSize = vec2(2.0 / textureSize(physics_ripples, 0).x, 0.0); float left = texture(physics_ripples, rippleFetch - rippleTexelSize.xy).r; float right = texture(physics_ripples, rippleFetch + rippleTexelSize.xy).r; float top = texture(physics_ripples, rippleFetch - rippleTexelSize.yx).r; float bottom = texture(physics_ripples, rippleFetch + rippleTexelSize.yx).r; float totalEffect = left + right + top + bottom; float normalx = left - right; float normalz = top - bottom; vec3 rippleNormal = normalize(vec3(normalx, 1.0, normalz)); return normalize(mix(waveNormal, rippleNormal, pow(totalEffect, 0.5))); } struct WavePixelData { vec2 direction; vec2 worldPos; vec3 normal; float foam; float height; }; WavePixelData physics_wavePixel(const in vec2 position, const in float factor, const in float iterations, const in float time) { vec2 wavePos = (position.xy - physics_waveOffset) * PHYSICS_XZ_SCALE * physics_oceanWaveHorizontalScale; float iter = 0.0; float frequency = PHYSICS_FREQUENCY; float speed = PHYSICS_SPEED; float weight = 1.0; float height = 0.0; float waveSum = 0.0; float modifiedTime = time * PHYSICS_TIME_MULTIPLICATOR; vec2 dx = vec2(0.0); for (int i = 0; i < iterations; i++) { vec2 direction = vec2(sin(iter), cos(iter)); float x = dot(direction, wavePos) * frequency + modifiedTime * speed; float wave = exp(sin(x) - 1.0); float result = wave * cos(x); vec2 force = result * weight * direction; dx += force / pow(weight, PHYSICS_W_DETAIL); wavePos -= force * PHYSICS_DRAG_MULT; height += wave * weight; iter += PHYSICS_ITER_INC; waveSum += weight; weight *= PHYSICS_WEIGHT; frequency *= PHYSICS_FREQUENCY_MULT; speed *= PHYSICS_SPEED_MULT; } WavePixelData data; data.direction = -vec2(dx / pow(waveSum, 1.0 - PHYSICS_W_DETAIL)); data.worldPos = wavePos / physics_oceanWaveHorizontalScale / PHYSICS_XZ_SCALE; data.height = height / waveSum * physics_oceanHeight * factor - physics_oceanHeight * factor * 0.5; data.normal = physics_waveNormal(position, data.direction, factor, time); float waveAmplitude = data.height * pow(max(data.normal.y, 0.0), 4.0); vec2 waterUV = mix(position - physics_waveOffset, data.worldPos, clamp(factor * 2.0, 0.2, 1.0)); vec2 s1 = textureLod(physics_foam, vec3(waterUV * 0.26, time / 360.0), 0).rg; vec2 s2 = textureLod(physics_foam, vec3(waterUV * 0.02, time / 360.0 + 0.5), 0).rg; vec2 s3 = textureLod(physics_foam, vec3(waterUV * 0.1, time / 360.0 + 1.0), 0).rg; float waterSurfaceNoise = s1.r * s2.r * s3.r * 2.8 * physics_foamAmount; waveAmplitude = clamp(waveAmplitude * 1.2, 0.0, 1.0); waterSurfaceNoise = (1.0 - waveAmplitude) * waterSurfaceNoise + waveAmplitude * physics_foamAmount; float worleyNoise = 0.2 + 0.8 * s1.g * (1.0 - s2.g); float waterFoamMinSmooth = 0.45; float waterFoamMaxSmooth = 2.0; waterSurfaceNoise = smoothstep(waterFoamMinSmooth, 1.0, waterSurfaceNoise) * worleyNoise; data.foam = clamp(waterFoamMaxSmooth * waterSurfaceNoise * physics_foamOpacity, 0.0, 1.0); return data; } /* // VERTEX STAGE void main() { // basic texture to determine how shallow/far away from the shore the water is physics_localWaviness = texelFetch(physics_waviness, ivec2(gl_Vertex.xz) - physics_textureOffset, 0).r; // transform gl_Vertex (since it is the raw mesh, i.e. not transformed yet) vec4 finalPosition = vec4(gl_Vertex.x, gl_Vertex.y + physics_waveHeight(gl_Vertex.xz, PHYSICS_ITERATIONS_OFFSET, physics_localWaviness, physics_gameTime), gl_Vertex.z, gl_Vertex.w); // pass this to the fragment shader to fetch the texture there for per fragment normals physics_localPosition = finalPosition.xyz; // now use finalPosition instead of gl_Vertex } // FRAGMENT STAGE void main() { WavePixelData wave = physics_wavePixel(physics_localPosition.xz, physics_localWaviness, physics_iterationsNormal, physics_gameTime); // access the wave struct data however you want, wave.normal is in world space, wave.foam is the final foam amount } */ ================================================ FILE: shaders/lib/overworld_fog.glsl ================================================ uniform float rainyAreas; float densityAtPosFog(in vec3 pos){ pos /= 16.0; pos.xz *= 0.5; vec3 p = floor(pos); vec3 f = fract(pos); f = (f * f) * (3.0 - 2.0 * f); vec2 uv = p.xz + f.xz + p.y * vec2(0.0,192.0); vec2 coord = uv * 0.002; vec2 xy = texture2D(noisetex, coord).yx; return mix(xy.r, xy.g, f.y); } float cloudVol(in vec3 pos, float maxDistance){ float fogYstart = FOG_START_HEIGHT+3; vec3 samplePos = pos*vec3(1.0,1.0/24.0,1.0); vec3 samplePos2 = pos*vec3(1.0,1.0/48.0,1.0); float uniformFog = 0.0; float low_gradientFog = exp2(-0.3 * max(pos.y - fogYstart,0.0)); float medium_gradientFog = exp2(-0.15 * max(pos.y - fogYstart,0.0)); float high_gradientFog = exp2(-0.06 * max(pos.y - fogYstart,0.0)); float fog_shape = 0.0; float fog_erosion = 0.0; if(sandStorm < 1.0 && sandStorm_red < 1.0 && snowStorm < 1.0){ fog_shape = 1.0 - densityAtPosFog(samplePos * 24.0); fog_erosion = 1.0 - densityAtPosFog(samplePos2 * 200.0 - vec3(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0)*200.0)); } float cloudyFog = max(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0) - fog_erosion * 0.4, 0.0) * exp(-0.05 * max(pos.y - (fogYstart+20),0.0)); float rainyFog = (low_gradientFog * 0.5 + exp2(-0.06 * max(pos.y - fogYstart,0.0))) * rainStrength * rainyAreas * RainFog_amount; if(sandStorm > 0.0 || sandStorm_red > 0.0 || snowStorm > 0.0){ float IntenseFogs = pow(1.0 - densityAtPosFog((samplePos2 - vec3(frameTimeCounter,0,frameTimeCounter)*15.0) * 100.0),2.0) * mix(1.0, high_gradientFog, snowStorm); cloudyFog = mix(cloudyFog, IntenseFogs, sandStorm+sandStorm_red+snowStorm); medium_gradientFog = 1.0; } // set densities. vec4 UniformDensity = TOD_Fog_mult * vec4(Morning_Uniform_Fog, Noon_Uniform_Fog, Evening_Uniform_Fog, Night_Uniform_Fog); vec4 CloudyDensity = TOD_Fog_mult * vec4(Morning_Cloudy_Fog, Noon_Cloudy_Fog, Evening_Cloudy_Fog, Night_Cloudy_Fog); #ifdef PER_BIOME_ENVIRONMENT BiomeFogDensity(UniformDensity, CloudyDensity, maxDistance); #endif uniformFog = (Morning * UniformDensity.r + Noon * UniformDensity.g + Evening * UniformDensity.b + Night * UniformDensity.a) * medium_gradientFog; cloudyFog *= Morning * CloudyDensity.r + Noon * CloudyDensity.g + Evening * CloudyDensity.b + Night * CloudyDensity.a; return uniformFog + cloudyFog + rainyFog; } float phaseRayleigh(float cosTheta) { const vec2 mul_add = vec2(0.1, 0.28) / acos(-1.0); 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 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 vec3 sunVector, in vec2 dither, in vec3 LightColor, in vec3 AmbientColor, in vec3 AveragedAmbientColor, inout float atmosphereAlpha, inout vec3 sceneColor, in float cloudPlaneDistance ){ #ifndef TOGGLE_VL_FOG return vec4(0.0,0.0,0.0,1.0); #endif /// ------------- RAYMARCHING STUFF ------------- \\\ int SAMPLECOUNT = VL_SAMPLES; //project pixel position into projected shadowmap space vec3 wpos = toWorldSpace(viewPosition); vec3 fragposition = toShadowSpaceProjected(wpos); //project view origin into projected shadowmap space vec3 start = toShadowSpaceProjected(toWorldSpace(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), dhRenderDistance)/length(dVWorld); #else float maxLength = min(length(dVWorld), far)/length(dVWorld); #endif dV *= maxLength; dVWorld *= maxLength; float dL = length(dVWorld)/8.0; vec3 progress = start.xyz; vec3 progressW = vec3(0.0); float expFactor = 11.0; /// ------------- COLOR/LIGHTING STUFF ------------- \\\ vec3 color = vec3(0.0); vec3 finalAbsorbance = vec3(1.0); // float totalAbsorbance = 1.0; vec3 totalAbsorbance = vec3(1.0); float fogAbsorbance = 1.0; float SdotV = dot(mat3(gbufferModelView) * sunVector, normalize(viewPosition)); ///// ----- fog lighting //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) float sunPhase = fogPhase(SdotV)*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 ; float rayL = phaseRayleigh(SdotV); #if defined EXCLUDE_WRITE_TO_LUT && defined USE_CUSTOM_FOG_LIGHTING_COLORS LightColor = luma(LightColor) * vec3(DIRECTLIGHT_FOG_R,DIRECTLIGHT_FOG_G,DIRECTLIGHT_FOG_B); AmbientColor = luma(AmbientColor) * vec3(INDIRECTLIGHT_FOG_R,INDIRECTLIGHT_FOG_G,INDIRECTLIGHT_FOG_B); #endif vec3 skyLightPhased = mix(AmbientColor, luma(AmbientColor) * vec3(RAINFOG_R, RAINFOG_G, RAINFOG_B), rainStrength * rainyAreas); vec3 LightSourcePhased = LightColor; skyLightPhased *= skyPhase; LightSourcePhased *= sunPhase; #ifdef ambientLight_only LightSourcePhased = vec3(0.0); #endif #ifdef PER_BIOME_ENVIRONMENT vec3 biomeDirect = LightSourcePhased; vec3 biomeIndirect = skyLightPhased; float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); #endif #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 float inACave = 1.0 - caveDetection; 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); #ifdef VOLUMETRIC_CLOUDS // check if the fog intersects clouds if(length(d*dVWorld) > cloudPlaneDistance) break; #endif progress = start.xyz + d*dV; progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld; //------------------------------------ //------ SAMPLE SHADOWS FOR FOG EFFECTS //------------------------------------ float distortFactor = 1.0; #ifdef DISTORT_SHADOWMAP distortFactor = calcDistort(progress.xy); #endif vec3 shadowPos = vec3(progress.xy*distortFactor, progress.z); vec3 sh = vec3(1.0); if (abs(shadowPos.x) < 1.0-0.5/2048. && abs(shadowPos.y) < 1.0-0.5/2048){ shadowPos = shadowPos*vec3(0.5,0.5,0.5/6.0)+0.5; #ifdef LPV_SHADOWS shadowPos.xy *= 0.8; #endif #ifdef TRANSLUCENT_COLORED_SHADOWS sh = vec3(shadow2D(shadowtex0, shadowPos).x); if(shadow2D(shadowtex1, shadowPos).x > shadowPos.z && sh.x < 1.0){ vec4 translucentShadow = texture2D(shadowcolor0, shadowPos.xy); if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); } #else sh = vec3(shadow2D(shadow, shadowPos).x); #endif } sh *= getCloudShadow(progressW, sunVector); #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) * inACave; #else float densityVol = cloudVol(progressW, 0.0) * inACave; #endif //------------------------------------ //------ MAIN FOG EFFECT //------------------------------------ float fogDensity = densityVol; float fogVolumeCoeff = exp(-fogDensity*dd*dL); // this is like beer-lambert law or something #ifdef PER_BIOME_ENVIRONMENT vec3 indirectLight = mix(skyLightPhased, biomeIndirect, maxDistance); vec3 DirectLight = mix(LightSourcePhased, biomeDirect, maxDistance) * sh; #else vec3 indirectLight = skyLightPhased; vec3 DirectLight = LightSourcePhased * sh; #endif vec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz); vec3 lighting = DirectLight + indirectLight; color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance; #if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION && !defined VL_CLOUDS_DEFERRED // vec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0); // vec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos; vec3 shiftedViewPos; vec3 shiftedPlayerPos; float forwardOffset; #ifdef VIVECRAFT if (vivecraftIsVR) { forwardOffset = 0.0; shiftedPlayerPos = (progressW - cameraPosition) + ( vivecraftRelativeMainHandPos); shiftedViewPos = shiftedPlayerPos * mat3(vivecraftRelativeMainHandRot); } else #endif { forwardOffset = 0.5; shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0); shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos; } vec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - forwardOffset, 1e-7); float linearDistance = length(shiftedPlayerPos); float shiftedLinearDistance = length(scaledViewPos); float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); lightFalloff = max(exp(-30.0 * lightFalloff),0.0); float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5; color += (flashlightGlow - flashlightGlow * exp(-max(fogDensity,0.005)*dd*dL)) * totalAbsorbance; #endif // kill fog absorbance when in caves. totalAbsorbance *= mix(1.0, fogVolumeCoeff, lightLevelZero); //------------------------------------ //------ ATMOSPHERE HAZE EFFECT //------------------------------------ // 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.0, 7.0)) * 192.0 * Haze_amount) * planetVolume; // Pbr for air, yolo mix between mie and rayleigh for water droplets vec3 rL = skyRL*(1e-5)*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) * (lightLevelZero*0.99 + 0.01)) * inACave; color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6); //------------------------------------ //------ LPV FOG EFFECT //------------------------------------ #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * totalAbsorbance; #endif } return vec4(color, totalAbsorbance); } ================================================ FILE: shaders/lib/projections.glsl ================================================ uniform mat4 gbufferProjection; uniform mat4 gbufferProjectionInverse; uniform mat4 gbufferPreviousProjection; uniform mat4 gbufferModelView; uniform mat4 gbufferModelViewInverse; uniform mat4 gbufferPreviousModelView; uniform mat4 shadowModelView; uniform mat4 shadowModelViewInverse; uniform mat4 shadowProjection; uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) #define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) vec3 toClipSpace3(vec3 viewSpacePosition) { return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; } vec3 toClipSpace3Prev(vec3 viewSpacePosition) { return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; } vec4 toClipSpace4(vec3 viewSpacePosition) { return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),1.0); } vec4 toClipSpace4alt(vec3 viewSpacePosition) { return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); } vec3 toNDC3(vec3 worldPos) { vec4 pos = vec4(worldPos, 1.0); pos = gbufferProjection * gbufferModelView * pos; return pos.xyz/pos.w; } 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]; return fragposition.xyz / fragposition.w; } vec3 toScreenSpaceVector(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]; return normalize(fragposition.xyz); } vec3 toWorldSpace(vec3 p3) { p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; return p3; } vec3 toWorldSpaceCamera(vec3 p3) { p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; return p3 + cameraPosition; } vec3 toShadowSpace(vec3 p3) { p3 = mat3(shadowModelViewInverse) * p3 + shadowModelViewInverse[3].xyz; return p3; } vec3 toShadowSpaceProjected(vec3 p3) { p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; return p3; } vec3 viewToWorld(vec3 viewPos) { vec4 pos; pos.xyz = viewPos; pos.w = 0.0; pos = gbufferModelViewInverse * pos; return pos.xyz; } vec3 worldToView(vec3 worldPos) { vec4 pos = vec4(worldPos, 0.0); pos = gbufferModelView * pos; return pos.xyz; } vec3 toPreviousPos(vec3 currentPos) { vec3 pos = mat3(gbufferModelViewInverse) * currentPos + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; return mat3(gbufferPreviousModelView) * pos + gbufferPreviousModelView[3].xyz; } ================================================ FILE: shaders/lib/rainbow.glsl ================================================ // Hue generate thanks to Builderb0y. vec3 smoothHue(float h) { vec3 phaseShift = vec3(0.0, 1.0, 2.0) * (TAU / 3.0); vec3 cosine = cos(h * TAU - phaseShift); return sqrt(normalize((cosine * 0.5 + 0.5) * (cosine * 0.5 + 0.5))); } vec3 drawRainbow(vec3 playerPos) { float rainbowAmount = RAINBOW == 1 ? wetness * (1.0 - rainStrength) : 1.0; #ifdef DISTANT_HORIZONS float maxDist = dhFarPlane; #else float maxDist = 4.0 * far; #endif float rainbowDist = min(maxDist, RAINBOW_DISTANCE); float RdotV = dot(-WsunVec, normalize(playerPos)); if (isEyeInWater == 0 && rainbowAmount > 0.0) { vec3 colorBand = vec3(0.0); float mainCoord = (RdotV - cos(0.75 - RAINBOW_WIDTH)) / (cos(0.75 + RAINBOW_WIDTH) - cos(0.75 - RAINBOW_WIDTH)); mainCoord = clamp(mainCoord, 0.0, 1.0); float mainFactor = pow(mainCoord, 3.0) * pow(1.0 - mainCoord, 0.5); vec3 mainColor = smoothHue(-mainCoord) * mainFactor; colorBand += mainColor; float subCoord = (RdotV - cos(1.0 - RAINBOW_WIDTH * 1.5)) / (cos(1.0 + RAINBOW_WIDTH * 1.5) - cos(1.0 - RAINBOW_WIDTH * 1.5)); subCoord = clamp(subCoord, 0.0, 1.0); float subFactor = pow(subCoord * (1.0 - subCoord), 2.0); vec3 subColor = smoothHue(subCoord) * subFactor * 0.2; colorBand += subColor; colorBand *= RAINBOW_STRENGTH; float lengthFactor = smoothstep(rainbowDist * 0.9, rainbowDist * 1.1, length(playerPos)); float elevationFade = smoothstep(0.075, 0.1, WsunVec.y); rainbowAmount *= lengthFactor * elevationFade; return colorBand * rainbowAmount; } return vec3(0.0); } ================================================ FILE: shaders/lib/res_params.glsl ================================================ #ifndef TAA #undef TAA_UPSCALING #endif #ifdef TAA_UPSCALING #define SCALE_FACTOR 0.75 // render resolution multiplier. below 0.5 not recommended [0.10 0.15 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 1.0] #define RENDER_SCALE vec2(SCALE_FACTOR, SCALE_FACTOR) #define UPSCALING_SHARPNENING 2.0 - SCALE_FACTOR - SCALE_FACTOR #else #define RENDER_SCALE vec2(1.0, 1.0) #define UPSCALING_SHARPNENING 0.0 #endif #define VL_RENDER_RESOLUTION 0.5 // Reduces the resolution at which volumetric fog is computed. (0.5 = half of default resolution) [0.25 0.5 1.0] ================================================ FILE: shaders/lib/ripples.glsl ================================================ //Original ripple code : https://www.shadertoy.com/view/ldfyzl , optimised // Maximum number of cells a ripple can cross. #define MAX_RADIUS 2 vec3 drawRipples(vec2 uv, float time) { vec2 p0 = floor(uv); vec2 circles = vec2(0.0); for (int j = -MAX_RADIUS; j < MAX_RADIUS; ++j) { for (int i = -MAX_RADIUS; i < MAX_RADIUS; ++i) { vec2 pi = p0 + vec2(i, j); vec2 rand = simpleRand22(pi); vec2 p = pi + rand; float t = fract(0.6 * time + rand.x); vec2 v = p - uv; float d = length(v) - (float(MAX_RADIUS) + 1.0) * t; float carrier = cos(6.0 * PI * d); float x = clamp(3.0 * d + 1.0, - 1.0, 1.0); float energy = 1.0 - x * x * (3.0 - 2.0 * abs(x)); float decay = (1.0 - t) * (1.0 - t); if (decay < 0.04) continue; circles += 20.0 * normalize(v) * carrier * energy * decay; } } circles /= float((MAX_RADIUS * 2) * (MAX_RADIUS * 2)); vec3 n = vec3(circles, sqrt(1.0 - dot(circles, circles))); return n.xzy; } ================================================ FILE: shaders/lib/scene_controller.glsl ================================================ //=============== DECLARE UNIFORMS BELOW HERE =============== uniform float Morning; uniform float Noon; uniform float Evening; uniform float Night; //=============== DECLARE UNIFORMS ABOVE HERE =============== void applySceneControllerParameters( out float smallCumulusCoverage, out float smallCumulusDensity, out float largeCumulusCoverage, out float largeCumulusDensity, out float altostratusCoverage, out float altostratusDensity, out float fogA, out float fogB ){ // these are the default parameters if no "trigger" or custom uniform is being used. // do not remove them smallCumulusCoverage = CloudLayer0_coverage; smallCumulusDensity = CloudLayer0_density; largeCumulusCoverage = CloudLayer1_coverage; largeCumulusDensity = CloudLayer1_density; altostratusCoverage = CloudLayer2_coverage; altostratusDensity = CloudLayer2_density; fogA = 1.0; fogB = 1.0; //=============== CONFIGURE CUSTOM SCENE PARAMETERS BELOW HERE =============== // cloud & fog controlled by daily weather #ifdef Daily_Weather #ifdef CHOOSE_RANDOM_WEATHER_PROFILE int dayCounter = int(clamp(hash11(float(mod(worldDay, 1000))) * 10.0, 0,10)); #else int dayCounter = int(mod(worldDay, 10)); #endif //----------- cloud coverage vec3 weatherProfile_cloudCoverage[10] = vec3[]( vec3(DAY0_l0_coverage, DAY0_l1_coverage, DAY0_l2_coverage), vec3(DAY1_l0_coverage, DAY1_l1_coverage, DAY1_l2_coverage), vec3(DAY2_l0_coverage, DAY2_l1_coverage, DAY2_l2_coverage), vec3(DAY3_l0_coverage, DAY3_l1_coverage, DAY3_l2_coverage), vec3(DAY4_l0_coverage, DAY4_l1_coverage, DAY4_l2_coverage), vec3(DAY5_l0_coverage, DAY5_l1_coverage, DAY5_l2_coverage), vec3(DAY6_l0_coverage, DAY6_l1_coverage, DAY6_l2_coverage), vec3(DAY7_l0_coverage, DAY7_l1_coverage, DAY7_l2_coverage), vec3(DAY8_l0_coverage, DAY8_l1_coverage, DAY8_l2_coverage), vec3(DAY9_l0_coverage, DAY9_l1_coverage, DAY9_l2_coverage) ); //----------- cloud density vec3 weatherProfile_cloudDensity[10] = vec3[]( vec3(DAY0_l0_density, DAY0_l1_density, DAY0_l2_density), vec3(DAY1_l0_density, DAY1_l1_density, DAY1_l2_density), vec3(DAY2_l0_density, DAY2_l1_density, DAY2_l2_density), vec3(DAY3_l0_density, DAY3_l1_density, DAY3_l2_density), vec3(DAY4_l0_density, DAY4_l1_density, DAY4_l2_density), vec3(DAY5_l0_density, DAY5_l1_density, DAY5_l2_density), vec3(DAY6_l0_density, DAY6_l1_density, DAY6_l2_density), vec3(DAY7_l0_density, DAY7_l1_density, DAY7_l2_density), vec3(DAY8_l0_density, DAY8_l1_density, DAY8_l2_density), vec3(DAY9_l0_density, DAY9_l1_density, DAY9_l2_density) ); for (int i = 0; i < 10; i++) { weatherProfile_cloudCoverage[i] *= vec3(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage); weatherProfile_cloudDensity[i] *= vec3(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density); } smallCumulusCoverage = weatherProfile_cloudCoverage[dayCounter].x; smallCumulusDensity = weatherProfile_cloudDensity[dayCounter].x; largeCumulusCoverage = weatherProfile_cloudCoverage[dayCounter].y; largeCumulusDensity = weatherProfile_cloudDensity[dayCounter].y; altostratusCoverage = weatherProfile_cloudCoverage[dayCounter].z; altostratusDensity = weatherProfile_cloudDensity[dayCounter].z; //----------- fog density vec2 weatherProfile_fogDensity[10] = vec2[]( vec2(DAY0_ufog_density, DAY0_cfog_density), vec2(DAY1_ufog_density, DAY1_cfog_density), vec2(DAY2_ufog_density, DAY2_cfog_density), vec2(DAY3_ufog_density, DAY3_cfog_density), vec2(DAY4_ufog_density, DAY4_cfog_density), vec2(DAY5_ufog_density, DAY5_cfog_density), vec2(DAY6_ufog_density, DAY6_cfog_density), vec2(DAY7_ufog_density, DAY7_cfog_density), vec2(DAY8_ufog_density, DAY8_cfog_density), vec2(DAY9_ufog_density, DAY9_cfog_density) ); fogA = weatherProfile_fogDensity[dayCounter].x; fogB = weatherProfile_fogDensity[dayCounter].y; #endif // apply rain scene smallCumulusCoverage *= 1 + rainStrength * Rain_coverage * 0.5; smallCumulusDensity *= 1 + rainStrength * 0.5; largeCumulusCoverage *= 1 + rainStrength * Rain_coverage * 0.5; largeCumulusDensity *= 1 + rainStrength * 0.5; altostratusCoverage *= 1 + rainStrength * Rain_coverage; altostratusDensity *= 1 + rainStrength; //=============== CONFIGURE CUSTOM SCENE PARAMETERS ABOVE HERE =============== } // write various parameters within singular pixels of a texture, which is a non-clearing buffer reprojecting the previous frame of itself, onto itself. // this allows smooth interpolation over time from any old parameter value, to any new parameter value. // read in vertex stage of post processing passes (deferred, composite), so it only runs on 4 vertices // pass to fragment stage for use. // the parameters are stored as such: // smallCumulus = (coverage, density) // largeCumulus = (coverage, density) // altostratus = (coverage, density) // fog = (uniform fog density, cloudy fog density) // ... and more, eventually flat varying struct sceneController { vec2 smallCumulus; vec2 largeCumulus; vec2 altostratus; vec2 fog; } parameters; vec3 writeSceneControllerParameters( vec2 uv, vec2 smallCumulus, vec2 largeCumulus, vec2 altostratus, vec2 fog ){ // in colortex4, data is written in a 3x3 pixel area from (1,1) to (3,3) // avoiding use of any variation of (0,0) to avoid weird textture wrapping issues // 4th compnent/alpha is storing 1/4 res depth so i cant store there lol /* (1,3) */ bool topLeft = uv.x > 1 && uv.x < 2 && uv.y > 3 && uv.y < 4; /* (2,3) */ bool topMiddle = uv.x > 2 && uv.x < 3 && uv.y > 3 && uv.y < 4; // /* (3,3) */ bool topRight = uv.x > 3 && uv.x < 5 && uv.y > 3 && uv.y < 4; // /* (1,2) */ bool middleLeft = uv.x > 1 && uv.x < 2 && uv.y > 2 && uv.y < 3; // /* (2,2) */ bool middleMiddle = uv.x > 2 && uv.x < 3 && uv.y > 2 && uv.y < 3; // /* (3,2) */ bool middleRight = uv.x > 3 && uv.x < 5 && uv.y > 2 && uv.y < 3; // /* (1,1) */ bool bottomLeft = uv.x > 1 && uv.x < 2 && uv.y > 1 && uv.y < 2; // /* (2,1) */ bool bottomMiddle = uv.x > 2 && uv.x < 3 && uv.y > 1 && uv.y < 2; // /* (3,1) */ bool bottomRight = uv.x > 3 && uv.x < 5 && uv.y > 1 && uv.y < 2; vec3 data = vec3(0.0,0.0,0.0); if(topLeft) data = vec3(smallCumulus.xy, largeCumulus.x); if(topMiddle) data = vec3(largeCumulus.y, altostratus.xy); // if(topRight) data = vec4(groundSunColor,fogSunColor.r); // if(middleLeft) data = vec4(groundAmbientColor,fogSunColor.g); // if(middleMiddle) data = vec4(fogAmbientColor,fogSunColor.b); // if(middleRight) data = vec4(cloudSunColor,cloudAmbientColor.r); // if(bottomLeft) data = vec4(cloudAmbientColor.gb,0.0,0.0); // if(bottomMiddle) data = vec4(0.0); // if(bottomRight) data = vec4(0.0); return data; } void readSceneControllerParameters( sampler2D colortex, out vec2 smallCumulus, out vec2 largeCumulus, out vec2 altostratus, out vec2 fog ){ // in colortex4, read the data stored within the 3 components of the sampled pixels, and pass it to the fragment stage // 4th compnent/alpha is storing 1/4 res depth so i cant store there lol vec3 data1 = texelFetch2D(colortex,ivec2(1,3),0).rgb/150.0; vec3 data2 = texelFetch2D(colortex,ivec2(2,3),0).rgb/150.0; smallCumulus = vec2(data1.x,data1.y); largeCumulus = vec2(data1.z,data2.x); altostratus = vec2(data2.y,data2.z); fog = vec2(0.0); } ================================================ FILE: shaders/lib/settings.glsl ================================================ #define SHADER_VERSION_LABEL 1.9 // [1.9] //////////////////////////////////////// // ----- WATER RELATED SETTINGS ----- // //////////////////////////////////////// // #define Vanilla_like_water #define WATER_WAVE_STRENGTH 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] #define WATER_WAVE_SPEED 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] #define Dirt_Amount 0.1 // [0 0.025 0.05 0.075 0.1 0.125 0.15 0.175 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.6 0.7 0.8 0.9 1.0 1.2 1.4 1.6 1.8 2.0 3.0 4.0 5.0] #define Dirt_Scatter_R 0.1 // [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] #define Dirt_Scatter_G 0.2 // [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] #define Dirt_Scatter_B 0.3 // [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] #define Dirt_Absorb_R 1.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] #define Dirt_Absorb_G 1.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] #define Dirt_Absorb_B 1.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] #define Water_Absorb_R 0.25 // [0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 0.055 0.06 0.065 0.07 0.075 0.08 0.085 0.09 0.095 0.1 0.105 0.11 0.115 0.12 0.125 0.13 0.135 0.14 0.145 0.15 0.155 0.16 0.165 0.17 0.175 0.18 0.185 0.19 0.195 0.2 0.205 0.21 0.215 0.22 0.225 0.23 0.235 0.24 0.245 0.25] #define Water_Absorb_G 0.065 // [0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 0.055 0.06 0.065 0.07 0.075 0.08 0.085 0.09 0.095 0.1 0.105 0.11 0.115 0.12 0.125 0.13 0.135 0.14 0.145 0.15 0.155 0.16 0.165 0.17 0.175 0.18 0.185 0.19 0.195 0.2 0.205 0.21 0.215 0.22 0.225 0.23 0.235 0.24 0.245 0.25] #define Water_Absorb_B 0.035 // [0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 0.055 0.06 0.065 0.07 0.075 0.08 0.085 0.09 0.095 0.1 0.105 0.11 0.115 0.12 0.125 0.13 0.135 0.14 0.145 0.15 0.155 0.16 0.165 0.17 0.175 0.18 0.185 0.19 0.195 0.2 0.205 0.21 0.215 0.22 0.225 0.23 0.235 0.24 0.245 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 25 30 35 40 45 50 60 70 80 90 100] #define rayMarchSampleCount 2 // [1 2 3 4 6 8 12 16 32 64] #define FAKE_REFRACTION_AMOUNT 4 // [0 1 2 3 4 5 6 7 8] #define FAKE_DISPERSION_AMOUNT 4 // [0 1 2 3 4 5 6 7 8] #define REFRACTION_SMUDGE_AMOUNT 0 // [0 1 2 3 4 5 6 7 8] #define SSR_STEPS 30 // [10 15 20 25 30 35 40 50 100 200 400] #define USE_QUARTER_RES_DEPTH #define SNELLS_WINDOW #define WATER_DISTORTION_AMOUNT 0.3 // [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define WATER_SUN_SPECULAR #ifndef OVERWORLD_SHADER #undef WATER_SUN_SPECULAR #endif //////////////////////////////////////// // ----- PLANT RELATED SETTINGS ----- // //////////////////////////////////////// #define WAVY_PLANTS // #define RP_MODEL_FIX #define WAVY_STRENGTH 1.0 // [0 0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] #define WAVY_SPEED 1.0 // [0 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0] #define RAIN_VISIBILITY 0.5 // [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define WATER_RIPPLES // #define GROUND_RIPPLES // #define Seasons #define Season_Length 24 // [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 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] #define Start_Season 0 // [0 1 2 3] #define Summer_R 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] #define Summer_G 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] #define Summer_B 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] #define Summer_Leaf_R 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] #define Summer_Leaf_G 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] #define Summer_Leaf_B 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] #define Fall_R 1.5 // [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 Fall_G 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] #define Fall_B 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] #define Fall_Leaf_R 1.8 // [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 Fall_Leaf_G 0.9 // [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 Fall_Leaf_B 0.7 // [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 Winter_R 1.2 // [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 Winter_G 0.8 // [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 Winter_B 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] #define Winter_Leaf_R 1.2 // [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 Winter_Leaf_G 0.5 // [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 Winter_Leaf_B 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] #define Spring_R 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] #define Spring_G 0.9 // [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 Spring_B 1.1 // [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 Spring_Leaf_R 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] #define Spring_Leaf_G 0.8 // [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 Spring_Leaf_B 0.8 // [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] ///////////////////////////////////////////////// // ----- INDIRECT LIGHT RELATED SETTINGS ----- // ///////////////////////////////////////////////// #define MIN_LIGHT_AMOUNT 0.2 // [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] #define ambient_brightness 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0] #define AmbientLight_R 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] #define AmbientLight_G 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] #define AmbientLight_B 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] #define TORCH_AMOUNT 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0] #define TORCH_R 1.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] #define TORCH_G 0.6 // [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] #define TORCH_B 0.4 // [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] #define Hand_Held_lights #define HANDHELD_LIGHT_RANGE 16 // [1 2 4 6 8 12 16 24 32 48 64] #define indirect_effect 1 // [0 1 2 3] #define indirect_RTGI 0 // [0 1 2] #define AO_in_sunlight #define AO_Strength 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0] #define UseQuarterResDepth #define GI_Strength 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0] #define RAY_COUNT 4 // [1 2 4 6 8 12 16 24 32 48 64] #define RT_ITERATION 8 // [1 2 4 6 8 12 16 24 32 48 64] const float ambientOcclusionLevel = 1.0; // this controls vanilla minecrafts ambient occlusion. [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] // #define EMISSIVE_ORE #define EMISSIVE_ORE_RANGE 5 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] #define EMISSIVE_ORE_R 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] #define EMISSIVE_ORE_G 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] #define EMISSIVE_ORE_B 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] #define FANCY_END_PORTAL ///////////////////////////////////////// // ----- SHADOW RELATED SETTINGS ----- // ///////////////////////////////////////// const float sunPathRotation = -35; // [-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -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 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] const int shadowMapResolution = 2048; // [512 768 1024 1536 2048 3172 4096 8192] const float shadowDistance = 128; // [16 32 48 64 80 96 128 160 192 256 512 1024 2048 4096 8192] #define RENDER_ENTITY_SHADOWS #define RENDER_PLAYER_SHADOWS #define SCREENSPACE_CONTACT_SHADOWS #define Variable_Penumbra_Shadows #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 15.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] #define Max_Shadow_Filter_Radius 30.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] #define Max_Filter_Depth 15.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] #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] #define Stochastic_Transparent_Shadows #define Glass_Tint // #define TRANSLUCENT_COLORED_SHADOWS #ifdef TRANSLUCENT_COLORED_SHADOWS #undef Stochastic_Transparent_Shadows #endif ////////////////////////////////////// // ----- FOG RELATED SETTINGS ----- // ////////////////////////////////////// #define TOGGLE_VL_FOG #define VL_SAMPLES 8 // [1 2 4 6 8 12 16 24 32 48 64] #define FOG_START_HEIGHT 60 // [-200 -190 -180 -170 -160 -150 -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] #define TOD_Fog_mult 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] #define Morning_Uniform_Fog 0.01 // [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 Morning_Cloudy_Fog 0.05 // [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 Noon_Uniform_Fog 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 Noon_Cloudy_Fog 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 Evening_Uniform_Fog 0.05 // [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 Evening_Cloudy_Fog 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 Night_Uniform_Fog 0.1 // [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 Night_Cloudy_Fog 0.05 // [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 Haze_amount 0.5 // [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 fog_coefficientMieR 3.0 // [0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] #define fog_coefficientMieG 3.0 // [0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] #define fog_coefficientMieB 3.0 // [0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] const vec3 mC = vec3(fog_coefficientMieR, fog_coefficientMieG, fog_coefficientMieB) * 1e-6; #define RainFog_amount 0.02 // [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 RAINFOG_R 1.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] #define RAINFOG_G 1.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] #define RAINFOG_B 1.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] #define BLOOMY_FOG 1.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.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 #define CaveFogFallOff 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0] #define CaveFogColor_R 0.1 // [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] #define CaveFogColor_G 0.14 // [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] #define CaveFogColor_B 0.3 // [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] #define BorderFog #ifndef OVERWORLD_SHADER #undef BorderFog #endif #define DISTANT_HORIZONS_SUPPORT #ifndef DISTANT_HORIZONS_SUPPORT #undef DISTANT_HORIZONS #endif #define SEA_LEVEL 62 // [-200 -195 -190 -185 -180 -175 -170 -165 -160 -155 -150 -145 -140 -135 -130 -125 -120 -115 -110 -105 -100 -95 -90 -85 -80 -75 -70 -65 -60 -55 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 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] ////////////////////////////////////////////////////// // ----- BIOME SPECIFIC ENVIRONMENTS SETTINGS ----- // ////////////////////////////////////////////////////// #define PER_BIOME_ENVIRONMENT #define SWAMP_ENV #define SWAMP_UNIFORM_DENSITY 0.3 // [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 SWAMP_CLOUDY_DENSITY 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 SWAMP_R 0.6 // [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 SWAMP_G 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 SWAMP_B 0.2 // [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 JUNGLE_ENV #define JUNGLE_UNIFORM_DENSITY 0.1 // [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 JUNGLE_CLOUDY_DENSITY 0.2 // [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 JUNGLE_R 0.5 // [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 JUNGLE_G 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 JUNGLE_B 0.5 // [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 DARKFOREST_ENV #define DARKFOREST_UNIFORM_DENSITY 0.2 // [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 DARKFOREST_CLOUDY_DENSITY 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 DARKFOREST_R 0.3 // [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 DARKFOREST_G 0.4 // [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 DARKFOREST_B 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 SNOWY_ENV #define SNOWY_UNIFORM_DENSITY 0.2 // [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 SNOWY_CLOUDY_DENSITY 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 SNOWY_R 0.3 // [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 SNOWY_G 0.5 // [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 SNOWY_B 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 DRY_ENV #define DRY_UNIFORM_DENSITY 0.1 // [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 DRY_CLOUDY_DENSITY 0.2 // [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 DRY_R 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 DRY_G 0.9 // [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 DRY_B 0.8 // [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 AURORA_SNOWY #define AURORA_BRIGHTNESS 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0] #define AURORA_SPEED 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0] #define AURORA_UPPER_R 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 AURORA_UPPER_G 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 AURORA_UPPER_B 0.3 // [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 AURORA_LOWER_R 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 AURORA_LOWER_G 0.5 // [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 AURORA_LOWER_B 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 AUR_ENV_OFFSET 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] /////////////////////////////////////////////////// // ----- LABPBR MATERIALS RELATED SETTINGS ----- // /////////////////////////////////////////////////// #define EMISSIVE_TYPE 1 // [0 1 2 3] #define Emissive_Brightness 1.0 // [1.0 2.0 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] #define Emissive_Curve 2.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 POM #define Adaptive_Step_length #define POM_DEPTH 0.25 // [0 0.025 0.05 0.075 0.1 0.125 0.15 0.175 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.6 0.7 0.8 0.9 1.0] #define MAX_ITERATIONS 35 // [5 10 15 20 25 30 35 40 45 50 60 70 80 90 100] #define MAX_DIST 25.0 // [5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 60.0 70.0 80.0 90.0 100.0] #define SUN_SPECULAR_MULT 1 // [0 1 2 3 4 5 6 7 8 9 10] #define ROUGHNESS_THRESHOLD 0.3 // [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] #define MATERIAL_WETNESS_TYPE 0 // [0 1] #define SSS_TYPE 1 // [0 1 2 3] #define LabSSS_Curve 1.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 MOB_SSS // #define MISC_BLOCK_SSS #define Ambient_SSS #define ambientsss_brightness 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 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0] #define sss_absorbance_multiplier 1.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] #define sss_density_multiplier 1.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] #define SCREENSPACE_DIRECT_SSS_BLENDING 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define Porosity #define Puddles #define Puddle_Size 1.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] #define MATERIAL_AO #define MATERIAL_NORMAL_STRENGTH 1 // [1 2 3 4 5 6 7 8 9 10] #define RESOURCEPACK_SKY 0 // [0 1 2 3] ////////////////////////////////////// // ----- SKY RELATED SETTINGS ----- // ////////////////////////////////////// #define Sky_Brightness 1.0 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.1 1.2 1.3 1.4 1.5 2.0 3.0 4.0 5.0 6.0 10.0] #define sky_coefficientRayleighR 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 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0] #define sky_coefficientRayleighG 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 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0] #define sky_coefficientRayleighB 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 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0] #define sky_coefficientMieR 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 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0] #define sky_coefficientMieG 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 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0] #define sky_coefficientMieB 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 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0] const vec3 skyRL = vec3(sky_coefficientRayleighR, sky_coefficientRayleighG, sky_coefficientRayleighB); const vec3 skyMie = vec3(sky_coefficientMieR, sky_coefficientMieG, sky_coefficientMieB); #define colortype 1 // 1 = RGB sliders for sun/moon color. 2 = blackbody. [1 2] #define sun_illuminance 150000.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 Sun_temp 6300 // [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 5400 5500 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] #define sunColorR 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 sunColorG 0.9 // [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.8 // [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 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.9 // [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.9 // [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 moonColorB 0.9 // [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 MOONPHASE_BASED_MOONLIGHT #define SKY_GROUND #define STAR_DENSITY 0.5 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define STAR_MOVEMENT_MULT 1.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 SHOOTING_STARS #define SHOOTING_STARS_SPEED 2.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 SHOOTING_STARS_FREQUENCY 1.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 SHOOTING_STARS_TRAIL_VISIBILITY 1.0 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define SHOOTING_STARS_TRAIL_LENGTH 0.2 // [0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] #define SHOOTING_STARS_TRAIL_WIDTH 0.25 // [0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] #define RAINBOW 1 // [0 1 2] #define RAINBOW_STRENGTH 1.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.5 3.0 4.0 5.0] #define RAINBOW_WIDTH 0.05 // [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] #define RAINBOW_DISTANCE 250 // [50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000] //////////////////////////////////////// // ----- CLOUD RELATED SETTINGS ----- // //////////////////////////////////////// #define VOLUMETRIC_CLOUDS #ifdef VOLUMETRIC_CLOUDS #ifndef ambientLight_only #define CLOUDS_SHADOWS #endif #ifdef CLOUDS_SHADOWS #define VL_CLOUDS_SHADOWS #endif #endif #define CLOUDS_QUALITY 1.0 // [0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] #define Cloud_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 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] #define CLOUD_SHADOW_STRENGTH 0.5 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define ERODE_AMOUNT 0.5 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define CloudLayer0 #define CloudLayer0_coverage 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 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.0 1.20 1.40 1.60 1.80 2.00 3.00 4.00 5.00] #define CloudLayer0_height 250.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0] #define CloudLayer0_tallness 100.0 // [0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0] #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 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_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.0 1.20 1.40 1.60 1.80 2.00 3.00 4.00 5.00] #define CloudLayer1_height 500.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0] #define CloudLayer1_tallness 200.0 // [0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0] #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 #define CloudLayer2_coverage 0.6 // [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_density 0.2 // [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 1.20 1.40 1.60 1.80 2.00 3.00 4.00 5.00] #define CloudLayer2_height 1500.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0] #define CloudLayer2_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 Rain_coverage 1.2 // [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 Daily_Weather // #define CHOOSE_RANDOM_WEATHER_PROFILE #ifdef Daily_Weather // DAY 0 WEATHER PARAMETERS #define DAY0_l0_coverage 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 DAY0_l1_coverage 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 DAY0_l2_coverage 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 DAY0_ufog_density 0.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 DAY0_l0_density 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 DAY0_l1_density 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 DAY0_l2_density 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 DAY0_cfog_density 0.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] // DAY 1 WEATHER PARAMETERS #define DAY1_l0_coverage 1.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] #define DAY1_l1_coverage 1.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] #define DAY1_l2_coverage 2.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 DAY1_ufog_density 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] #define DAY1_l0_density 0.8 // [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 DAY1_l1_density 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] #define DAY1_l2_density 1.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] #define DAY1_cfog_density 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] // DAY 2 WEATHER PARAMETERS #define DAY2_l0_coverage 1.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] #define DAY2_l1_coverage 0.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 DAY2_l2_coverage 0.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 DAY2_ufog_density 0.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 DAY2_l0_density 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] #define DAY2_l1_density 0.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 DAY2_l2_density 0.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 DAY2_cfog_density 0.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] // DAY 3 WEATHER PARAMETERS #define DAY3_l0_coverage 1.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] #define DAY3_l1_coverage 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 DAY3_l2_coverage 0.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 DAY3_ufog_density 0.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 DAY3_l0_density 1.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] #define DAY3_l1_density 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 DAY3_l2_density 0.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 DAY3_cfog_density 0.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] // DAY 4 WEATHER PARAMETERS #define DAY4_l0_coverage 0.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 DAY4_l1_coverage 0.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 DAY4_l2_coverage 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 DAY4_ufog_density 0.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 DAY4_l0_density 0.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 DAY4_l1_density 0.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 DAY4_l2_density 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 DAY4_cfog_density 0.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] // DAY 5 WEATHER PARAMETERS #define DAY5_l0_coverage 1.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] #define DAY5_l1_coverage 0.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 DAY5_l2_coverage 2.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 DAY5_ufog_density 0.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 DAY5_l0_density 0.9 // [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 DAY5_l1_density 0.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 DAY5_l2_density 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] #define DAY5_cfog_density 0.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] // DAY 6 WEATHER PARAMETERS #define DAY6_l0_coverage 0.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 DAY6_l1_coverage 0.8 // [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 DAY6_l2_coverage 1.8 // [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 DAY6_ufog_density 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 DAY6_l0_density 0.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 DAY6_l1_density 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 DAY6_l2_density 0.2 // [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 DAY6_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] // DAY 7 WEATHER PARAMETERS #define DAY7_l0_coverage 0.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 DAY7_l1_coverage 0.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 DAY7_l2_coverage 0.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 DAY7_ufog_density 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 DAY7_l0_density 0.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 DAY7_l1_density 0.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 DAY7_l2_density 0.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 DAY7_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] // DAY 8 WEATHER PARAMETERS #define DAY8_l0_coverage 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 DAY8_l1_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 DAY8_l2_coverage 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 DAY8_ufog_density 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 DAY8_l0_density 1.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] #define DAY8_l1_density 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] #define DAY8_l2_density 2.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 DAY8_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] // DAY 9 WEATHER PARAMETERS #define DAY9_l0_coverage 1.6 // [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 DAY9_l1_coverage 0.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 DAY9_l2_coverage 1.8 // [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 DAY9_ufog_density 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 DAY9_l0_density 1.4 // [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 DAY9_l1_density 0.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 DAY9_l2_density 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] #define DAY9_cfog_density 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #endif ////////////////////////////////////// // ----- TAA RELATED SETTINGS ----- // ////////////////////////////////////// #define TAA // #define RESPONSIVE_TAA // #define TAA_UPSCALING // #define SCREENSHOT_MODE #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] #define BLEND_FACTOR_DURING_MOVEMENT 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] ///////////////////////////////////////////////// // ----- DEPTH OF FIELD RELATED SETTINGS ----- // ///////////////////////////////////////////////// #define DOF_QUALITY -1 // [-1 0 1 2 3 4 5] #define DOF_ANAMORPHIC_RATIO 1.0 // [0.3 0.6 1.0] #define DOF_DISPERSION_MULT 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 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 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] #define REMOVE_HAND_BLUR //#define FAR_BLUR_ONLY #define focal 2.4 // [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] #define aperture 0.8 // [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] #define MANUAL_FOCUS -2 // [-2 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 28 29 30 32 33 35 36 38 40 41 43 45 47 48 50 52 54 56 58 60 63 65 67 70 72 75 77 80 83 85 88 91 94 98 101 104 108 111 115 119 123 127 132 136 141 146 151 156 161 167 173 179 186 193 200 207 215 224 232 242 251 262 273 284 297 310 324 339 355 372 391 411 433 457 483 512] #define DoF_Adaptation_Speed 1.00 // [0.20 0.21 0.23 0.24 0.25 0.27 0.29 0.30 0.32 0.34 0.36 0.39 0.41 0.43 0.46 0.49 0.52 0.55 0.59 0.62 0.66 0.70 0.74 0.79 0.84 0.89 0.94 1.00 1.06 1.13 1.20 1.27 1.35 1.43 1.52 1.61 1.71 1.82 1.93 2.05 2.18 2.31 2.45 2.60 2.76 2.93 3.11 3.30 3.51 3.72 3.95 4.19 4.45 4.73 5.02 5.33 5.65 6.00] // #define DOF_JITTER_SHADOW #define JITTER_STRENGTH 1.0 // sorry [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2.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] #define FOCUS_LASER_COLOR 1 // Red, Green, Blue, Pink, Yellow, White [0 1 2 3 4 5] //////////////////////////////////////////////////////// // ----- COLOR/POST PROCESSING RELATED SETTINGS ----- // //////////////////////////////////////////////////////// #define TONEMAP ToneMap_AgX_minimal // [ToneMap_AgX_minimal ToneMap_AgX Tonemap_Xonk ToneMap_Hejl2015 Tonemap_Uchimura HableTonemap Full_Reinhard_Edit Tonemap_Full_Reinhard reinhard reinhard_jodie Tonemap_Lottes ACESFilm Tonemap_Ozius] #define USE_ACES_COLORSPACE_APPROXIMATION #define AGX_LOOK 1 // [0 1 2 3] #define CONTRAST_ADAPTATIVE_SHARPENING #define SHARPENING 0.2 // [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 SATURATION 0.0 // [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 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] #define CROSSTALK 0.0 // [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 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] // #define LUMINANCE_CURVE #define UPPER_CURVE 0.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] #define LOWER_CURVE 0.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] // #define COLOR_GRADING_ENABLED #define SHADOWS_GRADE_R 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define SHADOWS_GRADE_G 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define SHADOWS_GRADE_B 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define SHADOWS_GRADE_MUL 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] const vec3 SHADOWS_TARGET = length(vec3(SHADOWS_GRADE_R, SHADOWS_GRADE_G, SHADOWS_GRADE_B)) < 0.001 ? vec3(0.0) : normalize(vec3(SHADOWS_GRADE_R, SHADOWS_GRADE_G, SHADOWS_GRADE_B)); #define MIDS_GRADE_R 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define MIDS_GRADE_G 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define MIDS_GRADE_B 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define MIDS_GRADE_MUL 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] const vec3 MIDS_TARGET = length(vec3(MIDS_GRADE_R, MIDS_GRADE_G, MIDS_GRADE_B)) < 0.001 ? vec3(0.0) : normalize(vec3(MIDS_GRADE_R, MIDS_GRADE_G, MIDS_GRADE_B)); #define HIGHLIGHTS_GRADE_R 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define HIGHLIGHTS_GRADE_G 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define HIGHLIGHTS_GRADE_B 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] #define HIGHLIGHTS_GRADE_MUL 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0] const vec3 HIGHLIGHTS_TARGET = length(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_G, HIGHLIGHTS_GRADE_B)) < 0.001 ? vec3(0.0) : normalize(vec3(HIGHLIGHTS_GRADE_R, HIGHLIGHTS_GRADE_G, HIGHLIGHTS_GRADE_B)); #define EXPOSURE_MULTIPLIER 1.0 // [0.25 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.1 1.2 1.3 1.4 1.5 2.0 3.0 4.0] #define AUTO_EXPOSURE #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 Purkinje_strength 100 // [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 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] #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] #define Purkinje_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 1.0] #define Purkinje_B 1.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_Multiplier 5.0 // [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 10.0] // #define AEROCHROME_MODE // Infra-red film colors ^~^ // #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 0.2 // [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 FISHEYE_EFFECT #define FISHEYE_STRENGTH 0.4 // [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 CHROMATIC_ABERRATION #define CHROMATIC_ABERRATION_STRENGTH 1.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.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define LENS_FLARE #define LENS_FLARE_STRENGTH 1.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] /////////////////////////////////////////////////////// // ----- GAMEPLAY POST EFFECT RELATED SETTINGS ----- // /////////////////////////////////////////////////////// #define MOTION_AMOUNT 0.2 // [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 DISTORT_EFFECT_AMOUNT 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 WATER_ON_CAMERA_EFFECT #define ON_FIRE_DISTORT_EFFECT // #define RAIN_ON_CAMERA_EFFECT // #define FLASHLIGHT #define FLASHLIGHT_SPECULAR #define FLASHLIGHT_BOUNCED_INDIRECT // #define FLASHLIGHT_FOG_ILLUMINATION #define FLASHLIGHT_RANGE 32 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 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 60.0 70.0 80.0 90.0 100.0] #define FLASHLIGHT_SIZE 2.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 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] #define FLASHLIGHT_BRIGHTNESS_MULT 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 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 60.0 70.0 80.0 90.0 100.0] #define FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 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 60.0 70.0 80.0 90.0 100.0] #define FLASHLIGHT_R 1.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 FLASHLIGHT_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 1.0] #define FLASHLIGHT_B 0.8 // [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] #ifdef FLASHLIGHT #undef Hand_Held_lights #else #undef FLASHLIGHT_SPECULAR #endif ///////////////////////////////////////// // ----- NETHER RELATED SETTINGS ----- // ///////////////////////////////////////// #define NETHER_PLUME_DENSITY 0.2 // [0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define NETHER_PLUME_R 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define NETHER_PLUME_G 0.4 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define NETHER_PLUME_B 0.2 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] ////////////////////////////////////// // ----- END RELATED SETTINGS ----- // ////////////////////////////////////// #define END_STORM_DENSITY 0.5 // [0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] #define END_FOG_R 0.25 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_FOG_G 0.15 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_FOG_B 0.5 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_VORTEX_R 0.5 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_VORTEX_G 0.3 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_VORTEX_B 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_LIGHTNING_R 0.8 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_LIGHTNING_G 0.4 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] #define END_LIGHTNING_B 1.0 // [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] /////////////////////////////// // ----- MISC SETTINGS ----- // /////////////////////////////// // #define CLOUDS_INTERSECT_TERRAIN // #define ambientLight_only // THIS IS A DEBUG VIEW. turn the sunlight off. DOES NOT increase performance, the shadows are still working in the background // #define WhiteWorld // THIS IS A DEBUG VIEW. uses to see AO easier. used to see fake GI better (green light) // #define Compositing_Sky // make the sky some color to make compositing a sky in some photoediting software easier. // #define display_LUT // #define SSS_view // #define BIOME_TINT_WATER #define Texture_MipMap_Bias 0.0 // [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.0 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] #define PLANET_GROUND_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 ] #define LIT_PARTICLE_BRIGHTNESS 1.0 // [1.0 2.0 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.] #define LIGHTNING_FLASH // FOR OPTIFINE USERS. some mods change the sky color, which can trigger the lightning flash detection. #define WATER_CAUSTICS_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 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] #define WATER_CAUSTICS_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 6.0 7.0 8.0 9.0 10.0] #define DENOISE_SSS_AND_SSAO // #define HYPER_DETAILED_WAVES // #define DISABLE_ENCHANT_GLINT // #define DISABLE_VANILLA_EMISSIVES #define PARTICLE_RENDERING_FIX #define LIGHTING_EFFECTS_BLUR_FILTER // #define OLD_BLOOM // #define BLOOMY_PARTICLES // #define LARGE_WAVE_DISPLACEMENT #define SELECT_BOX #define SELECT_BOX_COL_R 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 SELECT_BOX_COL_G 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 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 LIGHTLEAKFIX_MODE 1 // [1 2] #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.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 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] // #define OLD_INDIRECT_SSS // #define USE_CUSTOM_DIFFUSE_LIGHTING_COLORS #define DIRECTLIGHT_DIFFUSE_R 1.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] #define DIRECTLIGHT_DIFFUSE_G 1.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] #define DIRECTLIGHT_DIFFUSE_B 1.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] #define INDIRECTLIGHT_DIFFUSE_R 1.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] #define INDIRECTLIGHT_DIFFUSE_G 1.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] #define INDIRECTLIGHT_DIFFUSE_B 1.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] // #define USE_CUSTOM_CLOUD_LIGHTING_COLORS #define DIRECTLIGHT_CLOUDS_R 1.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] #define DIRECTLIGHT_CLOUDS_G 1.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] #define DIRECTLIGHT_CLOUDS_B 1.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] #define INDIRECTLIGHT_CLOUDS_R 1.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] #define INDIRECTLIGHT_CLOUDS_G 1.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] #define INDIRECTLIGHT_CLOUDS_B 1.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] // #define USE_CUSTOM_FOG_LIGHTING_COLORS #define DIRECTLIGHT_FOG_R 1.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] #define DIRECTLIGHT_FOG_G 1.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] #define DIRECTLIGHT_FOG_B 1.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] #define INDIRECTLIGHT_FOG_R 1.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] #define INDIRECTLIGHT_FOG_G 1.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] #define INDIRECTLIGHT_FOG_B 1.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] // #define USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS #define SKY_GROUND_R 1.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] #define SKY_GROUND_G 1.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] #define SKY_GROUND_B 1.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] /////////////////////////////////////////// // ----- DISTANT HORIZONS SETTINGS ----- // /////////////////////////////////////////// #define DISTORT_SHADOWMAP // #define DISTANT_HORIZONS_SHADOWMAP #ifdef DISTANT_HORIZONS_SHADOWMAP #undef DISTORT_SHADOWMAP const float shadowNearPlane = -1.0; const float shadowFarPlane = -1.0; #endif // #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 DH_AMBIENT_OCCLUSION #define DH_SUBSURFACE_SCATTERING #define DH_SCREENSPACE_REFLECTIONS #define DH_TAA_JITTER #define DH_NOISE_TEXTURE #define NOISE_RESOLUTION 16 // [1 2 3 4 5 6 7 8 12 14 16 24 32 48 64] #define NOISE_INTENSITY 12.0 // [1.0 2.0 3.0 4.0 6.0 8.0 10.0 12.0 14.0 16.0 18.0 20.0 22.0 24.0 32.0 48.0 64.0] #define NOISE_DROPOFF 1024 // [128 256 512 768 1024 1536 2048 3072 4096 8192] /////////////////////////////////////////// // ----- FLOODFILL [LPV] SETTINGS ----- // /////////////////////////////////////////// // #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_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 #define LPV_ENTITY_LIGHTS #define LPV_REDSTONE_LIGHTS // #define LPV_COLORED_CANDLES // #define LPV_VL_FOG_ILLUMINATION #define LPV_VL_FOG_ILLUMINATION_BRIGHTNESS 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_BLOCKLIGHT_SCALE 12 // [1 2 4 6 8 12 16 24 32 48 64 96 128] // Fix for making nether/end work until next Iris release to fix shadow matrices // #define LPV_NOSHADOW_HACK #define LPV_COLOR_SHADOWS #define LPV_SHADOWS_LIGHT_MULT 0.5 // [0.00 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 LPV_SHADOWS_LIGHT_COUNT 9 // [1 2 3 4 5 6 7 8 9] #define LPV_HAND_SHADOWS // ruining parts of the effect to make it more like vanilla floodfill // #define VANILLA_LIGHTMAP_MASK //////////////////////////////// // ----- DEBUG SETTINGS ----- // //////////////////////////////// #define debug_OFF 0 #define debug_SHADOWMAP 1 #define debug_NORMALS 2 #define debug_SPECULAR 3 #define debug_INDIRECT 4 #define debug_DIRECT 5 #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_LIGHTS 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_TEMPORAL_REPROJECTION debug_LIGHTS] // #define ISOLATE_RESOURCEPACK_SKY #if DEBUG_VIEW == debug_DEPTHTEX0 || DEBUG_VIEW == debug_DEPTHTEX1 #undef TAA #endif ////////////////////////////////////// // ----- IRIS EXCLUSIVE SETTINGS ----- // ////////////////////////////////////// #ifdef IS_IRIS #define DAMAGE_TAKEN_EFFECT #define LOW_HEALTH_EFFECT #define LOW_HEALTH_EFFECT_START 6.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] #define CRITICALLY_LOW_HEALTH_EFFECT_START 2.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] #define TRANSLUCENT_ENTITIES #endif #ifdef LPV_ENABLED #ifdef IRIS_FEATURE_CUSTOM_IMAGES #define IS_LPV_ENABLED //#define LPV_SHADOWS #endif const float voxelDistance = 64.0; #endif // ----- FIX SETTINGS ----- // #ifdef CAVE_FOG #endif #ifdef SWAMP_ENV #endif #ifdef JUNGLE_ENV #endif #ifdef DARKFOREST_ENV #endif #ifdef SNOWY_ENV #endif #ifdef DRY_ENV #endif #ifdef RESPONSIVE_TAA #endif #ifdef DH_TAA_JITTER #endif #ifdef DH_SCREENSPACE_REFLECTIONS #endif #ifdef DH_SUBSURFACE_SCATTERING #endif #ifdef TRANSLUCENT_ENTITIES #endif #ifdef RENDER_ENTITY_SHADOWS #endif #if RESOURCEPACK_SKY == 0 #endif #ifdef VANILLA_SUN_AND_MOON #endif #ifdef LIGHTNING_FLASH #endif #if SHADER_VERSION_LABEL > 0 #endif #if DH_KNOWN_ISSUES == 0 #endif #ifdef PARTICLE_RENDERING_FIX #endif #ifdef RENDER_PLAYER_SHADOWS #endif #ifdef LPV_VL_FOG_ILLUMINATION #endif #ifdef OLD_CAVE_DETECTION #endif #ifdef FORCE_TRANSLUCENT_GLASS #endif #ifdef LOW_HEALTH_EFFECT #endif #ifdef DAMAGE_TAKEN_EFFECT #endif #ifdef WATER_ON_CAMERA_EFFECT #endif #ifdef DEFERRED_SPECULAR #endif #ifdef if DEFERRED_SSR_QUALITY > -1 #endif #ifdef DEFERRED_BACKGROUND_REFLECTION #endif #ifdef DEFERRED_ROUGH_REFLECTION #endif #ifdef FORWARD_SPECULAR #endif #ifdef if FORWARD_SSR_QUALITY > -1 #endif #ifdef FORWARD_BACKGROUND_REFLECTION #endif #ifdef FORWARD_ROUGH_REFLECTION #endif #ifdef FLASHLIGHT #endif #ifdef FLASHLIGHT_SPECULAR #endif #ifdef FLASHLIGHT_BOUNCED_INDIRECT #endif #ifdef FLASHLIGHT_FOG_ILLUMINATION #endif #ifdef SELECT_BOX #endif #ifdef USE_CUSTOM_CLOUD_LIGHTING_COLORS #endif #ifdef USE_CUSTOM_FOG_LIGHTING_COLORS #endif #ifdef CLOUDS_INTERSECT_TERRAIN #endif ================================================ FILE: shaders/lib/sky_gradient.glsl ================================================ vec3 drawSun(float cosY, float sunInt,vec3 nsunlight, vec3 inColor){ // return nsunlight * min(max(cosY-0.9994,0.0)/(1.0-0.9994),1.0) * 100.0; return (inColor+nsunlight/0.0008821203*pow(smoothstep(cos(0.0093084168595*3.2),cos(0.0093084168595*1.8),cosY),3.)*0.62); } vec3 drawMoon(vec3 PlayerPos, vec3 WorldSunVec, vec3 Color, inout vec3 occludeStars){ float Shape = min(max(dot(WorldSunVec,PlayerPos)-0.9994,0.0)/(1.0-0.9994),1.0);// * clamp(-dot(WorldSunVec,PlayerPos),0,1); occludeStars *= max(1.0-Shape*5,0.0); return Shape * Color * 40.0; /* float shape2 = pow(exp(Shape * -10),0.15) * 255.0; vec3 sunNormal = vec3(dot(WorldSunVec+PlayerPos, vec3(shape2,0,0)), dot(PlayerPos+WorldSunVec, vec3(0,shape2,0)), -dot(WorldSunVec, PlayerPos) * 15.0); // even has a little tilt approximation haha.... yeah.... vec3[8] phase = vec3[8]( vec3(-1.0, -0.5, 1.0), vec3(-1.0, -0.5, 0.35), vec3(-1.0, -0.5, 0.2), vec3(-1.0, -0.5, 0.1), vec3( 1.0, 0.25, -1.0), vec3( 1.0, 0.25, 0.1), vec3( 1.0, 0.25, 0.2), vec3( 1.0, 0.25, 0.35) ); 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; */ } 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)); } vec4 texture2D_bicubic_offset(sampler2D tex, vec2 uv, float noise, float scale){ float offsets = noise * TAU; vec2 circleOffsets = vec2(sin(offsets), cos(offsets)) * scale; #ifdef SCREENSHOT_MODE circleOffsets = vec2(0.0); #endif vec4 texelSize = vec4(texelSize,1.0/texelSize); uv = (uv + texelSize.xy)*texelSize.zw; vec2 iuv = floor( uv + circleOffsets ); vec2 fuv = fract( uv + circleOffsets ); 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))); } vec2 sphereToCarte(vec3 dir) { float lonlat = clamp(atan(-dir.x, -dir.z), -PI, PI); return vec2(lonlat * (0.5/PI) +0.5, asin(dir.y)*(1.0/PI)+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); } vec4 skyCloudsFromTexBLUR(vec3 pos,sampler2D sampler, float scaler){ 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); } ================================================ FILE: shaders/lib/specular.glsl ================================================ float invLinZ (float lindepth){ return -((2.0*near/lindepth)-far-near)/(far-near); } float linZ(float depth) { return (2.0 * near) / (far + near - depth * (far - near)); // l = (2*n)/(f+n-d(f-n)) // f+n-d(f-n) = 2n/l // -d(f-n) = ((2n/l)-f-n) // d = -((2n/l)-f-n)/(f-n) } void frisvad(in vec3 n, out vec3 f, out vec3 r) { if(n.z < -0.9) { f = vec3(0.,-1,0); r = vec3(-1, 0, 0); } else { float a = 1./(1.+n.z); float b = -n.x*n.y*a; f = vec3(1. - n.x*n.x*a, b, -n.x) ; r = vec3(b, 1. - n.y*n.y*a , -n.y); } } mat3 CoordBase(vec3 n){ vec3 x,y; frisvad(n,x,y); return mat3(x,y,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 float phi = TAU * xy.x; float cosTheta = fma(1.0 - xy.y, 1.0 + viewerDirection.z, -viewerDirection.z); float sinTheta = sqrt(1.0 - cosTheta * cosTheta); 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) { float r2 = max(r * r, 0.0001); vec3 h = normalize(l + v); float HdotL = clamp(dot(h, l), 0.0, 1.0); float NdotH = clamp(dot(n, h), 0.0, 1.0); float NdotL = clamp(dot(n, l), 0.0, 1.0); float denom = NdotH * (r2 - 1.0) + 1.0; denom *= PI * denom; float D = r2 / denom; vec3 F = (f0 + (1.0 - f0) * exp2((-5.55473 * HdotL-6.98316) * HdotL)) * metalAlbedoTint; float k2 = 0.25 * r2; return NdotL * D * F / (HdotL * HdotL * (1.0-k2) + k2); } float shlickFresnelRoughness(float XdotN, float roughness){ float shlickFresnel = clamp(1.0 + XdotN,0.0,1.0); float curves = exp(-4.0*pow(1.0-(roughness),2.5)); float brightness = exp(-3.0*pow(1.0-sqrt(roughness),3.5)); 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 biasAmount = 0.0001; vec3 clipPosition = toClipSpace3(position); float rayLength = ((position.z + dir.z * far * sqrt(3.0)) > -near) ? (-near - position.z) / dir.z : far * sqrt(3.0); vec3 direction = toClipSpace3(position + dir * rayLength) - clipPosition; //convert to clip space vec3 reflectedTC = vec3((direction.xy + clipPosition.xy) * RENDER_SCALE, 0.999999); #if FORWARD_SSR_QUALITY == 1 return reflectedTC; #endif //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; clipPosition.xy *= RENDER_SCALE; stepv.xy *= RENDER_SCALE; vec3 spos = clipPosition + stepv * dither; spos += stepv*0.5 + vec3(0.5*texelSize,0.0); // small offsets to reduce artifacts from precision differences. #if defined DEFERRED_SPECULAR && defined TAA spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; #endif float minZ = spos.z - 0.00025 / linZ(spos.z); float maxZ = spos.z; vec3 hitPos = vec3(1.1); for (int i = 0; i <= int(quality); i++) { #if DEFERRED_SSR_QUALITY != 1 if(!hand && (spos.x < 0 || spos.x > 1 || spos.y < 0 || spos.y > 1)) return vec3(1.1); #endif float sampleDepth = sqrt(texelFetch2D(colortex4, ivec2(spos.xy/texelSize/4.0),0).a/65000.0); float sp = invLinZ(sampleDepth); if(sp < max(minZ, maxZ) && sp > min(minZ, maxZ)) { hitPos = vec3(spos.xy/RENDER_SCALE, sp); break; } minZ = maxZ - biasAmount / linZ(spos.z); maxZ += stepv.z; spos += stepv; reflectionLength += 1.0 / quality; } #if DEFERRED_SSR_QUALITY == 1 return reflectedTC; #endif if(hand) return reflectedTC; return hitPos; } vec4 screenSpaceReflections( vec3 reflectedVector, vec3 viewPos, float noise, bool isHand, float roughness, inout float backgroundReflectMask ){ vec4 reflection = vec4(0.0); float reflectionLength = 0.0; float quality = 1.0f; #ifdef FORWARD_SPECULAR quality = float(FORWARD_SSR_QUALITY); #endif #ifdef DEFERRED_SPECULAR quality = float(DEFERRED_SSR_QUALITY); #endif vec3 raytracePos = rayTraceSpeculars(reflectedVector, viewPos, noise, quality, isHand, reflectionLength); if (raytracePos.z > 1.0) return reflection; // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. reflectionLength = min(max(reflectionLength - 0.1, 0.0)/0.9, 1.0); float LOD = mix(0.0, 6.0*(1.0-exp(-15.0*sqrt(roughness))), 1.0-pow(1.0-reflectionLength,5.0)); vec3 previousPosition = toPreviousPos(toScreenSpace(raytracePos)); previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; previousPosition.xy = clamp(previousPosition.xy, 0.0, 1.0); if(raytracePos.z > 0.99999999) backgroundReflectMask = 1.0; #ifdef OVERWORLD_SHADER reflection.a = raytracePos.z > 0.99999999 ? (isHand || isEyeInWater == 1 ? 1.0 : 0.0) : 1.0; #else reflection.a = 1.0; #endif #ifdef FORWARD_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 getReflectionVisibility(float f0, float roughness){ // 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; if(thresholdValue < 0.01) return 0.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); // 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); // a curve to make the gradient look smooth/nonlinear. just preference visibilityGradient = 1.0-visibilityGradient; visibilityGradient *=visibilityGradient; visibilityGradient = 1.0-visibilityGradient; visibilityGradient *=visibilityGradient; return visibilityGradient; } // 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 specularReflections( 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 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. in float lightmap, // in anything other than world0, this should be 1.0; in bool isHand // mask for the hand #ifdef FORWARD_SPECULAR , bool isWater , inout float reflectanceForAlpha #endif ,in vec4 flashLight_stuff ){ #ifdef FORWARD_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; bool isMetal = f0 > 229.5/255.0; // 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); reflectedVector_L = isHand ? reflect(playerPos, normal) : reflectedVector_L; #else vec3 reflectedVector_L = reflect(playerPos, normal); #endif float VdotN = dot(-normalize(viewDir), vec3(0.0,0.0,1.0)); float shlickFresnel = shlickFresnelRoughness(VdotN, roughness); // 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; #ifdef FORWARD_SPECULAR reflectanceForAlpha = clamp(dot(F0, vec3(0.3333333)), 0.0,1.0); #ifdef SNELLS_WINDOW if(isEyeInWater == 1 && isWater){ // emulate how mojang did snells window in vibrant visuals because it works nicely tbh float snellsWindow = min(max(0.54 - clamp(1.0 + VdotN,0,1),0)/0.1,1); snellsWindow = 1.0-snellsWindow*snellsWindow; snellsWindow *= snellsWindow*snellsWindow; reflectanceForAlpha = f0 + (1.0-f0) * snellsWindow; } #endif #endif vec3 specularReflections = diffuseLighting; float reflectionVisibilty = getReflectionVisibility(f0, roughness); #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION || DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0 if(reflectionVisibilty < 1.0){ float backgroundReflectMask = lightmap; #if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION #ifndef OVERWORLD_SHADER vec3 backgroundReflection = volumetricsFromTex(reflectedVector_L, colortex4, roughness).rgb / 1200.0; #else vec3 backgroundReflection = skyCloudsFromTex(reflectedVector_L, colortex4).rgb / 1200.0; #ifdef SNELLS_WINDOW if(isEyeInWater == 1) backgroundReflection *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * 15.0)*2; #endif #endif #endif #if DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0 vec4 environmentReflection = screenSpaceReflections(mat3(gbufferModelView) * reflectedVector_L, viewPos, noise.z, isHand, roughness, backgroundReflectMask); // darkening for metals. vec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-environmentReflection.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, backgroundReflectMask); #endif #if DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0 specularReflections = mix(specularReflections, environmentReflection.rgb, environmentReflection.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 || SUN_SPECULAR_MULT > 0 vec3 lightSourceReflection = SUN_SPECULAR_MULT * lightColor * GGX(normal, -playerPos, lightPos, roughness, reflectance, metalAlbedoTint); specularReflections += lightSourceReflection; #endif #if defined FLASHLIGHT_SPECULAR && (defined DEFERRED_SPECULAR || defined FORWARD_SPECULAR) vec3 flashLightReflection = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * flashLight_stuff.a * GGX(normal, -flashLight_stuff.xyz, -flashLight_stuff.xyz, roughness, reflectance, metalAlbedoTint); specularReflections += flashLightReflection; #endif return specularReflections; } ================================================ FILE: shaders/lib/stars.glsl ================================================ //Original star code : https://www.shadertoy.com/view/Md2SR3 , optimised //Original shooting star code : https://www.shadertoy.com/view/ttVXDy ///////////////////////////// STAR FIELD ///////////////////////////////// // Convert Noise2d() into a "star field" by stomping everthing below fThreshhold to zero. float NoisyStarField(in vec3 vSamplePos, float fThreshhold){ float StarVal = hash13(vSamplePos); StarVal = clamp(StarVal/(1.0 - fThreshhold) - fThreshhold/(1.0 - fThreshhold), 0.0, 1.0); return StarVal; } // Stabilize NoisyStarField() by only sampling at integer values. float StableStarField( in vec3 vSamplePos, float fThreshhold ){ // Linear interpolation between four samples. // Note: This approach has some visual artifacts. // There must be a better way to "anti alias" the star field. float fractX = fract(vSamplePos.x); float fractY = fract(vSamplePos.y); vec3 floorSample = floor(vSamplePos.xyz); float v1 = NoisyStarField(floorSample, fThreshhold); float v2 = NoisyStarField(floorSample + vec3(0.0, 1.0, 0.0), fThreshhold); float v3 = NoisyStarField(floorSample + vec3(1.0, 0.0, 0.0), fThreshhold); float v4 = NoisyStarField(floorSample + vec3(1.0, 1.0, 0.0), fThreshhold); float StarVal = v1 * (1.0 - fractX) * (1.0 - fractY) + v2 * (1.0 - fractX ) * fractY + v3 * fractX * (1.0 - fractY) + v4 * fractX * fractY; return StarVal; } float drawStars(vec3 viewPos){ float stars = max(1.0 - StableStarField(viewPos * 300.0 , 1 - 0.1 * STAR_DENSITY), 0.0); return exp(stars * -20.0); } ///////////////////////////// SHOOTING STAR ///////////////////////////////// float distLine(vec2 p, vec2 a, vec2 b) { vec2 pa = p-a; vec2 ba = b-a; float t = clamp(dot(pa, ba)/ dot(ba, ba), 0.0, 1.0); return length(pa - ba*t); } float drawLine(vec2 p, vec2 a, vec2 b) { float d = distLine(p, a, b); float m = smoothstep(SHOOTING_STARS_TRAIL_WIDTH * 0.01, 0.00001, d); float d2 = length(a - b); m *= smoothstep(1.0, 0.5, d2) + smoothstep(0.04, 0.03, abs(d2 - 0.75)); return m; } float shootingStar(vec2 uv) { vec2 gv = fract(uv) - 0.5; vec2 id = floor(uv); float h = hash21(id); if (h > SHOOTING_STARS_FREQUENCY * 0.01) return 0.0; float line = drawLine(gv, vec2(0.0, h), vec2(SHOOTING_STARS_TRAIL_LENGTH, h)); float trail = smoothstep(SHOOTING_STARS_TRAIL_LENGTH * 1.2, 0.0, gv.x); return line * trail; } vec3 drawShootingStars(vec3 viewPos) { vec2 uv = viewPos.xz / viewPos.y; float t = frameTimeCounter * SHOOTING_STARS_SPEED; uv += vec2(t, 0.0); float stars = shootingStar(uv) * SHOOTING_STARS_TRAIL_VISIBILITY; return vec3(clamp(stars, 0.0, 1.0)); } ================================================ FILE: shaders/lib/text.glsl ================================================ /* -------------------------------------------------------------------------------- GLSL Debug Text Renderer by SixthSurge (updated 2023-04-08) Character set based on Monocraft by IdreesInc https://github.com/IdreesInc/Monocraft With additional characters added by WoMspace Usage: // Call beginText to initialize the text renderer. You can scale the fragment position to adjust the size of the text beginText(ivec2(gl_FragCoord.xy), ivec2(0, viewHeight)); ^ fragment position ^ text box position (upper left corner) // You can print various data types printBool(false); printFloat(sqrt(-1.0)); // Prints "NaN" printInt(42); printVec3(skyColor); // ...or arbitrarily long strings printString((_H, _e, _l, _l, _o, _comma, _space, _w, _o, _r, _l, _d)); // To start a new line, use printLine(); // You can also configure the text color on the fly text.fgCol = vec4(1.0, 0.0, 0.0, 1.0); text.bgCol = vec4(0.0, 0.0, 0.0, 1.0); // ...as well as the number base and number of decimal places to print text.base = 16; text.fpPrecision = 4; // Finally, call endText to blend the current fragment color with the text endText(fragColor); Important: any variables you display must be the same for all fragments, or at least all of the fragments that the text covers. Otherwise, different fragments will try to print different values, resulting in, well, a mess -------------------------------------------------------------------------------- */ #if !defined UTILITY_TEXTRENDERING_INCLUDED #define UTILITY_TEXTRENDERING_INCLUDED // Characters const uint _A = 0x747f18c4u; const uint _B = 0xf47d18f8u; const uint _C = 0x746108b8u; const uint _D = 0xf46318f8u; const uint _E = 0xfc39087cu; const uint _F = 0xfc390840u; const uint _G = 0x7c2718b8u; const uint _H = 0x8c7f18c4u; const uint _I = 0x71084238u; const uint _J = 0x084218b8u; const uint _K = 0x8cb928c4u; const uint _L = 0x8421087cu; const uint _M = 0x8eeb18c4u; const uint _N = 0x8e6b38c4u; const uint _O = 0x746318b8u; const uint _P = 0xf47d0840u; const uint _Q = 0x74631934u; const uint _R = 0xf47d18c4u; const uint _S = 0x7c1c18b8u; const uint _T = 0xf9084210u; const uint _U = 0x8c6318b8u; const uint _V = 0x8c62a510u; const uint _W = 0x8c635dc4u; const uint _X = 0x8a88a8c4u; const uint _Y = 0x8a884210u; const uint _Z = 0xf844447cu; const uint _a = 0x0382f8bcu; const uint _b = 0x85b318f8u; const uint _c = 0x03a308b8u; const uint _d = 0x0b6718bcu; const uint _e = 0x03a3f83cu; const uint _f = 0x323c8420u; const uint _g = 0x03e2f0f8u; const uint _h = 0x842d98c4u; const uint _i = 0x40308418u; const uint _j = 0x080218b8u; const uint _k = 0x4254c524u; const uint _l = 0x6108420cu; const uint _m = 0x06ab5ac4u; const uint _n = 0x07a318c4u; const uint _o = 0x03a318b8u; const uint _p = 0x05b31f40u; const uint _q = 0x03671784u; const uint _r = 0x05b30840u; const uint _s = 0x03e0e0f8u; const uint _t = 0x211c420cu; const uint _u = 0x046318bcu; const uint _v = 0x04631510u; const uint _w = 0x04635abcu; const uint _x = 0x04544544u; const uint _y = 0x0462f0f8u; const uint _z = 0x07c4447cu; const uint _0 = 0x746b58b8u; const uint _1 = 0x23084238u; const uint _2 = 0x744c88fcu; const uint _3 = 0x744c18b8u; const uint _4 = 0x19531f84u; const uint _5 = 0xfc3c18b8u; const uint _6 = 0x3221e8b8u; const uint _7 = 0xfc422210u; const uint _8 = 0x745d18b8u; const uint _9 = 0x745e1130u; const uint _space = 0x0000000u; const uint _dot = 0x000010u; const uint _minus = 0x0000e000u; const uint _comma = 0x00000220u; const uint _colon = 0x02000020u; // Additional characters added by WoMspace <3 const uint _under = 0x000007Cu; // _ const uint _quote = 0x52800000u; // " const uint _exclm = 0x21084010u; // ! const uint _gt = 0x02082220u; // > const uint _lt = 0x00888208u; // < const uint _opsqr = 0x3908421Cu; // [ const uint _clsqr = 0xE1084270u; // ] const uint _opprn = 0x11084208u; // ( const uint _clprn = 0x41084220u; // ) const uint _block = 0xFFFFFFFCu; // █ const uint _copyr = 0x03AB9AB8u; // ©️ const int charWidth = 5; const int charHeight = 6; const int charSpacing = 1; const int lineSpacing = 1; const ivec2 charSize = ivec2(charWidth, charHeight); const ivec2 spaceSize = charSize + ivec2(charSpacing, lineSpacing); // Text renderer struct Text { vec4 result; // Output color from the text renderer vec4 fgCol; // Text foreground color vec4 bgCol; // Text background color ivec2 fragPos; // The position of the fragment (can be scaled to adjust the size of the text) ivec2 textPos; // The position of the top-left corner of the text ivec2 charPos; // The position of the next character in the text int base; // Number base int fpPrecision; // Number of decimal places to print } text; // Fills the global text object with default values void beginText(ivec2 fragPos, ivec2 textPos) { text.result = vec4(0.0); text.fgCol = vec4(1.0); text.bgCol = vec4(0.0, 0.0, 0.0, 0.6); text.fragPos = fragPos; text.textPos = textPos; text.charPos = ivec2(0); text.base = 10; text.fpPrecision = 2; } // Applies the rendered text to the fragment void endText(inout vec3 fragColor) { fragColor = mix(fragColor.rgb, text.result.rgb, text.result.a); } void printChar(uint character) { ivec2 pos = text.fragPos - text.textPos - spaceSize * text.charPos * ivec2(1, -1) + ivec2(0, spaceSize.y); uint index = uint(charWidth - pos.x + pos.y * charWidth + 1); // Draw background if (clamp(pos, ivec2(0), spaceSize - 1) == pos) text.result = mix(text.result, text.bgCol, text.bgCol.a); // Draw character if (clamp(pos, ivec2(0), charSize - 1) == pos) text.result = mix(text.result, text.fgCol, text.fgCol.a * float(character >> index & 1u)); // Advance to next character text.charPos.x++; } #define printString(string) { \ uint[] characters = uint[] string; \ for (int i = 0; i < characters.length(); ++i) printChar(characters[i]); \ } void printUnsignedInt(uint value, int len) { const uint[36] digits = uint[]( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z ); // Advance to end of the number text.charPos.x += len - 1; // Write number backwards for (int i = 0; i < len; ++i) { printChar(digits[int(value) % text.base]); value /= uint(text.base); text.charPos.x -= 2; } // Return to end of the number text.charPos.x += len + 1; } void printUnsignedInt(uint value) { float logValue = log(float(value)) + 1e-6; float logBase = log(float(text.base)); int len = int(ceil(logValue / logBase)); len = max(len, 1); printUnsignedInt(value, len); } void printInt(int value) { if (value < 0) printChar(_minus); printUnsignedInt(uint(abs(value))); } void printFloat(float value) { if (value < 0.0) printChar(_minus); if (isnan(value)) { printString((_N, _a, _N)); } else if (isinf(value)) { printString((_i, _n, _f)); } else { float i, f = modf(abs(value), i); uint integralPart = uint(i); uint fractionalPart = uint(f * pow(float(text.base), float(text.fpPrecision)) + 0.5); printUnsignedInt(integralPart); printChar(_dot); printUnsignedInt(fractionalPart, text.fpPrecision); } } void printBool(bool value) { if (value) { printString((_t, _r, _u, _e)); } else { printString((_f, _a, _l, _s, _e)); } } void printVec2(vec2 value) { printFloat(value.x); printString((_comma, _space)); printFloat(value.y); } void printVec3(vec3 value) { printFloat(value.x); printString((_comma, _space)); printFloat(value.y); printString((_comma, _space)); printFloat(value.z); } void printVec4(vec4 value) { printFloat(value.x); printString((_comma, _space)); printFloat(value.y); printString((_comma, _space)); printFloat(value.z); printString((_comma, _space)); printFloat(value.w); } void printIvec2(ivec2 value) { printInt(value.x); printString((_comma, _space)); printInt(value.y); } void printIvec3(ivec3 value) { printInt(value.x); printString((_comma, _space)); printInt(value.y); printString((_comma, _space)); printInt(value.z); } void printIvec4(ivec4 value) { printInt(value.x); printString((_comma, _space)); printInt(value.y); printString((_comma, _space)); printInt(value.z); printString((_comma, _space)); printInt(value.w); } void printUvec2(uvec2 value) { printUnsignedInt(value.x); printString((_comma, _space)); printUnsignedInt(value.y); } void printUvec3(uvec3 value) { printUnsignedInt(value.x); printString((_comma, _space)); printUnsignedInt(value.y); printString((_comma, _space)); printUnsignedInt(value.z); } void printUvec4(uvec4 value) { printUnsignedInt(value.x); printString((_comma, _space)); printUnsignedInt(value.y); printString((_comma, _space)); printUnsignedInt(value.z); printString((_comma, _space)); printUnsignedInt(value.w); } void printLine() { text.charPos.x = 0; ++text.charPos.y; } #endif // UTILITY_TEXTRENDERING_INCLUDED ================================================ FILE: shaders/lib/tonemaps.glsl ================================================ vec3 tonemap(vec3 col){ return col/(1+luma(col)); } vec3 invTonemap(vec3 col){ return col/(1-luma(col)); } vec3 ToneMap_Hejl2015(in vec3 hdr){ vec4 vh = vec4(hdr*0.85, 3.0); //0 vec4 va = (1.75 * vh) + 0.05; //0.05 vec4 vf = ((vh * va + 0.004f) / ((vh * (va + 0.55f) + 0.0491f))) - 0.0821f+0.000633604888; //((0+0.004)/((0*(0.05+0.55)+0.0491)))-0.0821 return vf.xyz / vf.www; } vec3 HableTonemap(vec3 linearColor){ // A = shoulder strength const float A = 0.6; // B = linear strength const float B = 0.5; // C = linear angle const float C = 0.1; // D = toe strength const float D = 0.5; // E = toe numerator const float E = 0.01; // F = toe denominator const float F = 0.3; // Note: E / F = toe angle // linearWhite = linear white point value vec3 x = linearColor*2.0; vec3 color = ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; const float W = 11.0; const float white = ((W * (A * W + C * B) + D * E) / (W * (A * W + B) + D * F)) - E / F; return color / white; } vec3 reinhard(vec3 x){ x *= 1.66; return x/(1.0+x); } // from Jodie's shadertoy: https://www.shadertoy.com/view/4dBcD1 // i edited it a little tiny bit // from https://github.com/64/64.github.io/blob/src/code/tonemapping // https://64.github.io/tonemapping/#reinhard-jodie // Copyright (c) 2022 @64 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. vec3 reinhard_jodie(vec3 color){ // i edited it to add whitepoint control // float whitePoint = 10.0; // color *= (1.0 + color / (whitePoint*whitePoint)); color *= 1.5; vec3 tonemapLuminance = color / (1.0 + dot(color, vec3(0.21, 0.72, 0.07))); vec3 tonemapRGB = color / (1.0 + color); // small weight because i dont want bright colors to be *too* colorful return mix(tonemapLuminance, tonemapRGB, tonemapRGB*0.8+0.2); } vec3 ACESFilm(vec3 x){ x*=0.9; // 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; return (x*(a*x+b))/(x*(c*x+d)+e); } // From https://www.shadertoy.com/view/WdjSW3 vec3 Tonemap_Lottes(vec3 x){ // Lottes 2016, "Advanced Techniques and Optimization of HDR Color Pipelines" const float a = 1.6; const float d = 0.977; const float hdrMax = 8.0; const float midIn = 0.23; const float midOut = 0.267; // Can be precomputed const float b = (-pow(midIn, a) + pow(hdrMax, a) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); const float c = (pow(hdrMax, a * d) * pow(midIn, a) - pow(hdrMax, a) * pow(midIn, a * d) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); return pow(x,vec3(a)) / (pow(x, vec3(a * d)) * b + c); } vec3 curve(vec3 x){ return 1.0 - x/(1.0+x); } vec3 Tonemap_Uchimura_Modified(vec3 x, float P, float a, float m, float l, float c, float b){ // Uchimura 2017, "HDR theory and practice" // Math: https://www.desmos.com/calculator/gslcdxvipg // Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp float l0 = ((P - m) * l) / a; float L0 = m - m / a; float L1 = m + (1.0 - m) / a; float S0 = m + l0; float S1 = m + a * l0; float C2 = (a * P) / (P - S1); float CP = C2 / P; vec3 w0 = 1.0 - smoothstep(x, vec3(0.0), vec3(m)); vec3 w2 = step(m + l0, x); vec3 w1 = 1.0 - w0 - w2; vec3 T = m * pow(x / m, vec3(c)) + b; vec3 S = P - (P - S1) * curve(CP * (x - S0)); vec3 L = m + a * (x - m); return clamp(T * w0 + L * w1 + S * w2,0.0,1.0); } // From https://www.shadertoy.com/view/WdjSW3 vec3 Tonemap_Uchimura(vec3 x, float P, float a, float m, float l, float c, float b){ // Uchimura 2017, "HDR theory and practice" // Math: https://www.desmos.com/calculator/gslcdxvipg // Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp float l0 = ((P - m) * l) / a; float L0 = m - m / a; float L1 = m + (1.0 - m) / a; float S0 = m + l0; float S1 = m + a * l0; float C2 = (a * P) / (P - S1); float CP = -C2 / P; vec3 w0 = 1.0 - smoothstep(x, vec3(0.0), vec3(m)); vec3 w2 = step(m + l0, x); vec3 w1 = 1.0 - w0 - w2; vec3 T = m * pow(x / m, vec3(c)) + b; vec3 S = P - (P - S1) * exp(CP * (x - S0)); vec3 L = m + a * (x - m); return clamp(T * w0 + L * w1 + S * w2,0.0,1.0); } vec3 Tonemap_Uchimura(vec3 x){ const float P = 1.0; // max display brightness 1.0 const float a = 1.0; // contrast 1.0 const float m = 0.12; // linear section start 0.22 const float l = 0.22; // linear section length 0.4 const float c = 1.0; // black 1.33 const float b = 0.0; // pedestal 0.0 return Tonemap_Uchimura_Modified(x, P, a, m, l, c, b); } vec3 Tonemap_Xonk(vec3 Color){ Color = pow(Color,vec3(1.3)); return Color / (0.333 + Color); // return pow(Color / (0.333 + Color), vec3(1.1)); } vec3 Tonemap_Full_Reinhard(vec3 C){ float whitepoint = 10.0; float lighten = 0.5; return (C * (1.0 + C / (whitepoint*whitepoint))) / (lighten + C); } vec3 Full_Reinhard_Edit(vec3 C){ C = pow(C,vec3(1.2)); float whitepoint = 10.0; float lighten = 0.333; return (C * (1.0 + C / (whitepoint*whitepoint))) / (lighten + C); } vec3 Tonemap_Ozius(vec3 C){ const vec3 a = vec3(0.46, 0.46, 0.46); const vec3 b = vec3(0.60, 0.60, 0.60); C *= 1.6; vec3 cr = mix(vec3(dot(C, vec3(0.2722, 0.6741, 0.0537))), C, 0.5) + 1.0; C = pow(C / (1.0 + C), a); return pow(C * C * (-2.0 * C + 3.0), cr / b); } // from https://iolite-engine.com/blog_posts/minimal_agx_implementation // MIT License // // Copyright (c) 2024 Missing Deadlines (Benjamin Wrensch) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // All values used to derive this implementation are sourced from Troy’s initial AgX implementation/OCIO config file available here: // https://github.com/sobotka/AgX // AND /// from https://github.com/donmccurdy/three.js/blob/dev/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js // AgX Tone Mapping implementation based on Filament, which in turn is based // on Blender's implementation using rec 2020 primaries // https://github.com/google/filament/pull/7236 // Inputs and outputs are encoded as Linear-sRGB. // https://iolite-engine.com/blog_posts/minimal_agx_implementation // Mean error^2: 3.6705141e-06 vec3 agxDefaultContrastApprox(vec3 x){ return x*(+0.1241 +x*(+0.2079 +x*(-5.9293 +x*(+30.3768 +x*(-38.9015 +x*(+15.1221)))))); } #if AGX_LOOK == 0 vec3 slope = vec3(1.0); vec3 power = vec3(1.0); float sat = 1.25; #elif AGX_LOOK == 1 vec3 slope = vec3(1.0); vec3 power = vec3(1.175); float sat = 0.98; #elif AGX_LOOK == 2 vec3 slope = vec3(1.0, 0.9, 0.5); vec3 power = vec3(0.8); float sat = 0.8; #elif AGX_LOOK == 3 vec3 slope = vec3(1.0); vec3 power = vec3(1.35); float sat = 1.4; #endif vec3 ToneMap_AgX(vec3 color){ mat3 i = mat3(0.8566, 0.1373, 0.1119, 0.0951, 0.7612, 0.0768, 0.0483, 0.1014, 0.8113); // Log2 encoding color = (clamp(log2(i * color), -12.4739, 4.0261) +12.4739) / 16.5; // Apply sigmoid color = agxDefaultContrastApprox(color); // Apply AgX look color = mix(vec3(dot(color, vec3(0.2126,0.7152,0.0722))), pow(color, power) * slope, sat); // Eotf mat3 o = mat3(1.1271, -0.1413, -0.1413, -0.1106, 1.1578, -0.1106, -0.0165, -0.0165, 1.2519); // Linearize color = pow(max(vec3(0.0), o * color), vec3(2.2)); // Gamut mapping. Simple clamp for now. return clamp(color, 0.0, 1.0); } vec3 ToneMap_AgX_minimal(vec3 color) { mat3 i = mat3(0.8425, 0.0423, 0.0424, 0.0784, 0.8785, 0.0784, 0.0792, 0.0792, 0.8791); color = (clamp(log2(i * color), -12.4739, 4.0261) +12.4739) / 16.5; color = agxDefaultContrastApprox(color); color = mix(vec3(dot(color, vec3(0.2126,0.7152,0.0722))), pow(color, power) * slope, sat); mat3 o = mat3(1.1969, -0.0529, -0.0530, -0.0980, 1.1519, -0.0980, -0.0990, -0.0990, 1.1511); color = pow(o * color, vec3(2.2)); return clamp(color, 0.0, 1.0); } ================================================ FILE: shaders/lib/util.glsl ================================================ const float PI = acos(-1.0); const float TAU = PI * 2.0; const float hPI = PI * 0.5; const float rPI = 1.0 / PI; const float rTAU = 1.0 / TAU; const float PHI = sqrt(5.0) * 0.5 + 0.5; const float rLOG2 = 1.0 / log(2.0); const float goldenAngle = TAU / PHI / PHI; #define clamp01(x) clamp(x, 0.0, 1.0) #define max0(x) max(x, 0.0) #define min0(x) min(x, 0.0) #define min1(x) min(x, 1.0) #define max3(a) max(max(a.x, a.y), a.z) #define min3(a) min(min(a.x, a.y), a.z) #define max4(a, b, c, d) max(max(a, b), max(c, d)) #define min4(a, b, c, d) min(min(a, b), min(c, d)) #define fsign(x) (clamp01(x * 1e35) * 2.0 - 1.0) #define fstep(x,y) clamp01((y - x) * 1e35) #define diagonal2(m) vec2((m)[0].x, (m)[1].y) #define diagonal3(m) vec3(diagonal2(m), m[2].z) #define diagonal4(m) vec4(diagonal3(m), m[2].w) #define transMAD(mat, v) (mat3(mat) * (v) + (mat)[3].xyz) #define projMAD(mat, v) (diagonal3(mat) * (v) + (mat)[3].xyz) #define encodeColor(x) (x * 0.00005) #define decodeColor(x) (x * 20000.0) #define cubeSmooth(x) (x * x * (3.0 - 2.0 * x)) #define lumCoeff vec3(0.2125, 0.7154, 0.0721) float facos(const float sx) { float x = clamp(abs( sx ),0.,1.); float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); return mix(PI - a, a, step(0.0, sx)); //float c = clamp(-sx * 1e35, 0., 1.); //return c * pi + a * -(c * 2. - 1.); //no conditional version } vec2 sincos(float x) { return vec2(sin(x), cos(x)); } vec2 circlemap(float i, float n) { return sincos(i * n * goldenAngle) * sqrt(i); } vec3 circlemapL(float i, float n) { return vec3(sincos(i * n * goldenAngle), sqrt(i)); } vec3 calculateRoughSpecular(const float i, const float alpha2, const int steps) { float x = (alpha2 * i) / (1.0 - i); float y = i * float(steps) * 64.0 * 64.0 * goldenAngle; float c = inversesqrt(x + 1.0); float s = sqrt(x) * c; return vec3(cos(y) * s, sin(y) * s, c); } vec3 clampNormal(vec3 n, vec3 v) { float NoV = clamp( dot(n, -v), 0., 1. ); return normalize( NoV * v + n ); } //faster and actually more precise than pow 2.2 vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } vec3 srgbToLinear(vec3 srgb) { return mix( srgb / 12.92, pow(.947867 * srgb + .0521327, vec3(2.4)), step( .04045, srgb ) ); } vec3 linearToSRGB(vec3 linear) { return mix( linear * 12.92, pow(linear, vec3(1./2.4)) * 1.055 - .055, step( .0031308, linear) ); } vec3 blackbody(float Temp) { float t = pow(Temp, -1.5); float lt = log(Temp); vec3 col = vec3(0.0); col.x = 220000.0 * t + 0.58039215686; col.y = mix(0.39231372549 * lt - 2.44549019608, 138039.215686 * t + 0.72156862745, step(6500.0, Temp)); col.z = 0.76078431372 * lt - 5.68078431373; col = clamp01(col); col = Temp < 1000. ? col * Temp * 0.001 : col; return srgbToLinear(col); } float calculateHardShadows(float shadowDepth, vec3 shadowPosition, float bias) { if(shadowPosition.z >= 1.0) return 1.0; return 1.0 - fstep(shadowDepth, shadowPosition.z - bias); } vec3 genUnitVector(vec2 xy) { xy.x *= TAU; xy.y = xy.y * 2.0 - 1.0; return vec3(sincos(xy.x) * sqrt(1.0 - xy.y * xy.y), xy.y); } vec2 rotate(vec2 x, float r) { vec2 sc = sincos(r); return mat2(sc.x, -sc.y, sc.y, sc.x) * x; } vec3 cartToSphere(vec2 coord) { coord.y = 1.0 - coord.y; coord *= vec2(TAU, PI); vec2 lon = sincos(coord.x) * sin(coord.y); return vec3(lon.x, cos(coord.y), lon.y); } vec2 sphereToCart(vec3 dir) { float lonlat = atan(-dir.x, -dir.z); return vec2(lonlat * rTAU +0.5,0.5*dir.y+0.5); } mat3 getRotMat(vec3 x,vec3 y) { float d = dot(x,y); vec3 cr = cross(y,x); float s = length(cr); float id = 1.-d; vec3 m = cr/s; vec3 m2 = m*m*id+d; vec3 sm = s*m; vec3 w = (m.xy*id).xxy*m.yzz; return mat3( m2.x, w.x-sm.z, w.y+sm.y, w.x+sm.z, m2.y, w.z-sm.x, w.y-sm.y, w.z+sm.x, m2.z ); } // No intersection if returned y component is < 0.0 vec2 rsi(vec3 position, vec3 direction, float radius) { float PoD = dot(position, direction); float radiusSquared = radius * radius; float delta = PoD * PoD + radiusSquared - dot(position, position); if (delta < 0.0) return vec2(-1.0); delta = sqrt(delta); return -PoD + vec2(-delta, delta); } float HaltonSeq3(int index) { float r = 0.; float f = 1.; for (int i = index; i > 0; i /= 3){ f /= 3.0; r += f * float(i % 3); } return r; } float HaltonSeq2(int index) { float r = 0.; float f = 1.; for (int i = index; i > 0; i /= 2){ f *= 0.5; r += f * float(i % 2); } return r; } float Hammersley(int i) { uint bits = uint(i); bits = (bits << 16u) | (bits >> 16u); bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); return float(bits) * 2.3283064365386963e-10; // 1/2^32 } vec2 R2_samples(int n) { vec2 alpha = vec2(0.75487765, 0.56984026); return fract(alpha * n); } float luma(vec3 color) { return dot(color,vec3(0.21, 0.72, 0.07)); } vec2 simpleRand22(vec2 p) { mat2 m = mat2(12.9898,.16180,78.233,.31415); return fract(sin(m * p) * vec2(43758.5453, 14142.1)); } float hash11(float p) { p = fract(p * .1031); p *= p + 33.33; p *= p + p; return fract(p); } float hash12(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * 0.1031); p3 += dot(p3, p3.yzx + 19.19); return fract((p3.x + p3.y) * p3.z); } float hash13(vec3 p3) { p3 = fract(p3 * 0.1031); p3 += dot(p3, p3.zyx + 31.32); return fract((p3.x + p3.y) * p3.z); } float hash21(vec2 n) { return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); } vec2 hash22(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973)); p3 += dot(p3, p3.yzx+19.19); return fract((p3.xx+p3.yz)*p3.zy); } vec3 hash31(float p) { vec3 p3 = fract(vec3(p) * vec3(.1031, .1030, .0973)); p3 += dot(p3, p3.yzx+33.33); return fract((p3.xxy+p3.yzz)*p3.zyx); } vec3 decode (vec2 encn) { vec3 n = vec3(0.0); encn = encn * 2.0 - 1.0; n.xy = abs(encn); n.z = 1.0 - n.x - n.y; n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; return clamp(normalize(n.xyz),-1.0,1.0); } vec2 decodeVec2(float a) { const vec2 constant1 = 65535. / vec2( 256., 65536.); const float constant2 = 256. / 255.; return fract( a * constant1 ) * constant2 ; } 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; vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); return vec4(encn,vec2(lightmaps.x,lightmaps.y)); } //encoding by jodie float encodeVec2(vec2 a) { const vec2 constant1 = vec2(1.0, 256.0) / 65535.0; vec2 temp = floor(a * 255.0); return temp.x*constant1.x+temp.y*constant1.y; } float encodeVec2(float x,float y) { return encodeVec2(vec2(x,y)); } ================================================ FILE: shaders/lib/volumetricClouds.glsl ================================================ #define ALTOSTRATUS_LAYER 2 #define LARGECUMULUS_LAYER 1 #define SMALLCUMULUS_LAYER 0 float cloud_movement = (worldTime + mod(worldDay,100) * 24000.0) / 24.0 * Cloud_Speed; float densityAtPos(in vec3 pos){ pos /= 18.; pos.xz *= 0.5; vec3 p = floor(pos); vec3 f = fract(pos); vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); vec2 coord = uv / 512.0; //The y channel has an offset to avoid using two textures fetches vec2 xy = texture2D(noisetex, coord).yx; 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(0.25, 0.005, 0.25); float coverage = 0.0; float shape = 0.0; float largeCloud = 0.0; float smallCloud = 0.0; switch (LayerIndex){ default : { break; } case SMALLCUMULUS_LAYER: { coverage = parameters.smallCumulus.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; smallCloud = abs(largeCloud-0.6) + smallCloud*smallCloud; shape = min(max(coverage - smallCloud,0.0)/(1e-6+sqrt(coverage)),1.0); break; } case LARGECUMULUS_LAYER: { coverage = parameters.largeCumulus.x; 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; shape = min(max(coverage - smallCloud,0.0)/(1e-6+sqrt(coverage)),1.0); break; } case ALTOSTRATUS_LAYER: { coverage = parameters.altostratus.x; largeCloud = texture2D(noisetex, (position.xz + cloud_movement)/100000. * CloudLayer2_scale).b; smallCloud = 1.0 - texture2D(noisetex, ((position.xz - cloud_movement)/7500. - vec2(1.0-largeCloud, -largeCloud)/5.0) * CloudLayer2_scale).b; smallCloud = largeCloud + smallCloud * 0.4 * clamp(1.5-largeCloud,0.0,1.0); shape = min(max(coverage - smallCloud,0.0) / (1e-6+sqrt(coverage)),1.0); shape *= shape; return shape; break; } } float toTop = maxHeight - position.y; float toBottom = position.y - minHeight; float tallness = maxHeight - minHeight; // clamp density of the cloud within its upper/lower bounds shape = min(min(shape, clamp(toTop,0,1)), clamp(toBottom,0,1)); // carve out the upper part of clouds. make sure it rounds out at its upper bound float topShape = min(max(toTop,0.0) / max(tallness,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(toBottom,0.0) / 25.0, 1.0), 5.0); shape = max((shape - 1.0) + topShape * bottomShape,0.0); /// erosion noise if(shape > 0.001){ // 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 * ERODE_AMOUNT,0.0); samplePos.xz -= cloud_movement/4.0; samplePos.xz += pow(max(toBottom - 20.0, 0.01) / (max(tallness, 1.0) * 0.20), 1.5); float erosion = 0.0; switch (LayerIndex){ default : { break; } case SMALLCUMULUS_LAYER: { erosion += (1.0-densityAtPos(samplePos * 200.0 * CloudLayer0_scale)) * sqrt(1.0-shape); float falloff = 1.0 - clamp(toTop/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 = erosion*erosion*erosion*erosion; break; } case LARGECUMULUS_LAYER: { erosion += (1.0 - densityAtPos(samplePos * 70.0 * CloudLayer1_scale)) * sqrt(1.0-shape); float falloff = 1.0 - clamp(toTop/200.0,0.0,1.0); erosion += abs(densityAtPos(samplePos * 250.0 * CloudLayer1_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5); erosion = erosion*erosion*erosion*erosion; break; } } return max(shape - erosion * ERODE_AMOUNT,0.0); } 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 getSunOcculsion(vec3 playerPos, vec3 sunVector){ float density = 0.0; #ifdef CloudLayer0 vec3 pos0 = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer0_height + 20.0) - playerPos.y, 0.0); density += getCloudShape(SMALLCUMULUS_LAYER, 0, pos0, CloudLayer0_height, CloudLayer0_tallness / CloudLayer0_scale + CloudLayer0_height) * parameters.smallCumulus.y; #endif #ifdef CloudLayer1 vec3 pos1 = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 40.0) - playerPos.y, 0.0); density += getCloudShape(LARGECUMULUS_LAYER, 0, pos1, CloudLayer1_height, CloudLayer1_tallness / CloudLayer1_scale + CloudLayer1_height) * parameters.largeCumulus.y; #endif #ifdef CloudLayer2 vec3 pos2 = playerPos + sunVector / abs(sunVector.y) * max(CloudLayer2_height - playerPos.y, 0.0); density += getCloudShape(ALTOSTRATUS_LAYER, 0, pos2, CloudLayer2_height, CloudLayer2_height + 5.0) * parameters.altostratus.y; #endif return density; } float getCloudShadow(vec3 playerPos, vec3 sunVector){ float totalShadow = getPlanetShadow(playerPos, sunVector); #ifdef CLOUDS_SHADOWS float cloudShadows = getSunOcculsion(playerPos, sunVector); cloudShadows *= CLOUD_SHADOW_STRENGTH; #if defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2 totalShadow *= exp((cloudShadows*cloudShadows) * -200.0); #endif #endif return totalShadow; } #ifndef CLOUDSHADOWSONLY 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; } float getCloudScattering( int LayerIndex, vec3 rayPosition, vec3 sunVector, float dither, float minHeight, float maxHeight, float density ){ int samples = 3; int LOD = 0; 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 * (0.25 + i * dither) * 200.0; }else{ shadowRayPosition = rayPosition + sunVector * (0.05 + i + dither)*20.0; } shadow += getCloudShape(LayerIndex, LOD, shadowRayPosition, minHeight, maxHeight) * density; } return shadow; } vec3 getCloudLighting( float shape, float shapeFaded, float sunShadowMask, vec3 directLightCol, float indirectShadowMask, vec3 indirectLightCol, float backScatterPhase, vec4 phaseLevels ){ float beerCoef = -3.0; float powder = 1.0 - exp(beerCoef * shapeFaded); float backscatter = powder * backScatterPhase; float forwardscatter = mix(mix(phaseLevels.x, phaseLevels.y, powder), mix(phaseLevels.z, phaseLevels.w, powder), powder); vec3 directScattering = TAU * directLightCol * exp((beerCoef - 2.0) * sunShadowMask) * (forwardscatter + backscatter); vec3 indirectScattering = indirectLightCol * mix(1.0, exp2(-5.0 * shape), indirectShadowMask * indirectShadowMask); return indirectScattering + directScattering; } vec4 raymarchCloud( int LayerIndex, int samples, vec3 rayPosition, vec3 rayDirection, float dither, float minHeight, float maxHeight, vec3 sunVector, vec3 sunScattering, vec3 skyScattering, float referenceDistance, vec3 sampledSkyCol, inout vec2 cloudPlaneDistance, float backScatterPhase, vec4 phaseLevels ){ vec3 color = vec3(0.0); float totalAbsorbance = 1.0; float GetPos = 0.0; float planetShadow = getPlanetShadow(rayPosition, sunVector); sunScattering *= planetShadow; float distanceFactor = length(rayDirection); float densityTresholdCheck = 0.0; if(LayerIndex == SMALLCUMULUS_LAYER) densityTresholdCheck = 0.06; if(LayerIndex == LARGECUMULUS_LAYER) densityTresholdCheck = 0.02; if(LayerIndex == ALTOSTRATUS_LAYER) densityTresholdCheck = 0.01; densityTresholdCheck = mix(1e-5, densityTresholdCheck, dither); if(LayerIndex == ALTOSTRATUS_LAYER){ float density = parameters.altostratus.y; bool ifAboveOrBelowPlane = max(mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight, 0.0, 1.0)) * normalize(rayDirection).y + 0.0001, 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 if(ifAboveOrBelowPlane) return vec4(color, totalAbsorbance); #endif float shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight); float shapeWithDensity = shape*density; if(shapeWithDensity > mix(1e-5, 0.06, dither)){ cloudPlaneDistance.x = length(rayPosition - cameraPosition); cloudPlaneDistance.y = 0.0; } // 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 = getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density) * (1.0-abs(WsunVec.y)); float indirectShadowMask = 0.5; vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensity, sunShadowMask, sunScattering, indirectShadowMask, skyScattering, backScatterPhase, phaseLevels); vec3 newPos = rayPosition - cameraPosition; newPos.xz /= max(newPos.y,0.0)*0.0025 + 1.0; newPos.y = min(newPos.y,0.0); float distancefog = exp(-0.00025*length(newPos)); vec3 atmosphereHaze = (sampledSkyCol - sampledSkyCol * distancefog); lighting = lighting * distancefog + atmosphereHaze; float densityCoeff = exp(-distanceFactor*shapeWithDensity); color += (lighting - lighting * densityCoeff) * totalAbsorbance; totalAbsorbance *= densityCoeff; } return vec4(color, totalAbsorbance); } if(LayerIndex < ALTOSTRATUS_LAYER){ float density = (LayerIndex == SMALLCUMULUS_LAYER) ? parameters.smallCumulus.y : parameters.largeCumulus.y; float skylightOcclusion = 1.0; #if defined CloudLayer0 && defined CloudLayer1 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,parameters.largeCumulus.y), 1.0, pow(1.0 - upperLayerOcclusion*parameters.largeCumulus.y,2)); } #endif for(int i = 0; i < 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 = shapeWithDensity * pow(clamp((rayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0); if(shapeWithDensityFaded > densityTresholdCheck){ cloudPlaneDistance.x = length(rayPosition - cameraPosition); cloudPlaneDistance.y = 0.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 = 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)*parameters.largeCumulus.y; } #endif // altostratus layer -> all cumulus layers #ifdef 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) * parameters.altostratus.y * (1.0-abs(sunVector.y)); #endif vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering, indirectShadowMask, skyScattering * skylightOcclusion, backScatterPhase, phaseLevels); #ifdef LIGHTNINGFLASH_VL lighting += createLightningPointLight(rayPosition - cameraPosition, lightningBoltPosition.xyz, shapeWithDensity, indirectShadowMask); #endif vec3 newPos = rayPosition - cameraPosition; newPos.xz /= max(newPos.y,0.0) * 0.0025 + 1.0; newPos.y = min(newPos.y,0.0); float distancefog = exp(-0.00035 * length(newPos)); vec3 atmosphereHaze = (sampledSkyCol - sampledSkyCol * distancefog); lighting = lighting * distancefog + atmosphereHaze; 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; } return vec4(color, totalAbsorbance); } } vec3 getRayOrigin( vec3 rayStartPos, vec3 cameraPos, float dither, float minHeight, float maxHeight ){ vec3 cloudDist = vec3(1.0); cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPos.y - minHeight ,0.0,clamp((maxHeight-15)-cameraPosition.y ,0.0,1.0))); // 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)); // orient the ray to be a flat plane facing up/down vec3 position = rayStartPos * dither + cameraPos + (rayStartPos/length(rayStartPos/cloudDist)) * flip; return position; } vec4 getCorrectBlendOrder(int viewIndex, vec4 smallCumulusColor,vec4 largeCumulusColor,vec4 altostratusColor){ // swap order of blending based on where the camera position is relative to the cloud plane altitude. // viewIndex = 0 is below small cumulus layer // viewIndex = 1 is above large cumulus layer // viewIndex = 2 is above altostratus layer vec4 blendedCloudsColor = vec4(0.0,0.0,0.0,1.0); switch (viewIndex){ default : { break; } case 0: { #ifdef CloudLayer2 blendedCloudsColor = altostratusColor; #endif #ifdef CloudLayer1 blendedCloudsColor.rgb = blendedCloudsColor.rgb * largeCumulusColor.a + largeCumulusColor.rgb; blendedCloudsColor.a *= largeCumulusColor.a; #endif #ifdef CloudLayer0 blendedCloudsColor.rgb = blendedCloudsColor.rgb * smallCumulusColor.a + smallCumulusColor.rgb; blendedCloudsColor.a *= smallCumulusColor.a; #endif break; } case 1: { #ifdef CloudLayer2 blendedCloudsColor = altostratusColor; #endif #ifdef CloudLayer0 blendedCloudsColor.rgb = blendedCloudsColor.rgb * smallCumulusColor.a + smallCumulusColor.rgb; blendedCloudsColor.a *= smallCumulusColor.a; #endif #ifdef CloudLayer1 blendedCloudsColor.rgb = blendedCloudsColor.rgb * largeCumulusColor.a + largeCumulusColor.rgb; blendedCloudsColor.a *= largeCumulusColor.a; #endif break; } case 2: { #ifdef CloudLayer0 blendedCloudsColor = smallCumulusColor; #endif #ifdef CloudLayer1 blendedCloudsColor.rgb = blendedCloudsColor.rgb * largeCumulusColor.a + largeCumulusColor.rgb; blendedCloudsColor.a *= largeCumulusColor.a; #endif #ifdef CloudLayer2 blendedCloudsColor.rgb = blendedCloudsColor.rgb * altostratusColor.a + altostratusColor.rgb; blendedCloudsColor.a *= altostratusColor.a; #endif break; } } return blendedCloudsColor; } vec4 GetVolumetricClouds( vec3 viewPos, vec2 dither, vec3 sunVector, vec3 directLightCol, vec3 indirectLightCol, inout float cloudPlaneDistance ){ #ifndef VOLUMETRIC_CLOUDS return vec4(0.0,0.0,0.0,1.0); #endif vec3 color = vec3(0.0); float totalAbsorbance = 1.0; vec4 cloudColor = vec4(color, totalAbsorbance); float cloudheight = CloudLayer0_tallness / CloudLayer0_scale; float minHeight = CloudLayer0_height; float maxHeight = cloudheight + minHeight; #if defined OVERWORLD_SHADER && defined AETHER_FLAG minHeight = CloudLayer0_height - 350.0; maxHeight = cloudheight + minHeight; #endif int layerViewIndex = 0; #ifdef CloudLayer1 if(CloudLayer1_height < cameraPosition.y) layerViewIndex = 1; #endif #ifdef CloudLayer2 if(CloudLayer2_height < cameraPosition.y) layerViewIndex = 2; #endif float heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - minHeight,0.0) / 100.0 ,0.0,1.0); #ifdef DISTANT_HORIZONS float maxdist = dhFarPlane - 16.0; #else float maxdist = far + 16.0*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 unsignedSunVec = sunVector;// * (float(sunElevation > 1e-5)*2.0-1.0); float SdotV = dot(unsignedSunVec, NormPlayerPos.xyz); #ifdef SKY_GROUND NormPlayerPos.y += 0.03; #endif float maxSamples = 20.0 * CLOUDS_QUALITY; float minSamples = 15.0 * CLOUDS_QUALITY; int samples = int(clamp(maxSamples / sqrt(exp2(NormPlayerPos.y)), 0.0, minSamples)); ///------- setup the ray vec3 cloudDist = vec3(1.0); cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-5) - cameraPosition.y ,0.0,1.0))); vec3 rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)/samples); vec3 rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); #ifdef SKY_GROUND vec3 sampledSkyCol = mix(skyFromTex(normalize(rayPosition - cameraPosition), colortex4)/1200.0 * Sky_Brightness, indirectLightCol, 1.0); #else vec3 sampledSkyCol = skyFromTex(normalize(rayPosition - cameraPosition), colortex4)/1200.0 * Sky_Brightness; #endif // setup for getting distance vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos; #ifdef DISTANT_HORIZONS float maxLength = min(length(playerPos), max(far, dhRenderDistance))/length(playerPos); #else float maxLength = min(length(playerPos), far)/length(playerPos); #endif playerPos *= maxLength; float startDistance = length(playerPos); #if defined EXCLUDE_WRITE_TO_LUT && defined USE_CUSTOM_CLOUD_LIGHTING_COLORS directLightCol = dot(directLightCol,vec3(0.21, 0.72, 0.07)) * vec3(DIRECTLIGHT_CLOUDS_R,DIRECTLIGHT_CLOUDS_G,DIRECTLIGHT_CLOUDS_B); indirectLightCol = dot(indirectLightCol,vec3(0.21, 0.72, 0.07)) * vec3(INDIRECTLIGHT_CLOUDS_R,INDIRECTLIGHT_CLOUDS_G,INDIRECTLIGHT_CLOUDS_B); #endif ///------- do color stuff outside of the raymarcher loop // the idea is to interpolate between 4 HG function calls with different G parameters float backScatterPhase = phaseCloud(-SdotV, 0.25) * 2.0; vec4 phaseLevels = vec4(phaseCloud(SdotV, 0.80), phaseCloud(SdotV, 0.55), phaseCloud(SdotV, 0.35), phaseCloud(SdotV, 0.10)); vec3 sunScattering = directLightCol; vec3 skyScattering = indirectLightCol * (1.0 + pow(1.0-pow(1.0-clamp(sunVector.y,0.0,1.0),5.0),5.0)); bool occlusionCheck = true; ////------- RENDER SMALL CUMULUS CLOUDS vec4 smallCumulusClouds = cloudColor; vec2 cloudLayer0_Distance = vec2(startDistance, 1.0); #ifdef CloudLayer0 smallCumulusClouds = raymarchCloud(SMALLCUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, sunScattering, skyScattering, lViewPosM, sampledSkyCol, cloudLayer0_Distance, backScatterPhase, phaseLevels); #endif ////------- RENDER LARGE CUMULUS CLOUDS vec4 largeCumulusClouds = cloudColor; #ifdef CloudLayer1 cloudheight = CloudLayer1_tallness/CloudLayer1_scale; minHeight = CloudLayer1_height; maxHeight = cloudheight + minHeight; cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-15) - cameraPosition.y ,0.0,1.0))); rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)/samples); rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); vec2 cloudLayer1_Distance = vec2(startDistance, 1.0); occlusionCheck = layerViewIndex < 1 ? smallCumulusClouds.a > 1e-5 : true; if(occlusionCheck) largeCumulusClouds = raymarchCloud(LARGECUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, sunScattering, skyScattering, lViewPosM, sampledSkyCol, cloudLayer1_Distance, backScatterPhase, phaseLevels); #endif ////------- RENDER ALTOSTRATUS CLOUDS vec4 altoStratusClouds = cloudColor; #ifdef CloudLayer2 cloudheight = 5.0; minHeight = CloudLayer2_height; maxHeight = cloudheight + minHeight; cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-15) - cameraPosition.y ,0.0,1.0))); rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)); rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight); vec2 cloudLayer2_Distance = vec2(startDistance, 1.0); occlusionCheck = layerViewIndex < 2 ? (smallCumulusClouds.a > 1e-5 || largeCumulusClouds.a > 1e-5) : true; if(occlusionCheck) altoStratusClouds = raymarchCloud(ALTOSTRATUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, sunScattering, skyScattering, lViewPosM, sampledSkyCol, cloudLayer2_Distance, backScatterPhase, phaseLevels); #endif ////------- BLEND LAYERS // this is for an intersection check for VL fog, so that fog cannot march beyond a cloud. #if defined CloudLayer0 && !defined CloudLayer1 && !defined CloudLayer2 cloudPlaneDistance = cloudLayer0_Distance.x; #endif #if defined CloudLayer0 && defined CloudLayer1 && !defined CloudLayer2 cloudPlaneDistance = mix(cloudLayer0_Distance.x, cloudLayer1_Distance.x, cloudLayer0_Distance.y); #endif #if defined CloudLayer0 && defined CloudLayer1 && defined CloudLayer2 cloudPlaneDistance = mix(cloudLayer2_Distance.x, cloudLayer1_Distance.x, cloudLayer2_Distance.y); cloudPlaneDistance = mix(cloudLayer0_Distance.x, cloudPlaneDistance, cloudLayer0_Distance.y); #endif #if !defined CloudLayer0 && defined CloudLayer1 && defined CloudLayer2 cloudPlaneDistance = mix(cloudLayer2_Distance.x, cloudLayer1_Distance.x, cloudLayer2_Distance.y); #endif #if defined CloudLayer0 && !defined CloudLayer1 && !defined CloudLayer2 cloudPlaneDistance = cloudLayer0_Distance.x; #endif #if defined CloudLayer0 && !defined CloudLayer1 && defined CloudLayer2 cloudPlaneDistance = cloudLayer0_Distance.x; #endif #if !defined CloudLayer0 && defined CloudLayer1 && !defined CloudLayer2 cloudPlaneDistance = cloudLayer1_Distance.x; #endif #if !defined CloudLayer0 && !defined CloudLayer1 && defined CloudLayer2 cloudPlaneDistance = cloudLayer2_Distance.x; #endif vec4 blendedCloudColor = getCorrectBlendOrder(layerViewIndex, smallCumulusClouds, largeCumulusClouds, altoStratusClouds); color = blendedCloudColor.rgb; totalAbsorbance = blendedCloudColor.a; return vec4(color, totalAbsorbance); } #endif ================================================ FILE: shaders/lib/voxel_common.glsl ================================================ #ifdef RENDER_SHADOW layout(r16ui) uniform uimage3D imgVoxelMask; #else layout(r16ui) uniform readonly uimage3D imgVoxelMask; #endif const uint VoxelSize = uint(exp2(LPV_SIZE)); const uvec3 VoxelSize3 = uvec3(VoxelSize); #define BLOCK_EMPTY 0 ================================================ FILE: shaders/lib/voxel_write.glsl ================================================ ivec3 GetVoxelIndex(const in vec3 playerPos) { vec3 cameraOffset = fract(cameraPosition); return ivec3(floor(playerPos + cameraOffset) + VoxelSize3/2u); } void SetVoxelBlock(const in vec3 playerPos, const in uint blockId) { ivec3 voxelPos = GetVoxelIndex(playerPos); if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize-1u)) != voxelPos) return; imageStore(imgVoxelMask, voxelPos, uvec4(blockId)); } void PopulateShadowVoxel(const in vec3 playerPos) { uint voxelId = 0u; vec3 originPos = playerPos; if ( renderStage == MC_RENDER_STAGE_TERRAIN_SOLID || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED ) { voxelId = uint(mc_Entity.x + 0.5); #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE if (voxelId == 0u && at_midBlock.w > 0) voxelId = uint(BLOCK_LIGHT_1 + at_midBlock.w - 1); #endif if (voxelId == 0u) voxelId = 1u; originPos += at_midBlock.xyz/64.0; } #ifdef LPV_ENTITY_LIGHTS if ( ((renderStage == MC_RENDER_STAGE_ENTITIES && (currentRenderedItemId > 0 || entityId > 0)) || renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES) ) { if (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES) { if (blockEntityId > 0 && blockEntityId < 500) voxelId = uint(blockEntityId); } else if (currentRenderedItemId > 0 && currentRenderedItemId < 1200) { if (entityId != ENTITY_ITEM_FRAME && entityId != ENTITY_PLAYER) voxelId = uint(currentRenderedItemId); } else { switch (entityId) { case ENTITY_BLAZE: case ENTITY_END_CRYSTAL: // case ENTITY_FIREBALL_SMALL: case ENTITY_GLOW_SQUID: case ENTITY_MAGMA_CUBE: case ENTITY_SPECTRAL_ARROW: case ENTITY_TNT: voxelId = uint(entityId); break; } } } #endif if (voxelId > 0u) SetVoxelBlock(originPos, voxelId); } ================================================ FILE: shaders/lib/waterBump.glsl ================================================ float waterCaustics(vec3 worldPos, vec3 sunVec) { vec3 projectedPos = worldPos - (sunVec/sunVec.y*worldPos.y); vec2 pos = projectedPos.xz; float movement = frameTimeCounter*0.035 * WATER_WAVE_SPEED; float radiance = 2.39996; mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); vec2 wave_size[3] = vec2[]( vec2(48,12), vec2(12,48), vec2(32,32) ); float largeWaves = texture2D(noisetex, pos / 600.0 ).b; float largeWavesCurved = pow(1.0-pow(1.0-largeWaves,2.5),4.5); float heightSum = 0.0; for (int i = 0; i < 3; i++){ pos = rotationMatrix * pos; heightSum += pow(abs(abs(texture2D(noisetex, pos / wave_size[i] + largeWavesCurved * 0.5 + movement).b * 2.0 - 1.0) * 2.0 - 1.0), 1.0+largeWavesCurved); } return exp((1.0 + 5.0 * sqrt(largeWavesCurved)) * (heightSum / 3.0 - 0.5)); } float getWaterHeightmap(vec2 posxz, in float largeWaves, in float largeWavesCurved) { vec2 pos = posxz; float movement = frameTimeCounter * 0.035 * WATER_WAVE_SPEED; float radiance = 2.39996; mat2 rotationMatrix = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance))); vec2 wave_size[3] = vec2[]( vec2(48.,12.), vec2(12.,48.), vec2(32.,32.) ); float heightSum = 0.0; for (int i = 0; i < 3; i++){ pos = rotationMatrix * pos; heightSum += texture2D(noisetex, pos / wave_size[i] + largeWavesCurved * 0.5 + movement).b; } return (heightSum/4.5) * mix(0.3, 1.0, largeWavesCurved); } vec3 getWaveNormal(vec3 waterPos, vec3 playerpos, bool isLOD){ float largeWaves = texture2D(noisetex, waterPos.xy / 600.0).b; float largeWavesCurved = pow(1.0-pow(1.0-largeWaves,2.0),2.5); #ifdef HYPER_DETAILED_WAVES float deltaPos = 0.025; #else float deltaPos = mix(1.0, 0.15, largeWavesCurved); // reduce high frequency detail as distance increases. reduces noise on waves. why have more details than pixels? float range = min(length(playerpos) / (16.0 * 24.0), 3.0); deltaPos += range; #endif vec2 coord = waterPos.xy; float h0 = getWaterHeightmap(coord, largeWaves, largeWavesCurved); float h1 = getWaterHeightmap(coord + vec2(deltaPos,0.0), largeWaves,largeWavesCurved); float h3 = getWaterHeightmap(coord + vec2(0.0,deltaPos), largeWaves,largeWavesCurved); float xDelta = (h1-h0)/deltaPos; float yDelta = (h3-h0)/deltaPos; vec3 wave = normalize(vec3(xDelta, yDelta, 1.0-pow(abs(xDelta+yDelta),2.0))); return wave; } ================================================ FILE: shaders/shaders.properties ================================================ sliders = CloudLayer2_scale 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 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 WATER_CAUSTICS_STRENGTH WATER_DISTORTION_AMOUNT DEBUG_VIEW 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 SNOWY_UNIFORM_DENSITY SNOWY_CLOUDY_DENSITY SNOWY_R SNOWY_G SNOWY_B DRY_UNIFORM_DENSITY DRY_CLOUDY_DENSITY DRY_R DRY_G DRY_B NETHER_PLUME_DENSITY NETHER_PLUME_R NETHER_PLUME_G NETHER_PLUME_B END_STORM_DENSITY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE SCALE_FACTOR ambientsss_brightness SSS_TYPE Cloud_Speed 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 indirect_RTGI 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_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 BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB SATURATION CROSSTALK 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 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 VL_RENDER_RESOLUTION RAY_COUNT RT_ITERATION ROUGHNESS_THRESHOLD SUN_SPECULAR_MULT DOF_QUALITY DOF_ANAMORPHIC_RATIO DOF_DISPERSION_MULT AEROCHROME_PINKNESS 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 LPV_SHADOWS_LIGHT_MULT LPV_SHADOWS_LIGHT_COUNT LPV_BLOCKLIGHT_SCALE END_VORTEX_R END_VORTEX_G END_VORTEX_B END_FOG_R END_FOG_G END_FOG_B END_LIGHTNING_R END_LIGHTNING_G END_LIGHTNING_B STAR_DENSITY STAR_MOVEMENT_MULT RAIN_VISIBILITY EMISSIVE_ORE_RANGE EMISSIVE_ORE_R EMISSIVE_ORE_G EMISSIVE_ORE_B AURORA_BRIGHTNESS AURORA_SPEED AURORA_UPPER_R AURORA_UPPER_G AURORA_UPPER_B AURORA_LOWER_R AURORA_LOWER_G AURORA_LOWER_B AUR_ENV_OFFSET ERODE_AMOUNT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START LENS_FLARE_STRENGTH MATERIAL_NORMAL_STRENGTH RAINBOW_STRENGTH RAINBOW_WIDTH RAINBOW_DISTANCE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DISTORT_EFFECT_AMOUNT SHOOTING_STARS_SPEED SHOOTING_STARS_FREQUENCY SHOOTING_STARS_TRAIL_VISIBILITY SHOOTING_STARS_TRAIL_LENGTH SHOOTING_STARS_TRAIL_WIDTH FISHEYE_STRENGTH RAINFOG_R RAINFOG_G RAINFOG_B sunPathRotation LIGHTLEAKFIX_MODE AGX_LOOK BLEND_FACTOR_DURING_MOVEMENT FORWARD_SSR_QUALITY DEFERRED_SSR_QUALITY FAKE_DISPERSION_AMOUNT FAKE_REFRACTION_AMOUNT REFRACTION_SMUDGE_AMOUNT profile.veryLow = CLOUDS_QUALITY=0.5 DEFERRED_ROUGH_REFLECTION=false DEFERRED_SPECULAR=false GROUND_RIPPLES=false LPV_COLORED_CANDLES=false LPV_ENABLED=false LPV_VL_FOG_ILLUMINATION=false MISC_BLOCK_SSS=false MOB_SSS=false TRANSLUCENT_COLORED_SHADOWS=false indirect_effect=2 indirect_RTGI=0 RAY_COUNT=4 shadowMapResolution=1024 WATER_RIPPLES=false profile.Low = CLOUDS_QUALITY=0.5 DEFERRED_ROUGH_REFLECTION=false DEFERRED_SPECULAR=true GROUND_RIPPLES=false LPV_COLORED_CANDLES=true LPV_COLOR_SHADOWS=false LPV_ENABLED=true LPV_VL_FOG_ILLUMINATION=true MISC_BLOCK_SSS=true MOB_SSS=true TRANSLUCENT_COLORED_SHADOWS=true indirect_effect=1 indirect_RTGI=0 RAY_COUNT=4 shadowMapResolution=1024 WATER_RIPPLES=false profile.Medium = CLOUDS_QUALITY=0.5 DEFERRED_ROUGH_REFLECTION=false DEFERRED_SPECULAR=true GROUND_RIPPLES=true LPV_COLORED_CANDLES=true LPV_ENABLED=true LPV_VL_FOG_ILLUMINATION=true MISC_BLOCK_SSS=true MOB_SSS=true TRANSLUCENT_COLORED_SHADOWS=true indirect_effect=3 indirect_RTGI=0 RAY_COUNT=4 shadowMapResolution=1024 WATER_RIPPLES=true profile.High = CLOUDS_QUALITY=0.5 DEFERRED_ROUGH_REFLECTION=true DEFERRED_SPECULAR=true GROUND_RIPPLES=true LPV_COLORED_CANDLES=true LPV_ENABLED=true LPV_VL_FOG_ILLUMINATION=true MISC_BLOCK_SSS=true MOB_SSS=true TRANSLUCENT_COLORED_SHADOWS=true indirect_effect=3 indirect_RTGI=1 RAY_COUNT=8 shadowMapResolution=2048 WATER_RIPPLES=true profile.veryHigh = CLOUDS_QUALITY=1.0 DEFERRED_ROUGH_REFLECTION=true DEFERRED_SPECULAR=true GROUND_RIPPLES=true LPV_COLORED_CANDLES=true LPV_ENABLED=true LPV_VL_FOG_ILLUMINATION=true MISC_BLOCK_SSS=true MOB_SSS=true TRANSLUCENT_COLORED_SHADOWS=true indirect_effect=3 indirect_RTGI=2 RAY_COUNT=16 shadowMapResolution=4096 WATER_RIPPLES=true screen.columns=2 screen = \ SHADER_VERSION_LABEL \ \ [World] [Ambient_Light_Shadow] \ [Water] [Resource_Pack_Support] \ [Clouds] [Post_Processing] \ [Fog] [Effects] \ \ [Misc_Settings] [Mod_support] ###### WORLD screen.World.columns=1 screen.World = [Sky] [Weather] [Biome] [Seasons] [Waving_Stuff] SKY_GROUND PLANET_CURVATURE CURVATURE_AMOUNT screen.Sky.columns = 2 screen.Sky = \ [Sky_coefficients] [Sun_and_Moon] \ [Aurora] [Stars_and_Shooting_Stars] \ [Rainbow] screen.Sky_coefficients.columns=1 screen.Sky_coefficients = Sky_Brightness sky_coefficientRayleighR sky_coefficientRayleighG sky_coefficientRayleighB sky_coefficientMieR sky_coefficientMieG sky_coefficientMieB screen.Sun_and_Moon.columns = 2 screen.Sun_and_Moon = \ colortype \ sunColorR moonColorR \ sunColorG moonColorG \ sunColorB moonColorB \ \ Sun_temp Moon_temp \ sun_illuminance moon_illuminance \ sunPathRotation MOONPHASE_BASED_MOONLIGHT screen.Aurora.columns = 2 screen.Aurora = \ AURORA_BRIGHTNESS AURORA_SPEED \ AURORA_SNOWY AUR_ENV_OFFSET \ AURORA_UPPER_R AURORA_LOWER_R \ AURORA_UPPER_G AURORA_LOWER_G \ AURORA_UPPER_B AURORA_LOWER_B screen.Stars_and_Shooting_Stars.columns = 2 screen.Stars_and_Shooting_Stars = \ STAR_DENSITY STAR_MOVEMENT_MULT \ \ SHOOTING_STARS SHOOTING_STARS_SPEED \ SHOOTING_STARS_FREQUENCY SHOOTING_STARS_TRAIL_VISIBILITY \ SHOOTING_STARS_TRAIL_LENGTH SHOOTING_STARS_TRAIL_WIDTH screen.Rainbow.columns = 1 screen.Rainbow = RAINBOW RAINBOW_STRENGTH RAINBOW_WIDTH RAINBOW_DISTANCE screen.Weather.columns = 1 screen.Weather = RAIN_VISIBILITY Rain_coverage [Rain_Fog] WATER_RIPPLES GROUND_RIPPLES [DAILY_WEATHER] screen.Rain_Fog.columns = 1 screen.Rain_Fog = RainFog_amount RAINFOG_R RAINFOG_G RAINFOG_B screen.DAILY_WEATHER.columns = 2 screen.DAILY_WEATHER = \ Daily_Weather CHOOSE_RANDOM_WEATHER_PROFILE \ [DAY0_WEATHER] [DAY5_WEATHER] \ [DAY1_WEATHER] [DAY6_WEATHER] \ [DAY2_WEATHER] [DAY7_WEATHER] \ [DAY3_WEATHER] [DAY8_WEATHER] \ [DAY4_WEATHER] [DAY9_WEATHER] screen.DAY0_WEATHER.columns = 2 screen.DAY0_WEATHER = DAY0_l0_coverage DAY0_l0_density DAY0_l1_coverage DAY0_l1_density DAY0_l2_coverage DAY0_l2_density DAY0_ufog_density DAY0_cfog_density screen.DAY1_WEATHER.columns = 2 screen.DAY1_WEATHER = DAY1_l0_coverage DAY1_l0_density DAY1_l1_coverage DAY1_l1_density DAY1_l2_coverage DAY1_l2_density DAY1_ufog_density DAY1_cfog_density screen.DAY2_WEATHER.columns = 2 screen.DAY2_WEATHER = DAY2_l0_coverage DAY2_l0_density DAY2_l1_coverage DAY2_l1_density DAY2_l2_coverage DAY2_l2_density DAY2_ufog_density DAY2_cfog_density screen.DAY3_WEATHER.columns = 2 screen.DAY3_WEATHER = DAY3_l0_coverage DAY3_l0_density DAY3_l1_coverage DAY3_l1_density DAY3_l2_coverage DAY3_l2_density DAY3_ufog_density DAY3_cfog_density screen.DAY4_WEATHER.columns = 2 screen.DAY4_WEATHER = DAY4_l0_coverage DAY4_l0_density DAY4_l1_coverage DAY4_l1_density DAY4_l2_coverage DAY4_l2_density DAY4_ufog_density DAY4_cfog_density screen.DAY5_WEATHER.columns = 2 screen.DAY5_WEATHER = DAY5_l0_coverage DAY5_l0_density DAY5_l1_coverage DAY5_l1_density DAY5_l2_coverage DAY5_l2_density DAY5_ufog_density DAY5_cfog_density screen.DAY6_WEATHER.columns = 2 screen.DAY6_WEATHER = DAY6_l0_coverage DAY6_l0_density DAY6_l1_coverage DAY6_l1_density DAY6_l2_coverage DAY6_l2_density DAY6_ufog_density DAY6_cfog_density screen.DAY7_WEATHER.columns = 2 screen.DAY7_WEATHER = DAY7_l0_coverage DAY7_l0_density DAY7_l1_coverage DAY7_l1_density DAY7_l2_coverage DAY7_l2_density DAY7_ufog_density DAY7_cfog_density screen.DAY8_WEATHER.columns = 2 screen.DAY8_WEATHER = DAY8_l0_coverage DAY8_l0_density DAY8_l1_coverage DAY8_l1_density DAY8_l2_coverage DAY8_l2_density DAY8_ufog_density DAY8_cfog_density screen.DAY9_WEATHER.columns = 2 screen.DAY9_WEATHER = DAY9_l0_coverage DAY9_l0_density DAY9_l1_coverage DAY9_l1_density DAY9_l2_coverage DAY9_l2_density DAY9_ufog_density DAY9_cfog_density screen.Biome.columns = 1 screen.Biome = BIOME_TINT_WATER PER_BIOME_ENVIRONMENT [SWAMP] [JUNGLE] [DARKFOREST] [SNOWY] [DRY] screen.SWAMP.columns = 1 screen.SWAMP = SWAMP_ENV SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B screen.JUNGLE.columns = 1 screen.JUNGLE = JUNGLE_ENV JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B screen.DARKFOREST.columns = 1 screen.DARKFOREST = DARKFOREST_ENV DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B screen.SNOWY.columns = 1 screen.SNOWY = SNOWY_ENV SNOWY_UNIFORM_DENSITY SNOWY_CLOUDY_DENSITY SNOWY_R SNOWY_G SNOWY_B screen.DRY.columns = 1 screen.DRY = DRY_ENV DRY_UNIFORM_DENSITY DRY_CLOUDY_DENSITY DRY_R DRY_G DRY_B screen.Seasons.columns = 1 screen.Seasons = Seasons Season_Length Start_Season [Summer_colors] [Fall_colors] [Winter_colors] [Spring_colors] screen.Summer_colors.columns = 1 screen.Summer_colors = Summer_R Summer_G Summer_B Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B screen.Fall_colors.columns = 1 screen.Fall_colors = Fall_R Fall_G Fall_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B screen.Winter_colors.columns = 1 screen.Winter_colors = Winter_R Winter_G Winter_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B screen.Spring_colors.columns = 1 screen.Spring_colors = Spring_R Spring_G Spring_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B screen.Waving_Stuff.columns = 1 screen.Waving_Stuff = WAVY_PLANTS RP_MODEL_FIX WAVY_STRENGTH WAVY_SPEED ###### AMBIENT LIGHT & SHADOW screen.Ambient_Light_Shadow.columns = 2 screen.Ambient_Light_Shadow = \ [Torch_Settings] [HAND_HELD_LIGHT] \ [Ambient_Colors] [Shadows] \ \ LPV_ENABLED [LPV] \ LPV_SHADOWS [BLOCK_SHADOWS] \ \ indirect_effect [AO] \ indirect_RTGI [GI] screen.HAND_HELD_LIGHT.columns = 2 screen.HAND_HELD_LIGHT = \ Hand_Held_lights HANDHELD_LIGHT_RANGE \ FLASHLIGHT [FLASHLIGHT_SETTING] screen.FLASHLIGHT_SETTING.columns = 2 screen.FLASHLIGHT_SETTING = \ FLASHLIGHT_RANGE FLASHLIGHT_R \ FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_G \ FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_B \ FLASHLIGHT_SPECULAR FLASHLIGHT_BOUNCED_INDIRECT \ FLASHLIGHT_SIZE FLASHLIGHT_FOG_ILLUMINATION screen.LPV.columns = 2 screen.LPV = LPV_SIZE LPV_BLOCKLIGHT_SCALE \ LPV_SATURATION LPV_COLORED_CANDLES \ LPV_TINT_SATURATION LPV_REDSTONE_LIGHTS \ LPV_NORMAL_STRENGTH LPV_ENTITY_LIGHTS \ LPV_VL_FOG_ILLUMINATION LPV_NOSHADOW_HACK \ LPV_VL_FOG_ILLUMINATION_BRIGHTNESS VANILLA_LIGHTMAP_MASK screen.BLOCK_SHADOWS.columns = 1 screen.BLOCK_SHADOWS = LPV_SHADOWS_LIGHT_COUNT LPV_SHADOWS_LIGHT_MULT LPV_COLOR_SHADOWS LPV_HAND_SHADOWS screen.Torch_Settings.columns=1 screen.Torch_Settings = TORCH_AMOUNT Emissive_Brightness Emissive_Curve TORCH_R TORCH_G TORCH_B screen.Ambient_Colors.columns=1 screen.Ambient_Colors = ambient_brightness MIN_LIGHT_AMOUNT AmbientLight_R AmbientLight_G AmbientLight_B screen.Shadows.columns=1 screen.Shadows = shadowMapResolution shadowDistance [Filtering] TRANSLUCENT_COLORED_SHADOWS SCREENSPACE_CONTACT_SHADOWS RENDER_ENTITY_SHADOWS RENDER_PLAYER_SHADOWS screen.Filtering.columns=1 screen.Filtering = BASIC_SHADOW_FILTER SHADOW_FILTER_SAMPLE_COUNT Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Variable_Penumbra_Shadows VPS_Search_Samples Max_Filter_Depth screen.AO.columns = 1 screen.AO = AO_Strength AO_in_sunlight screen.GI.columns = 1 screen.GI = RAY_COUNT RT_ITERATION GI_Strength UseQuarterResDepth ###### RESOURCE PACK SUPPORT screen.Resource_Pack_Support.columns = 1 screen.Resource_Pack_Support = [Reflections] [Emissives] [Subsurface_Scattering] [POM] [Porosity] MATERIAL_AO MATERIAL_NORMAL_STRENGTH RESOURCEPACK_SKY screen.Reflections.columns=2 screen.Reflections = \ DEFERRED_SPECULAR FORWARD_SPECULAR \ DEFERRED_SSR_QUALITY FORWARD_SSR_QUALITY \ DEFERRED_BACKGROUND_REFLECTION FORWARD_BACKGROUND_REFLECTION \ DEFERRED_ROUGH_REFLECTION FORWARD_ROUGH_REFLECTION \ WATER_SUN_SPECULAR SUN_SPECULAR_MULT \ ROUGHNESS_THRESHOLD MATERIAL_WETNESS_TYPE 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 SCREENSPACE_DIRECT_SSS_BLENDING screen.Emissives.columns = 1 screen.Emissives = EMISSIVE_TYPE Emissive_Brightness Emissive_Curve screen.POM.columns=1 screen.POM = POM Adaptive_Step_length MAX_ITERATIONS POM_DEPTH MAX_DIST screen.Porosity.columns = 1 screen.Porosity = Porosity Puddles Puddle_Size ###### WATER screen.Water.columns=2 screen.Water = rayMarchSampleCount [Water_fog_color] \ FAKE_DISPERSION_AMOUNT Dirt_Amount \ FAKE_REFRACTION_AMOUNT MINIMUM_WATER_ABSORBANCE \ REFRACTION_SMUDGE_AMOUNT SNELLS_WINDOW \ WATER_CAUSTICS_BRIGHTNESS WATER_WAVE_STRENGTH \ WATER_CAUSTICS_STRENGTH WATER_WAVE_SPEED \ WATER_DISTORTION_AMOUNT LARGE_WAVE_DISPLACEMENT \ HYPER_DETAILED_WAVES 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 ###### CLOUDS screen.Clouds.columns = 2 screen.Clouds = \ VOLUMETRIC_CLOUDS CLOUDS_SHADOWS \ CLOUDS_QUALITY CLOUD_SHADOW_STRENGTH \ HQ_CLOUDS ERODE_AMOUNT \ Cloud_Speed \ CloudLayer0 [S_Cumulus_Cloud] \ CloudLayer1 [L_Cumulus_Cloud] \ CloudLayer2 [Altostratus_Cloud] screen.S_Cumulus_Cloud.columns = 1 screen.S_Cumulus_Cloud = CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer0_tallness CloudLayer0_scale screen.L_Cumulus_Cloud.columns = 1 screen.L_Cumulus_Cloud = CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer1_tallness CloudLayer1_scale screen.Altostratus_Cloud.columns = 1 screen.Altostratus_Cloud = CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer2_scale ###### FOG screen.Fog.columns = 2 screen.Fog = \ VL_RENDER_RESOLUTION Haze_amount \ VL_SAMPLES BLOOMY_FOG \ FOG_START_HEIGHT BorderFog \ [Fog_Color] [TOD_fog] \ [Nether_Fog] [End_Fog] \ [Cave_Fog] screen.TOD_fog.columns = 2 screen.TOD_fog = TOD_Fog_mult Morning_Uniform_Fog Morning_Cloudy_Fog Noon_Uniform_Fog Noon_Cloudy_Fog Evening_Uniform_Fog Evening_Cloudy_Fog Night_Uniform_Fog Night_Cloudy_Fog screen.Cave_Fog.columns = 1 screen.Cave_Fog = CAVE_FOG CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B screen.Fog_Color.columns = 1 screen.Fog_Color = fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB screen.Nether_Fog.columns = 1 screen.Nether_Fog = NETHER_PLUME_DENSITY NETHER_PLUME_R NETHER_PLUME_G NETHER_PLUME_B screen.End_Fog.columns = 1 screen.End_Fog = END_STORM_DENSITY END_FOG_R END_FOG_G END_FOG_B END_VORTEX_R END_VORTEX_G END_VORTEX_B END_LIGHTNING_R END_LIGHTNING_G END_LIGHTNING_B ###### POST screen.Post_Processing.columns = 2 screen.Post_Processing = \ [TAA_OPTIONS] [COLOR] \ [Exposure] [Purkinje_effect] \ [DepthOfField] 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 RESPONSIVE_TAA BLEND_FACTOR BLEND_FACTOR_DURING_MOVEMENT TAA_UPSCALING SCALE_FACTOR ### EXPOSURE screen.Exposure.columns = 1 screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value EXPOSURE_DARKENING EXPOSURE_BRIGHTENING ### COLOR screen.COLOR.columns = 2 screen.COLOR = \ TONEMAP AGX_LOOK \ SATURATION CROSSTALK \ \ COLOR_GRADING_ENABLED [COLOR_GRADING] \ LUMINANCE_CURVE USE_ACES_COLORSPACE_APPROXIMATION \ LOWER_CURVE UPPER_CURVE screen.COLOR_GRADING.columns = 2 screen.COLOR_GRADING = \ SHADOWS_GRADE_R SHADOWS_GRADE_B \ SHADOWS_GRADE_G SHADOWS_GRADE_MUL \ \ MIDS_GRADE_R MIDS_GRADE_B \ MIDS_GRADE_G MIDS_GRADE_MUL \ \ HIGHLIGHTS_GRADE_R HIGHLIGHTS_GRADE_B \ HIGHLIGHTS_GRADE_G HIGHLIGHTS_GRADE_MUL \ ### DOF screen.DepthOfField.columns = 1 screen.DepthOfField = DOF_QUALITY DOF_ANAMORPHIC_RATIO DOF_DISPERSION_MULT focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY REMOVE_HAND_BLUR [JITTER_DOF] screen.JITTER_DOF.columns=1 screen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR ### PURKINJE screen.Purkinje_effect.columns = 1 screen.Purkinje_effect = Purkinje_strength Purkinje_Multiplier Purkinje_R Purkinje_G Purkinje_B ###### EFFECTS screen.Effects.columns = 1 screen.Effects = [Emissive_Ore] [GAMEPLAY_EFFECTS] [LENS_EFFECTS] [Aerochrome_Mode] FANCY_END_PORTAL screen.Emissive_Ore.columns=1 screen.Emissive_Ore = EMISSIVE_ORE EMISSIVE_ORE_RANGE EMISSIVE_ORE_R EMISSIVE_ORE_G EMISSIVE_ORE_B ### GAMEPLAY EFFECTS screen.GAMEPLAY_EFFECTS.columns = 1 screen.GAMEPLAY_EFFECTS = MOTION_AMOUNT DAMAGE_TAKEN_EFFECT LOW_HEALTH_EFFECT LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START screen.LENS_EFFECTS.columns = 2 screen.LENS_EFFECTS = \ DISTORT_EFFECT_AMOUNT \ WATER_ON_CAMERA_EFFECT ON_FIRE_DISTORT_EFFECT \ \ RAIN_ON_CAMERA_EFFECT \ LENS_FLARE LENS_FLARE_STRENGTH \ FISHEYE_EFFECT FISHEYE_STRENGTH \ screen.Aerochrome_Mode.columns=1 screen.Aerochrome_Mode = AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED ###### MOD SUPPORT SETTINGS screen.Mod_support = [DISTANT_HORIZONS_SETTINGS] [PHYSICS_MOD_OCEAN_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_TAA_JITTER DH_NOISE_TEXTURE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution TOGGLE_VL_FOG ###### MISC SETTINGS screen.Misc_Settings.columns = 1 screen.Misc_Settings = [DEBUG] [selection_box_outline] [EXPERIMENTAL_STUFF] [SCENE_CONTROLLER] ISOLATE_RESOURCEPACK_SKY screen.DEBUG.columns = 1 screen.DEBUG = DEBUG_VIEW display_LUT WhiteWorld SSS_view ambientLight_only DISABLE_VANILLA_EMISSIVES screen.selection_box_outline.columns = 1 screen.selection_box_outline = SELECT_BOX SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B screen.EXPERIMENTAL_STUFF.columns = 2 screen.EXPERIMENTAL_STUFF = \ CLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES \ LIT_PARTICLE_BRIGHTNESS DISABLE_ENCHANT_GLINT \ OLD_BLOOM PLANET_GROUND_BRIGHTNESS \ OLD_INDIRECT_SSS TRANSLUCENT_ENTITIES \ OLD_CAVE_DETECTION PARTICLE_RENDERING_FIX \ LIGHTLEAKFIX_MODE LIGHTING_EFFECTS_BLUR_FILTER \ FORCE_TRANSLUCENT_GLASS LIGHTNING_FLASH \ Texture_MipMap_Bias screen.SCENE_CONTROLLER.columns = 2 screen.SCENE_CONTROLLER = \ USE_CUSTOM_DIFFUSE_LIGHTING_COLORS [DIFFUSE_LIGHTING_COLORS] \ USE_CUSTOM_CLOUD_LIGHTING_COLORS [CLOUD_LIGHTING_COLORS] \ USE_CUSTOM_FOG_LIGHTING_COLORS [FOG_LIGHTING_COLORS] \ USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS [SKY_GROUND_LIGHTING_COLORS] screen.DIFFUSE_LIGHTING_COLORS.columns = 1 screen.DIFFUSE_LIGHTING_COLORS = DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B screen.CLOUD_LIGHTING_COLORS.columns = 1 screen.CLOUD_LIGHTING_COLORS = DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B screen.FOG_LIGHTING_COLORS.columns = 1 screen.FOG_LIGHTING_COLORS = DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B screen.SKY_GROUND_LIGHTING_COLORS.columns = 1 screen.SKY_GROUND_LIGHTING_COLORS = SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B ################################### ####### SHADER PREPARE STUFF ####### ################################### clouds=off stars=false vignette=false underwaterOverlay=false dynamicHandLight=true oldLighting=false separateAo=true rain.depth=false beacon.beam.depth=true iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES BLOCK_EMISSION_ATTRIBUTE #if RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3 sun=true moon=true #else sun=false moon=false #endif #if RESOURCEPACK_SKY != 0 particles.before.deferred=false particles.ordering=after #endif #ifdef LPV_ENABLED shadow.enabled = true shadow.culling = reversed voxelizeLightBlocks = true #endif #ifndef RENDER_ENTITY_SHADOWS shadowBlockEntities = false shadowEntities = false #ifdef RENDER_PLAYER_SHADOWS shadowPlayer = true #endif #endif #if defined TRANSLUCENT_ENTITIES && defined IS_IRIS separateEntityDraws = true #else separateEntityDraws = false #endif program.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS program.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS program.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS program.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS program.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS #if defined DISTANT_HORIZONS && defined IS_IRIS #ifdef DISTANT_HORIZONS_SHADOWMAP dhShadow.enabled = true #else dhShadow.enabled = false #endif program.world0/dh_terrain.enabled = true program.world0/dh_water.enabled = true program.world1/dh_terrain.enabled = true program.world1/dh_water.enabled = true program.world-1/dh_terrain.enabled = true program.world-1/dh_water.enabled = true blend.dh_terrain = off blend.dh_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE #else dhShadow.enabled = false program.world0/dh_terrain.enabled = false program.world0/dh_water.enabled = false program.world1/dh_terrain.enabled = false program.world1/dh_water.enabled = false program.world-1/dh_terrain.enabled = false program.world-1/dh_water.enabled = false #endif #ifdef CLOUDS_INTERSECT_TERRAIN program.world0/deferred2.enabled = false program.world0/deferred2.enabled = false program.world1/deferred2.enabled = false program.world1/deferred2.enabled = false program.world-1/deferred2.enabled = false program.world-1/deferred2.enabled = false #endif program.world0/composite11.enabled = false program.world1/composite11.enabled = false program.world-1/composite11.enabled = false program.world0/composite5.enabled = TAA_UPSCALING program.world1/composite5.enabled = TAA_UPSCALING program.world-1/composite5.enabled = TAA_UPSCALING #if RESOURCEPACK_SKY == 0 program.world0/deferred2.enabled = false program.world1/deferred2.enabled = false program.world-1/deferred2.enabled = false #endif # SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE ZERO # SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE # Get the correct alpha value : S_A*(1-DST_A)+DST_A # terrible blending for shadows on purpose blend.gbuffers_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_armor_glint = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_hand_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_textured = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_textured_lit = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_basic = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_weather = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_block_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_beaconbeam = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE 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 = SRC_ALPHA ONE ONE ONE blend.shadow = ONE ZERO ONE ZERO # Disable blending blend.gbuffers_terrain = off blend.gbuffers_hand = off blend.gbuffers_block = off blend.gbuffers_entities = off blend.gbuffers_damagedblock = off # this is important for refraction and glass tint to work correctly blend.gbuffers_water.colortex11 = off blend.gbuffers_hand_water.colortex11 = off blend.gbuffers_basic.colortex11 = off blend.gbuffers_entities_translucent.colortex11 = off # blend.colortex4 = off blend.composite.colortex5 = off blend.composite.colortex12 = off blend.composite.colortex13 = off blend.composite.colortex14 = off # Alpha test alphaTest.gbuffers_terrain = GREATER 0.1 alphaTest.gbuffers_hand = GREATER 0.1 alphaTest.gbuffers_weather = false alphaTest.gbuffers_water = false alphaTest.gbuffers_skybasic = false alphaTest.gbuffers_skytextured = false ##################################### ####### TIME RELATED STUFF ####### ##################################### variable.float.Time = worldTime%24000 uniform.float.Morning = clamp((Time - 21000.0) / 1000.0, 0.0, 1.0) + clamp((2000.0 - Time) / 1000.0, 0.0, 1.0) uniform.float.Noon = clamp((Time - 1000.0) / 2000.0, 0.0, 1.0) - clamp((Time - 12000.0) / 2000.0, 0.0, 1.0) uniform.float.Evening = clamp((Time - 11000.0) / 1000.0, 0.0, 1.0) - clamp((Time -14000.0) / 1000.0, 0.0, 1.0) uniform.float.Night = clamp((Time - 13000.0) / 2000.0, 0.0, 1.0) - clamp((Time -22000.0) / 2000.0, 0.0, 1.0) variable.float.Year = mod(worldDay + Start_Season * Season_Length, Season_Length * 4.0) uniform.float.Summer = clamp(Year / Season_Length, 0.0, 1.0) uniform.float.Autumn = clamp(Year / Season - 1.0, 0.0, 1.0) uniform.float.Winter = clamp(Year / Season - 2.0, 0.0, 1.0) uniform.float.Spring = clamp(Year / Season - 3.0, 0.0, 1.0) ##################################### ####### WEATHER RELATED STUFF ####### ##################################### # thank you sixthsurge! #ifdef LIGHTNING_FLASH #ifdef IS_IRIS variable.float.lightningFlash = smooth(if(lightningBoltPosition.w > 0.0, 1.0, 0.0), 0.0, 0.0) #else variable.float.lightningFlash = smooth(if(equals(skyColor.r, skyColor.g, 0.01) && skyColor.r > 0.3, 1.0, 0.0), 0.0, 0.0) #endif #else variable.float.lightningFlash = 0.0 #endif uniform.vec3.lightningEffect = vec3(77.0 * lightningFlash, 153.0 * lightningFlash, 255.0 * lightningFlash) ################################### ####### BIOME RELATED STUFF ####### ################################### #ifdef SWAMP_ENV uniform.float.smoothSwamp = smooth(if(biome_category == CAT_SWAMP, 1.0, 0.0), 30, 30) #else uniform.float.smoothSwamp = 0.0 #endif #ifdef JUNGLE_ENV uniform.float.smoothJungle = smooth(if(biome_category == CAT_JUNGLE, 1.0, 0.0), 30, 30) #else uniform.float.smoothJungle = 0.0 #endif #ifdef DARKFOREST_ENV uniform.float.smoothDarkForest = smooth(if(in(biome, 11, 53), 1,0), 30, 30) #else uniform.float.smoothDarkForest = 0.0 #endif #ifdef SNOWY_ENV uniform.float.smoothBiome_Snowy = smooth(if(biome_precipitation == PPT_SNOW, 1.0, 0.0), 30, 30) uniform.float.snowStorm = smooth(if(biome_precipitation == PPT_SNOW, rainStrength, 0.0), 15,30) #else uniform.float.smoothBiome_Snowy = 0.0 uniform.float.snowStorm = 0.0 #endif #ifdef DRY_ENV uniform.float.smoothBiome_Dry = smooth(if(biome_precipitation == PPT_NONE, 1.0, 0.0), 30, 30) #ifdef IS_IRIS uniform.float.sandStorm = smooth(if(biome_category == CAT_DESERT, thunderStrength, 0.0), 15, 30) uniform.float.sandStorm_red = smooth(if(biome_category == CAT_MESA, thunderStrength, 0.0), 15, 30) #else uniform.float.sandStorm = smooth(if(biome_category == CAT_DESERT, rainStrength, 0.0), 15, 30) uniform.float.sandStorm_red = smooth(if(biome_category == CAT_MESA, rainStrength, 0.0), 15, 30) #endif #else uniform.float.smoothBiome_Dry = 0.0 uniform.float.sandStorm = 0.0 uniform.float.sandStorm_red = 0.0 #endif uniform.float.rainyAreas = smooth(if(biome_precipitation == PPT_RAIN, 1.0, 0.0), 30, 30) ############################ ####### 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 #ifdef WATER_ON_CAMERA_EFFECT uniform.float.exitWater = smooth(if(isEyeInWater == 1,1,0),0.0,5.0) uniform.float.enterWater = smooth(if(isEyeInWater == 1,1,0),1.5,0.0) #endif #ifdef ON_FIRE_DISTORT_EFFECT uniform.float.onFire = smooth(if(isEyeInWater == 2 || is_burning,1,0),0.5,3.0) #endif #if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT #ifdef IS_IRIS variable.float.Currenthealth = currentPlayerHealth * maxPlayerHealth uniform.float.oneHeart = smooth(if(Currenthealth <= CRITICALLY_LOW_HEALTH_EFFECT_START && currentPlayerHealth > -1.0, 1,0), 0.0,1.0) uniform.float.threeHeart = smooth(if(Currenthealth <= max(LOW_HEALTH_EFFECT_START,CRITICALLY_LOW_HEALTH_EFFECT_START) && 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 uniform.float.CriticalDamageTaken = smooth(if(delayedCritDamage && currentPlayerHealth > -1.0, 1.0, 0.0), 0.5, 3.0) # detect over 2 hearts of damage taken variable.bool.smallHealthDifference = (interpolatedHealth - Currenthealth) >= 3.0 uniform.float.MinorDamageTaken = smooth(if(smallHealthDifference && currentPlayerHealth > -1.0, 5.0, 0.0), 0.5, 1.0) #else uniform.bool.isDead = !is_alive #endif #endif #ifdef OLD_CAVE_DETECTION variable.bool.inTheDarkTimer = smooth(if(eyeBrightness.y < 0.01, 1.0, 0.0), 10.0, 0.0) > 0.99 uniform.float.caveDetection = smooth(if(inTheDarkTimer, 1.0, 0.0), 3.0, 1.0) #else # the idea is to modulate the mood value between 0 - 1 # then check if the modulated value is non-zero. when it goes back to zero, it will have a very slowly deteriorating value. # that value immediately regenerates when it modulates to 1 again. this way, i can check if the mood is climbing by checking if the smoothed value is above zero. # doing this is just for readablity, not required. variable.float.playerMoodPercent = playerMood*100.0 + 1.0 # modulo 0 - 1 variable.float.modMood = playerMoodPercent - floor(playerMoodPercent) # check if mood is increasing. # and only activate when mood is above the threshold (5% mood) # make sure it degenerates slow enough that mood can reach 5% after the mood flips to 0% from 100% variable.bool.moodIsClimbing = smooth(if(modMood > 0.50 && playerMoodPercent > 4.0, 1.0, eyeBrightness.x/240.0), 0.0, 10.0) > 0.1 # add one more check to turn it off when lightlevels are not zero uniform.float.caveDetection = smooth(if(moodIsClimbing && eyeBrightness.y < 0.01, 1.0, 0.0), 3.0, 1.0) #endif uniform.float.wetnessAmount = smooth(if(wetness > 0.01, 3.0, 0.0), 100.0, 100.0) * rainyAreas # the idea is to record the altitude at which you entered a body of water. # using the smooth() function to interpolate to the newest value of eyeAltitude over time, i can make it take a very long time to interpolate. essentially freezing/unfreezing the value in place at any time i need to. # force water surface level to a fixed height if you entered the water from an area in low light levels (caves). if youre above the hardcoded y level, allow it use the current height variable.float.waterEnteredLowLight = if(eyeBrightness.y < 0.004, max(eyeAltitude, SEA_LEVEL), eyeAltitude) variable.float.freezeTranstion = if(isEyeInWater == 1, 100000000000000.0, 0.0) uniform.float.waterEnteredAltitude = smooth(waterEnteredLowLight, freezeTranstion, freezeTranstion) # photon stuff uniform.vec2.viewSize = vec2(viewWidth, viewHeight) texture.noise = texture/noises.png texture.composite.colortex6 = texture/blueNoise.png variable.float.texelSizeX = 1.0/viewWidth variable.float.texelSizeY = 1.0/viewHeight uniform.vec2.texelSize = vec2(texelSizeX,texelSizeY) #ifdef RESPONSIVE_TAA uniform.int.framemod8 = frameCounter%4 #else uniform.int.framemod8 = frameCounter%8 #endif #ifdef DISTANT_HORIZONS uniform.int.framemod4_DH = frameCounter%4 #endif 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) 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 uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ) uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ uniform.float.lightSign = clamp(sunElevation * 1000000000000000000, 0.0, 1.0) * 2.0 - 1.0 #Max angle at frustrum diagonal variable.float.maxAngle = atan(1.0 / gbufferProjection.1.1 * sqrt(1.0+(aspectRatio * aspectRatio))) uniform.float.cosFov = cos(maxAngle) variable.float.viewDirX = gbufferModelViewInverse.2.0 variable.float.viewDirY = gbufferModelViewInverse.2.1 variable.float.viewDirZ = gbufferModelViewInverse.2.2 variable.float.normView = sqrt(viewDirX*viewDirX + viewDirY*viewDirY + viewDirZ*viewDirZ) variable.float.shViewDirX = (shadowModelView.0.0 * viewDirX + shadowModelView.1.0 * viewDirY + shadowModelView.2.0 * viewDirZ)/normView variable.float.shViewDirY = (shadowModelView.0.1 * viewDirX + shadowModelView.1.1 * viewDirY + shadowModelView.2.1 * viewDirZ)/normView variable.float.shViewDirZ = (shadowModelView.0.2 * viewDirX + shadowModelView.1.2 * viewDirY + shadowModelView.2.2 * viewDirZ)/normView uniform.vec3.shadowViewDir = vec3(shViewDirX, shViewDirY, shViewDirZ) variable.float.shStartX = (shadowModelView.0.0 * gbufferModelViewInverse.3.0 + shadowModelView.1.0 * gbufferModelViewInverse.3.1 + shadowModelView.2.0 * gbufferModelViewInverse.3.2) variable.float.shStartY = (shadowModelView.0.1 * gbufferModelViewInverse.3.0 + shadowModelView.1.1 * gbufferModelViewInverse.3.1 + shadowModelView.2.1 * gbufferModelViewInverse.3.2) variable.float.shStartZ = (shadowModelView.0.2 * gbufferModelViewInverse.3.0 + shadowModelView.1.2 * gbufferModelViewInverse.3.1 + shadowModelView.2.2 * gbufferModelViewInverse.3.2) uniform.vec3.shadowCamera = vec3(shStartX + shadowModelView.3.0 + shViewDirX*2., shStartY + shadowModelView.3.1 + shViewDirY*2., shStartZ + shadowModelView.3.2 + shViewDirZ*2.0) variable.float.wSunX = (gbufferModelViewInverse.0.0 * sunPosX + gbufferModelViewInverse.1.0 * sunPosY + gbufferModelViewInverse.2.0 * sunPosZ) variable.float.wSunY = (gbufferModelViewInverse.0.1 * sunPosX + gbufferModelViewInverse.1.1 * sunPosY + gbufferModelViewInverse.2.1 * sunPosZ) variable.float.wSunZ = (gbufferModelViewInverse.0.2 * sunPosX + gbufferModelViewInverse.1.2 * sunPosY + gbufferModelViewInverse.2.2 * sunPosZ) variable.float.shSunX = (shadowModelView.0.0 * wSunX + shadowModelView.1.0 * wSunY + shadowModelView.2.0 * wSunZ) variable.float.shSunY = (shadowModelView.0.1 * wSunX + shadowModelView.1.1 * wSunY + shadowModelView.2.1 * wSunZ) variable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSunY + shadowModelView.2.2 * wSunZ) uniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ) uniform.float.shadowMaxProj = 150.0/abs(sunPosY) ############################### ####### FLOODFILL STUFF ####### ############################### #ifdef LPV_ENABLED image.imgBlockData = texBlockData RG_INTEGER RG32UI UNSIGNED_INT false false 2048 #if LPV_SIZE == 8 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256 image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 256 256 256 image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 256 256 256 #elif LPV_SIZE == 7 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128 image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 128 128 128 image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 128 128 128 #elif LPV_SIZE == 6 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64 image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 64 64 64 image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 64 64 64 #endif #ifdef LPV_SHADOWS image.imgCloseLights = texCloseLights RED_INTEGER R32UI UNSIGNED_INT false false 9 image.imgSortLights = texSortLights RED_INTEGER R32UI UNSIGNED_INT false false 32 32 9 #endif #else program.world1/setup.enabled = false program.world0/setup.enabled = false program.world-1/setup.enabled = false program.world1/shadow.enabled = false program.world-1/shadow.enabled = false program.world1/shadowcomp.enabled = false program.world0/shadowcomp.enabled = false program.world-1/shadowcomp.enabled = false #endif program.world0/begin.enabled = LPV_SHADOWS program.world0/shadowcomp3.enabled = LPV_SHADOWS program.world0/shadowcomp4.enabled = LPV_SHADOWS program.world0/shadowcomp5.enabled = LPV_SHADOWS program.world1/begin.enabled = LPV_SHADOWS program.world1/shadowcomp3.enabled = LPV_SHADOWS program.world1/shadowcomp4.enabled = LPV_SHADOWS program.world1/shadowcomp5.enabled = LPV_SHADOWS program.world-1/begin.enabled = LPV_SHADOWS program.world-1/shadowcomp3.enabled = LPV_SHADOWS program.world-1/shadowcomp4.enabled = LPV_SHADOWS program.world-1/shadowcomp5.enabled = LPV_SHADOWS ================================================ FILE: shaders/template/.gitignore ================================================ potater.exe potater ================================================ FILE: shaders/template/block.properties ================================================ layer.translucent = minecraft:glass minecraft:glass_pane #= BLOCK_WATER block.8 = minecraft:water minecraft:flowing_water #= BLOCK_BAMBOO block.11= bamboo bamboo_sapling #= BLOCK_GRASS_SHORT block.*= minecraft:short_grass minecraft:grass #= BLOCK_GRASS_TALL_LOWER block.*= 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 #= BLOCK_GRASS_TALL_UPPER block.*= 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 #= BLOCK_SAPLING block.*= minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling #= BLOCK_VINE block.*= vine #= BLOCK_VINE_OTHER block.*= minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:berries=false ####### ----- FloodFill ----- ####### group.candle= candle black_candle blue_candle brown_candle cyan_candle gray_candle green_candle light_blue_candle light_gray_candle lime_candle magenta_candle orange_candle pink_candle purple_candle red_candle white_candle yellow_candle group.supplementaries_candle= supplementaries:candle_holder supplementaries:candle_holder_black supplementaries:candle_holder_blue supplementaries:candle_holder_brown supplementaries:candle_holder_cyan supplementaries:candle_holder_gray supplementaries:candle_holder_green supplementaries:candle_holder_light_blue supplementaries:candle_holder_light_gray supplementaries:candle_holder_lime supplementaries:candle_holder_magenta supplementaries:candle_holder_orange supplementaries:candle_holder_pink supplementaries:candle_holder_purple supplementaries:candle_holder_red supplementaries:candle_holder_white supplementaries:candle_holder_yellow # Blocks for FloodFill to ignore #= BLOCK_LPV_IGNORE block.50= chain ladder lever lightning_rod scaffolding tripwire tripwire_hook [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]:lit=false # Blocks that occlude 25% of light #= BLOCK_LPV_MIN block.*= 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 # Blocks that occlude 50% of light #= BLOCK_LPV_MED block.*= iron_bars pointed_dripstone # Blocks that occlude 75% of light #= BLOCK_LPV_MAX block.*= ####### ----- waving blocks with SSS ----- ####### ## ground waving ## add a newline to organize for modded blocks #= BLOCK_GROUND_WAVING block.*= 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 ## 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_GROUND_WAVING_VERTICAL block.*= 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 ## air waving ## add a newline to organize for modded blocks #= BLOCK_AIR_WAVING block.*= 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 ####### ----- blocks with SSS ----- ####### ## strong sss #= BLOCK_SSS_STRONG 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 ## weak sss #= BLOCK_SSS_WEAK block.*= 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 ## weak sss #= BLOCK_SSS_WEAK_2 block.*= 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 \ 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 #= BLOCK_SSS_WEAK_3 block.*= minecraft:white_wall_banner minecraft:orange_wall_banner minecraft:magenta_wall_banner minecraft:light_blue_wall_banner minecraft:yellow_wall_banner minecraft:lime_wall_banner minecraft:pink_wall_banner minecraft:gray_wall_banner minecraft:light_gray_wall_banner minecraft:cyan_wall_banner minecraft:purple_wall_banner minecraft:blue_wall_banner minecraft:brown_wall_banner minecraft:green_wall_banner minecraft:red_wall_banner minecraft:black_wall_banner minecraft:white_banner minecraft:orange_banner minecraft:magenta_banner minecraft:light_blue_banner minecraft:yellow_banner minecraft:lime_banner minecraft:pink_banner minecraft:gray_banner minecraft:light_gray_banner minecraft:cyan_banner minecraft:purple_banner minecraft:blue_banner minecraft:brown_banner minecraft:green_banner minecraft:red_banner minecraft:black_banner \ westerosblocks:renly_banner westerosblocks:redwyne_banner westerosblocks:grafton_banner westerosblocks:grey_banner westerosblocks:red_banner westerosblocks:black_banner westerosblocks:the_faith_of_the_seven_banner westerosblocks:cream_banner westerosblocks:blue_banner westerosblocks:brown_banner westerosblocks:cyan_banner westerosblocks:green_banner westerosblocks:orange_banner westerosblocks:pink_banner westerosblocks:purple_banner westerosblocks:lord_of_light_rhllor_banner westerosblocks:yellow_banner westerosblocks:arryn_banner westerosblocks:baratheon_banner westerosblocks:bolton_banner westerosblocks:dayne_banner westerosblocks:frey_banner westerosblocks:greyjoy_banner westerosblocks:hightower_banner westerosblocks:lannister_banner westerosblocks:manderly_banner westerosblocks:martell_banner westerosblocks:stannis_banner westerosblocks:stark_banner westerosblocks:targaryen_banner westerosblocks:tarly_banner westerosblocks:tully_banner westerosblocks:tyrell_banner ## weird blocks #= BLOCK_SSS_WEIRD block.*= minecraft:sand minecraft:red_sand ## grass uwu #= BLOCK_GRASS block.*= minecraft:grass_block:snowy=false ####### ----- lightsources ----- ####### #= BLOCK_AMETHYST_BUD_LARGE block.101= large_amethyst_bud #= BLOCK_AMETHYST_BUD_MEDIUM block.*= medium_amethyst_bud #= BLOCK_AMETHYST_CLUSTER block.*= amethyst_cluster #= BLOCK_BEACON block.*= beacon #= BLOCK_BREWING_STAND block.*= brewing_stand #ifdef LPV_COLORED_CANDLES #= BLOCK_CANDLES_PLAIN_LIT_1 block.*= candle:candles=1:lit=true \ supplementaries:candle_holder:candles=1:lit=true #= BLOCK_CANDLES_PLAIN_LIT_2 block.*= candle:candles=2:lit=true \ supplementaries:candle_holder:candles=2:lit=true #= BLOCK_CANDLES_PLAIN_LIT_3 block.*= candle:candles=3:lit=true \ supplementaries:candle_holder:candles=3:lit=true #= BLOCK_CANDLES_PLAIN_LIT_4 block.*= candle:candles=4:lit=true \ supplementaries:candle_holder:candles=4:lit=true #= BLOCK_CANDLES_BLACK_LIT_1 block.*= black_candle:candles=1:lit=true \ supplementaries:candle_holder_black:candles=1:lit=true #= BLOCK_CANDLES_BLACK_LIT_2 block.*= black_candle:candles=2:lit=true \ supplementaries:candle_holder_black:candles=2:lit=true #= BLOCK_CANDLES_BLACK_LIT_3 block.*= black_candle:candles=3:lit=true \ supplementaries:candle_holder_black:candles=3:lit=true #= BLOCK_CANDLES_BLACK_LIT_4 block.*= black_candle:candles=4:lit=true \ supplementaries:candle_holder_black:candles=4:lit=true #= BLOCK_CANDLES_BLUE_LIT_1 block.*= blue_candle:candles=1:lit=true \ supplementaries:candle_holder_blue:candles=1:lit=true #= BLOCK_CANDLES_BLUE_LIT_2 block.*= blue_candle:candles=2:lit=true \ supplementaries:candle_holder_blue:candles=2:lit=true #= BLOCK_CANDLES_BLUE_LIT_3 block.*= blue_candle:candles=3:lit=true \ supplementaries:candle_holder_blue:candles=3:lit=true #= BLOCK_CANDLES_BLUE_LIT_4 block.*= blue_candle:candles=4:lit=true \ supplementaries:candle_holder_blue:candles=4:lit=true #= BLOCK_CANDLES_BROWN_LIT_1 block.*= brown_candle:candles=1:lit=true \ supplementaries:candle_holder_brown:candles=1:lit=true #= BLOCK_CANDLES_BROWN_LIT_2 block.*= brown_candle:candles=2:lit=true \ supplementaries:candle_holder_brown:candles=2:lit=true #= BLOCK_CANDLES_BROWN_LIT_3 block.*= brown_candle:candles=3:lit=true \ supplementaries:candle_holder_brown:candles=3:lit=true #= BLOCK_CANDLES_BROWN_LIT_4 block.*= brown_candle:candles=4:lit=true \ supplementaries:candle_holder_brown:candles=4:lit=true #= BLOCK_CANDLES_CYAN_LIT_1 block.*= cyan_candle:candles=1:lit=true \ supplementaries:candle_holder_cyan:candles=1:lit=true #= BLOCK_CANDLES_CYAN_LIT_2 block.*= cyan_candle:candles=2:lit=true \ supplementaries:candle_holder_cyan:candles=2:lit=true #= BLOCK_CANDLES_CYAN_LIT_3 block.*= cyan_candle:candles=3:lit=true \ supplementaries:candle_holder_cyan:candles=3:lit=true #= BLOCK_CANDLES_CYAN_LIT_4 block.*= cyan_candle:candles=4:lit=true \ supplementaries:candle_holder_cyan:candles=4:lit=true #= BLOCK_CANDLES_GRAY_LIT_1 block.*= gray_candle:candles=1:lit=true \ supplementaries:candle_holder_gray:candles=1:lit=true #= BLOCK_CANDLES_GRAY_LIT_2 block.*= gray_candle:candles=2:lit=true \ supplementaries:candle_holder_gray:candles=2:lit=true #= BLOCK_CANDLES_GRAY_LIT_3 block.*= gray_candle:candles=2:lit=true \ supplementaries:candle_holder_gray:candles=3:lit=true #= BLOCK_CANDLES_GRAY_LIT_4 block.*= gray_candle:candles=4:lit=true \ supplementaries:candle_holder_gray:candles=4:lit=true #= BLOCK_CANDLES_GREEN_LIT_1 block.*= green_candle:candles=1:lit=true \ supplementaries:candle_holder_green:candles=1:lit=true #= BLOCK_CANDLES_GREEN_LIT_2 block.*= green_candle:candles=2:lit=true \ supplementaries:candle_holder_green:candles=2:lit=true #= BLOCK_CANDLES_GREEN_LIT_3 block.*= green_candle:candles=3:lit=true \ supplementaries:candle_holder_green:candles=3:lit=true #= BLOCK_CANDLES_GREEN_LIT_4 block.*= green_candle:candles=4:lit=true \ supplementaries:candle_holder_green:candles=4:lit=true #= BLOCK_CANDLES_LIGHT_BLUE_LIT_1 block.*= light_blue_candle:candles=1:lit=true \ supplementaries:candle_holder_light_blue:candles=1:lit=true #= BLOCK_CANDLES_LIGHT_BLUE_LIT_2 block.*= light_blue_candle:candles=2:lit=true \ supplementaries:candle_holder_light_blue:candles=2:lit=true #= BLOCK_CANDLES_LIGHT_BLUE_LIT_3 block.*= light_blue_candle:candles=3:lit=true \ supplementaries:candle_holder_light_blue:candles=3:lit=true #= BLOCK_CANDLES_LIGHT_BLUE_LIT_4 block.*= light_blue_candle:candles=4:lit=true \ supplementaries:candle_holder_light_blue:candles=4:lit=true #= BLOCK_CANDLES_LIGHT_GRAY_LIT_1 block.*= light_gray_candle:candles=1:lit=true \ supplementaries:candle_holder_light_gray:candles=1:lit=true #= BLOCK_CANDLES_LIGHT_GRAY_LIT_2 block.*= light_gray_candle:candles=2:lit=true \ supplementaries:candle_holder_light_gray:candles=2:lit=true #= BLOCK_CANDLES_LIGHT_GRAY_LIT_3 block.*= light_gray_candle:candles=3:lit=true \ supplementaries:candle_holder_light_gray:candles=3:lit=true #= BLOCK_CANDLES_LIGHT_GRAY_LIT_4 block.*= light_gray_candle:candles=4:lit=true \ supplementaries:candle_holder_light_gray:candles=4:lit=true #= BLOCK_CANDLES_LIME_LIT_1 block.*= lime_candle:candles=1:lit=true \ supplementaries:candle_holder_lime:candles=1:lit=true #= BLOCK_CANDLES_LIME_LIT_2 block.*= lime_candle:candles=2:lit=true \ supplementaries:candle_holder_lime:candles=2:lit=true #= BLOCK_CANDLES_LIME_LIT_3 block.*= lime_candle:candles=3:lit=true \ supplementaries:candle_holder_lime:candles=3:lit=true #= BLOCK_CANDLES_LIME_LIT_4 block.*= lime_candle:candles=4:lit=true \ supplementaries:candle_holder_lime:candles=4:lit=true #= BLOCK_CANDLES_MAGENTA_LIT_1 block.*= magenta_candle:candles=1:lit=true \ supplementaries:candle_holder_magenta:candles=1:lit=true #= BLOCK_CANDLES_MAGENTA_LIT_2 block.*= magenta_candle:candles=2:lit=true \ supplementaries:candle_holder_magenta:candles=2:lit=true #= BLOCK_CANDLES_MAGENTA_LIT_3 block.*= magenta_candle:candles=3:lit=true \ supplementaries:candle_holder_magenta:candles=3:lit=true #= BLOCK_CANDLES_MAGENTA_LIT_4 block.*= magenta_candle:candles=4:lit=true \ supplementaries:candle_holder_magenta:candles=4:lit=true #= BLOCK_CANDLES_ORANGE_LIT_1 block.*= orange_candle:candles=1:lit=true \ supplementaries:candle_holder_orange:candles=1:lit=true #= BLOCK_CANDLES_ORANGE_LIT_2 block.*= orange_candle:candles=2:lit=true \ supplementaries:candle_holder_orange:candles=2:lit=true #= BLOCK_CANDLES_ORANGE_LIT_3 block.*= orange_candle:candles=3:lit=true \ supplementaries:candle_holder_orange:candles=3:lit=true #= BLOCK_CANDLES_ORANGE_LIT_4 block.*= orange_candle:candles=4:lit=true \ supplementaries:candle_holder_orange:candles=4:lit=true #= BLOCK_CANDLES_PINK_LIT_1 block.*= pink_candle:candles=1:lit=true \ supplementaries:candle_holder_pink:candles=1:lit=true #= BLOCK_CANDLES_PINK_LIT_2 block.*= pink_candle:candles=2:lit=true \ supplementaries:candle_holder_pink:candles=2:lit=true #= BLOCK_CANDLES_PINK_LIT_3 block.*= pink_candle:candles=3:lit=true \ supplementaries:candle_holder_pink:candles=3:lit=true #= BLOCK_CANDLES_PINK_LIT_4 block.*= pink_candle:candles=4:lit=true \ supplementaries:candle_holder_pink:candles=4:lit=true #= BLOCK_CANDLES_PURPLE_LIT_1 block.*= purple_candle:candles=1:lit=true \ supplementaries:candle_holder_purple:candles=1:lit=true #= BLOCK_CANDLES_PURPLE_LIT_2 block.*= purple_candle:candles=2:lit=true \ supplementaries:candle_holder_purple:candles=2:lit=true #= BLOCK_CANDLES_PURPLE_LIT_3 block.*= purple_candle:candles=3:lit=true \ supplementaries:candle_holder_purple:candles=3:lit=true #= BLOCK_CANDLES_PURPLE_LIT_4 block.*= purple_candle:candles=4:lit=true \ supplementaries:candle_holder_purple:candles=4:lit=true #= BLOCK_CANDLES_RED_LIT_1 block.*= red_candle:candles=1:lit=true \ supplementaries:candle_holder_red:candles=1:lit=true #= BLOCK_CANDLES_RED_LIT_2 block.*= red_candle:candles=2:lit=true \ supplementaries:candle_holder_red:candles=2:lit=true #= BLOCK_CANDLES_RED_LIT_3 block.*= red_candle:candles=3:lit=true \ supplementaries:candle_holder_red:candles=3:lit=true #= BLOCK_CANDLES_RED_LIT_4 block.*= red_candle:candles=4:lit=true \ supplementaries:candle_holder_red:candles=4:lit=true #= BLOCK_CANDLES_WHITE_LIT_1 block.*= white_candle:candles=1:lit=true \ supplementaries:candle_holder_white:candles=1:lit=true #= BLOCK_CANDLES_WHITE_LIT_2 block.*= white_candle:candles=2:lit=true \ supplementaries:candle_holder_white:candles=2:lit=true #= BLOCK_CANDLES_WHITE_LIT_3 block.*= white_candle:candles=3:lit=true \ supplementaries:candle_holder_white:candles=3:lit=true #= BLOCK_CANDLES_WHITE_LIT_4 block.*= white_candle:candles=4:lit=true \ supplementaries:candle_holder_white:candles=4:lit=true #= BLOCK_CANDLES_YELLOW_LIT_1 block.*= yellow_candle:candles=1:lit=true \ supplementaries:candle_holder_yellow:candles=1:lit=true #= BLOCK_CANDLES_YELLOW_LIT_2 block.*= yellow_candle:candles=2:lit=true \ supplementaries:candle_holder_yellow:candles=2:lit=true #= BLOCK_CANDLES_YELLOW_LIT_3 block.*= yellow_candle:candles=3:lit=true \ supplementaries:candle_holder_yellow:candles=3:lit=true #= BLOCK_CANDLES_YELLOW_LIT_4 block.*= yellow_candle:candles=4:lit=true \ supplementaries:candle_holder_yellow:candles=4:lit=true #else #= BLOCK_CANDLES_LIT_1 block.*= [candle]:candles=1:lit=true \ [supplementaries_candle]:candles=1:lit=true #= BLOCK_CANDLES_LIT_2 block.*= [candle]:candles=2:lit=true \ [supplementaries_candle]:candles=2:lit=true #= BLOCK_CANDLES_LIT_3 block.*= [candle]:candles=3:lit=true \ [supplementaries_candle]:candles=3:lit=true #= BLOCK_CANDLES_LIT_4 block.*= [candle]:candles=4:lit=true \ [supplementaries_candle]:candles=4:lit=true #endif #= BLOCK_CAVE_VINE_BERRIES block.*= cave_vines_plant:berries=true cave_vines:berries=true #= BLOCK_COMPARATOR_LIT block.*= comparator:powered=true #= BLOCK_COPPER_BULB_LIT block.*= copper_bulb:lit=true waxed_copper_bulb:lit=true #= BLOCK_COPPER_BULB_EXPOSED_LIT block.*= exposed_copper_bulb:lit=true waxed_exposed_copper_bulb:lit=true #= BLOCK_COPPER_BULB_OXIDIZED_LIT block.*= oxidized_copper_bulb:lit=true waxed_oxidized_copper_bulb:lit=true #= BLOCK_COPPER_BULB_WEATHERED_LIT block.*= weathered_copper_bulb:lit=true waxed_weathered_copper_bulb:lit=true #= BLOCK_CONDUIT block.*= conduit #= BLOCK_CRYING_OBSIDIAN block.*= crying_obsidian #= BLOCK_DEEPSLATE_REDSTONE_ORE_LIT block.*= deepslate_redstone_ore:lit=true #= BLOCK_END_GATEWAY block.*= end_gateway #= BLOCK_END_ROD block.*= end_rod \ mcwlights:garden_light:lit=true #= BLOCK_FIRE block.*= fire campfire:lit=true #= BLOCK_FIRE_FLIES block.*= conquest:fire_flies #= BLOCK_FROGLIGHT_OCHRE block.*= ochre_froglight #= BLOCK_FROGLIGHT_PEARLESCENT block.*= pearlescent_froglight #= BLOCK_FROGLIGHT_VERDANT block.*= verdant_froglight #= BLOCK_FURNACE_LIT block.*= furnace:lit=true blast_furnace:lit=true smoker:lit=true #= BLOCK_GLOW_LICHEN block.*= glow_lichen #= BLOCK_GLOWSTONE block.*= glowstone \ mcwlights:glowstone_slab #= BLOCK_JACK_O_LANTERN block.*= jack_o_lantern #= BLOCK_LANTERN block.*= lantern \ amendments:wall_lantern:light_level=15:lit=true \ 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_LAVA block.*= lava \ mcwlights:lava_lamp:lit=true #= BLOCK_LIGHT_1 block.*= light:level=1 #= BLOCK_LIGHT_2 block.*= light:level=2 #= BLOCK_LIGHT_3 block.*= light:level=3 #= BLOCK_LIGHT_4 block.*= light:level=4 #= BLOCK_LIGHT_5 block.*= light:level=5 #= BLOCK_LIGHT_6 block.*= light:level=6 #= BLOCK_LIGHT_7 block.*= light:level=7 #= BLOCK_LIGHT_8 block.*= light:level=8 #= BLOCK_LIGHT_9 block.*= light:level=9 #= BLOCK_LIGHT_10 block.*= light:level=10 #= BLOCK_LIGHT_11 block.*= light:level=11 #= BLOCK_LIGHT_12 block.*= light:level=12 #= BLOCK_LIGHT_13 block.*= light:level=13 #= BLOCK_LIGHT_14 block.*= light:level=14 #= BLOCK_LIGHT_15 block.*= light:level=15 #= BLOCK_MAGMA block.*= magma_block #= BLOCK_RAIL_POWERED_ON block.*= powered_rail:powered=true #= BLOCK_REDSTONE_LAMP_LIT block.*= redstone_lamp:lit=true \ mcwlights:redstone_lamp_slab #= BLOCK_REDSTONE_ORE_LIT block.*= redstone_ore:lit=true #= BLOCK_REDSTONE_TORCH_LIT block.*= redstone_torch:lit=true redstone_wall_torch:lit=true #= BLOCK_REDSTONE_WIRE_1 block.*= redstone_wire:power=1 #= BLOCK_REDSTONE_WIRE_2 block.*= redstone_wire:power=2 #= BLOCK_REDSTONE_WIRE_3 block.*= redstone_wire:power=3 #= BLOCK_REDSTONE_WIRE_4 block.*= redstone_wire:power=4 #= BLOCK_REDSTONE_WIRE_5 block.*= redstone_wire:power=5 #= BLOCK_REDSTONE_WIRE_6 block.*= redstone_wire:power=6 #= BLOCK_REDSTONE_WIRE_7 block.*= redstone_wire:power=7 #= BLOCK_REDSTONE_WIRE_8 block.*= redstone_wire:power=8 #= BLOCK_REDSTONE_WIRE_9 block.*= redstone_wire:power=9 #= BLOCK_REDSTONE_WIRE_10 block.*= redstone_wire:power=10 #= BLOCK_REDSTONE_WIRE_11 block.*= redstone_wire:power=11 #= BLOCK_REDSTONE_WIRE_12 block.*= redstone_wire:power=12 #= BLOCK_REDSTONE_WIRE_13 block.*= redstone_wire:power=13 #= BLOCK_REDSTONE_WIRE_14 block.*= redstone_wire:power=14 #= BLOCK_REDSTONE_WIRE_15 block.*= redstone_wire:power=15 #= BLOCK_REPEATER_LIT block.*= repeater:powered=true #= BLOCK_RESPAWN_ANCHOR_4 block.*= respawn_anchor:charges=4 #= BLOCK_SCULK_SENSOR_ACTIVE block.*= sculk_sensor:sculk_sensor_phase=active #= BLOCK_SEA_PICKLE_WET_1 block.*= sea_pickle:waterlogged=true:pickles=1 #= BLOCK_SEA_PICKLE_WET_2 block.*= sea_pickle:waterlogged=true:pickles=2 #= BLOCK_SEA_PICKLE_WET_3 block.*= sea_pickle:waterlogged=true:pickles=3 #= BLOCK_SEA_PICKLE_WET_4 block.*= sea_pickle:waterlogged=true:pickles=4 #= BLOCK_SEA_LANTERN block.*= sea_lantern \ mcwlights:sea_lantern_slab #= BLOCK_SHROOMLIGHT block.*= shroomlight \ mcwlights:shroomlight_slab #= BLOCK_SOUL_FIRE block.*= soul_fire soul_campfire:lit=true #= BLOCK_SOUL_LANTERN block.*= soul_lantern \ amendments:wall_lantern:light_level=10:lit=true \ 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_SOUL_TORCH block.*= 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 #= BLOCK_TORCH block.*= 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 block.*= westerosblocks:safe_fire block.*= 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_LAMP_LIT_BLACK block.*= mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true #= BLOCK_LAMP_LIT_BLUE block.*= mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true #= BLOCK_LAMP_LIT_BROWN block.*= mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true #= BLOCK_LAMP_LIT_CYAN block.*= mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true #= BLOCK_LAMP_LIT_GRAY block.*= mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true #= BLOCK_LAMP_LIT_GREEN block.*= mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true #= BLOCK_LAMP_LIT_LIGHT_BLUE block.*= mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true #= BLOCK_LAMP_LIT_LIGHT_GRAY block.*= mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true #= BLOCK_LAMP_LIT_LIME block.*= mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true #= BLOCK_LAMP_LIT_MAGENTA block.*= mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true #= BLOCK_LAMP_LIT_ORANGE block.*= mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true #= BLOCK_LAMP_LIT_PINK block.*= mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true #= BLOCK_LAMP_LIT_PURPLE block.*= mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true #= BLOCK_LAMP_LIT_RED block.*= mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true #= BLOCK_LAMP_LIT_WHITE block.*= mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true #= BLOCK_LAMP_LIT_YELLOW block.*= mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true ####### ----- reflective translucents / glass ----- ####### #= BLOCK_GLASS block.301= glass glass_pane #= BLOCK_GLASS_BLACK block.*= black_stained_glass black_stained_glass_pane #= BLOCK_GLASS_BLUE block.*= blue_stained_glass blue_stained_glass_pane #= BLOCK_GLASS_BROWN block.*= brown_stained_glass brown_stained_glass_pane #= BLOCK_GLASS_CYAN block.*= cyan_stained_glass cyan_stained_glass_pane #= BLOCK_GLASS_GRAY block.*= gray_stained_glass gray_stained_glass_pane #= BLOCK_GLASS_GREEN block.*= green_stained_glass green_stained_glass_pane #= BLOCK_GLASS_LIGHT_BLUE block.*= light_blue_stained_glass light_blue_stained_glass_pane #= BLOCK_GLASS_LIGHT_GRAY block.*= light_gray_stained_glass light_gray_stained_glass_pane #= BLOCK_GLASS_LIME block.*= lime_stained_glass lime_stained_glass_pane #= BLOCK_GLASS_MAGENTA block.*= magenta_stained_glass magenta_stained_glass_pane #= BLOCK_GLASS_ORANGE block.*= orange_stained_glass orange_stained_glass_pane #= BLOCK_GLASS_PINK block.*= pink_stained_glass pink_stained_glass_pane #= BLOCK_GLASS_PURPLE block.*= purple_stained_glass purple_stained_glass_pane #= BLOCK_GLASS_RED block.*= red_stained_glass red_stained_glass_pane #= BLOCK_GLASS_WHITE block.*= white_stained_glass white_stained_glass_pane #= BLOCK_GLASS_YELLOW block.*= yellow_stained_glass yellow_stained_glass_pane #= BLOCK_HONEY block.*= honey_block #= BLOCK_ICE block.*= ice frosted_ice #= BLOCK_NETHER_PORTAL block.*= nether_portal #= BLOCK_SLIME block.*= slime_block ####### ----- LPV shapes ----- ####### #= BLOCK_CARPET block.401=wool_carpets black_carpet blue_carpet brown_carpet cyan_carpet gray_carpet green_carpet light_blue_carpet light_gray_carpet lime_carpet magenta_carpet moss_carpet orange_carpet pink_carpet purple_carpet red_carpet white_carpet yellow_carpet group.door= acacia_door bamboo_door birch_door cherry_door crimson_door dark_oak_door iron_door jungle_door mangrove_door oak_door spruce_door warped_door copper_door exposed_copper_door weathered_copper_door oxidized_copper_door waxed_copper_door waxed_exposed_copper_door waxed_weathered_copper_door waxed_oxidized_copper_door #= BLOCK_DOOR_N block.*= [door]:facing=north:open=false [door]:facing=west:hinge=left:open=true [door]:facing=east:hinge=right:open=true #= BLOCK_DOOR_E block.*= [door]:facing=east:open=false [door]:facing=north:hinge=left:open=true [door]:facing=south:hinge=right:open=true #= BLOCK_DOOR_S block.*= [door]:facing=south:open=false [door]:facing=east:hinge=left:open=true [door]:facing=west:hinge=right:open=true #= BLOCK_DOOR_W block.*= [door]:facing=west:open=false [door]:facing=south:hinge=left:open=true [door]:facing=north:hinge=right:open=true #= BLOCK_PRESSURE_PLATE block.*= acacia_pressure_plate bamboo_pressure_plate birch_pressure_plate cherry_pressure_plate crimson_pressure_plate dark_oak_pressure_plate heavy_weighted_pressure_plate jungle_pressure_plate light_weighted_pressure_plate mangrove_pressure_plate oak_pressure_plate polished_blackstone_pressure_plate spruce_pressure_plate stone_pressure_plate warped_pressure_plate group.slab= acacia_slab bamboo_slab bamboo_mosaic_slab birch_slab cherry_slab crimson_slab dark_oak_slab jungle_slab mangrove_slab oak_slab spruce_slab warped_slab andesite_slab blackstone_slab brick_slab cobbled_deepslate_slab cobblestone_slab cut_copper_slab cut_red_sandstone_slab cut_sandstone_slab dark_prismarine_slab deepslate_brick_slab deepslate_tile_slab diorite_slab end_stone_brick_slab exposed_cut_copper_slab granite_slab mossy_cobblestone_slab mossy_stone_brick_slab mud_brick_slab nether_brick_slab oxidized_cut_copper_slab petrified_oak_slab polished_andesite_slab polished_blackstone_brick_slab polished_blackstone_slab polished_deepslate_slab polished_diorite_slab polished_granite_slab prismarine_brick_slab prismarine_slab purpur_slab quartz_slab red_nether_brick_slab red_sandstone_slab sandstone_slab smooth_quartz_slab smooth_red_sandstone_slab smooth_sandstone_slab smooth_stone_slab stone_brick_slab stone_slab waxed_cut_copper_slab waxed_exposed_cut_copper_slab waxed_oxidized_cut_copper_slab waxed_weathered_cut_copper_slab weathered_cut_copper_slab #= BLOCK_SLAB_TOP block.*= [slab]:type=top #= BLOCK_SLAB_BOTTOM block.*= [slab]:type=bottom daylight_detector #= BLOCK_SNOW_LAYERS block.*= snow:layers=1 snow:layers=2 snow:layers=3 snow:layers=4 group.trapdoor= acacia_trapdoor bamboo_trapdoor birch_trapdoor cherry_trapdoor crimson_trapdoor dark_oak_trapdoor iron_trapdoor jungle_trapdoor mangrove_trapdoor oak_trapdoor spruce_trapdoor warped_trapdoor copper_trapdoor exposed_copper_trapdoor weathered_copper_trapdoor oxidized_copper_trapdoor waxed_copper_trapdoor waxed_exposed_copper_trapdoor waxed_weathered_copper_trapdoor waxed_oxidized_copper_trapdoor #= BLOCK_TRAPDOOR_BOTTOM block.*= [trapdoor]:half=bottom:open=false #= BLOCK_TRAPDOOR_TOP block.*= [trapdoor]:half=top:open=false #= BLOCK_TRAPDOOR_N block.*= [trapdoor]:facing=north:open=true #= BLOCK_TRAPDOOR_E block.*= [trapdoor]:facing=east:open=true #= BLOCK_TRAPDOOR_S block.*= [trapdoor]:facing=south:open=true #= BLOCK_TRAPDOOR_W block.*= [trapdoor]:facing=west:open=true #=== STAIRS ===# group.stairs=acacia_stairs bamboo_stairs bamboo_mosaic_stairs birch_stairs cherry_stairs crimson_stairs dark_oak_stairs jungle_stairs mangrove_stairs oak_stairs spruce_stairs warped_stairs andesite_stairs blackstone_stairs brick_stairs cobbled_deepslate_stairs cobblestone_stairs cut_copper_stairs dark_prismarine_stairs deepslate_brick_stairs deepslate_tile_stairs diorite_stairs end_stone_brick_stairs exposed_cut_copper_stairs granite_stairs mossy_cobblestone_stairs mossy_stone_brick_stairs mud_brick_stairs nether_brick_stairs oxidized_cut_copper_stairs polished_andesite_stairs polished_blackstone_brick_stairs polished_blackstone_stairs polished_deepslate_stairs polished_diorite_stairs polished_granite_stairs prismarine_brick_stairs prismarine_stairs purpur_stairs quartz_stairs red_nether_brick_stairs red_sandstone_stairs sandstone_stairs smooth_quartz_stairs smooth_red_sandstone_stairs smooth_sandstone_stairs stone_brick_stairs stone_stairs waxed_cut_copper_stairs waxed_exposed_cut_copper_stairs waxed_oxidized_cut_copper_stairs waxed_weathered_cut_copper_stairs weathered_cut_copper_stairs \ createdeco:andesite_sheet_stairs createdeco:brass_sheet_stairs createdeco:cast_iron_sheet_stairs createdeco:copper_sheet_stairs createdeco:gold_sheet_stairs createdeco:iron_sheet_stairs createdeco:netherite_sheet_stairs createdeco:zinc_sheet_stairs \ create:cut_andesite_stairs create:polished_cut_andesite_stairs create:cut_andesite_brick_stairs create:small_andesite_brick_stairs create:cut_asurine_stairs create:polished_cut_asurine_stairs create:cut_asurine_brick_stairs create:small_asurine_brick_stairs create:cut_calcite_stairs create:polished_cut_calcite_stairs create:cut_calcite_brick_stairs create:small_calcite_brick_stairs create:cut_crimsite_stairs create:polished_cut_crimsite_stairs create:cut_crimsite_brick_stairs create:small_crimsite_brick_stairs create:cut_deepslate_stairs create:polished_cut_deepslate_stairs create:cut_deepslate_brick_stairs create:small_deepslate_brick_stairs create:cut_diorite_stairs create:polished_cut_diorite_stairs create:cut_diorite_brick_stairs create:small_diorite_brick_stairs create:cut_dripstone_stairs create:polished_cut_dripstone_stairs create:cut_dripstone_brick_stairs create:small_dripstone_brick_stairs create:cut_granite_stairs create:polished_cut_granite_stairs create:cut_granite_brick_stairs create:small_granite_brick_stairs create:cut_limestone_stairs create:polished_cut_limestone_stairs create:cut_limestone_brick_stairs create:small_limestone_brick_stairs create:cut_ochrum_stairs create:polished_cut_ochrum_stairs create:cut_ochrum_brick_stairs create:small_ochrum_brick_stairs create:cut_scorchia_stairs create:polished_cut_scorchia_stairs create:cut_scorchia_brick_stairs create:small_scorchia_brick_stairs create:cut_scoria_stairs create:polished_cut_scoria_stairs create:cut_scoria_brick_stairs create:small_scoria_brick_stairs create:cut_tuff_stairs create:polished_cut_tuff_stairs create:cut_tuff_brick_stairs create:small_tuff_brick_stairs create:cut_veridium_stairs create:polished_cut_veridium_stairs create:cut_veridium_brick_stairs create:small_veridium_brick_stairs create:copper_shingle_stairs create:exposed_copper_shingle_stairs create:weathered_copper_shingle_stairs create:oxidized_copper_shingle_stairs create:waxed_copper_shingle_stairs create:waxed_exposed_copper_shingle_stairs create:waxed_weathered_copper_shingle_stairs create:waxed_oxidized_copper_shingle_stairs create:copper_tile_stairs create:exposed_copper_tile_stairs create:weathered_copper_tile_stairs create:oxidized_copper_tile_stairs create:waxed_copper_tile_stairs create:waxed_exposed_copper_tile_stairs create:waxed_weathered_copper_tile_stairs create:waxed_oxidized_copper_tile_stairs #= BLOCK_STAIRS_BOTTOM_N block.*=[stairs]:shape=straight:half=bottom:facing=north #= BLOCK_STAIRS_BOTTOM_E block.*=[stairs]:shape=straight:half=bottom:facing=east #= BLOCK_STAIRS_BOTTOM_S block.*=[stairs]:shape=straight:half=bottom:facing=south #= BLOCK_STAIRS_BOTTOM_W block.*=[stairs]:shape=straight:half=bottom:facing=west #= BLOCK_STAIRS_BOTTOM_INNER_S_E block.*=[stairs]:shape=inner_left:half=bottom:facing=south [stairs]:shape=inner_right:half=bottom:facing=east #= BLOCK_STAIRS_BOTTOM_INNER_S_W block.*=[stairs]:shape=inner_left:half=bottom:facing=west [stairs]:shape=inner_right:half=bottom:facing=south #= BLOCK_STAIRS_BOTTOM_INNER_N_W block.*=[stairs]:shape=inner_left:half=bottom:facing=north [stairs]:shape=inner_right:half=bottom:facing=west #= BLOCK_STAIRS_BOTTOM_INNER_N_E block.*=[stairs]:shape=inner_left:half=bottom:facing=east [stairs]:shape=inner_right:half=bottom:facing=north #= BLOCK_STAIRS_BOTTOM_OUTER_N_W block.*=[stairs]:shape=outer_left:half=bottom:facing=north [stairs]:shape=outer_right:half=bottom:facing=west #= BLOCK_STAIRS_BOTTOM_OUTER_N_E block.*=[stairs]:shape=outer_left:half=bottom:facing=east [stairs]:shape=outer_right:half=bottom:facing=north #= BLOCK_STAIRS_BOTTOM_OUTER_S_E block.*=[stairs]:shape=outer_left:half=bottom:facing=south [stairs]:shape=outer_right:half=bottom:facing=east #= BLOCK_STAIRS_BOTTOM_OUTER_S_W block.*=[stairs]:shape=outer_left:half=bottom:facing=west [stairs]:shape=outer_right:half=bottom:facing=south #= BLOCK_STAIRS_TOP_N block.*=[stairs]:shape=straight:half=top:facing=north #= BLOCK_STAIRS_TOP_E block.*=[stairs]:shape=straight:half=top:facing=east #= BLOCK_STAIRS_TOP_S block.*=[stairs]:shape=straight:half=top:facing=south #= BLOCK_STAIRS_TOP_W block.*=[stairs]:shape=straight:half=top:facing=west #= BLOCK_STAIRS_TOP_INNER_S_E block.*=[stairs]:shape=inner_left:half=top:facing=south [stairs]:shape=inner_right:half=top:facing=east #= BLOCK_STAIRS_TOP_INNER_S_W block.*=[stairs]:shape=inner_left:half=top:facing=west [stairs]:shape=inner_right:half=top:facing=south #= BLOCK_STAIRS_TOP_INNER_N_W block.*=[stairs]:shape=inner_left:half=top:facing=north [stairs]:shape=inner_right:half=top:facing=west #= BLOCK_STAIRS_TOP_INNER_N_E block.*=[stairs]:shape=inner_left:half=top:facing=east [stairs]:shape=inner_right:half=top:facing=north #= BLOCK_STAIRS_TOP_OUTER_N_W block.*=[stairs]:shape=outer_left:half=top:facing=north [stairs]:shape=outer_right:half=top:facing=west #= BLOCK_STAIRS_TOP_OUTER_N_E block.*=[stairs]:shape=outer_left:half=top:facing=east [stairs]:shape=outer_right:half=top:facing=north #= BLOCK_STAIRS_TOP_OUTER_S_E block.*=[stairs]:shape=outer_left:half=top:facing=south [stairs]:shape=outer_right:half=top:facing=east #= BLOCK_STAIRS_TOP_OUTER_S_W block.*=[stairs]:shape=outer_left:half=top:facing=west [stairs]:shape=outer_right:half=top:facing=south #=== WALLS ===# group.wall=cobblestone_wall andesite_wall blackstone_wall brick_wall cobbled_deepslate_wall deepslate_brick_wall deepslate_tile_wall diorite_wall end_stone_brick_wall granite_wall mossy_cobblestone_wall mossy_stone_brick_wall mud_brick_wall nether_brick_wall polished_blackstone_brick_wall polished_blackstone_wall polished_deepslate_wall prismarine_wall red_nether_brick_wall red_sandstone_wall sandstone_wall stone_brick_wall \ create:cut_andesite_wall create:polished_cut_andesite_wall create:cut_andesite_brick_wall create:small_andesite_brick_wall \ create:cut_asurine_wall create:polished_cut_asurine_wall create:cut_asurine_brick_wall create:small_asurine_brick_wall \ create:cut_calcite_wall create:polished_cut_calcite_wall create:cut_calcite_brick_wall create:small_calcite_brick_wall \ create:cut_crimsite_wall create:polished_cut_crimsite_wall create:cut_crimsite_brick_wall create:small_crimsite_brick_wall \ create:cut_deepslate_wall create:polished_cut_deepslate_wall create:cut_deepslate_brick_wall create:small_deepslate_brick_wall \ create:cut_diorite_wall create:polished_cut_diorite_wall create:cut_diorite_brick_wall create:small_diorite_brick_wall \ create:cut_dripstone_wall create:polished_cut_dripstone_wall create:cut_dripstone_brick_wall create:small_dripstone_brick_wall \ create:cut_granite_wall create:polished_cut_granite_wall create:cut_granite_brick_wall create:small_granite_brick_wall \ create:cut_limestone_wall create:polished_cut_limestone_wall create:cut_limestone_brick_wall create:small_limestone_brick_wall \ create:cut_ochrum_wall create:polished_cut_ochrum_wall create:cut_ochrum_brick_wall create:small_ochrum_brick_wall \ create:cut_scorchia_wall create:polished_cut_scorchia_wall create:cut_scorchia_brick_wall create:small_scorchia_brick_wall \ create:cut_scoria_wall create:polished_cut_scoria_wall create:cut_scoria_brick_wall create:small_scoria_brick_wall \ create:cut_tuff_wall create:polished_cut_tuff_wall create:cut_tuff_brick_wall create:small_tuff_brick_wall \ create:cut_veridium_wall create:polished_cut_veridium_wall create:cut_veridium_brick_wall create:small_veridium_brick_wall #= BLOCK_WALL_POST, BLOCK_WALL_MIN block.*=[wall]:north=none:east=none:south=none:west=none:up=true #= BLOCK_WALL_POST_LOW_N block.*=[wall]:north=low:east=none:south=none:west=none:up=true #= BLOCK_WALL_POST_LOW_E block.*=[wall]:north=none:east=low:south=none:west=none:up=true #= BLOCK_WALL_POST_LOW_S block.*=[wall]:north=none:east=none:south=low:west=none:up=true #= BLOCK_WALL_POST_LOW_W block.*=[wall]:north=none:east=none:south=none:west=low:up=true #= BLOCK_WALL_POST_LOW_N_S block.*=[wall]:north=low:east=none:south=low:west=none:up=true #= BLOCK_WALL_POST_LOW_W_E block.*=[wall]:north=none:east=low:south=none:west=low:up=true #= BLOCK_WALL_POST_LOW_N_W block.*=[wall]:north=low:east=none:south=none:west=low:up=true #= BLOCK_WALL_POST_LOW_N_E block.*=[wall]:north=low:east=low:south=none:west=none:up=true #= BLOCK_WALL_POST_LOW_S_W block.*=[wall]:north=none:east=none:south=low:west=low:up=true #= BLOCK_WALL_POST_LOW_S_E block.*=[wall]:north=none:east=low:south=low:west=none:up=true #= BLOCK_WALL_POST_LOW_N_W_S block.*=[wall]:north=low:east=none:south=low:west=low:up=true #= BLOCK_WALL_POST_LOW_N_E_S block.*=[wall]:north=low:east=low:south=low:west=none:up=true #= BLOCK_WALL_POST_LOW_W_N_E block.*=[wall]:north=low:east=low:south=none:west=low:up=true #= BLOCK_WALL_POST_LOW_W_S_E block.*=[wall]:north=none:east=low:south=low:west=low:up=true #= BLOCK_WALL_POST_LOW_ALL block.*=[wall]:north=low:east=low:south=low:west=low:up=true #= BLOCK_WALL_POST_TALL_N block.*=[wall]:north=tall:east=none:south=none:west=none:up=true #= BLOCK_WALL_POST_TALL_E block.*=[wall]:north=none:east=tall:south=none:west=none:up=true #= BLOCK_WALL_POST_TALL_S block.*=[wall]:north=none:east=none:south=tall:west=none:up=true #= BLOCK_WALL_POST_TALL_W block.*=[wall]:north=none:east=none:south=none:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_S block.*=[wall]:north=tall:east=none:south=tall:west=none:up=true #= BLOCK_WALL_POST_TALL_W_E block.*=[wall]:north=none:east=tall:south=none:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_W block.*=[wall]:north=tall:east=none:south=none:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_E block.*=[wall]:north=tall:east=tall:south=none:west=none:up=true #= BLOCK_WALL_POST_TALL_S_W block.*=[wall]:north=none:east=none:south=tall:west=tall:up=true #= BLOCK_WALL_POST_TALL_S_E block.*=[wall]:north=none:east=tall:south=tall:west=none:up=true #= BLOCK_WALL_POST_TALL_N_W_S block.*=[wall]:north=tall:east=none:south=tall:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_E_S block.*=[wall]:north=tall:east=tall:south=tall:west=none:up=true #= BLOCK_WALL_POST_TALL_W_N_E block.*=[wall]:north=tall:east=tall:south=none:west=tall:up=true #= BLOCK_WALL_POST_TALL_W_S_E block.*=[wall]:north=none:east=tall:south=tall:west=tall:up=true #= BLOCK_WALL_POST_TALL_ALL block.*=[wall]:north=tall:east=tall:south=tall:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_LOW_S block.*=[wall]:north=tall:east=none:south=low:west=none:up=true #= BLOCK_WALL_POST_TALL_E_LOW_W block.*=[wall]:north=none:east=tall:south=none:west=low:up=true #= BLOCK_WALL_POST_TALL_S_LOW_N block.*=[wall]:north=low:east=none:south=tall:west=none:up=true #= BLOCK_WALL_POST_TALL_W_LOW_E block.*=[wall]:north=none:east=low:south=none:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_S_LOW_W_E block.*=[wall]:north=tall:east=low:south=tall:west=low:up=true #= BLOCK_WALL_POST_TALL_W_E_LOW_N_S block.*=[wall]:north=low:east=tall:south=low:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_W_LOW_S_E block.*=[wall]:north=tall:east=low:south=low:west=tall:up=true #= BLOCK_WALL_POST_TALL_N_E_LOW_S_W block.*=[wall]:north=tall:east=tall:south=low:west=low:up=true #= BLOCK_WALL_POST_TALL_S_W_LOW_N_E block.*=[wall]:north=low:east=low:south=tall:west=tall:up=true #= BLOCK_WALL_POST_TALL_S_E_LOW_N_W block.*=[wall]:north=low:east=tall:south=tall:west=low:up=true #= BLOCK_WALL_LOW_N_S block.*=[wall]:north=low:east=none:south=low:west=none:up=false #= BLOCK_WALL_LOW_W_E block.*=[wall]:north=none:east=low:south=none:west=low:up=false #= BLOCK_WALL_LOW_N_W block.*=[wall]:north=low:east=none:south=none:west=low:up=false #= BLOCK_WALL_LOW_N_E block.*=[wall]:north=low:east=low:south=none:west=none:up=false #= BLOCK_WALL_LOW_S_W block.*=[wall]:north=none:east=none:south=low:west=low:up=false #= BLOCK_WALL_LOW_S_E block.*=[wall]:north=none:east=low:south=low:west=none:up=false #= BLOCK_WALL_LOW_ALL block.*=[wall]:north=low:east=low:south=low:west=low:up=false #= BLOCK_WALL_TALL_N_S block.*=[wall]:north=tall:east=none:south=tall:west=none:up=false #= BLOCK_WALL_TALL_W_E block.*=[wall]:north=none:east=tall:south=none:west=tall:up=false #= BLOCK_WALL_TALL_N_W block.*=[wall]:north=tall:east=none:south=none:west=tall:up=false #= BLOCK_WALL_TALL_N_E block.*=[wall]:north=tall:east=tall:south=none:west=none:up=false #= BLOCK_WALL_TALL_S_W block.*=[wall]:north=none:east=none:south=tall:west=tall:up=false #= BLOCK_WALL_TALL_S_E block.*=[wall]:north=none:east=tall:south=tall:west=none:up=false #= BLOCK_WALL_TALL_ALL block.*=[wall]:north=tall:east=tall:south=tall:west=tall:up=false #= BLOCK_WALL_TALL_N_S_LOW_W_E block.*=[wall]:north=tall:east=low:south=tall:west=low:up=false #= BLOCK_WALL_TALL_W_E_LOW_N_S, BLOCK_WALL_MAX block.*=[wall]:north=low:east=tall:south=low:west=tall:up=false ####### ----- misc ----- ####### ## stuff #= BLOCK_END_PORTAL block.500= minecraft:end_portal ## all blocks here get exluded from POM. #= BLOCK_SIGN block.*= minecraft:oak_sign minecraft:spruce_sign minecraft:birch_sign minecraft:jungle_sign minecraft:acacia_sign minecraft:dark_oak_sign minecraft:mangrove_sign minecraft:crimson_sign minecraft:warped_sign minecraft:oak_wall_sign minecraft:spruce_wall_sign minecraft:birch_wall_sign minecraft:jungle_wall_sign minecraft:acacia_wall_sign minecraft:dark_oak_wall_sign minecraft:mangrove_wall_sign minecraft:crimson_wall_sign minecraft:warped_wall_sign ================================================ FILE: shaders/template/entity.properties ================================================ #= ENTITY_PLAYER entity.1601= player #= ENTITY_LIGHTNING entity.*= minecraft:lightning_bolt weather2:lightning_bolt ## misc stuff #= ENTITY_BLAZE entity.*= blaze minecraft:entity_flame #= ENTITY_DRAGON_WITHER entity.*= ender_dragon wither #= ENTITY_END_CRYSTAL entity.*= end_crystal #= ENTITY_GLOW_SQUID entity.*= glow_squid #= ENTITY_ITEM_FRAME entity.*= item_frame item_display #= ENTITY_MAGMA_CUBE entity.*= magma_cube #= ENTITY_TNT entity.*= tnt firework_rocket #= ENTITY_FIREBALL_SMALL entity.*= small_fireball #= ENTITY_SPECTRAL_ARROW entity.*= spectral_arrow bigglobe:torch_arrow entity_flame ################################################ ###### SUB-SURFACE SCATTERING ################################################ ## medium sss (same as strong sss for blocks) #= ENTITY_SSS_MEDIUM entity.1801 = giant ghast elder_guardian ## weak sss (same as weak sss for blocks) #= ENTITY_SSS_WEAK entity.* = 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 #removed: player blaze magma_cube ################################################ ###### REFLECTIVE TRANSLUCENTS ################################################ #= ENTITY_SLIME entity.* = slime ================================================ FILE: shaders/template/item.properties ================================================ #= ITEM_LIGHT_SOURCES item.1000 = soul_lantern conduit beacon sea_pickle sea_lantern glowstone redstone_torch jack_o_lantern magma_block lantern shroomlight end_rod lava_bucket 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:conquest:iron_candelabrum_1 conquest: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 #= ITEM_AMETHYST_BUD_LARGE item.* = large_amethyst_bud #= ITEM_AMETHYST_BUD_MEDIUM item.* = medium_amethyst_bud #= ITEM_AMETHYST_CLUSTER item.* = amethyst_cluster #= ITEM_BEACON item.* = beacon #= ITEM_BLAZE_ROD item.* = blaze_rod #= ITEM_END_ROD item.* = end_rod #= ITEM_FROGLIGHT_OCHRE item.* = ochre_froglight #= ITEM_FROGLIGHT_PEARLESCENT item.* = pearlescent_froglight #= ITEM_FROGLIGHT_VERDANT item.* = verdant_froglight #= ITEM_GLOW_BERRIES item.* = glow_berries #= ITEM_GLOW_LICHEN item.* = glow_lichen #= ITEM_GLOWSTONE item.* = glowstone #= ITEM_GLOWSTONE_DUST item.* = glowstone_dust #= ITEM_JACK_O_LANTERN item.* = jack_o_lantern #= ITEM_LANTERN item.* = lantern #= ITEM_LAVA_BUCKET item.* = lava_bucket ## ITEM_LIGHT # item.* = light #= ITEM_MAGMA item.* = magma_block #= ITEM_REDSTONE_TORCH item.* = redstone_torch #= ITEM_SCULK_CATALYST item.* = sculk_catalyst #= ITEM_SEA_LANTERN item.* = sea_lantern #= ITEM_SHROOMLIGHT item.* = shroomlight #= ITEM_SOUL_LANTERN item.* = soul_lantern #= ITEM_SOUL_TORCH item.* = soul_torch #= ITEM_TORCH item.* = torch ================================================ FILE: shaders/template/readme.md ================================================ # Editing Property Templates The block, item, and entity property files are generated with a template builder. To modify these templates, you will need [PoTater](https://github.com/Null-MC/PoTater) to regenerate the final property files. Download the latest [release](https://github.com/Null-MC/PoTater/releases) binary for your system, and place it in this `~/template` folder. Then run `~/update.sh` as needed to generate the new property files. # Editing Colored Lighting There are two ways to edit colored lighting (explained below). Either method will require editing the block.properties mappings. ## The Simple/Easy Way New block IDs can be easily added to existing block/light mappings. TODO: expand and example ## The Advanced Way Completely new block/light mappings can also be added, but it will require working with some GLSL code. TODO: expand and example ================================================ FILE: shaders/template/update.sh ================================================ #!/bin/bash ./potater item '../item.properties' '../lib/items.glsl' -t './item.properties' ./potater block '../block.properties' '../lib/blocks.glsl' -t './block.properties' ./potater entity '../entity.properties' '../lib/entities.glsl' -t './entity.properties' ================================================ FILE: shaders/texture/blueNoise.png.mcmeta ================================================ { "texture": { "blur": true, "clamp": false } } ================================================ FILE: shaders/texture/noises.png.mcmeta ================================================ { "texture": { "blur": true, "clamp": false } } ================================================ FILE: shaders/world-1/composite.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/fogBehindTranslucent_pass.fsh" ================================================ FILE: shaders/world-1/composite.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/fogBehindTranslucent_pass.vsh" ================================================ FILE: shaders/world-1/composite1.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite.fsh" ================================================ FILE: shaders/world-1/composite1.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite.vsh" ================================================ FILE: shaders/world-1/composite10.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite9.fsh" ================================================ FILE: shaders/world-1/composite10.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite9.vsh" ================================================ FILE: shaders/world-1/composite11.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite10.fsh" ================================================ FILE: shaders/world-1/composite11.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite10.vsh" ================================================ FILE: shaders/world-1/composite12.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite11.fsh" ================================================ FILE: shaders/world-1/composite12.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite11.vsh" ================================================ FILE: shaders/world-1/composite13.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite12.fsh" ================================================ FILE: shaders/world-1/composite13.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite12.vsh" ================================================ FILE: shaders/world-1/composite2.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite1.fsh" ================================================ FILE: shaders/world-1/composite2.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite1.vsh" ================================================ FILE: shaders/world-1/composite3.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite2.fsh" ================================================ FILE: shaders/world-1/composite3.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite2.vsh" ================================================ FILE: shaders/world-1/composite4.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite3.fsh" ================================================ FILE: shaders/world-1/composite4.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite3.vsh" ================================================ FILE: shaders/world-1/composite5.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite4.fsh" ================================================ FILE: shaders/world-1/composite5.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite4.vsh" ================================================ FILE: shaders/world-1/composite6.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite5.fsh" ================================================ FILE: shaders/world-1/composite6.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite5.vsh" ================================================ FILE: shaders/world-1/composite7.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite6.fsh" ================================================ FILE: shaders/world-1/composite7.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite6.vsh" ================================================ FILE: shaders/world-1/composite8.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite7.fsh" ================================================ FILE: shaders/world-1/composite8.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite7.vsh" ================================================ FILE: shaders/world-1/composite9.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite8.fsh" ================================================ FILE: shaders/world-1/composite9.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/composite8.vsh" ================================================ FILE: shaders/world-1/deferred.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/deferred.fsh" ================================================ FILE: shaders/world-1/deferred.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/deferred.vsh" ================================================ FILE: shaders/world-1/deferred1.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/deferred1.fsh" ================================================ FILE: shaders/world-1/deferred1.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/deferred1.vsh" ================================================ FILE: shaders/world-1/dh_terrain.fsh ================================================ #version 330 compatibility #define NETHER_SHADER #include "/dimensions/DH_solid.fsh" ================================================ FILE: shaders/world-1/dh_terrain.vsh ================================================ #version 330 compatibility #define NETHER_SHADER #include "/dimensions/DH_solid.vsh" ================================================ FILE: shaders/world-1/dh_water.fsh ================================================ #version 330 compatibility #define NETHER_SHADER #include "/dimensions/DH_translucent.fsh" ================================================ FILE: shaders/world-1/dh_water.vsh ================================================ #version 330 compatibility #define NETHER_SHADER #include "/dimensions/DH_translucent.vsh" ================================================ FILE: shaders/world-1/final.fsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/final.fsh" ================================================ FILE: shaders/world-1/final.vsh ================================================ #version 120 #define NETHER_SHADER #include "/dimensions/final.vsh" ================================================ FILE: shaders/world-1/gbuffers_armor_glint.fsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world-1/gbuffers_armor_glint.vsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world-1/gbuffers_basic.fsh ================================================ #version 120 #define LINES #define NETHER_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world-1/gbuffers_basic.vsh ================================================ #version 120 #define LINES #define NETHER_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world-1/gbuffers_beaconbeam.fsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world-1/gbuffers_beaconbeam.vsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world-1/gbuffers_block.fsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define NETHER_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world-1/gbuffers_block.vsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define NETHER_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world-1/gbuffers_block_translucent.fsh ================================================ #version 120 #define BLOCKENTITIES #define NETHER_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world-1/gbuffers_block_translucent.vsh ================================================ #version 120 #define BLOCKENTITIES #define NETHER_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world-1/gbuffers_damagedblock.fsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #define NETHER_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world-1/gbuffers_damagedblock.vsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #define NETHER_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world-1/gbuffers_entities.fsh ================================================ #version 120 #define WORLD #define ENTITIES #define NETHER_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world-1/gbuffers_entities.vsh ================================================ #version 120 // #define WORLD #define ENTITIES #define NETHER_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world-1/gbuffers_entities_glowing.fsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world-1/gbuffers_entities_glowing.vsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world-1/gbuffers_entities_translucent.fsh ================================================ #version 120 #define ENTITIES #define NETHER_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world-1/gbuffers_entities_translucent.vsh ================================================ #version 120 #define ENTITIES #define NETHER_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world-1/gbuffers_hand.fsh ================================================ #version 120 #define WORLD #define HAND #define NETHER_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world-1/gbuffers_hand.vsh ================================================ #version 120 #define WORLD #define HAND #define NETHER_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world-1/gbuffers_hand_water.fsh ================================================ #version 120 #define HAND #define NETHER_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world-1/gbuffers_hand_water.vsh ================================================ #version 120 #define HAND #define NETHER_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world-1/gbuffers_lightning.fsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world-1/gbuffers_lightning.vsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world-1/gbuffers_skybasic.fsh ================================================ #version 120 /* RENDERTARGETS:0 */ void main() { discard; } ================================================ FILE: shaders/world-1/gbuffers_skybasic.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world-1/gbuffers_skytextured.fsh ================================================ #version 120 void main() { discard; return; } ================================================ FILE: shaders/world-1/gbuffers_skytextured.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world-1/gbuffers_spidereyes.fsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world-1/gbuffers_spidereyes.vsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world-1/gbuffers_terrain.fsh ================================================ #version 120 #define WORLD #define NETHER_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world-1/gbuffers_terrain.vsh ================================================ #version 120 #define WORLD #define NETHER_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world-1/gbuffers_textured.fsh ================================================ #version 120 #define PARTICLES #define NETHER_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world-1/gbuffers_textured.vsh ================================================ #version 120 #define PARTICLES #define NETHER_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world-1/gbuffers_textured_lit.fsh ================================================ #version 120 #define LIT #define PARTICLES #define NETHER_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world-1/gbuffers_textured_lit.vsh ================================================ #version 120 #define LIT #define PARTICLES #define NETHER_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world-1/gbuffers_water.fsh ================================================ #version 120 #define NETHER #define NETHER_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world-1/gbuffers_water.vsh ================================================ #version 120 #define NETHER #define NETHER_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world-1/gbuffers_weather.fsh ================================================ #version 120 #define WEATHER #define NETHER_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world-1/gbuffers_weather.vsh ================================================ #version 120 #define WEATHER #define NETHER_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world-1/setup.csh ================================================ #version 430 compatibility #define RENDER_SETUP #include "/lib/settings.glsl" #include "/dimensions/setup.csh" ================================================ FILE: shaders/world-1/shadow.fsh ================================================ #version 120 #include "/lib/settings.glsl" //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_FragData[0] = vec4(0.0); } ================================================ FILE: shaders/world-1/shadow.vsh ================================================ #version 120 #include "/lib/settings.glsl" #ifdef IS_LPV_ENABLED #extension GL_ARB_explicit_attrib_location: enable #extension GL_ARB_shader_image_load_store: enable #extension GL_ARB_shading_language_packing : enable #endif #define RENDER_SHADOW /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #ifdef IS_LPV_ENABLED attribute vec4 mc_Entity; #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE attribute vec4 at_midBlock; #else attribute vec3 at_midBlock; #endif attribute vec3 vaPosition; #ifdef LPV_ENTITY_LIGHTS uniform usampler1D texBlockData; #endif uniform int renderStage; uniform vec3 chunkOffset; uniform int currentRenderedItemId; uniform int blockEntityId; uniform int entityId; #include "/lib/projections.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif void main() { #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store #ifdef LPV_NOSHADOW_HACK vec3 playerpos = gl_Vertex.xyz; #else vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 playerpos = toShadowSpace(position); #endif PopulateShadowVoxel(playerpos); #endif gl_Position = vec4(-1.0); } ================================================ FILE: shaders/world-1/shadowcomp.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp.csh" ================================================ FILE: shaders/world0/begin.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/begin.csh" ================================================ FILE: shaders/world0/composite.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/fogBehindTranslucent_pass.fsh" ================================================ FILE: shaders/world0/composite.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/fogBehindTranslucent_pass.vsh" ================================================ FILE: shaders/world0/composite1.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite.fsh" ================================================ FILE: shaders/world0/composite1.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite.vsh" ================================================ FILE: shaders/world0/composite10.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite9.fsh" ================================================ FILE: shaders/world0/composite10.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite9.vsh" ================================================ FILE: shaders/world0/composite11.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite10.fsh" ================================================ FILE: shaders/world0/composite11.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite10.vsh" ================================================ FILE: shaders/world0/composite12.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite11.fsh" ================================================ FILE: shaders/world0/composite12.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite11.vsh" ================================================ FILE: shaders/world0/composite13.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite12.fsh" ================================================ FILE: shaders/world0/composite13.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite12.vsh" ================================================ FILE: shaders/world0/composite2.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite1.fsh" ================================================ FILE: shaders/world0/composite2.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite1.vsh" ================================================ FILE: shaders/world0/composite3.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite2.fsh" ================================================ FILE: shaders/world0/composite3.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite2.vsh" ================================================ FILE: shaders/world0/composite4.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite3.fsh" ================================================ FILE: shaders/world0/composite4.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite3.vsh" ================================================ FILE: shaders/world0/composite5.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite4.fsh" ================================================ FILE: shaders/world0/composite5.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite4.vsh" ================================================ FILE: shaders/world0/composite6.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite5.fsh" ================================================ FILE: shaders/world0/composite6.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite5.vsh" ================================================ FILE: shaders/world0/composite7.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite6.fsh" ================================================ FILE: shaders/world0/composite7.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite6.vsh" ================================================ FILE: shaders/world0/composite8.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite7.fsh" ================================================ FILE: shaders/world0/composite8.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite7.vsh" ================================================ FILE: shaders/world0/composite9.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite8.fsh" ================================================ FILE: shaders/world0/composite9.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite8.vsh" ================================================ FILE: shaders/world0/deferred.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/deferred.fsh" ================================================ FILE: shaders/world0/deferred.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/deferred.vsh" ================================================ FILE: shaders/world0/deferred1.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/deferred1.fsh" ================================================ FILE: shaders/world0/deferred1.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/deferred1.vsh" ================================================ FILE: shaders/world0/deferred2.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/deferred2.fsh" ================================================ FILE: shaders/world0/deferred2.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/deferred2.vsh" ================================================ FILE: shaders/world0/dh_generic.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #include "/dimensions/DH_generic.fsh" ================================================ FILE: shaders/world0/dh_generic.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #include "/dimensions/DH_generic.vsh" ================================================ FILE: shaders/world0/dh_shadow.fsh ================================================ #version 120 //#extension GL_ARB_shader_texture_lod : disable #include "/lib/settings.glsl" flat in int isWater; in vec2 texcoord; in float overdrawCull; uniform sampler2D tex; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { if(isWater > 0){ discard; return; } if(overdrawCull < 1.0){ discard; return; } gl_FragData[0] = texture2D(tex, texcoord.xy); } ================================================ FILE: shaders/world0/dh_shadow.vsh ================================================ #version 120 /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #include "/lib/settings.glsl" #define SHADOW_MAP_BIAS 0.5 const float PI = 3.1415927; out vec3 color; flat out int isWater; #include "/lib/Shadow_Params.glsl" #include "/lib/projections.glsl" #include "/lib/DistantHorizons_projections.glsl" out float overdrawCull; // uniform int renderStage; void main() { isWater = 0; if(gl_Color.a < 1.0) isWater = 1; color = gl_Color.rgb; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; #ifdef DH_OVERDRAW_PREVENTION vec3 worldpos = toShadowSpace(position); overdrawCull = 1.0 - clamp(1.0 - length(worldpos) / far,0.0,1.0); #else overdrawCull = 1.0; #endif #ifdef DISTORT_SHADOWMAP gl_Position = BiasShadowProjection(toClipSpace4(position)); #else gl_Position = toClipSpace4(position); #endif gl_Position.z /= 6.0; #ifdef LPV_SHADOWS gl_Position.xy = gl_Position.xy * 0.8 - 0.2 * gl_Position.w; #endif } ================================================ FILE: shaders/world0/dh_terrain.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #include "/dimensions/DH_solid.fsh" ================================================ FILE: shaders/world0/dh_terrain.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #include "/dimensions/DH_solid.vsh" ================================================ FILE: shaders/world0/dh_water.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #include "/dimensions/DH_translucent.fsh" ================================================ FILE: shaders/world0/dh_water.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #include "/dimensions/DH_translucent.vsh" ================================================ FILE: shaders/world0/final.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/final.fsh" ================================================ FILE: shaders/world0/final.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/final.vsh" ================================================ FILE: shaders/world0/gbuffers_armor_glint.fsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0/gbuffers_armor_glint.vsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0/gbuffers_basic.fsh ================================================ #version 120 #define LINES #define OVERWORLD_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0/gbuffers_basic.vsh ================================================ #version 120 #define LINES #define OVERWORLD_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0/gbuffers_beaconbeam.fsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0/gbuffers_beaconbeam.vsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0/gbuffers_block.fsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0/gbuffers_block.vsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0/gbuffers_block_translucent.fsh ================================================ #version 120 #define BLOCKENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0/gbuffers_block_translucent.vsh ================================================ #version 120 #define BLOCKENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0/gbuffers_damagedblock.fsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0/gbuffers_damagedblock.vsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0/gbuffers_entities.fsh ================================================ #version 120 #define WORLD #define ENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0/gbuffers_entities.vsh ================================================ #version 120 #define WORLD #define ENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0/gbuffers_entities_glowing.fsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0/gbuffers_entities_glowing.vsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0/gbuffers_entities_translucent.fsh ================================================ #version 120 #define ENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0/gbuffers_entities_translucent.vsh ================================================ #version 120 #define ENTITIES #define OVERWORLD_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0/gbuffers_hand.fsh ================================================ #version 120 #define WORLD #define HAND #define OVERWORLD_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0/gbuffers_hand.vsh ================================================ #version 120 #define WORLD #define HAND #define OVERWORLD_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0/gbuffers_hand_water.fsh ================================================ #version 120 #define HAND #define OVERWORLD_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0/gbuffers_hand_water.vsh ================================================ #version 120 #define HAND #define OVERWORLD_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0/gbuffers_lightning.fsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0/gbuffers_lightning.vsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0/gbuffers_skybasic.fsh ================================================ #version 120 void main() { discard; } ================================================ FILE: shaders/world0/gbuffers_skybasic.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world0/gbuffers_skytextured.fsh ================================================ #version 120 #include "/lib/settings.glsl" #if RESOURCEPACK_SKY != 0 in vec4 color; in vec2 texcoord; uniform sampler2D texture; uniform sampler2D depthtex0; uniform int renderStage; uniform vec2 texelSize; float interleaved_gradientNoise(){ vec2 coord = gl_FragCoord.xy ; float noise = fract(52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715))); return noise ; } vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } #endif void main() { #if RESOURCEPACK_SKY != 0 /* RENDERTARGETS:2 */ vec4 COLOR = texture2D(texture, texcoord.xy) * color; bool isSun = renderStage == MC_RENDER_STAGE_SUN || renderStage == 4; bool isMoon = renderStage == MC_RENDER_STAGE_MOON || renderStage == 5; bool isSkyBox = (renderStage == MC_RENDER_STAGE_SKY || renderStage == MC_RENDER_STAGE_CUSTOM_SKY) || (renderStage == 1 || renderStage == 3); #if RESOURCEPACK_SKY == 1 if(isMoon || isSun) { discard; return; } #endif #if RESOURCEPACK_SKY == 3 if(isSkyBox) { discard; return; } #endif vec3 NEWCOLOR = COLOR.rgb; if(isSun) NEWCOLOR.rgb = COLOR.rgb * 10.0; if(isMoon) NEWCOLOR.rgb = COLOR.rgb * 5.0; if(isSkyBox) NEWCOLOR.rgb = COLOR.rgb * 2.0; NEWCOLOR.rgb = toLinear(NEWCOLOR.rgb); NEWCOLOR.rgb = max(NEWCOLOR.rgb - NEWCOLOR.rgb * interleaved_gradientNoise()*0.05, 0.0); gl_FragData[0] = vec4(NEWCOLOR.rgb * 0.1, COLOR.a); #else discard; #endif } ================================================ FILE: shaders/world0/gbuffers_skytextured.vsh ================================================ #version 120 #include "/lib/settings.glsl" #if RESOURCEPACK_SKY != 0 #include "/lib/res_params.glsl" /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ out vec4 color; out vec2 texcoord; uniform vec2 texelSize; 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.); #endif void main() { gl_Position = ftransform(); #if RESOURCEPACK_SKY != 0 texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; color = gl_Color; #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 #endif } ================================================ FILE: shaders/world0/gbuffers_spidereyes.fsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0/gbuffers_spidereyes.vsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0/gbuffers_terrain.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define WORLD #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0/gbuffers_terrain.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define WORLD #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0/gbuffers_textured.fsh ================================================ #version 120 #define PARTICLES #define OVERWORLD_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0/gbuffers_textured.vsh ================================================ #version 120 #define PARTICLES #define OVERWORLD_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0/gbuffers_textured_lit.fsh ================================================ #version 120 #define LIT #define PARTICLES #define OVERWORLD_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0/gbuffers_textured_lit.vsh ================================================ #version 120 #define LIT #define PARTICLES #define OVERWORLD_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0/gbuffers_water.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0/gbuffers_water.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0/gbuffers_weather.fsh ================================================ #version 120 #define WEATHER #define OVERWORLD_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0/gbuffers_weather.vsh ================================================ #version 120 #define WEATHER #define OVERWORLD_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0/physics_ocean.fsh ================================================ #version 120 #define PHYSICSMOD_FRAGMENT #define PHYSICSMOD_OCEAN_SHADER #define OVERWORLD_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0/physics_ocean.vsh ================================================ #version 120 #define PHYSICSMOD_VERTEX #define PHYSICSMOD_OCEAN_SHADER #define OVERWORLD_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0/setup.csh ================================================ #version 430 compatibility #define RENDER_SETUP #include "/lib/settings.glsl" #include "/dimensions/setup.csh" ================================================ FILE: shaders/world0/shadow.fsh ================================================ #version 120 #include "/lib/settings.glsl" in vec4 color; #ifdef TRANSLUCENT_COLORED_SHADOWS in vec3 Fcolor; #else const vec3 Fcolor = vec3(1.0); #endif in vec2 Ftexcoord; uniform sampler2D tex; uniform sampler2D noisetex; #ifdef LPV_SHADOWS #include "/lib/cube/cubeData.glsl" flat in int render; #endif float blueNoise(){ return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { #ifdef LPV_SHADOWS if (render >= 0 && ( any(lessThan(gl_FragCoord.xy, minBounds[render >> 4] + renderBounds[render & 15])) || any(greaterThan(gl_FragCoord.xy, maxBounds[render >> 4] + renderBounds[render & 15])))){ discard; return; } #endif vec4 shadowColor = vec4(texture2D(tex,Ftexcoord.xy).rgb * Fcolor.rgb, texture2DLod(tex, Ftexcoord.xy, 0).a); #ifdef TRANSLUCENT_COLORED_SHADOWS if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); #endif // gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb, texture2DLod(tex, texcoord.xy, 0).a); gl_FragData[0] = shadowColor; #ifdef Stochastic_Transparent_Shadows if(gl_FragData[0].a < blueNoise()){ discard; return; } #endif } ================================================ FILE: shaders/world0/shadow.gsh ================================================ #version 330 compatibility layout (triangles) in; layout (triangle_strip) out; #include "/lib/settings.glsl" #define OVERWORLD_SHADER #ifdef LPV_SHADOWS // limit vertex output to light count to reduce overhead // can be slow when the shader wants to output too many vertices, even if they aren't outputted // there are 3 vertices for the regular shadows, and up to 3x5 for each light #if LPV_SHADOWS_LIGHT_COUNT == 1 layout (max_vertices = 18) out; #elif LPV_SHADOWS_LIGHT_COUNT == 2 layout (max_vertices = 33) out; #elif LPV_SHADOWS_LIGHT_COUNT == 3 layout (max_vertices = 48) out; #elif LPV_SHADOWS_LIGHT_COUNT == 4 layout (max_vertices = 63) out; #elif LPV_SHADOWS_LIGHT_COUNT == 5 layout (max_vertices = 78) out; #elif LPV_SHADOWS_LIGHT_COUNT == 6 layout (max_vertices = 93) out; #else #ifdef TRANSLUCENT_COLORED_SHADOWS // colored shadows need more vertex data, so can only push fewer vertices layout (max_vertices = 102) out; #else #if LPV_SHADOWS_LIGHT_COUNT == 7 layout (max_vertices = 108) out; #elif LPV_SHADOWS_LIGHT_COUNT == 8 layout (max_vertices = 123) out; #elif LPV_SHADOWS_LIGHT_COUNT == 9 layout (max_vertices = 138) out; #endif #endif #endif #else // only 3 shadow vertices layout (max_vertices = 3) out; #endif in vec4 color[3]; in vec2 texcoord[3]; out vec2 Ftexcoord; #ifdef TRANSLUCENT_COLORED_SHADOWS out vec3 Fcolor; #endif #ifdef LPV_SHADOWS in vec3 worldPos[3]; flat in vec3 worldNormal[3]; flat out int render; #include "/lib/cube/emit.glsl" #include "/lib/cube/lightData.glsl" uniform usampler1D texCloseLights; uniform vec3 cameraPosition; uniform vec3 previousCameraPosition; #ifdef LPV_HAND_SHADOWS uniform vec3 relativeEyePosition; uniform vec3 playerLookVector; #endif #endif void main() { #ifdef LPV_SHADOWS for (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) { uint data = texelFetch(texCloseLights, i, 0).r; float dist; ivec3 pos; uint id; if (getLightData(data, dist, pos, id)) { vec3 lightPos = -fract(previousCameraPosition) + (previousCameraPosition - cameraPosition) + vec3(pos) - 14.5; #ifdef LPV_HAND_SHADOWS if (dist < 0.0001) { vec2 viewDir = normalize(playerLookVector.xz) * 0.25; lightPos = -relativeEyePosition + vec3(viewDir.x, 0, viewDir.y); } #endif vec3 dists = vec3(length(worldPos[0] - lightPos), length(worldPos[1] - lightPos), length(worldPos[2] - lightPos)); if ( // check that all vertices are in range, don't want to render unnecessary vertices all(lessThan(dists, vec3(14))) && // discard backfaces, if they are closer than 1 block, since those can be the faces from the light (max(max(dists.x, dists.y), dists.z) > 1.45 || dot(worldNormal[0], worldPos[0] - lightPos) < 0)) { for (int f = 0; f < 6; f++) { render = i + f * 16; emitCubemap(directionMatices[f], cubeFaceOffsets[f]*2+renderOffsets[i]*2, lightPos); } } } else { // since lights are sorted, if one light is invalid all followings are aswell break; } } render = -1; #endif for (int i = 0; i < 3; i++) { gl_Position = gl_in[i].gl_Position; #ifdef LPV_SHADOWS gl_Position.xy = gl_Position.xy * 0.8 - 0.2 * gl_Position.w; #endif Ftexcoord = texcoord[i].xy; #ifdef TRANSLUCENT_COLORED_SHADOWS Fcolor = color[i].rgb; #endif EmitVertex(); } EndPrimitive(); } ================================================ FILE: shaders/world0/shadow.vsh ================================================ #version 120 #include "/lib/settings.glsl" #ifdef IS_LPV_ENABLED #extension GL_ARB_explicit_attrib_location: enable #extension GL_ARB_shader_image_load_store: enable #endif #define RENDER_SHADOW /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #define SHADOW_MAP_BIAS 0.5 const float PI = 3.1415927; out vec2 texcoord; uniform int hideGUI; uniform float frameTimeCounter; uniform int frameCounter; uniform float screenBrightness; uniform vec3 sunVec; uniform float aspectRatio; uniform float sunElevation; uniform vec3 sunPosition; uniform float lightSign; uniform float cosFov; uniform vec3 shadowViewDir; uniform vec3 shadowCamera; uniform vec3 shadowLightVec; uniform float shadowMaxProj; attribute vec4 mc_midTexCoord; out vec4 color; #ifdef LPV_SHADOWS out vec3 worldPos; flat out vec3 worldNormal; #endif attribute vec4 mc_Entity; uniform int blockEntityId; uniform int entityId; #include "/lib/projections.glsl" #include "/lib/Shadow_Params.glsl" #include "/lib/bokeh.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #ifdef IS_LPV_ENABLED #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE attribute vec4 at_midBlock; #else attribute vec3 at_midBlock; #endif uniform int currentRenderedItemId; uniform int renderStage; #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif const float PI48 = 150.796447372*WAVY_SPEED; float pi2wt = PI48*frameTimeCounter; vec2 calcWave(in vec3 pos) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; return ret; } vec3 calcMovePlants(in vec3 pos) { vec2 move1 = calcWave(pos ); float move1y = -length(move1); return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0; } vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; return ret; } vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; return move1*5.*WAVY_STRENGTH/255.; } bool intersectCone(float coneHalfAngle, vec3 coneTip , vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) { vec3 co = rayOrig - coneTip; float prod = dot(normalize(co),coneAxis); if (prod <= -coneHalfAngle) return true; //In view frustrum float a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle; float b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle); float c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle; float det = b*b - 4.*a*c; if (det < 0.) return false; // No intersection with either forward cone and backward cone det = sqrt(det); float t2 = (-b + det) / (2. * a); if (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works return true; } // uniform float far; #include "/lib/DistantHorizons_projections.glsl" // uniform int renderStage; void main() { texcoord.xy = gl_MultiTexCoord0.xy; color = gl_Color; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 playerpos = toShadowSpace(position); #ifdef LPV_SHADOWS worldPos = playerpos; worldNormal = mat3(shadowModelViewInverse) * gl_NormalMatrix * gl_Normal; #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store PopulateShadowVoxel(playerpos); #endif 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)); if(( // these wave off of the ground. the area connected to the ground does not wave. (InterpolateFromBase && (mc_Entity.x == BLOCK_GRASS_TALL_LOWER || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL)) // these wave off of the ceiling. the area connected to the ceiling does not wave. || (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE)) // these wave off of the air. they wave uniformly || (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING) #ifndef RP_MODEL_FIX || (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) #endif ) && length(position) < 32.0) { // apply displacement for waving plant blocks worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,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 || mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) 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; } #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; gl_Position = BiasShadowProjection(toClipSpace4(position)); #else gl_Position = toClipSpace4(position); #endif if (mc_Entity.x == BLOCK_WATER) gl_Position.w = -1.0; gl_Position.z /= 6.0; } ================================================ FILE: shaders/world0/shadowcomp.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp.csh" ================================================ FILE: shaders/world0/shadowcomp3.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp3.csh" ================================================ FILE: shaders/world0/shadowcomp4.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp4.csh" ================================================ FILE: shaders/world0/shadowcomp5.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp5.csh" ================================================ FILE: shaders/world0_Aether/composite.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/fogBehindTranslucent_pass.fsh" ================================================ FILE: shaders/world0_Aether/composite.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/fogBehindTranslucent_pass.vsh" ================================================ FILE: shaders/world0_Aether/composite1.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite.fsh" ================================================ FILE: shaders/world0_Aether/composite1.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite.vsh" ================================================ FILE: shaders/world0_Aether/composite10.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite9.fsh" ================================================ FILE: shaders/world0_Aether/composite10.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite9.vsh" ================================================ FILE: shaders/world0_Aether/composite12.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite11.fsh" ================================================ FILE: shaders/world0_Aether/composite12.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite11.vsh" ================================================ FILE: shaders/world0_Aether/composite13.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite12.fsh" ================================================ FILE: shaders/world0_Aether/composite13.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite12.vsh" ================================================ FILE: shaders/world0_Aether/composite2.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite1.fsh" ================================================ FILE: shaders/world0_Aether/composite2.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite1.vsh" ================================================ FILE: shaders/world0_Aether/composite3.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite2.fsh" ================================================ FILE: shaders/world0_Aether/composite3.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite2.vsh" ================================================ FILE: shaders/world0_Aether/composite4.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite3.fsh" ================================================ FILE: shaders/world0_Aether/composite4.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite3.vsh" ================================================ FILE: shaders/world0_Aether/composite5.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite4.fsh" ================================================ FILE: shaders/world0_Aether/composite5.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite4.vsh" ================================================ FILE: shaders/world0_Aether/composite6.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite5.fsh" ================================================ FILE: shaders/world0_Aether/composite6.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite5.vsh" ================================================ FILE: shaders/world0_Aether/composite7.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite6.fsh" ================================================ FILE: shaders/world0_Aether/composite7.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite6.vsh" ================================================ FILE: shaders/world0_Aether/composite8.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite7.fsh" ================================================ FILE: shaders/world0_Aether/composite8.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite7.vsh" ================================================ FILE: shaders/world0_Aether/composite9.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite8.fsh" ================================================ FILE: shaders/world0_Aether/composite9.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/composite8.vsh" ================================================ FILE: shaders/world0_Aether/deferred.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/deferred.fsh" ================================================ FILE: shaders/world0_Aether/deferred.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/deferred.vsh" ================================================ FILE: shaders/world0_Aether/deferred1.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/deferred1.fsh" ================================================ FILE: shaders/world0_Aether/deferred1.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/deferred1.vsh" ================================================ FILE: shaders/world0_Aether/deferred2.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/deferred2.fsh" ================================================ FILE: shaders/world0_Aether/deferred2.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/deferred2.vsh" ================================================ FILE: shaders/world0_Aether/dh_generic.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/DH_generic.fsh" ================================================ FILE: shaders/world0_Aether/dh_generic.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/DH_generic.vsh" ================================================ FILE: shaders/world0_Aether/dh_shadow.fsh ================================================ #version 120 //#extension GL_ARB_shader_texture_lod : disable #include "/lib/settings.glsl" flat varying int water; varying vec2 texcoord; varying float overdrawCull; uniform sampler2D tex; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { if(water > 0){ discard; return; } if(overdrawCull < 1.0){ discard; return; } gl_FragData[0] = texture2D(tex, texcoord.xy); } ================================================ FILE: shaders/world0_Aether/dh_shadow.vsh ================================================ #version 120 /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #include "/lib/settings.glsl" #define SHADOW_MAP_BIAS 0.5 const float PI = 3.1415927; varying vec2 texcoord; flat varying int water; #include "/lib/projections.glsl" #include "/lib/Shadow_Params.glsl" // uniform float far; #include "/lib/DistantHorizons_projections.glsl" varying float overdrawCull; // uniform int renderStage; void main() { water = 0; if(gl_Color.a < 1.0) water = 1; texcoord.xy = gl_MultiTexCoord0.xy; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; #ifdef DH_OVERDRAW_PREVENTION vec3 worldpos = toShadowSpace(position); overdrawCull = 1.0 - clamp(1.0 - length(worldpos) / far,0.0,1.0); #else overdrawCull = 1.0; #endif #ifdef DISTORT_SHADOWMAP gl_Position = BiasShadowProjection(toClipSpace4(position)); #else gl_Position = toClipSpace4(position); #endif gl_Position.z /= 6.0; } ================================================ FILE: shaders/world0_Aether/dh_terrain.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/DH_solid.fsh" ================================================ FILE: shaders/world0_Aether/dh_terrain.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/DH_solid.vsh" ================================================ FILE: shaders/world0_Aether/dh_water.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/DH_translucent.fsh" ================================================ FILE: shaders/world0_Aether/dh_water.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/DH_translucent.vsh" ================================================ FILE: shaders/world0_Aether/final.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/final.fsh" ================================================ FILE: shaders/world0_Aether/final.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/final.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_armor_glint.fsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_armor_glint.vsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_basic.fsh ================================================ #version 120 #define LINES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_basic.vsh ================================================ #version 120 #define LINES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_beaconbeam.fsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_beaconbeam.vsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_block.fsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_block.vsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_block_translucent.fsh ================================================ #version 120 #define BLOCKENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_block_translucent.vsh ================================================ #version 120 #define BLOCKENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_damagedblock.fsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_damagedblock.vsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_entities.fsh ================================================ #version 120 #define WORLD #define ENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_entities.vsh ================================================ #version 120 #define WORLD #define ENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_entities_glowing.fsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_entities_glowing.vsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_entities_translucent.fsh ================================================ #version 120 #define ENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_entities_translucent.vsh ================================================ #version 120 #define ENTITIES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_hand.fsh ================================================ #version 120 #define WORLD #define HAND #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_hand.vsh ================================================ #version 120 #define WORLD #define HAND #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_hand_water.fsh ================================================ #version 120 #define HAND #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_hand_water.vsh ================================================ #version 120 #define HAND #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_lightning.fsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_lightning.vsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_skybasic.fsh ================================================ #version 120 void main() { discard; } ================================================ FILE: shaders/world0_Aether/gbuffers_skybasic.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world0_Aether/gbuffers_skytextured.fsh ================================================ #version 120 #include "/lib/settings.glsl" #if RESOURCEPACK_SKY != 0 varying vec4 color; varying vec2 texcoord; uniform sampler2D texture; uniform sampler2D depthtex0; uniform int renderStage; uniform vec2 texelSize; float interleaved_gradientNoise(){ // vec2 coord = gl_FragCoord.xy + (frameCounter%40000); vec2 coord = gl_FragCoord.xy ; // vec2 coord = gl_FragCoord.xy; float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) ); return noise ; } vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } #endif void main() { #if RESOURCEPACK_SKY != 0 /* RENDERTARGETS:2 */ vec4 COLOR = texture2D(texture, texcoord.xy) * color; bool isSun = renderStage == MC_RENDER_STAGE_SUN || renderStage == 4; bool isMoon = renderStage == MC_RENDER_STAGE_MOON || renderStage == 5; bool isSkyBox = (renderStage == MC_RENDER_STAGE_SKY || renderStage == MC_RENDER_STAGE_CUSTOM_SKY) || (renderStage == 1 || renderStage == 3); #if RESOURCEPACK_SKY == 1 if(isMoon || isSun) { discard; return; } #endif #if RESOURCEPACK_SKY == 3 if(isSkyBox) { discard; return; } #endif vec3 NEWCOLOR = COLOR.rgb; if(isSun) NEWCOLOR.rgb = COLOR.rgb * 10.0; if(isMoon) NEWCOLOR.rgb = COLOR.rgb * 5.0; if(isSkyBox) NEWCOLOR.rgb = COLOR.rgb * 2.0; NEWCOLOR.rgb = toLinear(NEWCOLOR.rgb); NEWCOLOR.rgb = max(NEWCOLOR.rgb - NEWCOLOR.rgb * interleaved_gradientNoise()*0.05, 0.0); gl_FragData[0] = vec4(NEWCOLOR.rgb*0.1, COLOR.a); #else discard; #endif } ================================================ FILE: shaders/world0_Aether/gbuffers_skytextured.vsh ================================================ #version 120 #include "/lib/settings.glsl" #if RESOURCEPACK_SKY != 0 #include "/lib/res_params.glsl" /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ varying vec4 color; varying vec2 texcoord; uniform vec2 texelSize; 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.); #endif void main() { gl_Position = ftransform(); #if RESOURCEPACK_SKY != 0 texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; color = gl_Color; #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 #endif } ================================================ FILE: shaders/world0_Aether/gbuffers_spidereyes.fsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_spidereyes.vsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_terrain.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #define WORLD #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_terrain.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #define WORLD #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_textured.fsh ================================================ #version 120 #define PARTICLES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_textured.vsh ================================================ #version 120 #define PARTICLES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_textured_lit.fsh ================================================ #version 120 #define LIT #define PARTICLES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_textured_lit.vsh ================================================ #version 120 #define LIT #define PARTICLES #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_water.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_water.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Aether/gbuffers_weather.fsh ================================================ #version 120 #define WEATHER #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Aether/gbuffers_weather.vsh ================================================ #version 120 #define WEATHER #define OVERWORLD_SHADER #define AETHER_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Aether/setup.csh ================================================ #version 430 compatibility #define RENDER_SETUP #include "/lib/settings.glsl" #include "/dimensions/setup.csh" ================================================ FILE: shaders/world0_Aether/shadow.fsh ================================================ #version 120 #include "/lib/settings.glsl" varying vec4 color; varying vec2 texcoord; uniform sampler2D tex; uniform sampler2D noisetex; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// float blueNoise(){ return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); } 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); #ifdef Stochastic_Transparent_Shadows if(gl_FragData[0].a < blueNoise()) { discard; return;} #endif } ================================================ FILE: shaders/world0_Aether/shadow.vsh ================================================ #version 120 #include "/lib/settings.glsl" #ifdef IS_LPV_ENABLED #extension GL_ARB_explicit_attrib_location: enable #extension GL_ARB_shader_image_load_store: enable #endif #define RENDER_SHADOW /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #define SHADOW_MAP_BIAS 0.5 const float PI = 3.1415927; varying vec2 texcoord; uniform int hideGUI; uniform float frameTimeCounter; uniform int frameCounter; uniform float screenBrightness; uniform vec3 sunVec; uniform float aspectRatio; uniform float sunElevation; uniform vec3 sunPosition; uniform float lightSign; uniform float cosFov; uniform vec3 shadowViewDir; uniform vec3 shadowCamera; uniform vec3 shadowLightVec; uniform float shadowMaxProj; attribute vec4 mc_midTexCoord; varying vec4 color; attribute vec4 mc_Entity; uniform int blockEntityId; uniform int entityId; #include "/lib/Shadow_Params.glsl" #include "/lib/bokeh.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/projections.glsl" #include "/lib/DistantHorizons_projections.glsl" #ifdef IS_LPV_ENABLED #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE attribute vec4 at_midBlock; #else attribute vec3 at_midBlock; #endif uniform int currentRenderedItemId; uniform int renderStage; #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif const float PI48 = 150.796447372*WAVY_SPEED; float pi2wt = PI48*frameTimeCounter; vec2 calcWave(in vec3 pos) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; return ret; } vec3 calcMovePlants(in vec3 pos) { vec2 move1 = calcWave(pos); float move1y = -length(move1); return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0; } vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; return ret; } vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { vec3 move1 = calcWaveLeaves(pos, 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; return move1*5.*WAVY_STRENGTH/255.; } bool intersectCone(float coneHalfAngle, vec3 coneTip, vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) { vec3 co = rayOrig - coneTip; float prod = dot(normalize(co),coneAxis); if (prod <= -coneHalfAngle) return true; //In view frustrum float a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle; float b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle); float c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle; float det = b*b - 4.*a*c; if (det < 0.) return false; // No intersection with either forward cone and backward cone det = sqrt(det); float t2 = (-b + det) / (2. * a); if (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works return true; } void main() { texcoord.xy = gl_MultiTexCoord0.xy; color = gl_Color; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; // #if defined IS_LPV_ENABLED || defined WAVY_PLANTS || !defined PLANET_CURVATURE vec3 playerpos = toShadowSpace(position); // #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store PopulateShadowVoxel(playerpos); #endif 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)); if(( // these wave off of the ground. the area connected to the ground does not wave. (InterpolateFromBase && (mc_Entity.x == BLOCK_GRASS_TALL_LOWER || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL)) // these wave off of the ceiling. the area connected to the ceiling does not wave. || (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE)) // these wave off of the air. they wave uniformly || (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING) #ifndef RP_MODEL_FIX || (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) #endif ) && length(position) < 32.0) { // apply displacement for waving plant blocks worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,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 || mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) 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; } #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; gl_Position = BiasShadowProjection(toClipSpace4(position)); #else gl_Position = toClipSpace4(position); #endif if (blockId == BLOCK_WATER) gl_Position.w = -1.0; gl_Position.z /= 6.0; } ================================================ FILE: shaders/world0_Aether/shadowcomp.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp.csh" ================================================ FILE: shaders/world0_Twilight_Forest/composite.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/fogBehindTranslucent_pass.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/fogBehindTranslucent_pass.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite1.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite1.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite10.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite9.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite10.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite9.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite12.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite11.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite12.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite11.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite13.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite12.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite13.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite12.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite2.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite1.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite2.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite1.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite3.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite2.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite3.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite2.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite4.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite3.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite4.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite3.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite5.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite4.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite5.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite4.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite6.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite5.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite6.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite5.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite7.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite6.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite7.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite6.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite8.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite7.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite8.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite7.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite9.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite8.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/composite9.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/composite8.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/deferred.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/deferred.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/deferred.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/deferred.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/deferred1.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/deferred1.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/deferred1.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/deferred1.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/deferred2.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/deferred2.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/deferred2.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/deferred2.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/dh_generic.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/DH_generic.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/dh_generic.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/DH_generic.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/dh_shadow.fsh ================================================ #version 120 //#extension GL_ARB_shader_texture_lod : disable #include "/lib/settings.glsl" flat varying int water; varying vec2 texcoord; varying float overdrawCull; uniform sampler2D tex; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { if(water > 0){ discard; return; } if(overdrawCull < 1.0){ discard; return; } gl_FragData[0] = texture2D(tex, texcoord.xy); } ================================================ FILE: shaders/world0_Twilight_Forest/dh_shadow.vsh ================================================ #version 120 /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #include "/lib/settings.glsl" #define SHADOW_MAP_BIAS 0.5 const float PI = 3.1415927; varying vec2 texcoord; flat varying int water; #include "/lib/projections.glsl" #include "/lib/Shadow_Params.glsl" // uniform float far; #include "/lib/DistantHorizons_projections.glsl" varying float overdrawCull; // uniform int renderStage; void main() { water = 0; if(gl_Color.a < 1.0) water = 1; texcoord.xy = gl_MultiTexCoord0.xy; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; #ifdef DH_OVERDRAW_PREVENTION vec3 worldpos = toShadowSpace(position); overdrawCull = 1.0 - clamp(1.0 - length(worldpos) / far,0.0,1.0); #else overdrawCull = 1.0; #endif #ifdef DISTORT_SHADOWMAP gl_Position = BiasShadowProjection(toClipSpace4(position)); #else gl_Position = toClipSpace4(position); #endif gl_Position.z /= 6.0; } ================================================ FILE: shaders/world0_Twilight_Forest/dh_terrain.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/DH_solid.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/dh_terrain.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/DH_solid.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/dh_water.fsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/DH_translucent.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/dh_water.vsh ================================================ #version 330 compatibility #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/DH_translucent.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/final.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/final.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/final.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/final.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_armor_glint.fsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_armor_glint.vsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_basic.fsh ================================================ #version 120 #define LINES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_basic.vsh ================================================ #version 120 #define LINES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_beaconbeam.fsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_beaconbeam.vsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_block.fsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_block.vsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_block_translucent.fsh ================================================ #version 120 #define BLOCKENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_block_translucent.vsh ================================================ #version 120 #define BLOCKENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_damagedblock.fsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_damagedblock.vsh ================================================ #version 120 #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_entities.fsh ================================================ #version 120 #define WORLD #define ENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_entities.vsh ================================================ #version 120 #define WORLD #define ENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_entities_glowing.fsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_entities_glowing.vsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_entities_translucent.fsh ================================================ #version 120 #define ENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_entities_translucent.vsh ================================================ #version 120 #define ENTITIES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_hand.fsh ================================================ #version 120 #define WORLD #define HAND #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_hand.vsh ================================================ #version 120 #define WORLD #define HAND #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_hand_water.fsh ================================================ #version 120 #define HAND #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_hand_water.vsh ================================================ #version 120 #define HAND #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_lightning.fsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_lightning.vsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_skybasic.fsh ================================================ #version 120 void main() { discard; } ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_skybasic.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_skytextured.fsh ================================================ #version 120 #include "/lib/settings.glsl" #if RESOURCEPACK_SKY != 0 varying vec4 color; varying vec2 texcoord; uniform sampler2D texture; uniform sampler2D depthtex0; uniform int renderStage; uniform vec2 texelSize; float interleaved_gradientNoise(){ // vec2 coord = gl_FragCoord.xy + (frameCounter%40000); vec2 coord = gl_FragCoord.xy ; // vec2 coord = gl_FragCoord.xy; float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) ); return noise ; } vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } #endif void main() { #if RESOURCEPACK_SKY != 0 /* RENDERTARGETS:2 */ vec4 COLOR = texture2D(texture, texcoord.xy) * color; bool isSun = renderStage == MC_RENDER_STAGE_SUN || renderStage == 4; bool isMoon = renderStage == MC_RENDER_STAGE_MOON || renderStage == 5; bool isSkyBox = (renderStage == MC_RENDER_STAGE_SKY || renderStage == MC_RENDER_STAGE_CUSTOM_SKY) || (renderStage == 1 || renderStage == 3); #if RESOURCEPACK_SKY == 1 if(isMoon || isSun) { discard; return; } #endif #if RESOURCEPACK_SKY == 3 if(isSkyBox) { discard; return; } #endif vec3 NEWCOLOR = COLOR.rgb; if(isSun) NEWCOLOR.rgb = COLOR.rgb * 10.0; if(isMoon) NEWCOLOR.rgb = COLOR.rgb * 5.0; if(isSkyBox) NEWCOLOR.rgb = COLOR.rgb * 2.0; NEWCOLOR.rgb = toLinear(NEWCOLOR.rgb); NEWCOLOR.rgb = max(NEWCOLOR.rgb - NEWCOLOR.rgb * interleaved_gradientNoise()*0.05, 0.0); gl_FragData[0] = vec4(NEWCOLOR.rgb*0.1, COLOR.a); #else discard; #endif } ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_skytextured.vsh ================================================ #version 120 #include "/lib/settings.glsl" #if RESOURCEPACK_SKY != 0 #include "/lib/res_params.glsl" /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ varying vec4 color; varying vec2 texcoord; uniform vec2 texelSize; 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.); #endif void main() { gl_Position = ftransform(); #if RESOURCEPACK_SKY != 0 texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; color = gl_Color; #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 #endif } ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_spidereyes.fsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_spidereyes.vsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_terrain.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #define WORLD #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_terrain.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #define WORLD #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_textured.fsh ================================================ #version 120 #define PARTICLES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_textured.vsh ================================================ #version 120 #define PARTICLES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_textured_lit.fsh ================================================ #version 120 #define LIT #define PARTICLES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_textured_lit.vsh ================================================ #version 120 #define LIT #define PARTICLES #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_water.fsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_water.vsh ================================================ #version 120 #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_weather.fsh ================================================ #version 120 #define WEATHER #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world0_Twilight_Forest/gbuffers_weather.vsh ================================================ #version 120 #define WEATHER #define OVERWORLD_SHADER #define TWILIGHT_FOREST_FLAG #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world0_Twilight_Forest/setup.csh ================================================ #version 430 compatibility #define RENDER_SETUP #include "/lib/settings.glsl" #include "/dimensions/setup.csh" ================================================ FILE: shaders/world0_Twilight_Forest/shadow.fsh ================================================ #version 120 #include "/lib/settings.glsl" varying vec4 color; varying vec2 texcoord; uniform sampler2D tex; uniform sampler2D noisetex; //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// float blueNoise(){ return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887); } 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); #ifdef Stochastic_Transparent_Shadows if(gl_FragData[0].a < blueNoise()) { discard; return;} #endif } ================================================ FILE: shaders/world0_Twilight_Forest/shadow.vsh ================================================ #version 120 #include "/lib/settings.glsl" #ifdef IS_LPV_ENABLED #extension GL_ARB_explicit_attrib_location: enable #extension GL_ARB_shader_image_load_store: enable #endif #define RENDER_SHADOW /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #define SHADOW_MAP_BIAS 0.5 const float PI = 3.1415927; varying vec2 texcoord; uniform int hideGUI; uniform float frameTimeCounter; uniform int frameCounter; uniform float screenBrightness; uniform vec3 sunVec; uniform float aspectRatio; uniform float sunElevation; uniform vec3 sunPosition; uniform float lightSign; uniform float cosFov; uniform vec3 shadowViewDir; uniform vec3 shadowCamera; uniform vec3 shadowLightVec; uniform float shadowMaxProj; attribute vec4 mc_midTexCoord; varying vec4 color; attribute vec4 mc_Entity; uniform int blockEntityId; uniform int entityId; #include "/lib/Shadow_Params.glsl" #include "/lib/bokeh.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/projections.glsl" #include "/lib/DistantHorizons_projections.glsl" #ifdef IS_LPV_ENABLED #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE attribute vec4 at_midBlock; #else attribute vec3 at_midBlock; #endif uniform int currentRenderedItemId; uniform int renderStage; #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif const float PI48 = 150.796447372*WAVY_SPEED; float pi2wt = PI48*frameTimeCounter; vec2 calcWave(in vec3 pos) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; return ret; } vec3 calcMovePlants(in vec3 pos) { vec2 move1 = calcWave(pos); float move1y = -length(move1); return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0; } vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; return ret; } vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { vec3 move1 = calcWaveLeaves(pos, 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; return move1*5.*WAVY_STRENGTH/255.; } bool intersectCone(float coneHalfAngle, vec3 coneTip, vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) { vec3 co = rayOrig - coneTip; float prod = dot(normalize(co),coneAxis); if (prod <= -coneHalfAngle) return true; //In view frustrum float a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle; float b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle); float c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle; float det = b*b - 4.*a*c; if (det < 0.) return false; // No intersection with either forward cone and backward cone det = sqrt(det); float t2 = (-b + det) / (2. * a); if (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works return true; } void main() { texcoord.xy = gl_MultiTexCoord0.xy; color = gl_Color; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; // #if defined IS_LPV_ENABLED || defined WAVY_PLANTS || !defined PLANET_CURVATURE vec3 playerpos = toShadowSpace(position); // #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store PopulateShadowVoxel(playerpos); #endif 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)); if(( // these wave off of the ground. the area connected to the ground does not wave. (InterpolateFromBase && (mc_Entity.x == BLOCK_GRASS_TALL_LOWER || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL)) // these wave off of the ceiling. the area connected to the ceiling does not wave. || (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE)) // these wave off of the air. they wave uniformly || (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING) #ifndef RP_MODEL_FIX || (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) #endif ) && length(position) < 32.0) { // apply displacement for waving plant blocks worldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,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 || mc_Entity.x == BLOCK_CAVE_VINE_BERRIES) 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; } #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; gl_Position = BiasShadowProjection(toClipSpace4(position)); #else gl_Position = toClipSpace4(position); #endif if (blockId == BLOCK_WATER) gl_Position.w = -1.0; gl_Position.z /= 6.0; } ================================================ FILE: shaders/world0_Twilight_Forest/shadowcomp.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp.csh" ================================================ FILE: shaders/world1/composite.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/fogBehindTranslucent_pass.fsh" ================================================ FILE: shaders/world1/composite.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/fogBehindTranslucent_pass.vsh" ================================================ FILE: shaders/world1/composite1.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite.fsh" ================================================ FILE: shaders/world1/composite1.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite.vsh" ================================================ FILE: shaders/world1/composite10.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite9.fsh" ================================================ FILE: shaders/world1/composite10.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite9.vsh" ================================================ FILE: shaders/world1/composite11.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite10.fsh" ================================================ FILE: shaders/world1/composite11.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite10.vsh" ================================================ FILE: shaders/world1/composite12.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite11.fsh" ================================================ FILE: shaders/world1/composite12.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite11.vsh" ================================================ FILE: shaders/world1/composite13.fsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite12.fsh" ================================================ FILE: shaders/world1/composite13.vsh ================================================ #version 120 #define OVERWORLD_SHADER #include "/dimensions/composite12.vsh" ================================================ FILE: shaders/world1/composite2.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite1.fsh" ================================================ FILE: shaders/world1/composite2.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite1.vsh" ================================================ FILE: shaders/world1/composite3.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite2.fsh" ================================================ FILE: shaders/world1/composite3.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite2.vsh" ================================================ FILE: shaders/world1/composite4.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite3.fsh" ================================================ FILE: shaders/world1/composite4.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite3.vsh" ================================================ FILE: shaders/world1/composite5.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite4.fsh" ================================================ FILE: shaders/world1/composite5.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite4.vsh" ================================================ FILE: shaders/world1/composite6.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite5.fsh" ================================================ FILE: shaders/world1/composite6.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite5.vsh" ================================================ FILE: shaders/world1/composite7.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite6.fsh" ================================================ FILE: shaders/world1/composite7.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite6.vsh" ================================================ FILE: shaders/world1/composite8.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite7.fsh" ================================================ FILE: shaders/world1/composite8.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite7.vsh" ================================================ FILE: shaders/world1/composite9.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite8.fsh" ================================================ FILE: shaders/world1/composite9.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/composite8.vsh" ================================================ FILE: shaders/world1/deferred.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/deferred.fsh" ================================================ FILE: shaders/world1/deferred.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/deferred.vsh" ================================================ FILE: shaders/world1/deferred1.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/deferred1.fsh" ================================================ FILE: shaders/world1/deferred1.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/deferred1.vsh" ================================================ FILE: shaders/world1/dh_terrain.fsh ================================================ #version 330 compatibility #define END_SHADER #include "/dimensions/DH_solid.fsh" ================================================ FILE: shaders/world1/dh_terrain.vsh ================================================ #version 330 compatibility #define END_SHADER #include "/dimensions/DH_solid.vsh" ================================================ FILE: shaders/world1/dh_water.fsh ================================================ #version 330 compatibility #define END_SHADER #include "/dimensions/DH_translucent.fsh" ================================================ FILE: shaders/world1/dh_water.vsh ================================================ #version 330 compatibility #define END_SHADER #include "/dimensions/DH_translucent.vsh" ================================================ FILE: shaders/world1/final.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/final.fsh" ================================================ FILE: shaders/world1/final.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/final.vsh" ================================================ FILE: shaders/world1/gbuffers_armor_glint.fsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world1/gbuffers_armor_glint.vsh ================================================ #version 120 #define ENCHANT_GLINT #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world1/gbuffers_basic.fsh ================================================ #version 120 #define LINES #define END_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world1/gbuffers_basic.vsh ================================================ #version 120 #define LINES #define END_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world1/gbuffers_beaconbeam.fsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world1/gbuffers_beaconbeam.vsh ================================================ #version 120 #define BEACON_BEAM #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world1/gbuffers_block.fsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define END_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world1/gbuffers_block.vsh ================================================ #version 120 #define WORLD #define BLOCKENTITIES #define END_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world1/gbuffers_block_translucent.fsh ================================================ #version 120 #define BLOCKENTITIES #define END_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world1/gbuffers_block_translucent.vsh ================================================ #version 120 #define BLOCKENTITIES #define END_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world1/gbuffers_damagedblock.fsh ================================================ #version 120 #define END_SHADER #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world1/gbuffers_damagedblock.vsh ================================================ #version 120 #define END_SHADER #define DAMAGE_BLOCK_EFFECT #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world1/gbuffers_entities.fsh ================================================ #version 120 #define WORLD #define ENTITIES #define END_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world1/gbuffers_entities.vsh ================================================ #version 120 // #define WORLD #define ENTITIES #define END_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world1/gbuffers_entities_glowing.fsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world1/gbuffers_entities_glowing.vsh ================================================ #version 120 #define GLOWING #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world1/gbuffers_entities_translucent.fsh ================================================ #version 120 #define ENTITIES #define END_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world1/gbuffers_entities_translucent.vsh ================================================ #version 120 #define ENTITIES #define END_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world1/gbuffers_hand.fsh ================================================ #version 120 #define WORLD #define HAND #define END_SHADER #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world1/gbuffers_hand.vsh ================================================ #version 120 #define WORLD #define HAND #define END_SHADER #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world1/gbuffers_hand_water.fsh ================================================ #version 120 #define HAND #define END_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world1/gbuffers_hand_water.vsh ================================================ #version 120 #define HAND #define END_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world1/gbuffers_lightning.fsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world1/gbuffers_lightning.vsh ================================================ #version 120 #define LIGHTNING_AND_DRAGON_DEATH_BEAMS #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world1/gbuffers_skybasic.fsh ================================================ #version 120 /* RENDERTARGETS:0 */ void main() { discard; } ================================================ FILE: shaders/world1/gbuffers_skybasic.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world1/gbuffers_skytextured.fsh ================================================ #version 120 void main() { discard; return; } ================================================ FILE: shaders/world1/gbuffers_skytextured.vsh ================================================ #version 120 void main() { gl_Position = ftransform(); } ================================================ FILE: shaders/world1/gbuffers_spidereyes.fsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.fsh" ================================================ FILE: shaders/world1/gbuffers_spidereyes.vsh ================================================ #version 120 #define SPIDER_EYES #include "/dimensions/all_vanilla_emissives.vsh" ================================================ FILE: shaders/world1/gbuffers_terrain.fsh ================================================ #version 120 #define END_SHADER #define WORLD #include "/dimensions/all_solid.fsh" ================================================ FILE: shaders/world1/gbuffers_terrain.vsh ================================================ #version 120 #define END_SHADER #define WORLD #include "/dimensions/all_solid.vsh" ================================================ FILE: shaders/world1/gbuffers_textured.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world1/gbuffers_textured.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world1/gbuffers_textured_lit.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/all_particles.fsh" ================================================ FILE: shaders/world1/gbuffers_textured_lit.vsh ================================================ #version 120 // #define WEATHER #define PARTICLES #define END_SHADER #include "/dimensions/all_particles.vsh" ================================================ FILE: shaders/world1/gbuffers_water.fsh ================================================ #version 120 #define END_SHADER #include "/dimensions/all_translucent.fsh" ================================================ FILE: shaders/world1/gbuffers_water.vsh ================================================ #version 120 #define END_SHADER #include "/dimensions/all_translucent.vsh" ================================================ FILE: shaders/world1/gbuffers_weather.fsh ================================================ #version 120 in vec4 lmtexcoord; in vec4 color; uniform sampler2D texture; uniform sampler2D gaux1; uniform vec4 lightCol; uniform vec3 sunVec; uniform vec2 texelSize; uniform float skyIntensityNight; uniform float skyIntensity; uniform float rainStrength; uniform mat4 gbufferProjectionInverse; #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) #define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) vec3 toLinear(vec3 sRGB){ return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); } vec3 toScreenSpaceVector(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]; return normalize(fragposition.xyz); } //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { /* DRAWBUFFERS:2 */ gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; gl_FragData[0].a = clamp(gl_FragData[0].a -0.1,0.0,1.0)*0.5; vec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb); vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; gl_FragData[0].rgb = dot(albedo,vec3(1.0))*ambient*10./3.0/150.*0.1; } ================================================ FILE: shaders/world1/gbuffers_weather.vsh ================================================ #version 120 #define TAA /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ out vec4 color; out vec4 lmtexcoord; uniform vec2 texelSize; uniform int framemod8; const vec2[8] offsets = vec2[8](vec2(1.,-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.); //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_Position = ftransform(); lmtexcoord.xy = (gl_MultiTexCoord0).xy; lmtexcoord.zw = gl_MultiTexCoord1.xy / 240.0; color = gl_Color; #ifdef TAA gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; #endif } ================================================ FILE: shaders/world1/setup.csh ================================================ #version 430 compatibility #define RENDER_SETUP #include "/lib/settings.glsl" #include "/dimensions/setup.csh" ================================================ FILE: shaders/world1/shadow.fsh ================================================ #version 120 #include "/lib/settings.glsl" //////////////////////////////VOID MAIN////////////////////////////// void main() { gl_FragData[0] = vec4(0.0); } ================================================ FILE: shaders/world1/shadow.vsh ================================================ #version 120 #include "/lib/settings.glsl" #ifdef IS_LPV_ENABLED #extension GL_ARB_explicit_attrib_location: enable #extension GL_ARB_shader_image_load_store: enable #extension GL_ARB_shading_language_packing : enable #endif #define RENDER_SHADOW /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #ifdef IS_LPV_ENABLED attribute vec4 mc_Entity; #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE attribute vec4 at_midBlock; #else attribute vec3 at_midBlock; #endif attribute vec3 vaPosition; #ifdef LPV_ENTITY_LIGHTS uniform usampler1D texBlockData; #endif uniform int renderStage; uniform vec3 chunkOffset; uniform int currentRenderedItemId; uniform int blockEntityId; uniform int entityId; #include "/lib/projections.glsl" #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif void main() { #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store #ifdef LPV_NOSHADOW_HACK vec3 playerpos = gl_Vertex.xyz; #else vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 playerpos = toShadowSpace(position); #endif PopulateShadowVoxel(playerpos); #endif gl_Position = vec4(-1.0); } ================================================ FILE: shaders/world1/shadowcomp.csh ================================================ #version 430 compatibility #include "/lib/settings.glsl" #include "/dimensions/shadowcomp.csh"