[
  {
    "path": ".github/ISSUE_TEMPLATE/ask-a-question.md",
    "content": "---\nname: Ask A Question\nabout: ask questions.\ntitle: ''\nlabels: question\nassignees: ''\n\n---\n\nblah blah blah blah\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "content": "---\nname: Bug Report\nabout: Create a bug report so i can see if i can fix it.\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n### Describe the bug\nDescribe the bug in as much detail as possible. capturing footage of it with images or videos is preferred.\n\n### Describe how your minecraft is set up\n1. Include a screenshot of the in-game f3 debug overlay. Please make sure it is fully visible.\n\n2. If you cannot do option 1. Please list the following information instead:\n- What GPU vendor you are using (e.g Apple/AMD/Nvidia/Intel)\n- What operating system you are using (e.g Windows/Linux/macOS)\n- What minecraft version you are playing (e.g 1.20.4, 1.16.5, 1.12)\n- If you are using a special client for minecraft (e.g lunar, badlion, feather)\n- What shader loading mod you are using (e.g Iris/oculus/optifine)\n- What version of the shader you are using (e.g Bliss v2.0.4, Bliss Shader Main)\n- 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)\n\n### Describe how to reproduce the bug\nShow exactly how to make the bug appear, if you can. Video footage is preferred.\n\nIsolate 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\n\nif it is happening on content from a mod, list what mod, and what content of that mod it happens on.\n\nif a specific shader setting can make it start/stop bugging, please list what shader setting does that.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-suggestion.md",
    "content": "---\nname: Feature Suggestion\nabout: Suggest to add/change a feature\ntitle: ''\nlabels: suggestion\nassignees: ''\n\n---\n\n### OPTION A: Describe the feature you would like to be added to the shader\nDescribe the feature in detail, so i can know exactly what you are talking about.\n\nexample: \"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`\"\n\n### OPTION B: Describe the feature you would like to be changed in the shader\nDescribe 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.\n\nexample: \"the \"temporal upscaling\" feature has a minimum value of \"0.1\". could you please allow it to reach zero? i really hate seeing detail!\nyou can find the setting in `shader settings > post processing > anti aliasing`\"\n"
  },
  {
    "path": "CREDITS.txt",
    "content": "Credit to the creator of the entire shader that BSPT is an edit of:\n\n\tX0nk / https://github.com/X0nk/Bliss-Shader\n\tChocapic13 / https://www.curseforge.com/minecraft/customization/chocapic13-shaders\n\n\n\nCredit to the creators of code contributions, various code uses,  or code snippets:\n\n\tEminGt / https://github.com/EminGT\n\tGri573 / https://github.com/gri573\n\tNull / https://github.com/Null-MC\n\tSasha / https://github.com/WoMspace\n\tSixthSurge / https://github.com/sixthsurge\n\tZombye / https://github.com/zombye\n\n\n\nCredit to the translators:\n\n\tNord / nordwhy (discord)\n\tRuri / nakiriruri (discord)\n\tYurgenS / yurgens (discord)\n\tCReepa / _CReepa_ (discord)\n\n\n\nCredit to the people who inspired many changes and ideas, that you NEED to know about:\n\t\n\tAmbrosia / https://github.com/ambrosia13\n\tRre36 / https://github.com/rre36\n\tSixthSurge / https://github.com/sixthsurge\n\tEminGt / https://github.com/EminGT\n\tNull / https://github.com/Null-MC\n\tL4mbads / l4mbads (discord) | https://www.youtube.com/channel/UC-5tMMYBNrGJfp1SMjuAf2w"
  },
  {
    "path": "Changelog_v1.9.txt",
    "content": "2025-11-11 v1.9\n1. Fix aurora mistakenly rendered at day.\n~ composite1 修复了极光在白天也渲染的错误\n2. Improve aurora perf.\n~ aurora 优化极光性能\n3. Merge X0nk's latest commit.\n~ xxx 整合了X0nk最新的更新\n\n2025-10-28 v1.89\n1. Stupid way to fix atmosphere below y=0.\n~ atmosphere 大概修复了高度小于0时的大气故障\n2. Simple fix to fog disappearing when clouds disabled.\n~ deferred 简单地修复了关闭体积云时雾气连带消失的问题\n3. Fix cloud quality unfunctioning issue.\n~ volumetricClouds 修复了云层质量失效的问题\n\n2025-10-10 v1.88\n1. Slightly improve codes.\n~ xxx 微微优化代码\n2. Slight improve cloud scattering.\n~ volumetricClouds 微微优化云层光照\n3. Improve atmosphere color blending.\n~ atmosphere 优化大气色彩混合\n\n2025-10-2 v1.87\n1. Greatly improve rainbow visual.\n~ rainbow 极大的提升了彩虹的观感\n2. Fix default settings for atmosphere.\n~ settings 修复了关于大气的默认参数错误\n\n2025-10-1 v1.86\n1. Partially merge X0nk's latest commit.\n~ xxx 整合了部分X0nk最新的更新\n2. New atmosphere implemented, up to 8x performance improvement.\n~ atmosphere 采用了新的大气，最大有8倍的性能提升\n\n2025-8-12 ~ 9-8 v1.81 ~ 1.85\n1. Selectively merge X0nk's latest commit.\n~ xxx 有选择性地整合了X0nk最新的更新\n2. Fix an an issue with shadow filtering.\n~ composite1 修复一个阴影过滤的问题\n4. Improve ambient scattering.\n~ROBOBO_sky 优化环境光散射\n5. Sync lensflare color to sun color.\n~ lensflare 将镜头炫光颜色与太阳颜色同步\n6. Reduce lensflare strenghth when the sun is low to reduce the flickering occlusion by cloud.\n~ final 日落时降低镜头炫光强度以减少被云遮挡时产生的闪烁\n7. Move rainbow to the front of the cloud. (use Merlin1809's code to make rainbow insert cloud)\n~ rainbow/composite3 将彩虹移至云层前方 (彩虹插入云层部分使用Merlin1809的代码)\n8. Fix compile errors including while entering modded dimensions.\n~ composite3 修复编译错误，包含进入模组维度时的错误\n9. Many small tweaks.\n~ xxx 许多细小的调整\n\n2025-6-26 ~ 7-10 v1.76 ~ 1.79\n1. Fix glowing haze at night.\n~ overworld_fog 修复了夜晚发光的雾霾\n2. Add options for atmosphere absorbance.\n~ setting 为大气吸收率添加选项\n3. Restore sun path rotation.\n~ settings 还原了日月倾角选项\n4. Fix ripple issue.\n~ all_translucent 修复了涟漪问题\n5. Merge X0nk's latest commit.\n~ xxx 整合了X0nk最新的更新\n6. Agx preset slider.\n~ tonemapping 添加AGX预设模式\n7. Some improvements with setting screens.\n~ shader 设置界面调整\n8. Update LANG.\n~ zh_cn/en_us 语言文件更新\n\n2025-5-19 ~ 6-26 v1.71 ~ 1.75\n1. Make cloud shadow a little bit more obvious.\n~ volumetricclouds 使云影略微明显一些\n2. Merge X0nk's latest commit. (emissive z-fighting)\n~ xxx 整合了X0nk最新的更新 (发光物深度冲突)\n3. Split codes.\n~ xxx 拆分代码\n4. Improve sunset scene.\n~ xxx 优化黄昏场景\n5. Add shooting stars.\n~ stars 新增流星特效\n6. Slightly improve code readability.\n~ xxx 微微提升代码可读性\n7. Fix an issue of TOD fog being verwrited by biome fog.\n~ overworld_fog 修复了一个全天雾气被群系雾气覆写的问题\n8. Update lang.\n~ zh_cn/en_us 更新设置翻译\n9. Simplifiy rainbow codes.\n~ raibow/composite1 简化彩虹代码\n10. Add fish eye lens.\n~ final 新增鱼眼镜头特效\n11. Fix ripple normal & side leaking from blocks issue.\n~ all_translucent 修复了涟漪法线问题以及侧面渗漏问题\n12. Fix glitch on horse.\n~ all_translucent 修复了马贴图闪烁的问题\n13. Add light absorbance with atomsphere options.\n~ ROBOBO_sky 新增大气光线吸收选项\n14. Improve skylight contribution to fog while raining and add settings.\n~ overworld_fog 优化了雨天时天空光对雾气的贡献并加入对应设置\n\n2025-4-26 ~ 5-12 v1.66 ~ v1.7\n1.\tImprove BoP/FD/supplementaries compability (from @Merlin1809).\n\t优化BoP/FD/supplementaries兼容\n2.\tAdd ender's delight compability (from @Merlin1809).\n\t添加ender's delight兼容\n3.\tImprove edge fade of end fog.\n\t优化末地雾气边缘淡出\n4.\tAdjust main light source color of end fog.\n\t调整末地漩涡的主光源颜色\n5.\tCloud improved.\n\t优化云层外观\n6.\tFix a visual issue with rainbow.\n\t修复了一个关于彩虹的问题\n7.\tFix LPV redstone wire shaodow-ish issue. (from @fayer3)\n\t修复了LPV红石线产生不正常阴影的问题\n8.\tImprove 1.21.4 blocks effects.\n\t优化1.21.4支持\n9.\tAdd 1.21.5 blocks effects.\n\t添加1.21.5支持\n10.\tFix cloud render sequence when camera position is above the cloud.\n\t修复当相机高于云层时云层的渲染顺序问题\n11.\tMerge X0nk's latest commit. (adaptive motion blur)\n\t整合了X0nk最新的更新 (自适应动态模糊)\n12.\tFix block light missing under RT in nether/end dimension.\n\t修复方块光照在启用RT时在下界/末地消失的问题\n13.\tImprove HQ cloud density.\n\t优化高质量云层密度\n14.\tFix an issue with fog when disabling small/large VL cloud.\n\t修复当禁用小/大积云时雾气被连带剔除的问题\n15.\tFix a compile error.\n\t修复一个编译错误问题\n16.\tReuse codes to underwater distortion effects to improve pref.\n\t为水下失真效果复用代码以提高性能\n17.\tRevealing an option.\n\t重启一个可选项\n18.\tFix mod support & 1.21.5 block id errors.\n\t修复mod支持与1.21.5方块ID错误\n\n2025-4-15 ~ 4-25 v1.61 ~ v1.65\n1.\tRevert specular change.\n\t回退高光优化\n2.\tAdd rainstrength threshold to avoid visual issue of ripple.\n\t为涟漪添加雨水强度阈值以避免一些视觉问题\n3.\tIncrease cloud coverage/density while rain.\n\t增加了下雨时云层的覆盖率与密度以避免太阳雨的问题\n4.\tAvoid rainbow appear at night.\n\t避免彩虹在夜间出现\n5.\tMerge rainy scene configurations into scene_controller\n\t将雨天控制整合进场景控制器中\n6.\tSplit few functions\n\t拆分一些功能\n7.\tAdjust clouds look.\n\t调整了云层外观\n8.\tFix DH shadowmap compile issue.\n\t修复了DH阴影贴图的编译错误\n9.\tMerge X0nk's latest commit. (SSS & cloud tweaks)\n\t整合了X0nk最新的更新 (SSS与云层的调整)\n10.\tFix daily weather mistakes.\n\t修复每日天气错误\n11.\tRemove unnecessary codes.\n\t移除无意义代码\n12.\tImprove SSGI perf.\n\t优化SSGI性能\n13.\tImprove setting layout & LANG.\n\t优化设置布局与翻译文件\n14.\tRevert portal / end portal effect / color.\n\t回退下界/末地传送门特效/颜色\n15.\tRevert lava colored lighting.\n\t回退岩浆照明\n16.\tArrange codes.\n\t整理代码\n17.\tImprove ripple perf.\n\t优化涟漪性能\n18.\tImprove time code to make it more linear.\n\t优化时间代码使其过渡更为线性\n19.\tForce effects for night time stop calculate at day time to squeeze out a bit perf.\n\t强制夜晚特效在白天停止运算以避免一些无意义的计算\n20.\tAdjust some codes to make them more efficient.\n\t调整一些代码使其更高效\n\n2025-3-25 ~ 4-8 v1.56 ~ 1.6\n1.\tAdjust darkening and transparency of all translucents to make them prettier.\n\t优化了所有透明物体的透明度与光线吸收使其更美观\n2.\tUpdate Lang.\n\t优化翻译文件\n3.\tMerge sandstorm/snowstrom to dry/snowy biome environments.\n\t新增干旱群系特色环境，将沙暴与雪暴合并到干旱/下雪群系特色环境中\n4.\tArrange codes. (may cause crash in aether/twilight forest, if so, pls contact me)\n\t整理代码（可能造成天境与暮色森林维度崩溃，如果发生请联系我）\n5.\tSperate color of sandstrom for bad land & desert.\n\t为沙漠/恶地的沙尘暴增加颜色区分\n6.\tPotentially fix shader crash for AMD users.\n\t可能修复AMD用户无法加载光影的问题\n7.\tMitigated the issue of puddle & wetness specular appear in dry biomes. (not able to solve completely)\n\t缓解了在干旱群系出现潮湿高光与水坑的问题（无法彻底解决）\n8.\tFix stupid snowstorm issue\n\t修复了愚蠢的暴风雪问题\n9.\tMerge X0nk's latest commit. (daily weather && water entering animation)\n\t整合了X0nk最新的更新 (日常天气 && 入水效果)\n10.\tImprove lensflare perf.\n\t优化了镜头炫光的性能\n11.\tMerge X0nk's latest commit. (physics oceans support)\n\t整合了X0nk最新的更新 (物理海洋支持)\n12.\tImprove cloud density & perf.\n\t优化了体积云密度计算并提升了性能\n13.\tSlightly improve GGX specualr.\n\t微微优化GGX高光效果\n14.\tAdd rainstrength threshold to avoid visual issue of ripple.\n\t为涟漪添加雨水强度阈值以避免一些视觉问题\n15.\tImprove aurora environment lighting.\n\t优化极光环境光照\n\n2025-3-19 ~ 3-24 v1.5 ~ 1.55\n1.\tAdd puddle ripple, improve ripple visual & perf.\n\t添加水坑涟漪，优化涟漪外观与性能\n2.\tFix LPV RANGE.\n\t修复LPV光照范围问题\n3.\tAdd vanilla style starfield to end.\n\t为末地添加原版风格的星空\n4.\tAdjust lightening color in end.\n\t调整末地闪电风暴颜色\n5.\tMerge X0nk's latest commit. (litematica)\n\t整合了X0nk最新的更新 (支持投影)\n6.\tFix a puddle ripple mistake.\n\t修复一个水坑涟漪的错误\n7.\tFix an error with vine SSS.\n\t修复了一个关于藤蔓的SSS错误\n8.\tAdd raindrop filter.\n\t新增雨滴动画滤镜\n9.\tMake ground ripple only to be seen in puddles. (more realistic to me)\n\t移除除水坑外的地表涟漪（对我来说更真实）\n10.\tFix shader crash when enable chromatic aberration.\n\t修复了使用色差时的光影崩溃问题\n11.\tImprove raindrop on camera effect.\n\t优化了相机覆雨的效果\n12.\tImprove lensflare.\n\t优化了镜头光晕效果\n13.\tAdjust rainbow color.\n\t调整了彩虹颜色\n14.\tMerge X0nk's latest commit. (custom skybox)\n\t整合了X0nk最新的更新（自定义天空）\n15.\tGreatly Improve aurora light reacts to cloud.\n\t大幅改进了极光光照与云层的交互\n16.\tFix overbright issue in the end.\n\t修复了末地过亮的问题\n17.\tFix water specular issue in the end.\n\t修复了末地水体异常高光的问题\n18.\tMerge X0nk's latest commit. (mod dimensions support)\n\t整合了X0nk最新的更新（mod维度支持）\n19.\tFix roughness threshold bug.\n\t修复了粗糙度阈值的bug\n20.\tUpdate Lang.\n\t优化翻译文件\n21.\tSimplify the code.\n\t精简代码\n\n2025-3-11 ~ 3-18 v1.45 ~ 1.49\n1.\tAdd customizable rainbow.\n\t新增了彩虹\n2.\tMerge X0nk's latest commit. (water) Tweak water style to fit my aesthetic.\n\t整合了X0nk最新的更新 (水体) 调整水波效果以符合我的审美\n3.\tFull ENG/CHS descriptions. (100% done)\n\t00% 英语/中文设置界面描述\n4.\tSetting screen tweak.\n\t设置界面优化\n5.\tTweaks for ripples.\n\t调整涟漪强度\n6.\tFix an error with skyground.\n\t修复了一个关于地表大气的问题\n7.\tRemove few necessary settings.\n\t删除了少许无意义的设置\n8.\tFix random stuffs.\n\t修复了许多问题\n9.\tAdd credit to builderb0y's hue.\n\t为builderb0y的色环添加鸣谢\n10.\tAdjust cloud color.\n\t调整云层颜色\n11.\tAdjust personal color grading.\n\t调整个人调色\n12.\tImprove SSRT\n\t优化SSRT\n13.\tMerge X0nk's latest commit. (cloud light)\n\t整合了X0nk最新的更新 (云隙光)\n14.\tImprove flashlight\n\t优化手电筒光照\n15.\tAdjust sunset color\n\t优化了日落颜色\n16.\tOptimize the code\n\t优化代码\n17.\tFix cave vine waving & SSS error.\n\t修复了洞穴藤蔓摇晃与次表面散射的问题\n\n2025-3-7 ~ 3-10 v1.4 ~ 1.44\n1.\tAdd lensflare and sun glare effect.\n\t新增镜头炫光与更美观的太阳\n2.\tOptimize the code and translations.\n\t优化代码与翻译\n3.\tMake an option for people who want the full wet reflectiveness.\n\t添加雨天潮湿度的自定义选项\n4.\tMake lensflare invisible underwater, disable lensflare in other dimensions.\n\t使镜头炫光在水下禁用，在其他维度禁用镜头炫光\n5.\tRemove colorful nether portal functions as it's crap.\n\t移除多彩的下界传送门功能\n6.\tCloud occlude will be more accurate and fast for lens flare. Add smooth fade out animation for lensflare.\n\t镜头炫光的云层遮挡检测现在变得更精准，效率也更高，添加了淡出动画\n7.\tFix an flaw of LPV shadow. (thank you 195p2)\n\t修复了一个LPV阴影的问题，感谢195p2（discord）\n8.\tFix unfunctional LPV RANGE.\n\t修复了LPV光照距离无效的问题\n9.\tRemove few unused settings, restore few hided settings.\n\t移除部分失效选项，新增部分原本不可见选项\n10.\tRestore fog color, vanilla LPV lighting option.\n\t新增雾气颜色，原版LPV光照选项\n11.\tAdd material normal strenghth setting.\n\t新增材质法线强度设定\n12.\tReplace hammersley sequence with higher precision one, better than nothing.\n\t替换了更高精度的hammersley序列，看不出什么画面区别，但总比没有好\n13.\tAdd more eng setting comments. (75% done)\n\t添加了更多英语设置选项说明\n\n2025-2-26 ~ 3-5 v1.35 ~ v1.39\n1.\tImprove rain and snow code to make them easier to be seen.\n\t优化雨雪可见度\n2.\tImprove ripple perf.\n\t优化涟漪性能\n3.\tMake night vision affect other dimensions.\n\t使夜视效果在其他维度也能生效\n4.\tMerge X0nk's latest commit. (flashlight & DH TAA jitter)\n\t整合了X0nk最新的更新 (手电筒与DH下的抖动TAA)\n5.\tFix tiny issue with POM & make flashlight working under RTGI/SSGI.\n\t修复了视差的细微问题，并使手电筒在RTGI/SSGI下也能正常工作\n6.\tImprove RT perf & quality\n\t优化光追性能及质量\n7.\tImprove CHS/ENG lang quality.\n\t优化简中/英语质量\n8.\tFix an issue with translucent colored shadow.\n\t修复了一个有关彩色阴影的bug\n9.\tImprove TAA quality\n\t提升了TAA的质量\n10.\tReduce periodic motion of water distortion.\n\t降低水下失真运动效果的周期性\n11.\tAdjust biome tint water.\n\t调整群系水体色调\n12.\tImprove setting menu.\n\t优化设置菜单\n13.\tSimplified the code.\n\t简化代码\n14.\tAdd new tonemap.\n\t添加新的tonemap预设\n\n2025-2-18 ~ 2-25 v1.3 ~ v1.34\n1.\tMake ground ripple an optional setting. Not recommend to use.\n\t新增地表涟漪（不推荐开启）\n2.\tImprove ripple shape & perf, add ripple settings.\n\t优化涟漪形状及过渡，提升性能，加入涟漪设置选项\n3.\tSlightly adjust raindrop size implement.\n\t调整了雨滴大小应用于代码的方式\n4.\tWater wave will be bigger and faster while rain.\n\t使雨天水波的强度与速度都会增加.\n5.\tDiscriptions for all options done (CHS) (ENG later).\n\t为所有选项增加描述（中文）\n6.\tImprove ripple shade and water wave offset code implement.\n\t优化涟漪的形状，改良了雨天水波补偿的应用方式\n7.\tImprove the surface wetness calculation.\n\t改良了雨天材质表面光滑度的计算方式\n8.\tFix a rare mistake with gameplay effect.\n\t修复了一个关于游玩效果的代码语法错误\n9.\tImprove code utilizaion to improve perf.\n\t优化代码共用以微微提升性能\n10.\tImprove GTAO visual quality.\n\t优化GTAO表现使其不再鸡肋\n11.\tImprove wavy plants code.\n\t优化摇晃植物代码\n12.\tImprove fancy end portal color to match the end fog color.\n\t将华丽的末地传送门颜色与末地烟雾颜色绑定\n13.\tImprove SSPT perf.\n\t优化光追性能（+2~3fps）\n14.\tMake all daily weather params work as offset to make this function less crap.\n\t将周期循环的天气更改为对原云雾设置的补偿，使其重新变得可用\n15.\tRemove unavailable options, improve setting layout.\n\t移除无效选项，优化设置界面布局.\n16.\tFew optimizations to the code, may improve shader load speed.\n\t优化代码，加快光影载入速度\n17.\tFix some stupid mistake I made earlier.\n\t修复了一些愚蠢的错误\n18.\tDelete abandoned code, code arrangements.\n\t删除无效代码，整理代码\n\n2025-2-13 ~ 2-16 v1.25 ~ v1.29\n1.\tAdd a simple low-pass denoise to skylight ssrt.\n\t为天空光SSRT补偿增加了低通滤波处理降低噪点\n2.\tAdjust block specular while rain, may tweak as futher feedback.\n\t调整了雨天方块反光的强度，会根据反馈进一步修改\n3.\tFix rainfog missing.\n\t修复了雨雾消失的问题\n4.\tFix ore emission issue.\n\t修复了硬编码发光矿物的问题，改进了代码\n5.\tAdd extra erosion and density to v cloud to make cloud fancier.\n\t添加更多侵蚀效果与层数使体积云更具细节，外形更蓬松，并尽可能保持性能\n6.\tImprove the water distortion effect.\n\t优化相机覆水效果\n7.\tSlightly improve how aurora light react to cloud.\n\t稍稍调整了极光颜色对云层的影响\n8.\tImprove the shape & shadow of cloud.\n\t改良了体积云的外形与阴影表现\n9.\tRemove abandoned code and settings, readding setting that still functional.\n\t移除了无效代码与设置，还原了个别仍具功能的选项\n10.\tAdd water ripples while rain, still need to be improved.\n\t新增雨天水面涟漪，仍需要进一步优化\n\n2025-2-6 ~ 2-10 v1.2 ~ v1.24\n1.\tA new method to simulate ssgi, extremely cheap & goodlooking.\n\t全新高效方案以模拟ssgi效果使rtgi性能大幅提高（+4fps）\n2.\tFix a code error with ssgi, potentially improve performance.\n\t修复了一个ssgi的错误，可能可以提升性能\n3.\tRearrange the slider of ray count, fix a mistake in sky brightness.\n\t光线数量选项步进调整，修正一个天空光照选项的错误\n4.\tAdd reflection quality slider.\n\t新增反射质量选项\n5.\tFix a mistake in specular reflection, may increase performance.\n\t修复一个高光反射中的错误，可能会提升性能\n6.\tFix a tiny mistake in sun scattering.\n\t修复了一个阳光散射的微小错误\n7.\tAdd aurora with simple control, should be improved in the future.\n\t新增了nimitz的极光，将来会持续优化\n8.\tImproved the prediction of snowy biome\n\t改良了群系的识别方案\n9.\tFix an error with snowstorm.\n\t修复了一个关于雪暴的错误\n10.\tAdjust the color of sandstorm.\n\t调整了沙暴颜色的问题\n11.\tAdd aurora light contribution to sky & cloud & ground\n\t新增极光对天空及地面元素的光照补偿\n12.\tTweak the light contribution of the aurora.\n\t调整极光的照明补偿效果\n13.\tOptimize code for indirect lighting to improve RT perf.\n\t优化代码提升光追性能，rtgi/ssgi（+0.5fps），hq ssgi（+1fps）\n14.\tFix aurora light setting mistake, delet unused code, overall optimize.\n\t修复了极光颜色设置颠倒的问题，删除未使用的代码，微微提升性能\n15.\tOptimize the layout of setting screen.\n\t微微优化了设置界面布局\n16.\tAdd moving effect on underwater distortion.\n\t为水下失真增加动态效果\n17.\tGreatly optimize the code of hq ssgi to improve pref and fix an issue.\n\t再次优化光线追踪代码，大幅提高高质量ssgi性能并修复了一个微小错误（+3fps），微微提升rtgi/ssgi性能（+0.5fps）\n18.\tOptimize code related to emissive ore.\n\t简化了发光矿物的代码\n19.\tFix an issue with rain puddle.\n\t修复了关于下雨群系判断的重大错误\n\n2025-2-1 ~ 2-5 v1.15 ~ v1.19\n1.\tImprove the code of AGX Tonemap to make it more color precision.\n\t优化AGX Tonemap代码性能并使颜色更精准\n2.\tNew personal tonemap based on AGX_Minimum.\n\t新增个人调色，提高真实感\n3.\tImprove TOD fog.\n\t优化TOD雾气使得雾气过渡更平滑\n4.\tMake sunset fancier.\n\t使太阳在夕阳时更红\n5.\tImprove the graphic of the end.\n\t优化末地雾气使环境更暗\n6.\tImprove the code of biome tint water.\n\t优化群系色调水体的实现\n7.\tAdd snowy biome overlay.\n\t为寒冷群系增加特殊雾气overlay效果\n8.\tSlightly improve ssgi performance by adjust ray steps.\n\t在不明显降低画面品质的条件下微微提升高质量ssgi性能（+1fps）\n9.\tAdd options to tweak ray count and steps, slightly improve rtao performance under default settings.\n\t增添光追自定义选项，默认设置下微微减轻rtao负担\n10\tMake cloud brighter, adjust the cloud default settings.\n\t使云层更亮，微调默认云层配置\n11.\tAdd preset profiles in shader setting.\n\t添加默认配置文件切换\n12.\tMake lava darker.\n\t调整岩浆/岩浆桶颜色使其不那么晃眼\n13.\tGreatly improve the rtao quality with simplified ssgi code, replace rtao with rtgi.\n\t大幅改进rtao效果，将rtao改名为rtgi（-1fps）\n14.\tSlightly improve the water distortion code, may increase performance slightly. \n\t微微改进水下失真效果代码\n15.\tFix an issue with emissive ore.\n\t修正了一个发光矿物的问题\n\n2025-1-28 ~ 1-30 v1.1 ~ v1.14 ##重大修复\n1.\tMerge X0nk's latest commit. (SSAO perf & SSS on muti-layer entities & water normal & end portal effect & vl cloud overdraw issue)\n\t整合了X0nk最新的更新 (SSAO性能 史莱姆等多层透明实体的反射效果 水面法线 末地传送门特效 体积云过度绘制的问题)\n2.\tFix the nether fog option.\n\t修复末地雾气选项失灵的bug\n3.\tAdd nether fog plume color option.\n\t新增下界烟柱颜色选项\n4.\tAdd fancy end portal option.\n\t为末地传送门特效增加配置选项\n5.\tAdd nether portal color option.\n\t新增多彩的下界传送门\n6.\tAdjust the light of furnance\n\t微微调整了熔炉光照\n7.\tTweak the shader default settings.\n\t改进了光影默认配置数值\n\n2025-1-24 v1.05 ~ v1.09\n1.\tMerge X0nk's latest commit. (underwater effect)\n\t整合了X0nk最新的更新 (水下视觉)\n2.\tRestore water distortion effect.\n\t重新加入水体焦散效果\n3.\tImprove setting screen.\n\t设置界面布局优化\n4.\tFix biome tint water.\n\t修复群系色调水体bug\n5.\tFix a mistake cause stationary star.\n\t修复星星不旋转的bug\n6.\tAdd raindrop size option.\n\t新增雨滴大小配置选项\n7.\tAdd emissive ore code from fayer3.\n\t应用Fayer3矿石发光特效及相关选项\n8.\tFix missing AO under rtao/ssgi.\n\t修复了RTAO/SSGI模式下画面失去AO遮罩的bug\n9.\tFix a bug with break animation.\n\t修复方块破坏粒子效果不显示的bug\n10.\tImprove CHS translation.\n\t汉化修正\n11.\tRevamp the setting screen.\n\t设置界面重做\n12.\tImprove star perf.\n\t优化星星性能\n13.\tFix vortex configuration issue.\n\t修复末地漩涡选项失灵的bug\n14.\tAdd end lightning options.\n\t新增末地闪电选项\n15.\tAdd new ore emit color options.\n\t新增方块发光颜色选项\n\n2025-1-21 v1.0 ~ v1.03\n1.\tApply LPV shadow code from fayer3.\n\t应用Fayer3路径追踪阴影代码\n2.\tFix raincloud density/coverage bug.\n\t修复雨云覆盖率/密度bug\n3.\tUpdate noise texture.\n\t噪声贴图更新，微微优化性能\n4.\tImprove setting screen.\n\t设置界面重做\n5.\tUpdate CHS translation.\n\t汉化更新\n6.\tFix a mistake of rainfog.\n\t雨雾bug修复\n7.\tRestore porosity & puddle code.\n\t孔隙率/水坑代码回滚\n8.\tFix raincloud coverage issue.\n\t修复雨云覆盖率设置选项失灵的bug\n9.\tImprove setting value.\n\t设置参数拓展\n10.\tAdd star density option.\n\t新增星星密度配置选项\n11.\tFix waving bug while using 3d rp by split the group that may contain blocks with 3d model.\n\t拆分植物摇晃选项以解决一些资源包冲突问题\n12.\tUpdate CHS/ENG lang file.\n\t中文/英文语言文件更新\n\n\n\n"
  },
  {
    "path": "LICENSE.md",
    "content": "License, as stated by Chocapic13:\nSharing a modified version of my shaders:\n\n    You are not allowed to claim any of the code included in \"Chocapic13' shaders\" as your own\n\n    You can share a modified version of my shaders if you respect the following title scheme : \" -Name of the shaderpack- (Chocapic13' Shaders edit) \"\n\n    You cannot use any monetizing links (for example adfoc.us ; adf.ly)\n\n    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.\n\n    I have to be clearly credited\n\n    You cannot use any version older than \"Chocapic13' Shaders V4\" as a base, however you can modify older versions for personal use\n\nCommon 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.\n\nCommon sense #2 : share your modification only if you think it adds something really useful to the shaderpack(not only 2-3 constants changed)\nSpecial level of permission; with written permission from Chocapic13, on request if you think your shaderpack is an huge modification from the original:\n\n    Allows to use monetizing links\n\n    Allows to create your own sharing rules\n\n    Shaderpack name can be chosen\n\n    Listed on Chocapic13' shaders official thread\n\n    Chocapic13 still have to be clearly credited\n\nUsing this shaderpack in a video or a picture:\n\n    You are allowed to use this shaderpack for screenshots and videos if you give the shaderpack name in the description/message\n\n    You are allowed to use this shaderpack in monetized videos if you respect the rule above.\n\nMinecraft websites:\n\n    The download link must redirect to the download link given in the shaderpack's official thread\n\n    There has to be a link to the shaderpack's official thread\n\n    You are not allowed to add any monetizing link to the shaderpack download\n\nIf you are not sure about what you are allowed to do or not, PM Chocapic13 on http://www.minecraftforum.net/.\n\nNot 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.\n"
  },
  {
    "path": "README.md",
    "content": "# Bliss-BSPT #\nBliss-BSPT is an edited shader based on Bliss-unstable-development by X0nk.<br>\n<img src=\"https://github.com/X0nk/Bliss-Shader/assets/122314734/873c788c-5a48-46c0-9fb5-eac57b4ffa27\" width=\"100%\" height=\"100%\">\nThe original Bliss is a great shader and it's even better when X0nk made unstable development version of it.<br>\nBut it's also kinda broken with tons of bugs, so I decided to fix them myself and merge code from FAYER3's blocklight2 fork.<br>\nI called it BSPT which refers to \"Block Shadow Path Tracing\" at that time, <br>\nbut as I start add more and more new stuffs, improve the performance, the block shadow part becomes less important. <br>\nSo it doesn't matter why it's called BSPT today, I just what to make a ultra Bliss loved by everyone. <br>\n\n### FEATURING:\n+ New features like Aurora, Ripples, Lensflare, Rainbow, Ore emission and more.\n+ Improvements like detailed cloud, distortion animations, optimized raytracing GI and more.\n+ More realistic color & new tonemaps.\n+ LPV shadow from Fayer3.\n+ Better performance.\n+ Bug fix.\n\n### HOW TO DOWNLOAD:\n - locate the `green \"code\" button` on this page. this button is NOT in the `releases` page.\n - click the `green \"code\" button` and select `\"download zip\"`.\n - once the zip file finishes downloading, install it like a normal shader. you do NOT need to unzip/extract/decompress.\n\n# BSPT contains code from FAYER3's fork. Any re-editing & re-distribution is prohibited. #\n\n### SPECIAL THANKS:\n+ Chocapic13, for the base shader\n+ X0nk, for the masterpiece of work\n+ WoMspace, for spending alot of time creating a DOF overhaul\n+ Null, for doing a huge amount of work creating the voxel floodfill colored lighting\n+ Emin, and Gri573, for teaching me how to stop alot of light leaking\n+ RRe36 and Sixthsurge, for the great ideas to steal\n"
  },
  {
    "path": "shaders/block.properties",
    "content": "#ifdef FORCE_TRANSLUCENT_GLASS\nlayer.translucent = minecraft:glass minecraft:glass_pane\n#endif\n\nblock.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\n\nblock.11=bamboo bamboo_sapling\n\nblock.12=minecraft:short_grass minecraft:grass minecraft:short_dry_grass minecraft:tall_dry_grass\n\nblock.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 \\\nbiomesoplenty: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 \\\nconquest: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 \\\nfarmersdelight:wild_rice:half=lower farmersdelight:rice:half=lower \\\nflying_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 \\\nmeadow:eriophorum_tall:half=lower meadow:small_fir:half=lower \\\nnatures_spirit:large_lush_fern:half=lower natures_spirit:gardenia:half=lower natures_spirit:cattail:half=lower\n\nblock.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 \\\nbiomesoplenty: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 \\\nconquest: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 \\\nfarmersdelight:wild_rice:half=upper farmersdelight:rice_panicles:half=upper \\\nflying_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 \\\nmeadow:eriophorum_tall:half=upper meadow:small_fir:half=upper \\\nnatures_spirit:large_lush_fern:half=upper natures_spirit:gardenia:half=upper natures_spirit:cattail:half=upper\n\nblock.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 \\\nbiomesoplenty: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\n\n#ifdef BOES_EARTH_BLOCKSTATES\n\tblock.16=minecraft:hanging_roots minecraft:weeping_vines vine:is_on_leaves=false \\\n\tbiomesoplenty:spanish_moss\n#else\n\tblock.16=minecraft:hanging_roots minecraft:weeping_vines vine\n#endif\n\n####### ----- FloodFill ----- #######\n\n    # Blocks for FloodFill to ignore\nblock.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 \\\ngarnished: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 \\\ngravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \\\nhumility-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 \\\nrefurbished_furniture:plate \\\nsupplementaries: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\n\n    # Blocks that occlude 25% of light\nblock.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 \\\ndiagonalfences: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 \\\ngravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \\\nhumility-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\n\n    # Blocks that occlude 50% of light\nblock.52=iron_bars pointed_dripstone \\\nanother_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 \\\ncreate:schematic_table \\\ndiagonalwalls: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 \\\ndiagonalwindows:minecraft/iron_bars \\\nmeadow:table meadow:stone_table \\\nrefurbished_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 \\\nvalhelsia_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 \\\nvinery:dark_cherry_table\n\n    # Blocks that occlude 75% of light\nblock.53=bell \\\nvinery:dark_cherry_big_table\n\n\n####### ----- waving blocks with SSS ----- #######\n\n    ## ground waving\n    ## add a newline to organize for modded blocks\nblock.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 \\\nbiomesoplenty: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 \\\nfarmersdelight: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 \\\nendersdelight:chorusflame_bush endersdelight:amberveil_mushroom endersdelight:ethereal_saffron_bush \\\nherbalbrews: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 \\\nnatures_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 \\\nvegandelight:wild_soybean \\\nvinery: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 \\\nsupplementaries:wild_flax\n\n    ## 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.\nblock.55 = minecraft:closed_eyeblossom minecraft:open_eyeblossom minecraft:fern \\\nbiomesoplenty:bush \\\nconquest: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 \\\nflying_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 \\\nmeadow:eriophorum meadow:pine_sapling meadow:alpine_poppy meadow:delphinium meadow:saxifrage meadow:enzian meadow:fire_lily\n\n    ## air waving\n    ## add a newline to organize for modded blocks\n#ifdef BOES_EARTH_BLOCKSTATES\nblock.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 \\\n#else\nblock.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 \\\n#endif\nbeachparty:palm_leaves \\\nbiomesoplenty: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 \\\nconquest: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 \\\nflying_stuff:fiery_leaves flying_stuff:lavic_fungus_block \\\ngarnished: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 \\\nmeadow:alpine_birch_leaves_hanging meadow:pine_leaves meadow:pine_leaves_2 \\\nnatures_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 \\\nvinery:dark_cherry_leaves vinery:apple_leaves \\\nwesterosblocks: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 \\\ntwilightforest:twilight_oak_leaves twilightforest:canopy_leaves twilightforest:dark_leaves twilightforest:hardened_dark_leaves \\\naether:skyroot_leaves aether:golden_oak_leaves aether:crystal_leaves aether:crystal_fruit_leaves \\\ndynamictrees: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 \\\n\n\n####### ----- blocks with SSS ----- #######\n\n    ## strong sss\nblock.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 \\\naquamirae:elodea \\\nbeachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \\\nbiomesoplenty: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 \\\nfd: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 \\\nflying_stuff:glaciated_leaves flying_stuff:ice_spikes \\\ngarnished:sorrowful_lichen garnished:anniversary_cake \\\nherbalbrews:hibiscus_tea_block \\\nmcwholidays:snowy_pine_bottom mcwholidays:snowy_pine_middle mcwholidays:snowy_pine_top \\\nnatures_spirit:lotus_flower natures_spirit:lotus_stem natures_spirit:red_moss_carpet \\\nnethervinery:crimson_grape_bush nethervinery:warped_grape_bush \\\noceansdelight:guardian_soup \\\nvinery:jungle_grape_bush_white vinery:jungle_grape_bush_red \\\nwesterosblocks: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 \\\n\n    ## weak sss\n#ifdef BOES_EARTH_BLOCKSTATES\nblock.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 \\\n#else\nblock.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 \\\n#endif\naquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \\\nbeachparty:seashell_block beachparty:beach_parasol \\\nbiomesoplenty:toadstool \\\ncreate: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 \\\nends_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 \\\nfarmersdelight: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 \\\nfd:birthday_cake \\\nflying_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 \\\nherbalbrews: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 \\\nmcwholidays: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 \\\nnatures_spirit:azolla natures_spirit:shiitake_mushroom natures_spirit:shiitake_mushroom_block natures_spirit:gray_polypore natures_spirit:gray_polypore_block natures_spirit:alluaudia \\\nsavethehotbar:sack savethehotbar:skeleton_head_grave savethehotbar:zombie_head_grave\n\n    ## weak sss\nblock.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 \\\nmeadow:warped_wool meadow:flecked_wool meadow:highland_wool meadow:inky_wool meadow:patched_wool meadow:rocky_wool meadow:umbra_wool \\\nwesterosblocks: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 \\\nconquest: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\n\n    ## weak sss\nblock.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 \\\nwesterosblocks: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\n\n    ## weird blocks\nblock.84=minecraft:sand minecraft:red_sand\n\n    ## grass uwu\nblock.85=minecraft:grass_block:snowy=false\n\n\n####### ----- lightsources ----- #######\n\nblock.99=firefly_bush\n\nblock.100=small_amethyst_bud\n\nblock.101=medium_amethyst_bud\n\nblock.102=large_amethyst_bud\n\nblock.103=amethyst_cluster\n\nblock.104=beacon\n\nblock.105=brewing_stand\n\n#ifdef LPV_COLORED_CANDLES\nblock.106=candle:candles=1:lit=true \\\nsupplementaries:candle_holder:candles=1:lit=true\n\nblock.107=candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder:candles=2:lit=true\n\nblock.108=candle:candles=3:lit=true \\\nsupplementaries:candle_holder:candles=3:lit=true\n\nblock.109=candle:candles=4:lit=true \\\nsupplementaries:candle_holder:candles=4:lit=true\n\nblock.110=black_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_black:candles=1:lit=true\n\nblock.111=black_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_black:candles=2:lit=true\n\nblock.112=black_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_black:candles=3:lit=true\n\nblock.113=black_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_black:candles=4:lit=true\n\nblock.114=blue_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_blue:candles=1:lit=true\n\nblock.115=blue_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_blue:candles=2:lit=true\n\nblock.116=blue_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_blue:candles=3:lit=true\n\nblock.117=blue_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_blue:candles=4:lit=true\n\nblock.118=brown_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_brown:candles=1:lit=true\n\nblock.119=brown_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_brown:candles=2:lit=true\n\nblock.120=brown_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_brown:candles=3:lit=true\n\nblock.121=brown_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_brown:candles=4:lit=true\n\nblock.122=cyan_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_cyan:candles=1:lit=true\n\nblock.123=cyan_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_cyan:candles=2:lit=true\n\nblock.124=cyan_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_cyan:candles=3:lit=true\n\nblock.125=cyan_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_cyan:candles=4:lit=true\n\nblock.126=gray_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_gray:candles=1:lit=true\n\nblock.127=gray_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_gray:candles=2:lit=true\n\nblock.128=gray_candle:candles=2:lit=true \\\nsupplementaries:candle_holder_gray:candles=3:lit=true\n\nblock.129=gray_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_gray:candles=4:lit=true\n\nblock.130=green_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_green:candles=1:lit=true\n\nblock.131=green_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_green:candles=2:lit=true\n\nblock.132=green_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_green:candles=3:lit=true\n\nblock.133=green_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_green:candles=4:lit=true\n\nblock.134=light_blue_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_light_blue:candles=1:lit=true\n\nblock.135=light_blue_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_light_blue:candles=2:lit=true\n\nblock.136=light_blue_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_light_blue:candles=3:lit=true\n\nblock.137=light_blue_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_light_blue:candles=4:lit=true\n\nblock.138=light_gray_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_light_gray:candles=1:lit=true\n\nblock.139=light_gray_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_light_gray:candles=2:lit=true\n\nblock.140=light_gray_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_light_gray:candles=3:lit=true\n\nblock.141=light_gray_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_light_gray:candles=4:lit=true\n\nblock.142=lime_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_lime:candles=1:lit=true\n\nblock.143=lime_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_lime:candles=2:lit=true\n\nblock.144=lime_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_lime:candles=3:lit=true\n\nblock.145=lime_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_lime:candles=4:lit=true\n\nblock.146=magenta_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_magenta:candles=1:lit=true\n\nblock.147=magenta_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_magenta:candles=2:lit=true\n\nblock.148=magenta_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_magenta:candles=3:lit=true\n\nblock.149=magenta_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_magenta:candles=4:lit=true\n\nblock.150=orange_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_orange:candles=1:lit=true\n\nblock.151=orange_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_orange:candles=2:lit=true\n\nblock.152=orange_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_orange:candles=3:lit=true\n\nblock.153=orange_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_orange:candles=4:lit=true\n\nblock.154=pink_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_pink:candles=1:lit=true\n\nblock.155=pink_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_pink:candles=2:lit=true\n\nblock.156=pink_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_pink:candles=3:lit=true\n\nblock.157=pink_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_pink:candles=4:lit=true\n\nblock.158=purple_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_purple:candles=1:lit=true\n\nblock.159=purple_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_purple:candles=2:lit=true\n\nblock.160=purple_candle:candles=3:lit=true \\\nflying_stuff:amber_celestium_spike:lit=true flying_stuff:amber_celestium_antenna:lit=true \\\nsupplementaries:candle_holder_purple:candles=3:lit=true\n\nblock.161=purple_candle:candles=4:lit=true \\\nflying_stuff:amber_celestium_block:lit=true \\\nsupplementaries:candle_holder_purple:candles=4:lit=true\n\nblock.162=red_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_red:candles=1:lit=true\n\nblock.163=red_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_red:candles=2:lit=true\n\nblock.164=red_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_red:candles=3:lit=true\n\nblock.165=red_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_red:candles=4:lit=true\n\nblock.166=white_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_white:candles=1:lit=true\n\nblock.167=white_candle:candles=2:lit=true \\\nflying_stuff:inky_celestium_antenna:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_white:candles=2:lit=true\n\nblock.168=white_candle:candles=3:lit=true \\\nflying_stuff:pale_celestium_spike:lit=true flying_stuff:pale_celestium_antenna:lit=true \\\nsupplementaries:candle_holder_white:candles=3:lit=true\n\nblock.169=white_candle:candles=4:lit=true \\\nflying_stuff:pale_celestium_block:lit=true \\\nsupplementaries:candle_holder_white:candles=4:lit=true\n\nblock.170=yellow_candle:candles=1:lit=true \\\nsupplementaries:candle_holder_yellow:candles=1:lit=true\n\nblock.171=yellow_candle:candles=2:lit=true \\\nhumility-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 \\\nsupplementaries:candle_holder_yellow:candles=2:lit=true\n\nblock.172=yellow_candle:candles=3:lit=true \\\nsupplementaries:candle_holder_yellow:candles=3:lit=true\n\nblock.173=yellow_candle:candles=4:lit=true \\\nsupplementaries:candle_holder_yellow:candles=4:lit=true\n#else\nblock.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 \\\nsupplementaries: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\n\nblock.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 \\\nhumility-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 \\\nsupplementaries: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\n\nblock.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 \\\nsupplementaries: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\n\nblock.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 \\\nsupplementaries: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\n#endif\n\nblock.178=minecraft:cave_vines_plant:berries=true minecraft:cave_vines:berries=true\n\nblock.179=comparator:powered=true\n\nblock.180=copper_bulb:lit=true waxed_copper_bulb:lit=true\n\nblock.181=exposed_copper_bulb:lit=true waxed_exposed_copper_bulb:lit=true\n\nblock.182=oxidized_copper_bulb:lit=true waxed_oxidized_copper_bulb:lit=true\n\nblock.183=weathered_copper_bulb:lit=true waxed_weathered_copper_bulb:lit=true\n\nblock.184=conduit\n\nblock.185=crying_obsidian\n\nblock.186=deepslate_redstone_ore:lit=true\n\nblock.187=end_gateway\n\nblock.188=end_rod \\\n mcwlights:garden_light:lit=true\n\nblock.189=fire campfire:lit=true\n\nblock.190=conquest:fire_flies\n\nblock.191=ochre_froglight\n\nblock.192=pearlescent_froglight\n\nblock.193=verdant_froglight\n\nblock.194=furnace:lit=true blast_furnace:lit=true smoker:lit=true\n\nblock.195=glow_lichen \\\n flying_stuff:celestium_spike flying_stuff:celestium_antenna\n\nblock.196=glowstone \\\n mcwlights:glowstone_slab\n\nblock.197=jack_o_lantern \\\n humility-afm:jack_o_lantern_redstone\n\nblock.198=lantern \\\namendments:wall_lantern:light_level=15:lit=true \\\nmcwlights: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\n\nblock.199=lava minecraft:lava_cauldron \\\nflying_stuff:molten_metal:lit=true \\\nmcwlights:lava_lamp:lit=true\n\nblock.200=light:level=1\n\nblock.201=light:level=2\n\nblock.202=light:level=3\n\nblock.203=light:level=4\n\nblock.204=light:level=5\n\nblock.205=light:level=6\n\nblock.206=light:level=7\n\nblock.207=light:level=8\n\nblock.208=light:level=9\n\nblock.209=light:level=10\n\nblock.210=light:level=11\n\nblock.211=light:level=12\n\nblock.212=light:level=13\n\nblock.213=light:level=14\n\nblock.214=light:level=15\n\nblock.215=magma_block\n\nblock.216=powered_rail:powered=true\n\nblock.217=redstone_lamp:lit=true \\\nmcwlights:redstone_lamp_slab\nadditionalplacements:mcwlights.redstone_lamp_slab \\\nsupplementaries:stone_lamp supplementaries:end_stone_lamp supplementaries:deepslate_lamp supplementaries:blackstone_lamp\n\nblock.218=redstone_ore:lit=true\n\nblock.219=redstone_torch:lit=true redstone_wall_torch:lit=true\n\nblock.220=redstone_wire:power=1\n\nblock.221=redstone_wire:power=2\n\nblock.222=redstone_wire:power=3\n\nblock.223=redstone_wire:power=4\n\nblock.224=redstone_wire:power=5\n\nblock.225=redstone_wire:power=6\n\nblock.226=redstone_wire:power=7\n\nblock.227=redstone_wire:power=8\n\nblock.228=redstone_wire:power=9\n\nblock.229=redstone_wire:power=10\n\nblock.230=redstone_wire:power=11\n\nblock.231=redstone_wire:power=12\n\nblock.232=redstone_wire:power=13\n\nblock.233=redstone_wire:power=14\n\nblock.234=redstone_wire:power=15\n\nblock.235=repeater:powered=true\n\nblock.236=respawn_anchor:charges=4\n\nblock.237=sculk sculk_vein sculk_sensor sculk_catalyst calibrated_sculk_sensor sculk_shrieker sculk_sensor:sculk_sensor_phase=active\n\nblock.238=sea_pickle:waterlogged=true:pickles=1\n\nblock.239=sea_pickle:waterlogged=true:pickles=2\n\nblock.240=sea_pickle:waterlogged=true:pickles=3\n\nblock.241=sea_pickle:waterlogged=true:pickles=4\n\nblock.242=sea_lantern \\\nflying_stuff:celestium_block \\\nhumility-afm:jack_o_lantern_soul \\\nmcwlights:sea_lantern_slab\n\nblock.243=shroomlight \\\nmcwlights:shroomlight_slab \\\nadditionalplacements:mcwlights.shroomlight_slab\n\nblock.244=soul_fire soul_campfire:lit=true\n\nblock.245=soul_lantern \\\namendments:wall_lantern:light_level=10:lit=true \\\nmcwlights: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\n\nblock.246=soul_torch soul_wall_torch \\\nmcwlights: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 \\\nsupplementaries:sconce_soul supplementaries:sconce_wall_soul\n\nblock.247=torch wall_torch \\\nmcwlights: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 \\\nsupplementaries:sconce supplementaries:sconce_wall supplementaries:sconce_lever\n\nblock.248=westerosblocks:safe_fire\n\nblock.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\n\nblock.250=betterend:terminite_bulb_lantern_black betterend:iron_bulb_lantern_black \\\nhumility-afm:led_black \\\nmcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true\n\nblock.251=betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue \\\nbetternether:blue_weeping_obsidian \\\nhumility-afm:led_blue \\\nmcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true\n\nblock.252=betterend:terminite_bulb_lantern_brown betterend:iron_bulb_lantern_brown \\\nhumility-afm:led_brown \\\nmcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true\n\nblock.253=betterend:terminite_bulb_lantern_cyan betterend:iron_bulb_lantern_cyan \\\nhumility-afm:led_cyan \\\nmcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true\n\nblock.254= betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray \\\nhumility-afm:led_gray \\\nmcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true\n\nblock.255=betterend:terminite_bulb_lantern_green betterend:iron_bulb_lantern_green \\\nhumility-afm:led_green \\\nmcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true\n\nblock.256=betterend:terminite_bulb_lantern_blue betterend:iron_bulb_lantern_blue \\\nhumility-afm:led_light_blue \\\nmcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true\n\nblock.257=betterend:terminite_bulb_lantern_gray betterend:iron_bulb_lantern_gray \\\nhumility-afm:led_light_gray \\\nmcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true\n\nblock.258= betterend:terminite_bulb_lantern_lime betterend:iron_bulb_lantern_lime \\\nhumility-afm:led_lime \\\nmcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true\n\nblock.259= betterend:terminite_bulb_lantern_magenta betterend:iron_bulb_lantern_magenta \\\nhumility-afm:led_magenta \\\nmcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true\n\nblock.260= betterend:terminite_bulb_lantern_orange betterend:iron_bulb_lantern_orange \\\nhumility-afm:led_orange \\\nmcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true\n\nblock.261=betterend:terminite_bulb_lantern_pink betterend:iron_bulb_lantern_pink \\\nhumility-afm:led_pink \\\nmcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true\n\nblock.262=betterend:terminite_bulb_lantern_purple betterend:iron_bulb_lantern_purple \\\nbetternether:whispering_gourd_lantern \\\nhumility-afm:led_purple \\\nmcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true\n\nblock.263=betterend:terminite_bulb_lantern_red betterend:iron_bulb_lantern_red \\\nhumility-afm:led_red \\\nmcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true\n\nblock.264=betterend:terminite_bulb_lantern_white betterend:iron_bulb_lantern_white \\\nhumility-afm:led_white \\\nmcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true\n\nblock.265=betterend:iron_bulb_lantern_yellow betterend:terminite_bulb_lantern_yellow \\\nhumility-afm:led_yellow \\\nmcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true\n\nblock.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\n\n####### ----- reflective translucents / glass ----- #######\n\nblock.301=glass glass_pane \\\ndiagonalwindows:minecraft/glass_pane\n\nblock.302=black_stained_glass black_stained_glass_pane \\\ndiagonalwindows:minecraft/black_stained_glass_pane\n\nblock.303=blue_stained_glass blue_stained_glass_pane \\\ndiagonalwindows:minecraft/blue_stained_glass_pane\n\nblock.304=brown_stained_glass brown_stained_glass_pane \\\ndiagonalwindows:minecraft/brown_stained_glass_pane\n\nblock.305=cyan_stained_glass cyan_stained_glass_pane \\\ndiagonalwindows:minecraft/cyan_stained_glass_pane\n\nblock.306=gray_stained_glass gray_stained_glass_pane \\\ndiagonalwindows:minecraft/gray_stained_glass_pane\n\nblock.307=green_stained_glass green_stained_glass_pane \\\ndiagonalwindows:minecraft/green_stained_glass_pane\n\nblock.308=light_blue_stained_glass light_blue_stained_glass_pane \\\ndiagonalwindows:minecraft/light_blue_stained_glass_pane\n\nblock.309=light_gray_stained_glass light_gray_stained_glass_pane \\\ndiagonalwindows:minecraft/light_gray_stained_glass_pane\n\nblock.310=lime_stained_glass lime_stained_glass_pane \\\ndiagonalwindows:minecraft/lime_stained_glass_pane\n\nblock.311=magenta_stained_glass magenta_stained_glass_pane \\\ndiagonalwindows:minecraft/magenta_stained_glass_pane\n\nblock.312=orange_stained_glass orange_stained_glass_pane \\\ndiagonalwindows:minecraft/orange_stained_glass_pane\n\nblock.313=pink_stained_glass pink_stained_glass_pane \\\ndiagonalwindows:minecraft/pink_stained_glass_pane\n\nblock.314=purple_stained_glass purple_stained_glass_pane \\\ndiagonalwindows:minecraft/purple_stained_glass_pane\n\nblock.315=red_stained_glass red_stained_glass_pane \\\ndiagonalwindows:minecraft/red_stained_glass_pane\n\nblock.316=white_stained_glass white_stained_glass_pane \\\ndiagonalwindows:minecraft/white_stained_glass_pane\n\nblock.317=yellow_stained_glass yellow_stained_glass_pane \\\ndiagonalwindows:minecraft/yellow_stained_glass_pane\n\nblock.318=slime_block\n\nblock.319=honey_block\n\nblock.320=ice frosted_ice\n\nblock.321=nether_portal\n\n\n####### ----- LPV shapes ----- #######\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\n#ifdef BOES_EARTH_BLOCKSTATES\n\tblock.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\n#else\n\tblock.409=snow:layers=1 snow:layers=2 snow:layers=3 snow:layers=4\n#endif\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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 \\\n 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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\nblock.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\n\n\n####### ----- misc ----- #######\n\n    ## stuff\nblock.500=minecraft:end_portal\n\n    ## all blocks here get exluded from POM.\nblock.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\n"
  },
  {
    "path": "shaders/dimension.properties",
    "content": "# USAGE\n# dimension.<Shader to use> = <dimension(s) that use this shader. use \" * \" for fallback>\n# \"shader to use\" refers to shaderpacks/EXAMPLESHADER/shaders/<name \"Shader to use\" >..., like how optifine has world0, world1, but you can name these anything here.\n# the dimension \"ID's\" to use are equivalent to the \"ID's\" from the /execute in <dimension> command in-game.\n\n# EXAMPLE\n# dimension.world0 = minecraft:overworld twilightforest:twilight_forest\n# dimension.world-1 = minecraft:the_nether \n# dimension.WHATEVER = somemod:whateverdimension\n\n dimension.world0 = minecraft:overworld *\n dimension.world-1 = minecraft:the_nether \n dimension.world1 = minecraft:the_end\n dimension.worldx = \n \n# this is using alternate versions of the overworld shader, that have tweaks targeted at specific dimensions\n dimension.world0_Aether = aether:the_aether\n dimension.world0_Twilight_Forest = twilightforest:twilight_forest"
  },
  {
    "path": "shaders/dimensions/DH_generic.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/dither.glsl\"\n\nin vec4 pos;\nin vec4 gcolor;\n\nuniform vec2 texelSize;\nuniform vec3 cameraPosition;\nuniform sampler2D depthtex1;\n\nuniform mat4 gbufferModelViewInverse;\nuniform float far;\n\nvec3 toLinear(vec3 sRGB){\n\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n}\n\n/* RENDERTARGETS:2 */\nvoid main() {\n\tif (gl_FragCoord.x * texelSize.x < 1.0  && gl_FragCoord.y * texelSize.y < 1.0 ) {\n\n\t\tvec3 viewPos = pos.xyz;\n\t\tvec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz;\n\n\t\tfloat falloff = exp(-10.0 * (1.0-clamp(1.0 - playerPos.y/5000.0,0.0,1.0)));\n\n\t\t#ifdef DH_OVERDRAW_PREVENTION\n\t\t\t#if OVERDRAW_MAX_DISTANCE == 0\n\t\t\t\tfloat maxOverdrawDistance = far;\n\t\t\t#else\n\t\t\t\tfloat maxOverdrawDistance = OVERDRAW_MAX_DISTANCE;\n\t\t\t#endif\n\n\t\t\tif(length(playerPos) < clamp(far-16*4, 16, maxOverdrawDistance) || texture2D(depthtex1, gl_FragCoord.xy*texelSize).x < 1.0){ discard; return; }\n\t\t#endif\n\n\t\tvec3 Albedo = toLinear(gcolor.rgb);\n\t\tgl_FragData[0] = vec4(Albedo * Emissive_Brightness * 0.1, gcolor.a);\n\t}\n}"
  },
  {
    "path": "shaders/dimensions/DH_generic.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\nout vec4 pos;\nout vec4 gcolor;\n\nuniform vec2 texelSize;\nuniform int framemod8;\n\n#if DOF_QUALITY == 5\n\tuniform int hideGUI;\n\tuniform int frameCounter;\n\tuniform float aspectRatio;\n\tuniform float screenBrightness;\n\tuniform float far;\n\t#include \"/lib/bokeh.glsl\"\n#endif\n\nuniform int framemod4_DH;\n#define DH_TAA_OVERRIDE\n#include \"/lib/TAA_jitter.glsl\"\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t#endif\n\t#if defined TAA && defined DH_TAA_JITTER\n\t\tgl_Position.xy += offsets[framemod4_DH] * gl_Position.w*texelSize;\n\t#endif\n\n\tpos = gl_ModelViewMatrix * gl_Vertex;\n\tgcolor = gl_Color;\n\n\t#if DOF_QUALITY == 5\n\t\tvec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);\n\t\tjitter = rotate(radians(float(frameCounter))) * jitter;\n\t\tjitter.y *= aspectRatio;\n\t\tjitter.x *= DOF_ANAMORPHIC_RATIO;\n\n\t\t#if MANUAL_FOCUS == -2\n\t\t\tfloat focusMul = 0;\n\t\t#elif MANUAL_FOCUS == -1\n\t\t\tfloat focusMul = gl_Position.z + (far / 3.0) - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);\n\t\t#else\n\t\t\tfloat focusMul = gl_Position.z + (far / 3.0) - MANUAL_FOCUS;\n\t\t#endif\n\n\t\tvec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;\n\t\tgl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/DH_solid.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n\nin vec4 pos;\nin vec4 localPos;\nin vec4 gcolor;\nin vec2 lightmapCoords;\nin vec4 normals_and_materials;\nflat in float SSSAMOUNT;\nflat in float EMISSIVE;\nflat in int dh_material_id;\n\nuniform float far;\n// uniform int hideGUI;\n\n#include \"/lib/projections.glsl\"\n\nuniform sampler2D noisetex;\n\nuniform float frameTimeCounter;\n\n//3D noise from 2d texture\nfloat densityAtPos(in vec3 pos){\n\tpos /= 18.;\n\tpos.xz *= 0.5;\n\tvec3 p = floor(pos);\n\tvec3 f = fract(pos);\n\tvec2 uv =  p.xz + f.xz + p.y * vec2(0.0,193.0);\n\tvec2 coord =  uv / 512.0;\n\t\n\t//The y channel has an offset to avoid using two textures fetches\n\tvec2 xy = texture2D(noisetex, coord).yx;\n\n\treturn mix(xy.r,xy.g, f.y);\n}\n\n// https://gitlab.com/jeseibel/distant-horizons-core/-/blob/main/core/src/main/resources/shaders/flat_shaded.frag?ref_type=heads\n// Property of Distant Horizons [mod]\n\nconst float noiseIntensity = NOISE_INTENSITY;\nconst int noiseDropoff = NOISE_DROPOFF;\n\nfloat rand(float co) { return fract(sin(co*(91.3458)) * 47453.5453); }\nfloat rand(vec2 co) { return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); }\nfloat rand(vec3 co) { return rand(co.xy + rand(co.z)); }\n\nvec3 quantize(const in vec3 val, const in int stepSize) {\n\treturn floor(val * stepSize) / stepSize;\n}\n\nvec4 applyNoise(in vec4 fragColor, const in vec3 viewPos, const in float viewDist) {\n\t// vec3 vertexNormal = normalize(cross(dFdy(vPos.xyz), dFdx(vPos.xyz)));\n\t// // This bit of code is required to fix the vertex position problem cus of floats in the verted world position varuable\n\t// vec3 fixedVPos = vPos.xyz + vertexNormal * 0.001;\n\n\tfloat noiseAmplification = noiseIntensity * 0.01;\n\tfloat lum = (fragColor.r + fragColor.g + fragColor.b) / 3.0;\n\tnoiseAmplification = (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\n\tnoiseAmplification *= fragColor.a; // The effect would lessen on transparent objects\n    \n\t// Mikis idea. make it such that you can control the step amount as distance increases out from where vanilla chunks end.\n\t// ideally, close = higher steps and far = lower steps\n\tfloat highestSteps = NOISE_RESOLUTION;\n\tfloat lowestSteps = 2.0;\n\tfloat transitionLength = 16.0 * 16.0; // distance it takes to reach the lowest steps from the highest. measured in meters/blocks.\n     \n\tfloat transitionGradient = clamp((length(viewPos - cameraPosition) - (far+32.0)) / transitionLength,0.0,1.0);\n\ttransitionGradient = sqrt(transitionGradient);// make the gradient appear smoother and less sudden when approaching low steps.low steps.\n     \n\tint dynamicNoiseSteps = int(mix(highestSteps, lowestSteps, transitionGradient));\n\n\t// Random value for each position\n\tfloat randomValue = rand(quantize(viewPos, dynamicNoiseSteps)) * 2.0 * noiseAmplification - noiseAmplification;\n\n\t// Modifies the color\n\t// 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\n\tvec3 newCol = fragColor.rgb + (1.0 - fragColor.rgb) * randomValue;\n\tnewCol = clamp(newCol, 0.0, 1.0);\n\n\tif (noiseDropoff != 0) {\n\t\tfloat distF = min(viewDist / noiseDropoff, 1.0);\n\t\tnewCol = mix(newCol, fragColor.rgb, distF); // The further away it gets, the less noise gets applied\n\t}\n\n\treturn vec4(newCol,1.0);\n}\n\n/* RENDERTARGETS:1,7,8 */\nvoid main() {\n    \n\t#ifdef DH_OVERDRAW_PREVENTION\n\t\t#if OVERDRAW_MAX_DISTANCE == 0\n\t\t\tfloat maxOverdrawDistance = far;\n\t\t#else\n\t\t\tfloat maxOverdrawDistance = OVERDRAW_MAX_DISTANCE;\n\t\t#endif\n\n\tif(clamp(1.0-length(localPos.xyz)/clamp(far - 32.0,32.0,maxOverdrawDistance),0.0,1.0) > 0.0 ){\n\t\tdiscard;\n\t\treturn;\n\t}\n\t#endif\n\n\tvec3 normals = (normals_and_materials.xyz);\n\tfloat materials = normals_and_materials.a;\n\tvec2 PackLightmaps = lightmapCoords;\n\n\t// PackLightmaps.y *= 1.05;\n\tPackLightmaps = min(max(PackLightmaps,0.0)*1.05,1.0);\n    \n\tvec4 data1 = clamp( encode(viewToWorld(normals), PackLightmaps), 0.0, 1.0);\n    \n\t// alpha is material masks, set it to 0.65 to make a DH LODs mask. \n\t#ifdef DH_NOISE_TEXTURE\n\t\tvec4 Albedo = applyNoise(gcolor, localPos.rgb+cameraPosition, length(localPos.xyz));\n\t#else\n\t\tvec4 Albedo = vec4(gcolor.rgb, 1.0);\n\t#endif\n\t// vec3 worldPos = mat3(gbufferModelViewInverse)*pos.xyz + cameraPosition;\n\t// worldPos = (worldPos*vec3(1.0,1./48.,1.0)/4) ;\n\t// worldPos = floor(worldPos * 4.0 + 0.001) / 32.0;\n\t// float noiseTexture = densityAtPos(worldPos* 5000 ) +0.5;\n\n\t// float noiseFactor = max(1.0 - 0.3 * dot(Albedo.rgb, Albedo.rgb),0.0);\n\t// Albedo.rgb *= pow(noiseTexture, 0.6 * noiseFactor);\n\t// Albedo.rgb *= (noiseTexture*noiseTexture)*0.5 + 0.5;\n\n\t#ifdef AEROCHROME_MODE\n\t\tif(dh_material_id == DH_BLOCK_LEAVES || dh_material_id == DH_BLOCK_WATER) { // leaves and waterlogged blocks\n\t\t\tfloat grey = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07));\n\t\t\tAlbedo.rgb = mix(vec3(grey), aerochrome_color, 0.7);\n\n\t\t} else if(dh_material_id == DH_BLOCK_GRASS) { // grass\n\t\t\tAlbedo.rgb = mix(Albedo.rgb, aerochrome_color, 1.0 - Albedo.g);\n\t\t}\n\t#endif\n\n\t#ifdef WhiteWorld\n\t\tAlbedo.rgb = vec3(0.5);\n\t#endif\n    \n\tgl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x),\tencodeVec2(Albedo.y,data1.y),\tencodeVec2(Albedo.z,data1.z),\tencodeVec2(data1.w, materials));\n    \n\tgl_FragData[1].a = 0.0;\n    \n\t#if EMISSIVE_TYPE == 0\n\t\tgl_FragData[2].a = 0.0;\n\t#else\n\t\tgl_FragData[2].a = EMISSIVE;\n\t#endif\n\n\t#if SSS_TYPE == 0\n\t\tgl_FragData[2].b = 0.0;\n\t#else\n\t\tgl_FragData[2].b = SSSAMOUNT;\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/DH_solid.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\nout vec4 pos;\nout vec4 localPos;\nout vec4 gcolor;\nout vec2 lightmapCoords;\nout vec4 normals_and_materials;\nflat out float SSSAMOUNT;\nflat out float EMISSIVE;\nflat out int dh_material_id;\n\nuniform vec2 texelSize;\nuniform int framemod8;\n\nuniform float far;\n\n#if DOF_QUALITY == 5\n\tuniform int hideGUI;\n\tuniform int frameCounter;\n\tuniform float aspectRatio;\n\tuniform float screenBrightness;\n\t#include \"/lib/bokeh.glsl\"\n#endif\n\nuniform int framemod4_DH;\n#define DH_TAA_OVERRIDE\n#include \"/lib/TAA_jitter.glsl\"\n\n#include \"/lib/projections.glsl\"\n\nuniform mat4 dhProjection;\n\n#define SEASONS_VSH\n#define DH_SEASONS\n#include \"/lib/climate_settings.glsl\"\n\nvoid main() {\n\n\t// vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n   \t// vec3 worldpos = toWorldSpace(position);\n\t// #ifdef PLANET_CURVATURE\n\t// \tfloat curvature = length(worldpos) / (16*8);\n\t// \tworldpos.y -= curvature*curvature * CURVATURE_AMOUNT;\n\t// #endif\n\t// position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz;\n\n\t// gl_Position = toClipSpace4alt(position);\n\n\tvec4 vPos = gl_Vertex;\n\n\tvec3 cameraOffset = fract(cameraPosition);\n\tvPos.xyz = floor(vPos.xyz + cameraOffset + 0.5) - cameraOffset;\n\n\tvec4 viewPos = gl_ModelViewMatrix * vPos;\n\tlocalPos = gbufferModelViewInverse * viewPos;\n\n\t#ifdef PLANET_CURVATURE\n\t\tvec4 worldPos = localPos;\n\n\t\tfloat curvature = length(worldPos) / (16*8);\n\t\tworldPos.y -= curvature*curvature * CURVATURE_AMOUNT;\n\n\t\tworldPos = gbufferModelView * worldPos;\n\n\t\tgl_Position = dhProjection * worldPos;\n\t#else\n\t\tgl_Position = dhProjection * viewPos;\n\t#endif\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t#endif\n\n\t#if defined TAA && defined DH_TAA_JITTER\n\t\tgl_Position.xy += offsets[framemod4_DH] * gl_Position.w*texelSize;\n\t#endif\n\n\tlightmapCoords = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy;\n\n\tgcolor = gl_Color;\n\n\tEMISSIVE = 0.0;\n\tif(dhMaterialId == DH_BLOCK_ILLUMINATED || gl_MultiTexCoord1.x >= 0.95) EMISSIVE = 0.5;\n\n\tSSSAMOUNT = 0.0;\n\t#if defined DH_SUBSURFACE_SCATTERING\n\t\tif (dhMaterialId == DH_BLOCK_LEAVES) SSSAMOUNT = 1.0;\n\t\tif (dhMaterialId == DH_BLOCK_SNOW) SSSAMOUNT = 0.5;\n\t#endif\n\n\t// a mask for DH terrain in general.\n\tfloat MATERIALS = 0.65;\n\n\tnormals_and_materials = vec4(normalize(gl_NormalMatrix * gl_Normal), MATERIALS);\n\tdh_material_id = dhMaterialId;\n\n\t#if defined Seasons && defined OVERWORLD_SHADER\n\t\tYearCycleColor(gcolor.rgb, gl_Color.rgb, dhMaterialId == DH_BLOCK_LEAVES, dhMaterialId == DH_BLOCK_GRASS);\n\t#endif\n\n\t#if DOF_QUALITY == 5\n\t\tvec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);\n\t\tjitter = rotate(radians(float(frameCounter))) * jitter;\n\t\tjitter.y *= aspectRatio;\n\t\tjitter.x *= DOF_ANAMORPHIC_RATIO;\n\n\t\t#if MANUAL_FOCUS == -2\n\t\t\tfloat focusMul = 0;\n\t\t#elif MANUAL_FOCUS == -1\n\t\t\tfloat focusMul = gl_Position.z + (far / 3.0) - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);\n\t\t#else\n\t\t\tfloat focusMul = gl_Position.z + (far / 3.0) - MANUAL_FOCUS;\n\t\t#endif\n\n\t\tvec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;\n\t\tgl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/DH_translucent.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/projections.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\nuniform vec2 texelSize;\n// uniform int moonPhase;\nuniform float frameTimeCounter;\n\nconst bool shadowHardwareFiltering = true;\nuniform sampler2DShadow shadow;\n\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex4;\nuniform sampler2D colortex5;\nuniform sampler2D colortex12;\n\n#include \"/lib/sky_gradient.glsl\"\n#include \"/lib/waterBump.glsl\"\n#include \"/lib/Shadow_Params.glsl\"\n\nin vec4 pos;\nin vec4 gcolor;\nin vec4 normals_and_materials;\nin vec2 lightmapCoords;\nflat in int isWater;\n\n// uniform float far;\n\n// uniform sampler2D colortex4;\nflat in vec3 averageSkyCol_Clouds;\nflat in vec4 lightCol;\nflat in vec3 WsunVec;\nflat in vec3 WsunVec2;\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nuniform float near;\nfloat invLinZ (float lindepth){\n\treturn -((2.0*dhNearPlane/lindepth)-far-dhNearPlane)/(far-dhNearPlane);\n}\n\nfloat ld(float dist) {\n\treturn (2.0 * dhNearPlane) / (far + dhNearPlane - dist * (far - dhNearPlane));\n}\n\nfloat linearizeDepthFast(const in float depth, const in float dhNearPlane, const in float far) {\n\treturn (dhNearPlane * far) / (depth * (dhNearPlane - far) + far);\n}\n\nuniform int isEyeInWater;\nuniform float rainStrength;\n\n#ifdef OVERWORLD_SHADER\n\tuniform int worldTime;\n\tuniform int worldDay;\n\n\t#include \"/lib/scene_controller.glsl\"\n\t#define CLOUDSHADOWSONLY\n\t#include \"/lib/volumetricClouds.glsl\"\n#endif\n\nfloat GGX(vec3 n, vec3 v, vec3 l, float r, float f0) {\n\tr = max(pow(r,2.5), 0.0001);\n\n\tvec3 h = l + v;\n\tfloat hn = inversesqrt(dot(h, h));\n\n\tfloat dotLH = clamp(dot(h,l)*hn,0.,1.);\n\tfloat dotNH = clamp(dot(h,n)*hn,0.,1.) ;\n\tfloat dotNL = clamp(dot(n,l),0.,1.);\n\tfloat dotNHsq = dotNH*dotNH;\n\n\tfloat denom = dotNHsq * r - dotNHsq + 1.;\n\tfloat D = r / (PI * denom * denom);\n\n\tfloat F = f0 + (1. - f0) * exp2((-5.55473*dotLH-6.98316)*dotLH);\n\tfloat k2 = .25 * r;\n\n\treturn dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2);\n}\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nvec3 doScreenSpaceReflectiom(vec3 dir, vec3 position, float dither, float quality){\n\tfloat biasAmount = 0.001;\n\n\tvec3 clipPosition = DH_toClipSpace3(position);\n\tfloat rayLength = ((position.z + dir.z * dhFarPlane*sqrt(3.)) > -dhNearPlane) ? (-dhNearPlane - position.z) / dir.z : dhFarPlane*sqrt(3.);\n\t\n\tvec3 direction = DH_toClipSpace3(position + dir*rayLength) - clipPosition;  //convert to clip space\n\n\t//get at which length the ray intersects with the edge of the screen\n\tvec3 maxLengths = (step(0.0, direction) - clipPosition) / direction;\n\tfloat mult = min(min(maxLengths.x, maxLengths.y), maxLengths.z);\n\tvec3 stepv = direction * mult / quality;\n\n\tclipPosition.xy *= RENDER_SCALE;\n\tstepv.xy *= RENDER_SCALE;\n\n\tvec3 spos = clipPosition + stepv*dither;\n\tspos.xy += texelSize*0.5;\n\n\tfloat minZ = spos.z - 0.00025 / DH_ld(spos.z);\n\tfloat maxZ = spos.z;\n\n\tfor (int i = 0; i <= int(quality); i++) {\n\t\tif(spos.x < 0 || spos.x > 1 || spos.y < 0 || spos.y > 1) return vec3(1.1);\n\n\t\tfloat sampleDepth = sqrt(texelFetch2D(colortex12,ivec2(spos.xy/texelSize/4),0).a/65000.0);\n\t\tfloat sp = DH_inv_ld(sampleDepth);\n\t\t\n\t\tif(sp < max(minZ, maxZ) && sp > min(minZ, maxZ)) return vec3(spos.xy/RENDER_SCALE,sp);\n\n\t\tminZ = maxZ - biasAmount / DH_ld(spos.z);\n\t\tmaxZ += stepv.z;\n\t\tspos += stepv;\n\t}\n\treturn vec3(1.1);\n}\n\nvec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){\n\tfloat bumpmult = puddle_values;\n\tbump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult);\n\treturn normalize(bump*tbnMatrix);\n}\n\n#define FORWARD_SPECULAR\n#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]\n#define FORWARD_BACKGROUND_REFLECTION\n\n/* RENDERTARGETS:2,7 */\nvoid main() {\n\tif (gl_FragCoord.x * texelSize.x < 1.0  && gl_FragCoord.y * texelSize.y < 1.0) {\n\n\t\tbool iswater = isWater > 0;\n\n\t\tfloat material = 0.7;\n\t\tif(iswater) material = 1.0;\n\n\t\tvec3 normals = normalize(normals_and_materials.xyz);\n\t\tif (!gl_FrontFacing) normals = -normals;\n\n\t\tvec3 worldSpaceNormals =  mat3(gbufferModelViewInverse) * normals;\n\n\t\tvec3 viewPos = pos.xyz;\n\t\tvec3 playerPos = toWorldSpace(viewPos);\n\t\tfloat transition = exp(-25* pow(clamp(1.0 - length(playerPos)/(far-8),0.0,1.0),2));\n\n\t\t#ifdef DH_OVERDRAW_PREVENTION\n\t\t\t#if OVERDRAW_MAX_DISTANCE == 0\n\t\t\t\tfloat maxOverdrawDistance = far;\n\t\t\t#else\n\t\t\t\tfloat maxOverdrawDistance = OVERDRAW_MAX_DISTANCE;\n\t\t\t#endif\n\n\t\t\tif(length(playerPos) < clamp(far-16*4, 16, maxOverdrawDistance) ){ discard; return;}\n\t\t#endif\n\n\t\tvec3 waterNormals = worldSpaceNormals;\n\n\t\tif(iswater && abs(worldSpaceNormals.y) > 0.1){\n\t\t\tvec3 waterPos = (playerPos+cameraPosition).xzy;\n\n\t\t\tvec3 bump = normalize(getWaveNormal(waterPos, playerPos, true));\n\n\t\t\tfloat bumpmult = WATER_WAVE_STRENGTH;\n\n\t\t\tbump = bump * bumpmult + vec3(0.0f, 0.0f, 1.0f - bumpmult);\n\n\t\t\twaterNormals.xz = bump.xy;\n\t\t}\n\n\t\tnormals = worldToView(waterNormals);\n\n\t\tgl_FragData[0] = gcolor;\n\t\t// float UnchangedAlpha = gl_FragData[0].a;\n    \n\t\tvec3 Albedo = toLinear(gl_FragData[0].rgb);\n\n\t\tif(iswater){\n\t\t\t#ifdef Vanilla_like_water\n\t\t\t\tAlbedo *= sqrt(luma(Albedo));\n\t\t\t#else\n\t\t\t\tAlbedo = vec3(0.0);\n\t\t\t\tgl_FragData[0].a = 1.0/255.0;\n\t\t\t#endif\n\t\t}\n\n\t\t#ifdef WhiteWorld\n\t\t\tgl_FragData[0].rgb = vec3(1.0);\n\t\t\tgl_FragData[0].a = 1.0;\n\t\t#endif\n\n\t\t// diffuse\n\t\tvec3 Indirect_lighting = vec3(0.0);\n\t\t// vec3 MinimumLightColor = vec3(1.0);\n\t\tvec3 Direct_lighting = vec3(0.0);\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tvec3 DirectLightColor = lightCol.rgb/2400.0;\n\n\t\t\tfloat NdotL = clamp(dot(worldSpaceNormals, WsunVec),0.0,1.0); \n\t\t\tNdotL = clamp((-15 + NdotL*255.0) / 240.0  ,0.0,1.0);\n\n\t\t\tfloat Shadows = 1.0;\n\n\t\t\t#ifdef DISTANT_HORIZONS_SHADOWMAP\n\t\t\t\tvec3 feetPlayerPos_shadow = toWorldSpace(pos.xyz);\n\n\t\t\t\tvec3 projectedShadowPosition = toShadowSpaceProjected(feetPlayerPos_shadow);\n\n\t\t\t\t//apply distortion\n\t\t\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\t\t\tfloat distortFactor = calcDistort(projectedShadowPosition.xy);\n\t\t\t\t\tprojectedShadowPosition.xy *= distortFactor;\n\t\t\t\t#else\n\t\t\t\t\tfloat distortFactor = 1.0;\n\t\t\t\t#endif\n\n\t\t\t\tfloat smallbias = -0.0035;\n\n \t\t\t\tbool ShadowBounds = abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0;\n\n\t\t\t\tif(ShadowBounds){\n\t\t\t\t\tShadows = 0.0;\n\t\t\t\t\tprojectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);\n\n\t\t\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\t\t\tprojectedShadowPosition.xy *= 0.8;\n\t\t\t\t\t#endif\n\n\t\t\t\t\tShadows = shadow2D(shadow, projectedShadowPosition + vec3(0.0,0.0, smallbias)).x;\n\t\t\t\t}\n\t\t\t#endif\n\n\t\t\tShadows *= getCloudShadow(playerPos + cameraPosition, WsunVec);\n\n\t\t\tDirect_lighting = DirectLightColor * NdotL * Shadows;\n\n\t\t\tvec3 AmbientLightColor = averageSkyCol_Clouds / 900.0 ;\n\n\t\t\tvec3 indirectNormal = worldSpaceNormals.xyz / dot(abs(worldSpaceNormals.xyz), vec3(1.0));\n\t\t\tfloat SkylightDir = clamp(indirectNormal.y * 0.7 + 0.3, 0.0, 1.0);\n\n\t\t\tfloat skylight = mix(0.08, 1.0, SkylightDir);\n\t\t\tAmbientLightColor *= skylight;\n\t\t#endif\n\n\t\t#ifndef OVERWORLD_SHADER\n\t\t\tvec3 AmbientLightColor = vec3(0.5);\n\t\t#endif\n\n\t\tIndirect_lighting = AmbientLightColor;\n\n\t\tfloat indoors = min(max(lightmapCoords.y-0.5,0.0)/0.4,1.0);\n\t\tvec3 FinalColor = (Indirect_lighting + Direct_lighting*indoors) * Albedo;\n\n\t\t// specular\n\t\t#ifdef FORWARD_SPECULAR\n\t\t\tvec3 Reflections_Final = vec3(0.0);\n\t\t\tvec4 Reflections = vec4(0.0);\n\t\t\tvec3 BackgroundReflection = FinalColor; \n\t\t\tvec3 SunReflection = vec3(0.0);\n\t\t\tfloat SSR_HIT_SKY_MASK = indoors;\n\n\t\t\tfloat roughness = 0.0;\n\t\t\tfloat f0 = 0.02;\n\t\t\t// f0 = 0.9;\n\n\t\t\tvec3 reflectedVector = reflect(normalize(viewPos), normals);\n\t\t\tfloat normalDotEye = dot(normals, normalize(viewPos));\n\n\t\t\tfloat fresnel =  pow(clamp(1.0 + normalDotEye, 0.0, 1.0),5.0);\n\n\t\t\tfresnel = mix(f0, 1.0, fresnel);\n\n\t\t\t#ifdef SNELLS_WINDOW\n\t\t\t\tif(isEyeInWater == 1) fresnel = pow(clamp(1.5 + normalDotEye,0.0,1.0), 25.0);\n\t\t\t#endif\n\n\t\t\t#if FORWARD_SSR_QUALITY > 0 && defined DH_SCREENSPACE_REFLECTIONS\n\t\t\t\tvec3 rtPos = doScreenSpaceReflectiom(reflectedVector, viewPos, interleaved_gradientNoise_temporal(), mix(5.0f, float(FORWARD_SSR_QUALITY), fresnel));\n\n\t\t\t\tif (rtPos.z < 0.99999){\n\t\t\t\t\tvec3 previousPosition = toPreviousPos(DH_toScreenSpace(rtPos));\n\t\t\t\t\tpreviousPosition.xy = projMAD(dhPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5;\n\t\t\t\t\tpreviousPosition.xy = clamp(previousPosition.xy, 0.0, 1.0);\n\t\t\t\t\tReflections.a = 1.0;\n\t\t\t\t\tReflections.rgb = texture2D(colortex5, previousPosition.xy).rgb;\n\t\t\t\t}else{\n\t\t\t\t\tif (rtPos.x > 0.0 && rtPos.y > 0.0 && rtPos.x < 1.0 && rtPos.y < 1.0) SSR_HIT_SKY_MASK = 1.0;\n\t\t\t\t}\n        \t\t#endif\n\n\t\t\t#ifdef FORWARD_BACKGROUND_REFLECTION\n\t\t\t\tBackgroundReflection = skyCloudsFromTex(mat3(gbufferModelViewInverse) * reflectedVector, colortex4).rgb / 1200.0; \n\t\t\t#endif\n\n\t\t\t#ifdef WATER_SUN_SPECULAR\n\t\t\t\tSunReflection = (DirectLightColor * Shadows) * GGX(normalize(normals), -normalize(viewPos), normalize(WsunVec2), roughness, f0) * (1.0-Reflections.a);\n\t\t\t#endif\n\n\t\t\tReflections_Final = mix(FinalColor, mix(BackgroundReflection*SSR_HIT_SKY_MASK, Reflections.rgb, Reflections.a), fresnel);\n\t\t\tReflections_Final += SunReflection*indoors;\n\n\t\t\tgl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * fresnel;\n\t\n\t\t\tgl_FragData[0].rgb = clamp(Reflections_Final / gl_FragData[0].a * 0.1,0.0,65000.0);\n\n\t\t\tif (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.0);\n\t\t#else\n\t\t\tgl_FragData[0].rgb = FinalColor * 0.1;\n\t\t#endif\n\t    \n\t\t#ifdef DH_OVERDRAW_PREVENTION\n\t\t\tfloat distancefade = min(max(1.0 - length(playerPos)/clamp(far-16*4, 16, maxOverdrawDistance),0.0)*5,1.0);\n\n\t\t\tif(texture2D(depthtex0, gl_FragCoord.xy*texelSize).x < 1.0 || distancefade > 0.0){\n\t\t\t\tgl_FragData[0].a = 0.0;\n\t\t\t\tmaterial = 0.0;\n\t\t\t}\n\t\t#endif\n\n\t\t#if DEBUG_VIEW == debug_DH_WATER_BLENDING\n\t\t\tif(gl_FragCoord.x*texelSize.x > 0.53) gl_FragData[0] = vec4(0.0);\n\t\t#endif\n\n\t\tgl_FragData[1] = vec4(Albedo, material);\n\t}\n}"
  },
  {
    "path": "shaders/dimensions/DH_translucent.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\nout vec4 pos;\nout vec4 gcolor;\n\t\nout vec4 normals_and_materials;\nout vec2 lightmapCoords;\nflat out int isWater;\n\nuniform sampler2D colortex4;\nflat out vec3 averageSkyCol_Clouds;\nflat out vec4 lightCol;\n\n#ifdef OVERWORLD_SHADER\n\tuniform int worldDay;\n\t#include \"/lib/scene_controller.glsl\"\n#endif\n\nout mat4 normalmatrix;\n\nflat out vec3 WsunVec;\nflat out vec3 WsunVec2;\nuniform mat4 dhProjection;\nuniform vec3 sunPosition;\nuniform float sunElevation;\n\nuniform vec2 texelSize;\nuniform int framemod8;\n\n#if DOF_QUALITY == 5\n\tuniform int hideGUI;\n\tuniform int frameCounter;\n\tuniform float aspectRatio;\n\tuniform float screenBrightness;\n\tuniform float far;\n\t#include \"/lib/bokeh.glsl\"\n#endif\n\nuniform int framemod4_DH;\n#define DH_TAA_OVERRIDE\n#include \"/lib/TAA_jitter.glsl\"\n\n#include \"/lib/projections.glsl\"\n                     \nvoid main() {\n\tgl_Position = dhProjection * gl_ModelViewMatrix * gl_Vertex;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n   \n\tvec3 worldpos = toWorldSpace(position);\n\n\t// worldpos.y -= length(worldpos)/(16*2);\n\n\t#ifdef PLANET_CURVATURE\n\t\tfloat curvature = length(worldpos) / (16*8);\n\t\tworldpos.y -= curvature * curvature * CURVATURE_AMOUNT;\n\t#endif\n\tposition = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz;\n\n\tgl_Position = toClipSpace4alt(position);\n\n\tpos = gl_ModelViewMatrix * gl_Vertex;\n\n\t// vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\n\tisWater = 0;\n\tif (dhMaterialId == DH_BLOCK_WATER){\n\t\tisWater = 1;\n\n\t\t// offset water to not look like a full cube\n    \t\t// vec3 worldpos = mat3(gbufferModelViewInverse) * position;// + gbufferModelViewInverse[3].xyz ;\n\t\t// worldpos.y -= 1.8/16.0;\n    \t\t// position = mat3(gbufferModelView) * worldpos;// + gbufferModelView[3].xyz;\n\t}\n\n\t// gl_Position = toClipSpace4alt(position);\n\n\tnormals_and_materials = vec4(mat3(gbufferModelView) * gl_Normal, 1.0);\n\n\tgcolor = gl_Color;\n\tlightmapCoords = gl_MultiTexCoord1.xy;\n\n\tlightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb;\n\tlightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0;\n\n\taverageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;\n\n\t#ifdef OVERWORLD_SHADER\n\t\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t#endif\n\n\tWsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\tWsunVec2 = lightCol.a * normalize(sunPosition);\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t#endif\n\t#if defined TAA && defined DH_TAA_JITTER\n\t\tgl_Position.xy += offsets[framemod4_DH] * gl_Position.w*texelSize;\n\t#endif\n\n\t#if DOF_QUALITY == 5\n\t\tvec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);\n\t\tjitter = rotate(radians(float(frameCounter))) * jitter;\n\t\tjitter.y *= aspectRatio;\n\t\tjitter.x *= DOF_ANAMORPHIC_RATIO;\n\n\t\t#if MANUAL_FOCUS == -2\n\t\t\tfloat focusMul = 0;\n\t\t#elif MANUAL_FOCUS == -1\n\t\t\tfloat focusMul = gl_Position.z + (far / 3.0) - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);\n\t\t#else\n\t\t\tfloat focusMul = gl_Position.z + (far / 3.0) - MANUAL_FOCUS;\n\t\t#endif\n\n\t\tvec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;\n\t\tgl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_particles.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n\n#ifdef IS_LPV_ENABLED\n\t#extension GL_EXT_shader_image_load_store: enable\n\t#extension GL_ARB_shading_language_packing: enable\n#endif\n\n#include \"/lib/res_params.glsl\"\n\nin vec4 lmtexcoord;\nin vec4 color;\n\n#ifdef LINES\n\tflat in int SELECTION_BOX;\n#endif\n\n#ifdef OVERWORLD_SHADER\n\tconst bool shadowHardwareFiltering = true;\n\tuniform sampler2DShadow shadow;\n\t\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tuniform sampler2D shadowcolor0;\n\t\tuniform sampler2DShadow shadowtex0;\n\t\tuniform sampler2DShadow shadowtex1;\n\t#endif\n\n\tflat in vec3 WsunVec;\n\n\tflat in vec3 averageSkyCol_Clouds;\n\tflat in vec4 lightCol;\n#endif\n\nuniform int renderStage;\nuniform int isEyeInWater;\n\nuniform sampler2D texture;\nuniform sampler2D colortex4;\nuniform sampler2D noisetex;\n\n#ifdef IS_LPV_ENABLED\n\tuniform usampler1D texBlockData;\n\tuniform sampler3D texLpv1;\n\tuniform sampler3D texLpv2;\n#endif\n\nuniform int frameCounter;\nuniform float frameTimeCounter;\n#include \"/lib/Shadow_Params.glsl\"\n\nuniform vec2 texelSize;\n\nuniform ivec2 eyeBrightnessSmooth;\nuniform float rainStrength;\nuniform float waterEnteredAltitude;\nuniform float nightVision;\n\nflat in float HELD_ITEM_BRIGHTNESS;\n\n#include \"/lib/projections.glsl\"\n\n#ifdef OVERWORLD_SHADER\n\tuniform int worldTime;\n\tuniform int worldDay;\n\n\t#include \"/lib/scene_controller.glsl\"\n\t#define CLOUDSHADOWSONLY\n\t#include \"/lib/volumetricClouds.glsl\"\n#endif\n\n#ifdef IS_LPV_ENABLED\n\tuniform int heldItemId;\n\tuniform int heldItemId2;\n\n\t#include \"/lib/hsv.glsl\"\n\t#include \"/lib/lpv_common.glsl\"\n\t#include \"/lib/lpv_render.glsl\"\n#endif\n\n#include \"/lib/diffuse_lighting.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\n//Mie phase function\nfloat phaseg(float x, float g){\n\tfloat gg = g * g;\n\treturn (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14;\n}\n\n#ifdef OVERWORLD_SHADER\n\tfloat ComputeShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDistFade){\n\n\t\t// if(maxDistFade <= 0.0) return 1.0;\n\n\t\t// setup shadow projection\n\t\tvec3 projectedShadowPosition = toShadowSpaceProjected(playerPos);\n\n\t\t// un-distort\n\t\tfloat distortFactor = 1.0;\n\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\tdistortFactor = calcDistort(projectedShadowPosition.xy);\n\t\t\tprojectedShadowPosition.xy *= distortFactor;\n\t\t#endif\n\n\t\t// hamburger\n\t\tprojectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);\n\n\t\t#ifdef LPV_SHADOWS\n\t\t\tprojectedShadowPosition.xy *= 0.8;\n\t\t#endif\n\n\t\tfloat shadowmap = 0.0;\n\t\tvec3 translucentTint = vec3(0.0);\n\n\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\n\t\t\t// determine when opaque shadows are overlapping translucent shadows by getting the difference of opaque depth and translucent depth\n\t\t\tfloat shadowDepthDiff = pow(clamp((shadow2D(shadowtex1, projectedShadowPosition).x - projectedShadowPosition.z) * 2.0,0.0,1.0),2.0);\n\n\t\t\t// get opaque shadow data to get opaque data from translucent shadows.\n\t\t\tfloat opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x;\n\t\t\tshadowmap += max(opaqueShadow, shadowDepthDiff);\n\n\t\t\t// get translucent shadow data\n\t\t\tvec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy);\n\n\t\t\t// this curve simply looked the nicest. it has no other meaning.\n\t\t\tfloat shadowAlpha = pow(1.0 - pow(translucentShadow.a,5.0),0.2);\n\n\t\t\t// normalize the color to remove luminance, and keep the hue. remove all opaque color.\n\t\t\t// 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.\n\t\t\ttranslucentShadow.rgb = max(normalize(translucentShadow.rgb + 0.0001), max(opaqueShadow, 1.0-shadowAlpha)) * shadowAlpha;\n\n\t\t\t// make it such that full alpha areas that arent in a shadow have a value of 1.0 instead of 0.0\n\t\t\ttranslucentTint += mix(translucentShadow.rgb, vec3(1.0),  opaqueShadow*shadowDepthDiff);\n\n\t\t\t// tint the lightsource color with the translucent shadow color\n\t\t\tdirectLightColor *= mix(vec3(1.0), translucentTint.rgb, maxDistFade);\n\t\t#else\n\t\t\tshadowmap += shadow2D(shadow, projectedShadowPosition).x;\n\t\t#endif\n\n\t\treturn shadowmap;\n\t\t// return mix(1.0, shadowmap, maxDistFade);\n\t}\n#endif\n\n#if defined DAMAGE_BLOCK_EFFECT && defined POM\n\t#extension GL_ARB_shader_texture_lod : enable\n\n\tconst float MAX_OCCLUSION_DISTANCE = MAX_DIST;\n\tconst float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9;\n\tconst int MAX_OCCLUSION_POINTS = MAX_ITERATIONS;\n\n\tin vec4 vtexcoordam; // .st for add, .pq for mul\n\tin vec4 vtexcoord;\n\n\tvec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias);\n\tvec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias);\n\n\tconst float mincoord = 1.0/4096.0;\n\tconst float maxcoord = 1.0-mincoord;\n\n\tuniform sampler2D normals;\n\tin vec4 tangent;\n\tin vec4 normalMat;\n\n\tvec4 readNormal(in vec2 coord) {\n\t\treturn texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy);\n\t}\n\tvec4 readTexture(in vec2 coord) {\n\t\treturn texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy);\n\t}\n#endif\n\nuniform float near;\n// uniform float far;\nfloat ld(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\nvec4 texture2D_POMSwitch(\n\tsampler2D sampler, \n\tvec2 lightmapCoord,\n\tvec4 dcdxdcdy\n) {\n\treturn texture2DGradARB(sampler, lightmapCoord, dcdxdcdy.xy, dcdxdcdy.zw);\n}\n\nuniform vec3 eyePosition;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\n#ifdef DAMAGE_BLOCK_EFFECT\n\t/* RENDERTARGETS:11 */\n#else\n\t/* RENDERTARGETS:2,9,11,7 */\n#endif\n\nvoid main() {\n\t\n#ifdef DAMAGE_BLOCK_EFFECT\n\tvec2 adjustedTexCoord = lmtexcoord.xy;\n\t#ifdef POM\n\t\tvec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(0.0));\n\t\tvec3 worldpos = toWorldSpaceCamera(fragpos);\n\n\t\tvec3 normal = normalMat.xyz;\n\t\tvec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w);\n\t\tmat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x,\n\t\t\t\t\t\t\t  tangent.y, tangent2.y, normal.y,\n\t\t\t\t\t\t\t  tangent.z, tangent2.z, normal.z);\n\n\t\tadjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st;\n\t\tvec3 viewVector = normalize(tbnMatrix*fragpos);\n\n\t\tfloat dist = length(fragpos);\n\n\t\tfloat maxdist = MAX_OCCLUSION_DISTANCE;\n\t\tif (dist < maxdist) {\n\n\t\t\tfloat depthmap = readNormal(vtexcoord.st).a;\n\t\t\tfloat used_POM_DEPTH = 1.0;\n\n\t \t\tif (viewVector.z < 0.0 && depthmap < 0.9999 && depthmap > 0.00001) {\t\n\n\t\t\t\t#ifdef Adaptive_Step_length\n\t\t\t\t\tvec3 interval = (viewVector.xyz/-viewVector.z/MAX_OCCLUSION_POINTS * POM_DEPTH) * clamp(1.0-pow(depthmap,2),0.1,1.0);\n\t\t\t\t\tused_POM_DEPTH = 1.0;\n\t\t\t\t#else\n\t\t\t\t\tvec3 interval = viewVector.xyz/-viewVector.z/MAX_OCCLUSION_POINTS * POM_DEPTH;\n\t\t\t\t#endif\n\t\t\t\tvec3 coord = vec3(vtexcoord.st, 1.0);\n\n\t\t\t\tcoord += interval * used_POM_DEPTH;\n\n\t\t\t\tfloat sumVec = 0.5;\n\t\t\t\tfor (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH * readNormal(coord.st).a  ) < coord.p  && coord.p >= 0.0; ++loopCount) {\n\t\t\t\t\tcoord = coord + interval * used_POM_DEPTH; \n\t\t\t\t\tsumVec += used_POM_DEPTH; \n\t\t\t\t}\n\n\t\t\t\tif (coord.t < mincoord) {\n\t\t\t\t\tif (readTexture(vec2(coord.s,mincoord)).a == 0.0) {\n\t\t\t\t\t\tcoord.t = mincoord;\n\t\t\t\t\t\tdiscard;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tadjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE));\n\t\t\t}\n\t\t}\n\n\t\tvec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy));\n\t#else\n\t\tvec4 Albedo = texture2D(texture, adjustedTexCoord.xy);\n\t#endif\n\t\n\tAlbedo.rgb = toLinear(Albedo.rgb);\n\n\tif(dot(Albedo.rgb, vec3(0.33333)) < 1.0/255.0 || Albedo.a < 0.01 ) { discard; return; }\n\t\n\tgl_FragData[0] = vec4(encodeVec2(vec2(0.5)), encodeVec2(Albedo.rg), encodeVec2(vec2(Albedo.b,0.02)), 1.0);\n#else\n\tgl_FragData[2] = vec4(0.0);\n\n\t#if defined LINES && !defined SELECT_BOX\n\t\tif(SELECTION_BOX > 0) discard;\n\t#endif\n\n\tvec2 tempOffset = offsets[framemod8];\n\tvec3 viewPos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0));\n\tvec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos;\n\tvec3 feetPlayerPos_normalized = normalize(feetPlayerPos);\n\tvec3 worldPos = feetPlayerPos + cameraPosition;\n\n\tvec4 TEXTURE = texture2D(texture, lmtexcoord.xy)*color;\n\t\n\t#ifdef WhiteWorld\n\t\tTEXTURE.rgb = vec3(0.5);\n\t#endif\n\n\tvec3 Albedo = toLinear(TEXTURE.rgb);\n\n\tvec2 lightmap = clamp(lmtexcoord.zw,0.0,1.0);\n\n\t#ifndef OVERWORLD_SHADER\n\t\tlightmap.y = 1.0;\n\t#endif\n\n\t#if defined Hand_Held_lights && !defined LPV_ENABLED\n\t\t#ifdef IS_IRIS\n\t\t\tvec3 playerCamPos = eyePosition;\n\t\t#else\n\t\t\tvec3 playerCamPos = cameraPosition;\n\t\t#endif\n\n\t\tif(HELD_ITEM_BRIGHTNESS > 0.0){ \n\t\t\tfloat pointLight = clamp(1.0-(length(worldPos-playerCamPos)-1.0)/HANDHELD_LIGHT_RANGE,0.0,1.0);\n\t\t\tlightmap.x = mix(lightmap.x, HELD_ITEM_BRIGHTNESS, pointLight * pointLight);\n\t\t}\n\n\t#endif\n\n\t#ifdef WEATHER\n\t\tgl_FragData[1] = vec4(0.0,0.0,0.0,TEXTURE.a); // for bloomy rain and stuff\n\t#else\n\t\t#ifndef LINES\n\t\t\tgl_FragData[0].a = TEXTURE.a;\n\t\t#else\n\t\t\tgl_FragData[0].a = color.a;\n\t\t#endif\n\t\t#ifndef BLOOMY_PARTICLES\n\t\t\tgl_FragData[1].a = 0.0; // for bloomy rain and stuff\n\t\t#endif\n\n\t\tgl_FragData[3] = vec4(0.0,0.0,0.0,0.4);\n\n\t\tvec3 Direct_lighting = vec3(0.0);\n\t\tvec3 directLightColor = vec3(0.0);\n\n\t\tvec3 Indirect_lighting = vec3(0.0);\n\t\tvec3 AmbientLightColor = vec3(0.0);\n\t\tvec3 Torch_Color = vec3(TORCH_R,TORCH_G,TORCH_B);\n\t\tvec3 MinimumLightColor = vec3(1.0);\n\n\t\tif(lightmap.x >= 0.9) Torch_Color *= LIT_PARTICLE_BRIGHTNESS;\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tdirectLightColor =  lightCol.rgb/2400.0;\n\t\t\tAmbientLightColor = averageSkyCol_Clouds / 900.0;\n\n\t\t\t#ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS\n\t\t\t\tdirectLightColor = luma(directLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B);\n\t\t\t\tAmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B);\n\t\t\t#endif\n\n\t\t\tfloat Shadows = 1.0;\n\n\t\t\tvec3 shadowPlayerPos = toWorldSpace(viewPos);\n\n\t\t\tfloat shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(shadowPlayerPos) / (shadowDistance+16),0.0)*5.0,1.0));\n\t\t\tfloat shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(shadowPlayerPos) / (shadowDistance+11),0.0)*5.0,1.0));\n\n\t\t\tfloat LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0);\n\n\t\t\tShadows = ComputeShadowMap(directLightColor, shadowPlayerPos, shadowMapFalloff);\n\n\t\t\tShadows *= mix(LM_shadowMapFallback, 1.0, shadowMapFalloff2);\n\n\t\t\tShadows *= getCloudShadow(worldPos, WsunVec);\n\n\t\t\tif(isEyeInWater == 1){\n\t  \t\t\tfloat distanceFromWaterSurface = max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ;\n\t\t\t\tdirectLightColor *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * distanceFromWaterSurface);\n\t\t\t}\n\t\t\tDirect_lighting = directLightColor * Shadows;\n\n\t\t\t// #ifndef LINES\n\t\t\t\t// Direct_lighting *= phaseg(clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), 0.65)*2 + 0.5;\n\t\t\t// #endif\n\n\t\t\t#ifdef IS_IRIS\n\t\t\t\tAmbientLightColor *= 2.5;\n\t\t\t#else\n\t\t\t\tAmbientLightColor *= 0.5;\n\t\t\t#endif\n\t\t\t\n\t\t\tIndirect_lighting = doIndirectLighting(AmbientLightColor, MinimumLightColor, lightmap.y);\n\t\t#endif\n\t\t\n\t\t#ifdef NETHER_SHADER\n\t\t\tIndirect_lighting = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0;\n\t\t#endif\n\n\t\t#ifdef END_SHADER\n\t\t\tIndirect_lighting = vec3(END_FOG_R, END_FOG_G, END_FOG_B) * 0.2;\n\t\t#endif\n\n\t///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING\n\t\t#ifdef IS_LPV_ENABLED\n\t\t\tvec3 lpvPos = GetLpvPosition(feetPlayerPos);\n\t\t#else\n\t\t\tconst vec3 lpvPos = vec3(0.0);\n\t\t#endif\n\n\t\tIndirect_lighting += doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos, mat3(gbufferModelViewInverse)*vec3(0,1,0));\n\n\t\t#ifdef LINES\n\t\t\tgl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * toLinear(color.rgb);\n\n\t\t\t#if defined SELECT_BOX && (SELECTION_BOX > 0)\n\t\t\t\tgl_FragData[0].rgba = vec4(toLinear(vec3(SELECT_BOX_COL_R, SELECT_BOX_COL_G, SELECT_BOX_COL_B)), 1.0);\n\t\t\t#endif\n\n\t\t\tfloat LITEMATICA_SCHEMATIC_THING_MASK = 0.0;\n\t\t\tif (renderStage == MC_RENDER_STAGE_NONE){\n\t\t\t\tLITEMATICA_SCHEMATIC_THING_MASK = 0.1;\n\t\t\t\tgl_FragData[0] = vec4(toLinear(color.rgb), color.a);\n\t\t\t}\n \n\t\t\tgl_FragData[2] = vec4(encodeVec2(vec2(0.0)), encodeVec2(vec2(0.0)), encodeVec2(vec2(0.0)), encodeVec2(0.0, LITEMATICA_SCHEMATIC_THING_MASK));\n\t\t#else\n\t\t\tgl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * Albedo;\n\t\t#endif\n\n\t\t// distance fade targeting the world border...\n\t\tif(TEXTURE.a < 0.7 && TEXTURE.a > 0.2) gl_FragData[0] *= clamp(1.0 - length(feetPlayerPos) / 100.0 ,0.0,1.0);\n\n\t\tgl_FragData[0].rgb *= 0.1;\n\t#endif\n#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_particles.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/items.glsl\"\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\nout vec4 color;\nuniform sampler2D colortex4;\n\nout vec4 lmtexcoord;\n\n#ifdef LINES\n\tflat out int SELECTION_BOX;\n#endif\n\n#ifdef OVERWORLD_SHADER\n\tflat out vec3 averageSkyCol_Clouds;\n\tflat out vec4 lightCol;\n\tflat out vec3 WsunVec;\n\n\tuniform int worldDay;\n\t#include \"/lib/scene_controller.glsl\"\n#endif\n\nuniform vec3 sunPosition;\nuniform float sunElevation;\n\nuniform vec2 texelSize;\nuniform int framemod8;\nuniform float frameTimeCounter;\nuniform ivec2 eyeBrightnessSmooth;\n\nuniform int heldItemId;\nuniform int heldItemId2;\nflat out float HELD_ITEM_BRIGHTNESS;\n\n#include \"/lib/TAA_jitter.glsl\"\n\n#include \"/lib/projections.glsl\"\n\n#ifdef DAMAGE_BLOCK_EFFECT\n\tout vec4 vtexcoordam; // .st for add, .pq for mul\n\tout vec4 vtexcoord;\n\n\tattribute vec4 mc_midTexCoord;\n\tout vec4 tangent;\n\tattribute vec4 at_tangent;\n\tout vec4 normalMat;\n#endif\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tlmtexcoord.xy = (gl_MultiTexCoord0).xy;\n\tlmtexcoord.zw = gl_MultiTexCoord1.xy/240.0;\n\n\t#ifdef DAMAGE_BLOCK_EFFECT\n\t\tvec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st;\n\t\tvec2 texcoordminusmid = lmtexcoord.xy-midcoord;\n\t\tvtexcoordam.pq = abs(texcoordminusmid) * 2;\n\t\tvtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid);\n\t\tvtexcoord.xy = sign(texcoordminusmid) * 0.5 + 0.5;\n\n\t\ttangent = vec4(normalize(gl_NormalMatrix * at_tangent.rgb), at_tangent.w);\n\n\t\tnormalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0);\n\t#endif\n\n\tHELD_ITEM_BRIGHTNESS = 0.0;\n\n\t#ifdef Hand_Held_lights\n\t\tif(heldItemId > 999 || heldItemId2 > 999) HELD_ITEM_BRIGHTNESS = 0.9;\n\t#endif\n\n\t#ifdef WEATHER\n\t\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\n   \t\tvec3 worldpos = toWorldSpaceCamera(position);\n\t\tbool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.99;\n\n\t\tif(!istopv){\n\t\t\tworldpos.xyz -= cameraPosition - vec3(2.0,0.0,2.0) * min(max(clamp(eyeBrightnessSmooth.y/240.0,0,1)-0.95,0)/0.05,1);\n\t\t}else{\n\t\t\tworldpos.xyz -= cameraPosition;\n\t\t}\n\n\t\tposition = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz;\n\n\t\tgl_Position = toClipSpace4alt(position);\n\t#else\n\t\tgl_Position = ftransform();\n\n\t\t#ifdef TAA_UPSCALING\n\t\t\tgl_Position.xy = (gl_Position.xy + gl_Position.w) * RENDER_SCALE-gl_Position.w;\n\t\t#endif\n\t\t#ifdef TAA\n\t\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize;\n\t\t#endif\n\t#endif\n\n\tcolor = gl_Color;\n\n\t// color.rgb = worldpos;\n\n\t#ifdef LINES\n\t\tSELECTION_BOX = 0;\n\t\tif(dot(color.rgb,vec3(0.33333)) < 0.00001) SELECTION_BOX = 1;\n\t#endif\n\n\t#ifdef OVERWORLD_SHADER\n\t\tlightCol.rgb = texelFetch2D(colortex4, ivec2(6, 37), 0).rgb;\n\t\tlightCol.a = float(sunElevation > 1e-5) * 2.0-1.0;\n\t\taverageSkyCol_Clouds = texelFetch2D(colortex4, ivec2(0, 37), 0).rgb;\n\t\tWsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\t\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_solid.fsh",
    "content": "#extension GL_ARB_shader_texture_lod : enable\n\n#include \"/lib/settings.glsl\"\n#include \"/lib/blocks.glsl\"\n#include \"/lib/entities.glsl\"\n#include \"/lib/items.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/projections.glsl\"\n#include \"/lib/dither.glsl\"\n\nin vec4 lmtexcoord;\n\nflat in int NameTags;\n\n#if defined HAND || !defined MC_NORMAL_MAP\n\t#undef POM\n#endif\n\n#ifdef POM\n\t#define MC_NORMAL_MAP\n#endif\n\nin float VanillaAO;\n\nconst float mincoord = 1.0/4096.0;\nconst float maxcoord = 1.0-mincoord;\n\nconst float MAX_OCCLUSION_DISTANCE = MAX_DIST;\nconst float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9;\nconst int MAX_OCCLUSION_POINTS = MAX_ITERATIONS;\n\nuniform vec2 texelSize;\nuniform int framemod8;\nuniform float rainStrength;\nuniform float rainyAreas;\n\nfloat lightmap = clamp((lmtexcoord.w-0.9) * 10.0, 0.0, 1.0);\n\n// #ifdef POM\nin vec4 vtexcoordam; // .st for add, .pq for mul\nin vec4 vtexcoord;\n\nvec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias);\nvec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias);\n// #endif\n\n#include \"/lib/res_params.glsl\"\n\nin vec4 color;\n\nuniform float wetness;\nin vec4 normalMat;\n\n#ifdef MC_NORMAL_MAP\n\tuniform sampler2D normals;\n\tin vec4 tangent;\n\tin vec3 FlatNormals;\n#endif\n\nuniform sampler2D specular;\nuniform sampler2D texture;\nuniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16\nuniform sampler2D depthtex0;\nuniform float alphaTestRef;\nuniform float frameTimeCounter;\n\n#ifdef VIVECRAFT\n \tuniform bool vivecraftIsVR;\n \tuniform vec3 vivecraftRelativeMainHandPos;\n \tuniform vec3 vivecraftRelativeOffHandPos;\n \tuniform mat4 vivecraftRelativeMainHandRot;\n \tuniform mat4 vivecraftRelativeOffHandRot;\n #endif\n\nuniform vec4 entityColor;\n\n// in vec3 velocity;\n\nflat in float blockID;\nflat in int PORTAL;\nflat in int SIGN;\nflat in float SSSAMOUNT;\nflat in float EMISSIVE;\nflat in int LIGHTNING;\n\nflat in float HELD_ITEM_BRIGHTNESS;\n\nmat3 inverseMatrix(mat3 m) {\n\tfloat a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\n\tfloat a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\n\tfloat a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\n\n\tfloat b01 = a22 * a11 - a12 * a21;\n\tfloat b11 = -a22 * a10 + a12 * a20;\n\tfloat b21 = a21 * a10 - a11 * a20;\n\n\tfloat det = a00 * b01 + a01 * b11 + a02 * b21;\n\n\treturn mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\n\t\t\t\tb11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\n\t\t\t\tb21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\n}\n\n#ifdef MC_NORMAL_MAP\n\tvec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){\n\t\tfloat bumpmult = clamp(puddle_values,0.0,1.0);\n\t\tbump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult);\n\t\treturn normalize(bump*tbnMatrix);\n\t}\n#endif\n\n#ifdef POM\n\tvec4 readNormal(in vec2 coord) {\n\t\treturn texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy);\n\t}\n\tvec4 readTexture(in vec2 coord) {\n\t\treturn texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy);\n\t}\n#endif\n\nconst vec2[8] offsets = vec2[8](vec2(1.,-3.)/8.,\n\t\t\t\t\t\t\t\tvec2(-1.,3.)/8.,\n\t\t\t\t\t\t\t\tvec2(5.0,1.)/8.,\n\t\t\t\t\t\t\t\tvec2(-3,-5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-5.,5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-7.,-1.)/8.,\n\t\t\t\t\t\t\t\tvec2(3,7.)/8.,\n\t\t\t\t\t\t\t\tvec2(7.,-7.)/8.);\n\nuniform float far;\nuniform float near;\n\nfloat ld(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\nvec4 readNoise(in vec2 coord){\n\t// return texture2D(noisetex,coord*vtexcoordam.pq+vtexcoord.st);\n\treturn texture2DGradARB(noisetex,coord*vtexcoordam.pq + vtexcoordam.st,dcdx,dcdy);\n}\n\nfloat bias(){\n\t// return (Texture_MipMap_Bias + (blueNoise()-0.5)*0.5) - (1.0-RENDER_SCALE.x) * 2.0;\n\treturn Texture_MipMap_Bias - (1.0-RENDER_SCALE.x) * 2.0;\n}\n\nvec4 texture2D_POMSwitch(\n\tsampler2D sampler, \n\tvec2 lightmapCoord,\n\tvec4 dcdxdcdy, \n\tbool ifPOM,\n\tfloat LOD\n){\n\tif(ifPOM){\n\t\treturn texture2DGradARB(sampler, lightmapCoord, dcdxdcdy.xy, dcdxdcdy.zw);\n\t}else{\n\t\treturn texture2D(sampler, lightmapCoord, LOD);\n\t}\n}\n\nuniform vec3 eyePosition;\nvoid convertHandDepth(inout float depth) {\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\tdepth = ndcDepth * 0.5 + 0.5;\n}\n \n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\n#if defined HAND || defined ENTITIES || defined BLOCKENTITIES\n\t/* RENDERTARGETS:1,8,15,2 */\n#else\n\t/* RENDERTARGETS:1,8,15 */\n#endif\n\nvoid main() {\n\n\tvec3 FragCoord = gl_FragCoord.xyz;\n\t#ifdef HAND\n\t\tconvertHandDepth(FragCoord.z);\n\t#endif\n\n\tbool ifPOM = false;\n\t#ifdef POM\n\t\tifPOM = true;\n\t#endif\n\n\tif(SIGN > 0) ifPOM = false;\n\n\tvec3 normal = normalMat.xyz;\n\n\t#ifdef MC_NORMAL_MAP\n\t\tvec3 binormal = normalize(cross(tangent.rgb,normal)*tangent.w);\n\t\tmat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x,\n\t\t\t\t\t\t\t  tangent.y, binormal.y, normal.y,\n\t\t\t\t\t\t\t  tangent.z, binormal.z, normal.z);\n\t#endif\n\n\tvec2 tempOffset = offsets[framemod8];\n\n\tvec3 fragpos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5, 0.0));\n\tvec3 playerPos = toWorldSpace(fragpos);\n\tvec3 worldPos = playerPos + cameraPosition;\n\n\tfloat torchlightmap = lmtexcoord.z;\n\n\t#if defined Hand_Held_lights && !defined LPV_ENABLED\n\t\t#ifdef IS_IRIS\n\t\t\tvec3 playerCamPos = eyePosition;\n\t\t#else\n\t\t\tvec3 playerCamPos = cameraPosition;\n\t\t#endif\n\n\t#ifdef VIVECRAFT\n         \tif (vivecraftIsVR){ \n \t\t\tplayerCamPos = cameraPosition - vivecraftRelativeMainHandPos;\n \t\t}\n \t#endif\n\n\t\tif(HELD_ITEM_BRIGHTNESS > 0.0){ \n\t\t\tfloat pointLight = clamp(1.0-(length(worldPos-playerCamPos)-1.0)/HANDHELD_LIGHT_RANGE,0.0,1.0);\n\t\t\ttorchlightmap = mix(torchlightmap, HELD_ITEM_BRIGHTNESS, pointLight * pointLight);\n\t\t}\n\n\t\t#ifdef HAND\n\t\t\ttorchlightmap *= 0.9;\n\t\t#endif\n\t#endif\n\n\tfloat Puddle_shape = 0.0;\n\n\t#if defined Puddles && defined WORLD && !defined ENTITIES && !defined HAND\n\t\tPuddle_shape = clamp(lightmap - exp(-15.0 * pow(texture2D(noisetex, worldPos.xz * (0.020 * Puddle_Size)).b,5.0)),0.0,1.0);\n\t\tPuddle_shape *= clamp(viewToWorld(normal).y*0.5+0.5,0.0,1.0) * rainStrength * rainyAreas;\n\t#endif\n\n\tvec2 adjustedTexCoord = lmtexcoord.xy;\n\n\t#if defined POM && defined WORLD && !defined ENTITIES && !defined HAND\n\t\t// vec2 tempOffset=offsets[framemod8];\n\t\tadjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st;\n\t\t// vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0));\n\t\tvec3 viewVector = normalize(tbnMatrix*fragpos);\n\t\tfloat dist = length(playerPos);\n\n\t\tfloat falloff = min(max(1.0-dist/MAX_OCCLUSION_DISTANCE,0.0) * 2.0,1.0);\n\n\t\tfalloff = pow(1.0-pow(1.0-falloff,1.0),2.0);\n\n\t\tfloat maxdist = MAX_OCCLUSION_DISTANCE;\n\t\tif(!ifPOM) maxdist = 0.0;\n\n\t\tgl_FragDepth = gl_FragCoord.z;\n\t\tif (falloff > 0.0) {\n\t\t\tfloat depthmap = readNormal(vtexcoord.st).a;\n\t\t\tfloat used_POM_DEPTH = 1.0;\n\t\t\tfloat pomdepth = POM_DEPTH*falloff;\n\n \t\t\tif (viewVector.z < 0.0 && depthmap < 0.9999 && depthmap > 0.00001) {\t\n\t\t\t\tfloat noise = blueNoise();\n\t\t\t\t#ifdef Adaptive_Step_length\n\t\t\t\t\tvec3 interval = (viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS * pomdepth) * clamp(1.0-pow(depthmap,2),0.1,1.0);\n\t\t\t\t\tused_POM_DEPTH = 1.0;\n\t\t\t\t#else\n\t\t\t\t\tvec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*pomdepth;\n\t\t\t\t#endif\n\t\t\t\tvec3 coord = vec3(vtexcoord.st , 1.0);\n\n\t\t\t\tcoord += interval * noise * used_POM_DEPTH;\n\n\t\t\t\tfloat sumVec = noise;\n\t\t\t\tfor (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - pomdepth + pomdepth * readNormal(coord.st).a  ) < coord.p  && coord.p >= 0.0; ++loopCount) {\n\t\t\t\t\tcoord = coord + interval  * used_POM_DEPTH; \n\t\t\t\t\tsumVec += used_POM_DEPTH; \n\t\t\t\t}\n\t\n\t\t\t\tif (coord.t < mincoord) {\n\t\t\t\t\tif (readTexture(vec2(coord.s,mincoord)).a == 0.0) {\n\t\t\t\t\t\tcoord.t = mincoord;\n\t\t\t\t\t\tdiscard;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\tadjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE));\n\n\t\t\t\tvec3 truePos = fragpos + sumVec*inverseMatrix(tbnMatrix)*interval;\n\n\t\t\t\tgl_FragDepth = toClipSpace3(truePos).z;\n\t\t\t}\n\t\t}\n\t#endif\n\tif(!ifPOM) adjustedTexCoord = lmtexcoord.xy;\n\n\t//////////////////////////////// \t\t\t\t////////////////////////////////\n\t////////////////////////////////\tALBEDO\t\t////////////////////////////////\n\t//////////////////////////////// \t\t\t\t////////////////////////////////\n\n\tfloat textureLOD = bias();\n\tvec4 Albedo = texture2D_POMSwitch(texture, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM, textureLOD) * color;\n\t#ifdef HAND\n\t\tif (Albedo.a < 0.1) discard;\n\t#endif\n\n\tif(LIGHTNING > 0) Albedo = vec4(1);\n\n\t#ifdef FANCY_END_PORTAL\n\t\t#if defined WORLD && !defined ENTITIES && !defined HAND\n\t\tfloat endPortalEmission = 0.0;\n\t\tif(PORTAL > 0) {\n\t\t\tfloat steps = 20;\n\t\t\tvec3 color = vec3(0.0);\n\t\t\tfloat absorbance = 1.0;\n\t\t\tvec3 worldSpaceNormal = viewToWorld(normal);\n\t\t\tvec3 viewVec = normalize(tbnMatrix*fragpos);\n\t\t\tvec3 correctedViewVec = viewVec;\n\t\t\tcorrectedViewVec.xy = mix(correctedViewVec.xy, vec2( viewVec.y,-viewVec.x), clamp( worldSpaceNormal.y,0,1));\n\t\t\tcorrectedViewVec.xy = mix(correctedViewVec.xy, vec2(-viewVec.y, viewVec.x), clamp(-worldSpaceNormal.x,0,1)); \n\t\t\tcorrectedViewVec.xy = mix(correctedViewVec.xy, vec2(-viewVec.y, viewVec.x), clamp(-worldSpaceNormal.z,0,1));\n\t\t\tcorrectedViewVec.z = mix(correctedViewVec.z, -correctedViewVec.z, clamp(length(vec3(worldSpaceNormal.xz, clamp(-worldSpaceNormal.y,0,1))),0,1)); \n\n\t\t\tvec2 correctedWorldPos = worldPos.xz;\n\t\t\tcorrectedWorldPos = mix(correctedWorldPos, vec2(-playerPos.x,playerPos.z) + vec2(-cameraPosition.x,cameraPosition.z), clamp(-worldSpaceNormal.y,0,1));\n\t\t\tcorrectedWorldPos = mix(correctedWorldPos, vec2( playerPos.z,playerPos.y) + vec2( cameraPosition.z,cameraPosition.y), clamp( worldSpaceNormal.x,0,1));\n\t\t\tcorrectedWorldPos = mix(correctedWorldPos, vec2(-playerPos.z,playerPos.y) + vec2(-cameraPosition.z,cameraPosition.y), clamp(-worldSpaceNormal.x,0,1));\n\t\t\tcorrectedWorldPos = mix(correctedWorldPos, vec2( playerPos.x,playerPos.y) + vec2( cameraPosition.x,cameraPosition.y), clamp(-worldSpaceNormal.z,0,1));\n\t\t\tcorrectedWorldPos = mix(correctedWorldPos, vec2(-playerPos.x,playerPos.y) + vec2(-cameraPosition.x,cameraPosition.y), clamp( worldSpaceNormal.z,0,1));\n\t\t\tvec2 rayDir = ((correctedViewVec.xy) / -correctedViewVec.z) / steps * 5.0 ;\n\n\t\t\tvec2 uv = correctedWorldPos + rayDir * blueNoise();\n\t\t\tuv += rayDir * 10.0;\n\t\t\tvec2 animation = vec2(frameTimeCounter, -frameTimeCounter)*0.01;\n\n\t\t\tfor (int i = 0; i < int(steps); i++) {\n\t\t\t\tfloat verticalGradient = (i + blueNoise())/steps ;\n\t\t\t\tfloat verticalGradient2 = exp(-7*(1-verticalGradient*verticalGradient));\n\n\t\t\t\tfloat 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);\n\n\t\t\t\tfloat volumeCoeff = exp(-density*(i+1));\n\n\t\t\t\tvec3 lighting =  vec3(0.5,0.75,1.0) * 0.1 * exp(-10*density) + vec3(0.2, 0.7, 1.0) * verticalGradient2 * 2.0;\n\t\t\t\tcolor += (lighting - lighting * volumeCoeff) * absorbance;;\n\t\t\t\tabsorbance *= volumeCoeff;\n\t\t\t\tendPortalEmission += verticalGradient*verticalGradient ;\n\t\t\t\tuv += rayDir;\n\t\t\t}\n\t\t\tAlbedo.rgb = clamp(color,0,1);\n\t\t\tendPortalEmission = clamp(endPortalEmission/steps * 1.0,0.0,254.0/255.0);\t\t\n\t\t}\n\t\t#endif\n\t#endif\n\n\t#ifdef WhiteWorld\n\t\tAlbedo.rgb = vec3(0.5);\n\t#endif\n\t\n\t#ifdef AEROCHROME_MODE\n\t\tfloat gray = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07));\n\t\tif(\n\t\t\tblockID == BLOCK_AMETHYST_BUD_MEDIUM || blockID == BLOCK_AMETHYST_BUD_LARGE || blockID == BLOCK_AMETHYST_CLUSTER \n\t\t\t|| blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_WEAK\n\t\t\t|| blockID == BLOCK_GLOW_LICHEN || blockID == BLOCK_SNOW_LAYERS\n\t\t\t|| blockID >= 10 && blockID < 80\n\t\t) {\n\t\t\t// IR Reflective (Pink-red)\n\t\t\tAlbedo.rgb = mix(vec3(gray), aerochrome_color, 0.7);\n\t\t}\n\t\telse if(blockID == BLOCK_GRASS) {\n\t\t\t// Special handling for grass block\n\t\t\tfloat strength = 1.0 - color.b;\n\t\t\tAlbedo.rgb = mix(Albedo.rgb, aerochrome_color, strength);\n\t\t}\n\t\t#ifdef AEROCHROME_WOOL_ENABLED\n\t\t\telse if(blockID == BLOCK_SSS_WEAK_2 || blockID == BLOCK_CARPET) {\n\t\t\t\t// Wool\n\t\t\t\tAlbedo.rgb = mix(Albedo.rgb, aerochrome_color, 0.3);\n\t\t\t}\n\t\t#endif\n\t\telse if(blockID == BLOCK_WATER || (blockID >= 300 && blockID < 400)) {\n\t\t\t// IR Absorbsive? Dark.\n\t\t\tAlbedo.rgb = mix(Albedo.rgb, vec3(0.01, 0.08, 0.15), 0.5);\n\t\t}\n\t#endif\n\n\t#ifdef WORLD\n\t\tif(Albedo.a > 0.1) Albedo.a = normalMat.a;\n\t\telse Albedo.a = 0.0;\n\t#endif\n\n\t#ifdef HAND\n\t\tif(Albedo.a > 0.1){\n\t\t\tAlbedo.a = 0.75;\n\t\t\tgl_FragData[3] = vec4(0.0);\n\t\t} else {\n\t\t\tAlbedo.a = 1.0;\n\t\t}\n\t#endif\n\n\t#if defined PARTICLE_RENDERING_FIX && (defined ENTITIES || defined BLOCKENTITIES)\n\t\tgl_FragData[3] = vec4(0.0);\n\t#endif\n\n\t//////////////////////////////// \t\t\t\t////////////////////////////////\n\t////////////////////////////////\tNORMAL\t////////////////////////////////\n\t//////////////////////////////// \t\t\t\t//////////////////////////////// \n\n\t#if defined WORLD && defined MC_NORMAL_MAP\n\t\tvec4 NormalTex = texture2D_POMSwitch(normals, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM,textureLOD).xyzw;\n\n\t\t#ifdef MATERIAL_AO\n\t\t\tAlbedo.rgb *= NormalTex.b*0.5+0.5;\n\t\t#endif\n\n\t\tfloat Heightmap = 1.0 - NormalTex.w;\n\t\tNormalTex.xy = NormalTex.xy * 2.0-1.0;\n\t\tNormalTex.z = sqrt(max(1.0 - dot(NormalTex.xy, NormalTex.xy), 0.0));\n\t\tNormalTex.xyz = mix(vec3(0,0,1), NormalTex.xyz, MATERIAL_NORMAL_STRENGTH);\n\n\t\tnormal = applyBump(tbnMatrix, NormalTex.xyz, 1.0-Puddle_shape);\n\t#endif\n\n\t//////////////////////////////// \t\t\t\t////////////////////////////////\n\t////////////////////////////////\tSPECULAR\t////////////////////////////////\n\t//////////////////////////////// \t\t\t\t//////////////////////////////// \n\n\t#ifdef WORLD\n\t\tvec4 SpecularTex = texture2D_POMSwitch(specular, adjustedTexCoord.xy, vec4(dcdx,dcdy), ifPOM,textureLOD);\n\n\t\tSpecularTex.r = max(SpecularTex.r, rainStrength * rainyAreas * lightmap);\n\t\tSpecularTex.g = max(SpecularTex.g, max(Puddle_shape*0.02,0.02));\n\n\t\t#define EXCEPTIONAL_BLOCK(id) (id == 266 || id == BLOCK_REDSTONE_ORE_LIT || id == BLOCK_DEEPSLATE_REDSTONE_ORE_LIT)\n\n\t\tif(EXCEPTIONAL_BLOCK(blockID) && alphaTestRef < 0.05) {\n\t\t\tfloat s = 1 - min(min(Albedo.r,Albedo.g),Albedo.b) / max(max(Albedo.r,Albedo.g),Albedo.b);\n\t\t\tSpecularTex.a = s > 0.1 ? pow(s, 1.5) * 0.9999 : 1.0;\n\t\t}\n\n\t\tgl_FragData[1].rg = SpecularTex.rg;\n\n\t\t#if EMISSIVE_TYPE == 0\n\t\t\tgl_FragData[1].a = 0.0;\n\n\t\t#elif EMISSIVE_TYPE == 1\n\t\t\tgl_FragData[1].a = EMISSIVE;\n\t\t\tif EXCEPTIONAL_BLOCK(blockID)\n\t\t\tgl_FragData[1].a = SpecularTex.a;\n\n\t\t#elif EMISSIVE_TYPE == 2\n\t\t\tgl_FragData[1].a = SpecularTex.a;\n\t\t\tif(!EXCEPTIONAL_BLOCK(blockID) && SpecularTex.a <= 0.0)\n\t\t\tgl_FragData[1].a = EMISSIVE;\n\n\t\t#elif EMISSIVE_TYPE == 3\n\t\t\tgl_FragData[1].a = SpecularTex.a;\n\t\t#endif\n\n\t\t#ifdef FANCY_END_PORTAL\n\t\t\t#if defined WORLD && !defined ENTITIES && !defined HAND\n\t\t\t\tif(PORTAL > 0) gl_FragData[1].a = endPortalEmission;\n\t\t\t#endif\n\t\t#endif\n\n\t\t#if SSS_TYPE == 0\n\t\t\tgl_FragData[1].b = 0.0;\n\t\t#elif SSS_TYPE == 1\n\t\t\tgl_FragData[1].b = SSSAMOUNT;\n\t\t#elif SSS_TYPE == 2\n\t\t\tgl_FragData[1].b = SpecularTex.b;\n\t\t\tif(SpecularTex.b < 65.0/255.0) gl_FragData[1].b = SSSAMOUNT;\n\t\t#elif SSS_TYPE == 3\t\t\n\t\t\tgl_FragData[1].b = SpecularTex.b;\n\t\t#endif\n\t#endif\n\n\t// hit glow effect...\n\t#ifdef ENTITIES\n\t\tAlbedo.rgb = mix(Albedo.rgb, entityColor.rgb, clamp(entityColor.a*1.5,0,1));\n\t#endif\n\n\t//////////////////////////////// \t\t\t\t////////////////////////////////\n\t////////////////////////////////\tFINALIZE\t\t////////////////////////////////\n\t//////////////////////////////// \t\t\t\t////////////////////////////////\n\n\t#ifdef WORLD\n\t\t#ifdef Puddles\n\t\t\tfloat porosity = 0.4;\n\t\t\t\n\t\t\t#ifdef Porosity\n\t\t\t\tporosity = SpecularTex.z >= 64.5/255.0 ? 0.0 : (SpecularTex.z*255.0/64.0)*0.65;\n\t\t\t#endif\n\n\t\t\tif(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity);\n\t\t#endif\n\n\t\t// apply noise to lightmaps to reduce banding.\n\t\tvec2 PackLightmaps = vec2(torchlightmap, lmtexcoord.w);\n\t\tvec4 data1 = clamp( encode(viewToWorld(normal), PackLightmaps), 0.0, 1.0);\n\n\t\tgl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x),\tencodeVec2(Albedo.y,data1.y),\tencodeVec2(Albedo.z,data1.z),\tencodeVec2(data1.w,Albedo.w));\n\n\t\tgl_FragData[2] = vec4(viewToWorld(FlatNormals) * 0.5 + 0.5, VanillaAO);\t\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_solid.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/bokeh.glsl\"\n#include \"/lib/blocks.glsl\"\n#include \"/lib/entities.glsl\"\n#include \"/lib/items.glsl\"\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\n#if defined HAND || !defined MC_NORMAL_MAP\n\t#undef POM\n#endif\n\n#ifdef POM\n\t#define MC_NORMAL_MAP\n#endif\n\nout vec4 color;\nout float VanillaAO;\n\nout vec4 lmtexcoord;\nout vec4 normalMat;\n\n// #ifdef POM\n\tout vec4 vtexcoordam; // .st for add, .pq for mul\n\tout vec4 vtexcoord;\n// #endif\n\n#ifdef MC_NORMAL_MAP\n\tout vec4 tangent;\n\tattribute vec4 at_tangent;\n\tout vec3 FlatNormals;\n#endif\n\nuniform float frameTimeCounter;\nconst float PI48 = 150.796447372*WAVY_SPEED;\nfloat pi2wt = PI48*frameTimeCounter;\n\nattribute vec4 mc_Entity;\nattribute vec4 mc_midTexCoord;\n\nuniform int blockEntityId;\nuniform int entityId;\nflat out float blockID;\n\nuniform int heldItemId;\nuniform int heldItemId2;\nflat out float HELD_ITEM_BRIGHTNESS;\n\nflat out int NameTags;\n\nuniform int frameCounter;\nuniform float far;\nuniform float aspectRatio;\nuniform float viewHeight;\nuniform float viewWidth;\nuniform int hideGUI;\nuniform float screenBrightness;\nuniform int isEyeInWater;\n\nflat out float SSSAMOUNT;\nflat out float EMISSIVE;\nflat out int LIGHTNING;\nflat out int PORTAL;\nflat out int SIGN;\n\nuniform vec2 texelSize;\n\nuniform int framemod8;\n\n#include \"/lib/projections.glsl\"\n\n#ifdef HAND\n\tfloat detectCameraMovement(){\n\t\t// simply get the difference of modelview matrices and cameraPosition across a frame.\n\t\tvec3 fakePos = vec3(0.5, 0.5, 0.0);\n\t\tvec3 hand_playerPos = mat3(gbufferModelViewInverse) * fakePos + (cameraPosition - previousCameraPosition);\n\t\tvec3 previousPosition = mat3(gbufferPreviousModelView) * hand_playerPos;\n\t\tfloat detectMovement = 1.0 - clamp(distance(previousPosition, fakePos) / texelSize.x, 0.0, 1.0);\n\n\t\treturn detectMovement;\n\t}\n#endif\n\n#include \"/lib/TAA_jitter.glsl\"\n\nvec2 calcWave(in vec3 pos) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude;\n\treturn ret;\n}\n\nvec3 calcMovePlants(in vec3 pos) {\n\tvec2 move1 = calcWave(pos );\n\tfloat move1y = -length(move1);\n\treturn vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH;\n}\n\nvec3 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) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude;\n\treturn ret;\n}\n\nvec3 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) {\n\tvec3 move1 = calcWaveLeaves(pos, 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1;\n\treturn move1*5.*WAVY_STRENGTH;\n}\n\n#define SEASONS_VSH\n#include \"/lib/climate_settings.glsl\"\n\nuniform sampler2D noisetex;//depth\nfloat densityAtPos(in vec3 pos) {\n\tpos /= 18.;\n\tpos.xz *= 0.5;\n\tvec3 p = floor(pos);\n\tvec3 f = fract(pos);\n\tvec2 uv =  p.xz + f.xz + p.y * vec2(0.0,193.0);\n\tvec2 coord =  uv / 512.0;\n\n\t//The y channel has an offset to avoid using two textures fetches\n\tvec2 xy = texture2D(noisetex, coord).yx;\n\n\treturn mix(xy.r,xy.g, f.y);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n\tgl_Position = ftransform();\n\n\t#if defined ENTITIES && defined IS_IRIS\n\t\t// force out of frustum\n\t\tif (entityId == 1599) gl_Position.z -= 10000.0;\n\t#endif\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\n    /////// ----- COLOR STUFF ----- ///////\n\tcolor = gl_Color;\n\n\tVanillaAO = 1.0 - clamp(color.a,0,1);\n\tif (color.a < 0.3) color.a = 1.0; // fix vanilla ao on some custom block models.\n\n    /////// ----- RANDOM STUFF ----- ///////\n\t// gl_TextureMatrix[0] for animated things like charged creepers\n\tlmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;\n\n\t// #ifdef POM\n\tvec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st;\n\tvec2 texcoordminusmid = lmtexcoord.xy-midcoord;\n\tvtexcoordam.pq = abs(texcoordminusmid)*2;\n\tvtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid);\n\tvtexcoord.xy = sign(texcoordminusmid)*0.5+0.5;\n\t// #endif\n\n\tvec2 lmcoord = gl_MultiTexCoord1.xy / 240.0; \n\tlmtexcoord.zw = lmcoord;\n\n\t#ifdef MC_NORMAL_MAP\n\t\tvec3 alterTangent = at_tangent.rgb;\n\n\t\ttangent = vec4(normalize(gl_NormalMatrix * alterTangent.rgb), at_tangent.w);\n\t#endif\n\n\tnormalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0);\n\n\tFlatNormals = normalMat.xyz;\n\n\tblockID = mc_Entity.x ;\n\n\tif(blockID == BLOCK_GROUND_WAVING_VERTICAL || blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_LOWER || blockID == BLOCK_GRASS_TALL_UPPER ) normalMat.a = 0.60;\n\n\tPORTAL = 0;\n\tSIGN = 0;\n\n\t#if defined WORLD && !defined HAND\n\t\tif(blockEntityId == BLOCK_SIGN) SIGN = 1;\n\n\t\tif(blockEntityId == BLOCK_END_PORTAL || blockEntityId == 187) PORTAL = 1;\n\t#endif\n\n\tNameTags = 0;\n\n\t#ifdef ENTITIES\n\n\t\t// disallow POM to work on item frames.\n\t\tif(entityId == ENTITY_ITEM_FRAME) SIGN = 1;\n\n\t\t// try and single out nametag text and then discard nametag background\n\t\t// if( dot(gl_Color.rgb, vec3(1.0/3.0)) < 1.0) NameTags = 1;\n\t\t// if(gl_Color.a < 1.0) NameTags = 1;\n\t\t// if(gl_Color.a >= 0.24 && gl_Color.a <= 0.25 ) gl_Position = vec4(10,10,10,1);\n\t\tif(entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER || entityId == 2468) normalMat.a = 0.45;\n\n\t#endif\n\n\tif(mc_Entity.x == BLOCK_AIR_WAVING) normalMat.a = 0.55;\n\n    /////// ----- EMISSIVE STUFF ----- ///////\n\n\tEMISSIVE = 0.0;\n\tLIGHTNING = 0;\n\t// if(NameTags > 0) EMISSIVE = 0.9;\n\n\tHELD_ITEM_BRIGHTNESS = 0.0;\n\t#ifdef Hand_Held_lights\n\t\tif(heldItemId > 999 || heldItemId2 > 999 ) HELD_ITEM_BRIGHTNESS = 0.9;\n\t#endif\n\n\t// normal block lightsources\t\t\n\tif(mc_Entity.x >= 100 && mc_Entity.x < 300) EMISSIVE = 0.5;\n\n\t// special cases light lightning and beacon beams...\t\n\t#ifdef ENTITIES\n\t\tif(entityId == ENTITY_LIGHTNING){\n\t\t\tLIGHTNING = 1;\n\t\t\tnormalMat.a = 0.50;\n\t\t}\n\t\tif (entityId == ENTITY_SPECTRAL_ARROW) EMISSIVE = 0.5;\n\t#endif\n\n    /////// ----- SSS STUFF ----- ///////\n\n\tSSSAMOUNT = 0.0;\n\n\t#ifdef WORLD\n\t/////// ----- SSS ON BLOCKS ----- ///////\n\n\t\t// strong\n\t\tif (\n\t\t\tmc_Entity.x == BLOCK_SSS_STRONG || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_AIR_WAVING\n\t\t){\n\t\t\tSSSAMOUNT = 1.0;\n\t\t}\n\n\t\t// medium\n\t\tif (\n\t\t\tmc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL ||\n\t\t\tmc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_GRASS_TALL_LOWER ||\n\t\t\tmc_Entity.x == BLOCK_SSS_WEAK || mc_Entity.x == BLOCK_SSS_WEAK_2 || mc_Entity.x == BLOCK_AIR_WAVING ||\n\t\t\tmc_Entity.x == BLOCK_GLOW_LICHEN || mc_Entity.x == BLOCK_SNOW_LAYERS || mc_Entity.x == BLOCK_CARPET ||\n\t\t\tmc_Entity.x == BLOCK_AMETHYST_BUD_MEDIUM || mc_Entity.x == BLOCK_AMETHYST_BUD_LARGE || mc_Entity.x == BLOCK_AMETHYST_CLUSTER ||\n\t\t\tmc_Entity.x == BLOCK_BAMBOO || mc_Entity.x == BLOCK_SAPLING || mc_Entity.x == BLOCK_VINE || mc_Entity.x == BLOCK_CAVE_VINE_BERRIES\n\t\t){\n\t\t\tSSSAMOUNT = 0.5;\n\t\t}\n\n\t\t// low\n\t\t#ifdef MISC_BLOCK_SSS\n\t\t\tif(mc_Entity.x == BLOCK_SSS_WEIRD || mc_Entity.x == BLOCK_GRASS) SSSAMOUNT = 0.25;\n\t\t#endif\n\n\t\t#ifdef ENTITIES\n\t\t\t#ifdef MOB_SSS\n\t/////// ----- SSS ON MOBS----- ///////\n\t\t\t\t// strong\n\t\t\t\tif(entityId == ENTITY_SSS_MEDIUM) SSSAMOUNT = 0.75;\n\n\t\t\t\t// medium\n\n\t\t\t\t// low\n\t\t\t\tif(entityId == ENTITY_SSS_WEAK || entityId == ENTITY_PLAYER) SSSAMOUNT = 0.4;\n\t\t\t#endif\n\t\t#endif\n\n\t\t#ifdef BLOCKENTITIES\n\t /////// ----- SSS ON BLOCK ENTITIES----- ///////\n\t\t\t// strong\n\n\t\t\t// medium\n\t\t\tif(blockEntityId == BLOCK_SSS_WEAK_3) SSSAMOUNT = 0.4;\n\n\t\t\t// low\n\n\t\t#endif\n\n   \t\tvec3 worldpos = toWorldSpace(position);\n\n\t\t#ifdef WAVY_PLANTS\n\t\t\t// also use normal, so up/down facing geometry does not get detatched from its model parts.\n\t\t\tbool InterpolateFromBase = gl_MultiTexCoord0.t < max(mc_midTexCoord.t, abs(viewToWorld(FlatNormals).y));\n\t\t\tif((\n\t\t\t\t// these wave off of the ground. the area connected to the ground does not wave.\n\t\t\t\t(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))\n\n\t\t\t\t// these wave off of the ceiling. the area connected to the ceiling does not wave.\n\t\t\t\t|| (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE))\n\n\t\t\t\t// these wave off of the air. they wave uniformly\n\t\t\t\t|| (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING)\n\n\t\t\t\t#ifndef RP_MODEL_FIX\n\t\t\t\t\t|| (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES)\n\t\t\t\t#endif\n\n\t\t\t) && length(position) < 64.0){\n\n\t\t\t\tvec3 UnalteredWorldpos = worldpos;\n\n\t\t\t\t// apply displacement for waving plant blocks\n\t\t\t\tworldpos += calcMovePlants(worldpos + cameraPosition) * max(lmtexcoord.w,0.5);\n\n\t\t\t\t// apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly\n\t\t\t\tif(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;\n\t\t\t}\n\t\t#endif\n\n\t\t#ifdef PLANET_CURVATURE\n\t\t\tfloat curvature = length(worldpos) / (16*8);\n\t\t\tworldpos.y -= curvature*curvature * CURVATURE_AMOUNT;\n\t\t#endif\n\n\t\tposition = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz;\n\n\t\t// ensure hand/entities have the same transformations as the spidereyes and enchant glint programs.\n\t\t#if !defined ENTITIES && !defined HAND\n\t\t\tgl_Position = toClipSpace4alt(position);\n\t\t#endif\n\t#endif\n\n\t#if defined Seasons && defined WORLD && !defined ENTITIES && !defined BLOCKENTITIES && !defined HAND\n\t\tYearCycleColor(color.rgb, gl_Color.rgb, mc_Entity.x == BLOCK_AIR_WAVING, true);\n\t#endif\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t#endif\n\n\t#ifdef TAA\n\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t#endif\n\n\t#if DOF_QUALITY == 5\n\t\tvec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);\n\t\tjitter = rotate(radians(float(frameCounter))) * jitter;\n\t\tjitter.y *= aspectRatio;\n\t\tjitter.x *= DOF_ANAMORPHIC_RATIO;\n\n\t\t#if MANUAL_FOCUS == -2\n\t\t\tfloat focusMul = 0;\n\t\t#elif MANUAL_FOCUS == -1\n\t\t\tfloat focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);\n\t\t#else\n\t\t\tfloat focusMul = gl_Position.z - MANUAL_FOCUS;\n\t\t#endif\n\n\t\tvec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;\n\t\tgl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_translucent.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\nin vec4 lmtexcoord;\nfloat lightmap = clamp((lmtexcoord.w-0.9) * 10.0, 0.0, 1.0);\n\n#include \"/lib/ripples.glsl\"\n\n#undef FLASHLIGHT_BOUNCED_INDIRECT\n\n#ifdef IS_LPV_ENABLED\n\t#extension GL_EXT_shader_image_load_store: enable\n\t#extension GL_ARB_shading_language_packing: enable\n#endif\n\n#include \"/lib/res_params.glsl\"\n\nin vec4 color;\nuniform vec4 entityColor;\nuniform float rainStrength;\nuniform float rainyAreas;\n\n#ifdef OVERWORLD_SHADER\n\tconst bool shadowHardwareFiltering = true;\n\tuniform sampler2DShadow shadow;\n\t\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tuniform sampler2D shadowcolor0;\n\t\tuniform sampler2DShadow shadowtex0;\n\t\tuniform sampler2DShadow shadowtex1;\n\t#endif\n\n\tuniform float lightSign;\n\tflat in vec3 WsunVec;\n\n\tflat in vec3 averageSkyCol_Clouds;\n\tflat in vec4 lightCol;\n#endif\n\nflat in float HELD_ITEM_BRIGHTNESS;\n#if defined ENTITIES && defined IS_IRIS\n\tflat in int NAMETAG;\n#endif\n\nuniform sampler2D depthtex1;\nuniform sampler2D depthtex0;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex3;\nuniform sampler2D colortex4;\nuniform sampler2D colortex5;\nuniform sampler2D colortex6;\nuniform sampler2D colortex7;\nuniform sampler2D colortex12;\nuniform sampler2D colortex13;\nuniform sampler2D colortex14;\n\nuniform sampler2D texture;\nuniform sampler2D specular;\nuniform sampler2D normals;\n\n#ifdef IS_LPV_ENABLED\n\tuniform usampler1D texBlockData;\n\tuniform sampler3D texLpv1;\n\tuniform sampler3D texLpv2;\n#endif\n\nin vec4 tangent;\nin vec4 normalMat;\nin vec3 binormal;\nin vec3 flatnormal;\n\n#ifdef LARGE_WAVE_DISPLACEMENT\n\tin vec3 largeWaveNormal;\n#endif\n\nuniform float near;\n// uniform float far;\n// uniform float dhFarPlane;\n\nuniform int isEyeInWater;\nuniform float skyIntensityNight;\nuniform float skyIntensity;\nuniform ivec2 eyeBrightnessSmooth;\nuniform float nightVision;\n\nuniform float frameTimeCounter;\nuniform vec2 texelSize;\nuniform int framemod8;\nuniform float viewWidth;\nuniform float viewHeight;\n\nuniform float waterEnteredAltitude;\n\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/projections.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n#include \"/lib/waterBump.glsl\"\n\n#ifdef OVERWORLD_SHADER\n\tuniform int worldTime;\n\tuniform int worldDay;\n\n\tflat in float Flashing;\n\t\n\t#include \"/lib/lightning_stuff.glsl\"\n\n\t#include \"/lib/scene_controller.glsl\"\n\t#define CLOUDSHADOWSONLY\n\t#include \"/lib/volumetricClouds.glsl\"\n#endif\n\n#ifdef END_SHADER\n\t#include \"/lib/end_fog.glsl\"\n#endif\n\n#ifdef IS_LPV_ENABLED\n\tuniform int heldItemId;\n\tuniform int heldItemId2;\n\n\t#include \"/lib/hsv.glsl\"\n\t#include \"/lib/lpv_common.glsl\"\n\t#include \"/lib/lpv_render.glsl\"\n#endif\n\n#define FORWARD_SPECULAR\n#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]\n#define FORWARD_BACKGROUND_REFLECTION\n// #define FORWARD_ROUGH_REFLECTION\n\n#include \"/lib/specular.glsl\"\n#include \"/lib/diffuse_lighting.glsl\"\n\n#if defined PHYSICSMOD_OCEAN_SHADER\n\t#include \"/lib/oceans.glsl\"\n#endif\n\n#include \"/lib/TAA_jitter.glsl\"\n\nin vec3 viewVector;\nvec3 getParallaxDisplacement(vec3 waterPos, vec3 playerPos) {\n\n\tfloat largeWaves = texture2D(noisetex, waterPos.xy / 600.0 ).b;\n \tfloat largeWavesCurved = pow(1.0-pow(1.0-largeWaves,2.0),2.5);\n \n \tfloat waterHeight = getWaterHeightmap(waterPos.xy, largeWaves, largeWavesCurved);\n \t// waterHeight = exp(-20.0*sqrt(waterHeight));\n \twaterHeight = exp(-7.0*exp(-7.0*waterHeight)) * 0.25;\n\t\n\tvec3 parallaxPos = waterPos;\n\n\tparallaxPos.xy += (viewVector.xy / -viewVector.z) * waterHeight;\n\n\treturn parallaxPos;\n}\n\nvec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){\n\tfloat bumpmult = puddle_values;\n\tbump = bump * bumpmult + vec3(0.0f, 0.0f, 1.0f - bumpmult);\n\n\treturn normalize(bump*tbnMatrix);\n}\n\nvec2 CleanSample(\n\tint samples, float totalSamples, float noise\n){\n\n\t// 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\n\tfloat variance = noise * 0.897;\n\n\t// for every sample input, it will have variance applied to it.\n\tfloat variedSamples = float(samples) + variance;\n\t\n\t// for every sample, the sample position must change its distance from the origin.\n\t// otherwise, you will just have a circle.\n\tfloat spiralShape = sqrt(variedSamples / (totalSamples + variance));\n\n\tfloat shape = 2.26; // this is very important. 2.26 is very specific\n\tfloat theta = variedSamples * (PI * shape);\n\n\tfloat x =  cos(theta) * spiralShape;\n\tfloat y =  sin(theta) * spiralShape;\n\n\treturn vec2(x, y);\n}\n\nfloat ld(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\n#ifdef OVERWORLD_SHADER\n\t#include \"/lib/Shadows.glsl\"\n\tfloat ComputeShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDistFade, float noise, in vec3 geoNormals){\n\n\t\t// setup shadow projection\n\t\tvec3 projectedShadowPosition = mat3(shadowModelView) * playerPos + shadowModelView[3].xyz;\n\n\t\tapplyShadowBias(projectedShadowPosition, playerPos, geoNormals);\n\n\t\tprojectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz;\n\n\t\t// un-distort\n\t\tfloat distortFactor = 1.0;\n\n\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\tdistortFactor = calcDistort(projectedShadowPosition.xy);\n\t\t\tprojectedShadowPosition.xy *= distortFactor;\n\t\t#endif\n\n\t\tprojectedShadowPosition.z += shadowProjection[3].z * 0.0012;\n\n\t\t// hamburger\n\t\tprojectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);\n\n\t\t#ifdef LPV_SHADOWS\n\t\t\tprojectedShadowPosition.xy *= 0.8;\n\t\t#endif\n\n\t\tfloat shadowmap = 0.0;\n\t\tvec3 translucentTint = vec3(0.0);\n\n\t\tint samples = 1;\n\t\tfloat rdMul = 0.0;\n\n\t\t#ifdef BASIC_SHADOW_FILTER\n\t\t\tsamples = int(SHADOW_FILTER_SAMPLE_COUNT * 0.5);\n\t\t\trdMul = (4.0*distortFactor*d0*k/shadowMapResolution) * 0.3;\n\t\t#endif\n\n\t\tfor(int i = 0; i < samples; i++){\n\t\t\t#ifdef BASIC_SHADOW_FILTER\n\t\t\t\tvec2 offsetS = CleanSample(i, samples - 1, noise) * rdMul;\n\t\t\t\tprojectedShadowPosition.xy += offsetS;\n\t\t\t#endif\n\n\t\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\n\t\t\t\t// determine when opaque shadows are overlapping translucent shadows by getting the difference of opaque depth and translucent depth\n\t\t\t\tfloat shadowDepthDiff = pow(clamp((shadow2D(shadowtex1, projectedShadowPosition).x - projectedShadowPosition.z) * 2.0,0.0,1.0),2.0);\n\n\t\t\t\t// get opaque shadow data to get opaque data from translucent shadows.\n\t\t\t\tfloat opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x;\n\t\t\t\tshadowmap += max(opaqueShadow, shadowDepthDiff);\n\n\t\t\t\t// get translucent shadow data\n\t\t\t\tvec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy);\n\n\t\t\t\t// this curve simply looked the nicest. it has no other meaning.\n\t\t\t\tfloat shadowAlpha = pow(1.0 - pow(translucentShadow.a,5.0),0.2);\n\n\t\t\t\t// normalize the color to remove luminance, and keep the hue. remove all opaque color.\n\t\t\t\t// 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.\n\t\t\t\ttranslucentShadow.rgb = max(normalize(translucentShadow.rgb + 0.0001), max(opaqueShadow, 1.0-shadowAlpha)) * shadowAlpha;\n\n\t\t\t\t// make it such that full alpha areas that arent in a shadow have a value of 1.0 instead of 0.0\n\t\t\t\ttranslucentTint += mix(translucentShadow.rgb, vec3(1.0), opaqueShadow*shadowDepthDiff);\n\t\t\t#else\n\t\t\t\tshadowmap += shadow2D(shadow, projectedShadowPosition).x;\n\t\t\t#endif\n\t\t}\n\n\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\t\t// tint the lightsource color with the translucent shadow color\n\t\t\tdirectLightColor *= mix(vec3(1.0), translucentTint.rgb / samples, maxDistFade);\n\t\t#endif\n\n\t\treturn shadowmap / samples;\n\t\t// return mix(1.0, shadowmap / samples, maxDistFade);\n\t}\n#endif\n\nvoid convertHandDepth(inout float depth) {\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\tdepth = ndcDepth * 0.5 + 0.5;\n}\n\nvoid Emission(\n\tinout vec3 Lighting,\n\tvec3 Albedo,\n\tfloat Emission\n){\n\tif(Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve));\n}\n\nuniform vec3 eyePosition;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\n/* RENDERTARGETS:2,7,11,14 */\n\nvoid main() {\n\tif(gl_FragCoord.x * texelSize.x < 1.0  && gl_FragCoord.y * texelSize.y < 1.0){\n\t\tvec3 FragCoord = gl_FragCoord.xyz;\n\n\t\t#ifdef TAA\n\t\t\tvec2 tempOffset = offsets[framemod8];\n\t\t\tvec3 viewPos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5, 0.0));\n\t\t#else\n\t\t\tvec3 viewPos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0));\n\t\t#endif\n\n\t\tvec3 feetPlayerPos = toWorldSpace(viewPos);\n\n////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////// MATERIAL MASKS ////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n\t\n\t\tfloat MATERIALS = normalMat.w;\n\n\t\t// 1.0 = water mask\n\t\t// 0.9 = entity mask\n\t\t// 0.8 = reflective entities\n\t\t// 0.7 = glass\n\t\t// 0.6 = slime & honey\n\t\t// 0.5 = ice\n\t\t// 0.4 = nether portal\n\t\t// 0.3 = hand mask\n\n\t\t#ifdef HAND\n\t\t\tMATERIALS = 0.3;\n\t\t#endif\n\n\t\t// bool isHand = abs(MATERIALS - 0.1) < 0.01;\n\t\tbool isWater = MATERIALS > 0.99;\n\n\t\tbool isReflectiveEntity = abs(MATERIALS - 0.8) < 0.01;\n\t\tbool isGlass = abs(MATERIALS - 0.7) < 0.01;\n\t\tbool isSlime = abs(MATERIALS - 0.6) < 0.01;\n\t\tbool isIce = abs(MATERIALS - 0.5) < 0.01;\n\t\tbool isNetherPortal = abs(MATERIALS - 0.4) < 0.01;\n\t\tbool isReflective = isWater || isGlass || isSlime || isIce || isNetherPortal || isReflectiveEntity;\n\t\tbool isEntity = abs(MATERIALS - 0.9) < 0.01 || isReflectiveEntity;\n\n////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////// ALBEDO /////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n\n\t\tgl_FragData[0] = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) * color;\n\n\t\tfloat UnchangedAlpha = gl_FragData[0].a;\n\n\t\tvec3 Albedo = toLinear(gl_FragData[0].rgb);\n\n\t\tif(isReflective && !isWater && !isSlime){\n\t\t\tgl_FragData[0].a *= 0.5;\n\t\t}\n\n\t\tif(isWater){\n\t\t\t#ifdef Vanilla_like_water\n\t\t\t\tAlbedo *= sqrt(luma(Albedo));\n\t\t\t#else\n\t\t\t\tAlbedo = vec3(0.0);\n\t\t\t\tgl_FragData[0].a = 1.0/255.0;\n\t\t\t#endif\n\t\t}\n\n\t\t#ifdef WhiteWorld\n\t\t\tgl_FragData[0].rgb = vec3(1.0);\n\t\t\tgl_FragData[0].a = 1.0/255.0;\n\t\t#endif\n\n\t\t#ifdef ENTITIES\n\t\t\tAlbedo.rgb = mix(Albedo.rgb, entityColor.rgb, clamp(entityColor.a*1.5,0,1));\n\t\t#endif\n\n\t\tvec4 GLASS_TINT_COLORS = vec4(Albedo, UnchangedAlpha);\n\n\t\t#ifdef BIOME_TINT_WATER\n\t\t\tif(isWater) GLASS_TINT_COLORS.rgb = toLinear(color.rgb);\n\t\t#endif\n\n////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////// NORMALS ///////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n\n\t\tvec3 normal = normalMat.xyz; // in viewSpace\n\t\tvec3 geoNormals = viewToWorld(normal).xyz; // for refractions\n\n\t\t#if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN\n\t\t\tWavePixelData wave = physics_wavePixel(physics_localPosition.xz, physics_localWaviness, physics_iterationsNormal, physics_gameTime);\n\n\t\t\t#ifdef DISTANT_HORIZONS\n\t\t\t\tfloat 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);\n\t\t\t#else\n\t\t\t\tfloat PHYSICS_OCEAN_TRANSITION = 0.0;\n\t\t\t#endif\n\n\t\t\tif (isWater){\n\t\t\t\tif (!gl_FrontFacing) {\n\t\t\t\t\twave.normal = -wave.normal;\n\t\t\t\t}\n\n\t\t\t\tnormal = mix(normalize(gl_NormalMatrix * wave.normal), normal, PHYSICS_OCEAN_TRANSITION);\n\n\t\t\t\tAlbedo = mix(Albedo, vec3(1.0), wave.foam);\n\t\t\t\tgl_FragData[0].a = mix(1.0/255.0, 1.0, wave.foam);\n\t\t\t}\n\t\t#endif\n\n\t\tvec3 worldSpaceNormal = viewToWorld(normal).xyz;\n\t\tvec2 TangentNormal = vec2(0.0); // for refractions\n\n\t\t#ifdef LARGE_WAVE_DISPLACEMENT\n\t\t\tif (isWater){\n\t\t\t\tnormal = largeWaveNormal;\n\t\t\t}\n\t\t#endif\n\n\t\tvec3 tangent2 = normalize(cross(tangent.rgb, normal) * tangent.w);\n\t\tmat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x,\n\t\t\t\t\t\t\ttangent.y, tangent2.y, normal.y,\n\t\t\t\t\t\t\ttangent.z, tangent2.z, normal.z);\n\n\t\tvec3 NormalTex = vec3(texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).xy,0.0);\n\t\tNormalTex.xy = NormalTex.xy*2.0-1.0;\n\t\tNormalTex.z = clamp(sqrt(1.0 - dot(NormalTex.xy, NormalTex.xy)),0.0,1.0);\n\n\t\t#if !defined HAND\n\t\t\tif(isWater){\n\t\t\t\tvec3 playerPos = toWorldSpace(viewPos);\n\t\t\t\tvec3 worldPos = playerPos + cameraPosition;\n\t\t\t\tvec3 waterPos = playerPos;\n\n\t\t\t\tvec3 flowDir = normalize(worldSpaceNormal*10.0) * frameTimeCounter * WATER_WAVE_SPEED * (2.0 + rainStrength);\n\t\t\t\n\t\t\t\tvec2 newPos = worldPos.xy + abs(flowDir.xz);\n\t\t\t\tnewPos = mix(newPos, worldPos.zy + abs(flowDir.zx), clamp(abs(worldSpaceNormal.x),0.0,1.0));\n\t\t\t\tnewPos = mix(newPos, worldPos.xz, clamp(abs(worldSpaceNormal.y),0.0,1.0));\n\t\t\t\twaterPos.xy = newPos;\n\t\t\n\t\t\t\twaterPos.xyz = getParallaxDisplacement(waterPos, playerPos);\n\n\t\t\t\tvec3 bump = getWaveNormal(waterPos, playerPos, false);\n\n\t\t\t\t#ifdef WATER_RIPPLES\n\t\t\t\t\tvec3 rippleNormal = vec3(0.0);\n\t\t\t\t\tif (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);\n\t\t\t\t\tbump += rippleNormal;\n\t\t\t\t#endif\n\n\t\t\t\tbump = normalize(bump);\n\n\t\t\t\tfloat bumpmult = WATER_WAVE_STRENGTH + 0.5 * rainStrength;\n\n\t\t\t\tbump = bump * bumpmult + vec3(0.0, 0.0, 1.0 - bumpmult);\n\t\t\t\tNormalTex.xyz = bump;\n\t\t\t}\n\t\t#endif\n\n\t\t// tangent space normals for refraction\n\t\tTangentNormal = NormalTex.xy;\n\n\t\t#if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN\n\t\t\tnormal = applyBump(tbnMatrix, NormalTex.xyz, PHYSICS_OCEAN_TRANSITION);\n\t\t#else\n\t\t\tnormal = applyBump(tbnMatrix, NormalTex.xyz, 1.0);\n\t\t#endif\n\n\t\tworldSpaceNormal = viewToWorld(normal);\n\n\t\t#if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN\n\t\t\tif (isWater) TangentNormal = normalize(wave.normal).xz;\n\t\t#endif\n\n\t\tfloat nameTagMask = 0.0;\n\n\t\t#if defined ENTITIES && defined IS_IRIS\n\t\t\tif(NAMETAG > 0) nameTagMask = 0.1;\n\t\t#endif\n\n\t\tgl_FragData[2] = vec4(encodeVec2(TangentNormal*0.5+0.5), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), encodeVec2(0.0, nameTagMask));\n\n////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////// SPECULARS /////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n\n\t\tvec3 SpecularTex = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rga;\n\n////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////// DIFFUSE LIGHTING //////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n\n\t\tvec2 lightmap = lmtexcoord.zw;\n\n\t\t#ifndef OVERWORLD_SHADER\n\t\t\tlightmap.y = 1.0;\n\t\t#endif\n\n\t\t#if defined Hand_Held_lights && !defined LPV_ENABLED\n\t\t\t#ifdef IS_IRIS\n\t\t\t\tvec3 playerCamPos = eyePosition;\n\t\t\t#else\n\t\t\t\tvec3 playerCamPos = cameraPosition;\n\t\t\t#endif\n\t\t\n\t\t\tif(HELD_ITEM_BRIGHTNESS > 0.0){ \n\t\t\t\tfloat pointLight = clamp(1.0-length((feetPlayerPos+cameraPosition)-playerCamPos)/HANDHELD_LIGHT_RANGE,0.0,1.0);\n\t\t\t\tlightmap.x  = mix(lightmap.x , HELD_ITEM_BRIGHTNESS, pointLight*pointLight);\n\t\t\t}\n\t\t#endif\n\n\t\tvec3 Indirect_lighting = vec3(0.0);\n\t\tvec3 MinimumLightColor = vec3(1.0);\n\n\t\tvec3 Direct_lighting = vec3(0.0);\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tvec3 DirectLightColor = lightCol.rgb/2400.0;\n\t\t\tvec3 AmbientLightColor = averageSkyCol_Clouds/900.0;\n\n\t\t\t#ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS\n\t\t\t\tDirectLightColor = luma(DirectLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B);\n\t\t\t\tAmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B);\n\t\t\t#endif\n\n\t\t\tif(!isWater && isEyeInWater == 1){\n\t\t\t\tfloat distanceFromWaterSurface = cameraPosition.y - waterEnteredAltitude;\n\t\t\t\tfloat waterdepth = max(-(feetPlayerPos.y + distanceFromWaterSurface),0.0);\n \n\t\t\t\tDirectLightColor *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * (waterdepth/abs(WsunVec.y)));\n\t\t\t\tDirectLightColor *= pow(waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS, WATER_CAUSTICS_STRENGTH);\n\t\t\t}\n\n\t\t\tfloat NdotL = clamp((-15 + dot(normal, normalize(WsunVec*mat3(gbufferModelViewInverse)))*255.0) / 240.0  ,0.0,1.0);\n\t\t\tfloat Shadows = 1.0;\n\n\t\t\tfloat shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / (shadowDistance+16),0.0)*5.0,1.0));\n\t\t\tfloat shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / shadowDistance,0.0)*5.0,1.0));\n\n\t\t\tfloat LM_shadowMapFallback = min(max(lightmap.y-0.8, 0.0) * 25,1.0);\n\n\t\t\tvec3 shadowPlayerPos = toWorldSpace(viewPos);\n\n\t\t\tShadows = ComputeShadowMap(DirectLightColor, shadowPlayerPos, shadowMapFalloff, blueNoise(), geoNormals);\n\t\t\tShadows *= mix(LM_shadowMapFallback, 1.0, shadowMapFalloff2);\n\t\t\tShadows *= getCloudShadow(feetPlayerPos+cameraPosition, WsunVec);\n\n\t\t\tDirect_lighting = DirectLightColor * NdotL * Shadows;\n\n\t\t\tvec3 indirectNormal = worldSpaceNormal / dot(abs(worldSpaceNormal),vec3(1.0));\n\t\t\tfloat SkylightDir = clamp(indirectNormal.y*0.7+0.3,0.0,1.0);\n\n\t\t\tfloat skylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir)/2.5;\n\t\t\tAmbientLightColor *= skylight;\n\n\t\t\tIndirect_lighting = doIndirectLighting(AmbientLightColor, MinimumLightColor, lightmap.y);\n\t\t#endif\n\n\t\t#ifdef NETHER_SHADER\n\t\t\tIndirect_lighting = volumetricsFromTex(worldSpaceNormal, colortex4, 0).rgb / 1200.0 / 1.5;\n\t\t#endif\n\n\t\t#ifdef END_SHADER\n\t\t\tfloat vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0);\n\t\t\tvec3 lightPos = LightSourcePosition(feetPlayerPos+cameraPosition, cameraPosition,vortexBounds);\n\n\t\t\tfloat lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0;\n\t\t\tvec3 lightColors = LightSourceColors(vortexBounds, lightningflash);\n\n\t\t\tfloat end_NdotL = clamp(dot(worldSpaceNormal, normalize(-lightPos))*0.5+0.5,0.0,1.0);\n\t\t\tend_NdotL *= end_NdotL;\n\n\t\t\tfloat fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos);\n\t\t\tfloat endPhase = endFogPhase(lightPos);\n\n\t\t\tDirect_lighting += lightColors * endPhase * end_NdotL * fogShadow;\n\n\t\t\tvec3 AmbientLightColor = vec3(END_FOG_R, END_FOG_G, END_FOG_B);\n\n\t\t\tIndirect_lighting = AmbientLightColor + 0.7 * AmbientLightColor * dot(worldSpaceNormal, normalize(feetPlayerPos));\n\t\t\tIndirect_lighting *= 0.1;\n\t\t#endif\n\n\t///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING\n\n\t\t#ifdef IS_LPV_ENABLED\n\t\t\tvec3 normalOffset = vec3(0.0);\n\n\t\t\tif(any(greaterThan(abs(viewToWorld(normalMat.xyz).xyz), vec3(1.0e-6))))\n\t\t\t\tnormalOffset = 0.5*worldSpaceNormal;\n\n\t\t\t#if LPV_NORMAL_STRENGTH > 0\n\t\t\t\tif(any(greaterThan(abs(normal), vec3(1.0e-6)))) {\n\t\t\t\t\tvec3 texNormalOffset = -normalOffset + worldSpaceNormal;\n\t\t\t\t\tnormalOffset = mix(normalOffset, texNormalOffset, (LPV_NORMAL_STRENGTH*0.01));\n\t\t\t\t}\n\t\t\t#endif\n\n\t\t\tvec3 lpvPos = GetLpvPosition(feetPlayerPos) + normalOffset;\n\t\t#else\n\t\t\tconst vec3 lpvPos = vec3(0.0);\n\t\t#endif\n\n\t\tIndirect_lighting += doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos, worldSpaceNormal);\n\n\t\tvec4 flashLightSpecularData = vec4(0.0);\n\t\t#ifdef FLASHLIGHT\n\t\t\tIndirect_lighting += calculateFlashlight(FragCoord.xy*texelSize/RENDER_SCALE, viewPos, vec3(0.0), worldSpaceNormal, flashLightSpecularData, false);\n\t\t#endif\n\n\t\tvec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo;\n\t\t#if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3\n\t\t\tEmission(FinalColor, Albedo, SpecularTex.b);\n\t\t#endif\n\n////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////// SPECULAR LIGHTING /////////////////////////////\n////////////////////////////////////////////////////////////////////////////////\n\n\t\t#ifdef DAMAGE_BLOCK_EFFECT\n\t\t\t#undef FORWARD_SPECULAR\n\t\t#endif\n\n\t\t#ifdef FORWARD_SPECULAR\n\n\t\t\tfloat harcodedF0 = 0.02;\n\n\t\t\t// if nothing is chosen, no smoothness and no reflectance\n\t\t\tvec2 specularValues = vec2(1.0, 0.0); \n\n\t\t\t// hardcode specular values for select blocks like glass, water, and slime\n\t\t\tif(isReflective) specularValues = vec2(1.0, harcodedF0);\n\n\t\t\t// detect if the specular texture is used, if it is, overwrite hardcoded values\n\t\t\tif(SpecularTex.r > 0.0 && SpecularTex.g <= 1.0) specularValues = SpecularTex.rg;\n\t\t\n\t\t\tfloat f0 = isReflective ? max(specularValues.g, harcodedF0) : specularValues.g;\n\t\t\tbool isHand = false;\n\n\t\t\t#ifdef HAND\n\t\t\t\tisHand = true;\n\t\t\t\tf0 = max(specularValues.g, harcodedF0);\n\t\t\t#endif\n\n\t\t\tfloat roughness = specularValues.r; \n\n\t\t\tif(UnchangedAlpha <= 0.0 && !isReflective) f0 = 0.0;\n\n\t\t\tif(f0 > 0.0){\n\t\t\t\tif(isReflective) f0 = max(f0, harcodedF0);\n\n\t\t\t\tfloat reflectance = 0.0;\n\n\t\t\t\t#ifndef OVERWORLD_SHADER\n\t\t\t\t\tvec3 WsunVec = vec3(0.0);\n\t\t\t\t\tvec3 DirectLightColor = WsunVec;\n\t\t\t\t\tfloat Shadows = 0.0;\n\t\t\t\t#endif\n\n\t\t\t\tvec3 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);\n\n\t\t\t\tgl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * reflectance;\n\t\t\n\t\t\t\t// invert the alpha blending darkening on the color so you can interpolate between diffuse and specular and keep buffer blending\n\t\t\t\tfloat colorFactor = 0.25;\n\t\t\t\tif(isWater || isNetherPortal) colorFactor = 1.0;\n\t\t\t\tif(isGlass || isSlime) colorFactor = 0.5;\n\n\t\t\t\tgl_FragData[0].rgb = clamp(specularReflections / gl_FragData[0].a * 0.1,0.0,65000.0) * colorFactor;\n\t\t\t}else{\n\t\t\t\tgl_FragData[0].rgb = clamp(FinalColor * 0.1,0.0,65000.0);\n\t\t\t}\n\t\t#else\n\t\t\tgl_FragData[0].rgb = FinalColor * 0.1;\n\t\t#endif\n\n\t\t#ifdef ENTITIES\n\t\t\t// do not allow specular to be very visible in these regions on entities\n\t\t\t// this helps with specular on slimes, and entities with skin overlays like piglins/players\n\t\t\tif(!gl_FrontFacing) {\n\t\t\t\tgl_FragData[0] = vec4(FinalColor * 0.1, UnchangedAlpha);\n\t\t\t}\n\t\t#endif\n\n\t\t#if defined DISTANT_HORIZONS && defined DH_OVERDRAW_PREVENTION && !defined HAND\n\t\t\t#if OVERDRAW_MAX_DISTANCE == 0\n\t\t\t\tfloat maxOverdrawDistance = far;\n\t\t\t#else\n\t\t\t\tfloat maxOverdrawDistance = OVERDRAW_MAX_DISTANCE;\n\t\t\t#endif\n\n\t\t\tbool 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;\n\n\t\t\tif(WATER) {\n\t\t\t\tgl_FragData[0].a = 0.0;\n\t\t\t\tMATERIALS = 0.0;\n\t\t\t}\n\t\t#endif\n\n\t\tgl_FragData[1] = vec4(Albedo, MATERIALS);\n\n\t\t#if DEBUG_VIEW == debug_DH_WATER_BLENDING\n\t\t\tif(gl_FragCoord.x*texelSize.x < 0.47) gl_FragData[0] = vec4(0.0);\n\t\t#elif DEBUG_VIEW == debug_NORMALS\n\t\t\tgl_FragData[0].rgb = worldSpaceNormal.xyz * 0.1;\n\t\t\tgl_FragData[0].a = 1;\n\t\t#elif DEBUG_VIEW == debug_INDIRECT\n\t\t\tgl_FragData[0].rgb = Indirect_lighting * 0.1;\n\t\t#elif DEBUG_VIEW == debug_DIRECT\n\t\t\tgl_FragData[0].rgb = Direct_lighting * 0.1;\n\t\t#endif\n\n\t\tgl_FragData[3] = vec4(encodeVec2(lightmap.x, lightmap.y), 1, 1, 1);\n\n\t\t#if defined ENTITIES && defined IS_IRIS\n\t\t\tif(NAMETAG > 0) {\n\t\t\t\t// WHY DO THEY HAVE TO AHVE LIGHTING AAAAAAUGHAUHGUAHG\n\t\t\t\t#ifndef OVERWORLD_SHADER\n\t\t\t\t\tlightmap.y = 0.0;\n\t\t\t\t#endif\n\n\t\t\t\tvec3 nameTagLighting = Albedo.rgb * max(max(lightmap.y*lightmap.y*lightmap.y , lightmap.x*lightmap.x*lightmap.x), 0.025);\n\n\t\t\t\t// 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 :/\n\t\t\t\tgl_FragData[0] = vec4(nameTagLighting.rgb * 0.1, UnchangedAlpha  * 0.75);\n\t\t\t}\n\t\t#endif\n\t}\n}"
  },
  {
    "path": "shaders/dimensions/all_translucent.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/bokeh.glsl\"\n#include \"/lib/items.glsl\"\n\nuniform float frameTimeCounter;\n#include \"/lib/Shadow_Params.glsl\"\n\n#if defined PHYSICSMOD_OCEAN_SHADER\n\t#include \"/lib/oceans.glsl\"\n#endif\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\nout vec4 lmtexcoord;\nout vec4 color;\n\nuniform sampler2D colortex4;\nuniform sampler2D noisetex;\n\n#ifdef OVERWORLD_SHADER\n\tflat out vec3 averageSkyCol_Clouds;\n\tflat out vec4 lightCol;\n\tflat out vec3 WsunVec;\n\n\tuniform int worldDay;\n\t#include \"/lib/scene_controller.glsl\"\n#endif\n\nout vec4 normalMat;\nout vec3 binormal;\nout vec4 tangent;\nout vec3 flatnormal;\n\n#ifdef LARGE_WAVE_DISPLACEMENT\n\tout vec3 largeWaveNormal;\n#endif\n\nout vec3 viewVector;\n\nflat out int glass;\n#if defined ENTITIES && defined IS_IRIS\n\tflat out int NAMETAG;\n#endif\n\nattribute vec4 at_tangent;\nattribute vec4 mc_Entity;\n#if defined ENTITIES || defined BLOCKENTITIES\n\tuniform int entityId;\n#endif\n\nuniform vec3 sunPosition;\nuniform vec3 moonPosition;\nuniform float sunElevation;\n\nout vec4 tangent_other;\n\nuniform int frameCounter;\nuniform float aspectRatio;\nuniform float viewHeight;\nuniform float viewWidth;\nuniform int hideGUI;\nuniform float screenBrightness;\n\nuniform int heldItemId;\nuniform int heldItemId2;\nflat out float HELD_ITEM_BRIGHTNESS;\n\nuniform vec2 texelSize;\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\n#include \"/lib/projections.glsl\"\n\nfloat getWave (vec3 pos, float range){\n\treturn pow(1.0-texture2D(noisetex, (pos.xz + frameTimeCounter * WATER_WAVE_SPEED)/125.0).b, 5.0) * WATER_WAVE_STRENGTH * range;\n}\n\nvec3 getWaveNormal(vec3 posxz, float range){\n\n\tfloat deltaPos = 0.5;\n\tvec3 coord = posxz;\n\n\tfloat h0 = getWave(coord,range);\n\tfloat h1 = getWave(coord - vec3(deltaPos,0.0,0.0),range);\n\tfloat h3 = getWave(coord - vec3(0.0,0.0,deltaPos),range);\n\n\tfloat xDelta = (h1-h0)/deltaPos * 1.5;\n\tfloat yDelta = (h3-h0)/deltaPos * 1.5;\n\n\tvec3 wave = normalize(vec3(xDelta, yDelta, 1.0-pow(abs(xDelta+yDelta),2.0)));\n\n\treturn wave;\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n \tgl_Position = ftransform();\n\t#if defined ENTITIES && defined IS_IRIS\n\t\t// force out of frustum\n\t\tif (entityId == 1599) gl_Position.z -= 10000.0;\n\t#endif\n\n\t#if defined PHYSICSMOD_OCEAN_SHADER && defined PHYSICS_OCEAN\n\t\t// basic texture to determine how shallow/far away from the shore the water is\n\t\tphysics_localWaviness = texelFetch(physics_waviness, ivec2(gl_Vertex.xz) - physics_textureOffset, 0).r;\n\t\t// transform gl_Vertex (since it is the raw mesh, i.e. not transformed yet)\n\t\tvec4 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);\n\t\t// pass this to the fragment shader to fetch the texture there for per fragment normals\n\t\tphysics_localPosition = finalPosition.xyz;\n\n\t\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(finalPosition) + gl_ModelViewMatrix[3].xyz;\n\t#else\n\t\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\t#endif\n\n\t// lmtexcoord.xy = (gl_MultiTexCoord0).xy;\n\tlmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;\n\tvec2 lmcoord = gl_MultiTexCoord1.xy / 240.0;\n\tlmtexcoord.zw = lmcoord;\n\n\t#ifdef LARGE_WAVE_DISPLACEMENT\n\t\tif(mc_Entity.x == 8.0) {\n\t\t\tvec3 playerPos = mat3(gbufferModelViewInverse) * position.xyz;\n\t\t\t#ifdef DISTANT_HORIZONS\n\t\t\t\tfloat range = pow(1-pow(1-clamp(1.0 - length(playerPos) / far, 0.0,1.0),3.0),3.0);\n\t\t\t#else\n\t\t\t\tfloat range = min(1.0 + pow(length(playerPos) / 256,2.0), 256.0);\n\t\t\t#endif\n\n\t\t\tvec4 displacedVertex = vec4(gl_Vertex.x, gl_Vertex.y + (getWave(gl_Vertex.xyz + cameraPosition, range)*0.6-0.5), gl_Vertex.z, gl_Vertex.w);\n\t\t\tposition = mat3(gl_ModelViewMatrix) * vec3(displacedVertex) + gl_ModelViewMatrix[3].xyz;\n\t\t\n\t\t\tplayerPos = mat3(gbufferModelViewInverse) * position.xyz;\n\t\t\tlargeWaveNormal = getWaveNormal(playerPos + cameraPosition, range);\n\t\t}\n\t#endif\n\n   \tvec3 worldpos = toWorldSpace(position);\n\t#ifdef PLANET_CURVATURE\n\t\tfloat curvature = length(worldpos) / (16*8);\n\t\tworldpos.y -= curvature * curvature * CURVATURE_AMOUNT;\n\t#endif\n\n\tposition = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz;\n\n\t#if !defined ENTITIES && !defined HAND\n \t\tgl_Position = toClipSpace4alt(position);\n\t#endif\n\n\tHELD_ITEM_BRIGHTNESS = 0.0;\n\n\t#ifdef Hand_Held_lights\n\t\tif(heldItemId > 999 || heldItemId2 > 999) HELD_ITEM_BRIGHTNESS = 0.9;\n\t#endif\n\n\t// 1.0 = water mask\n\t// 0.9 = entity mask\n\t// 0.8 = reflective entities\n\t// 0.7 = glass\n\t// 0.6 = slime & honey\n\t// 0.5 = ice\n\t// 0.4 = nether portal\n\tfloat mat = 0.0;\n\n\t// water mask\n\tif(mc_Entity.x == 8.0) {\n    \t\tmat = 1.0;\n  \t}\n\n\t// translucent entities\n\t#if defined ENTITIES || defined BLOCKENTITIES\n\t\tmat = 0.9;\n\t\tif (entityId == 1803) mat = 0.8;\n\t#endif\n\n\t// glass\n\tif (mc_Entity.x >= 301 && mc_Entity.x <= 317) mat = 0.7;\n\n\t// slime & honey\n\tif (mc_Entity.x == 318 || mc_Entity.x == 319) mat = 0.6;\n\n\t// ice\n\tif (mc_Entity.x == 320) mat = 0.5;\n\n\t// nether portal\n\tif (mc_Entity.x == 321) mat = 0.4;\n\n\t#if defined ENTITIES && defined IS_IRIS\n\t\tNAMETAG = 0;\n\t\tif (entityId == 1600) NAMETAG = 1;\n\t#endif\n\n\ttangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w);\n\tnormalMat = vec4(normalize(gl_NormalMatrix * gl_Normal), mat);\n\n\tbinormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w);\n\n\tmat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x,\n\t\t\t\t\t\ttangent.y, binormal.y, normalMat.y,\n\t\t\t\t\t\ttangent.z, binormal.z, normalMat.z);\n\n\t#ifdef LARGE_WAVE_DISPLACEMENT\n\t\tif(mc_Entity.x == 8.0) {\n\t\t\tlargeWaveNormal = normalize(largeWaveNormal * tbnMatrix);\n\t\t}else{\n\t\t\tlargeWaveNormal = normalMat.xyz;\n\t\t}\n\t#endif\n\n\tflatnormal = normalMat.xyz;\n\tviewVector = normalize(tbnMatrix * position.xyz);\n\n\tcolor = vec4(gl_Color.rgb, 1.0);\n\n\t#ifdef OVERWORLD_SHADER\n\t\tlightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb;\n\t\tlightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0;\n\n\t\taverageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;\n\n\t\t// WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\t\tWsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\t\tvec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition);\n\t\tvec3 WmoonVec = moonVec;\n\t\tif(dot(-moonVec, WsunVec) < 0.9999) WmoonVec = -moonVec;\n\n\t\tWsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1));\n\n\t\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t#endif\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t#endif\n\t#ifdef TAA\n\t\t#if defined ENTITIES && defined IS_IRIS\n\t\t// remove jitter for nametags lol\n\t\t\tif(entityId != 1600) gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t\t#else\n\t\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t\t#endif\n\t#endif\n\n\t#if DOF_QUALITY == 5\n\t\tvec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);\n\t\tjitter = rotate(radians(float(frameCounter))) * jitter;\n\t\tjitter.y *= aspectRatio;\n\t\tjitter.x *= DOF_ANAMORPHIC_RATIO;\n\n\t\t#if MANUAL_FOCUS == -2\n\t\t\tfloat focusMul = 0;\n\t\t#elif MANUAL_FOCUS == -1\n\t\t\tfloat focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);\n\t\t#else\n\t\t\tfloat focusMul = gl_Position.z - MANUAL_FOCUS;\n\t\t#endif\n\n\t\tvec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;\n\t\tgl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_vanilla_emissives.fsh",
    "content": "#include \"/lib/settings.glsl\"\n\nin vec4 color;\nin vec2 texcoord;\n\nuniform sampler2D texture;\n\nvec3 toLinear(vec3 sRGB){\n\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\n/* DRAWBUFFERS:2 */\n\nvoid main() {\n\n\tvec4 Albedo = texture2D(texture, texcoord);\n\tAlbedo.rgb = toLinear(Albedo.rgb * color.rgb);\n\n    #ifdef BEACON_BEAM\n\t    gl_FragData[0] = vec4(Albedo.rgb*Albedo.rgb * 0.1 * 5.0 * Emissive_Brightness, Albedo.a*color.a);\n    #endif\n\n    #ifdef LIGHTNING_AND_DRAGON_DEATH_BEAMS\n        gl_FragData[0] = vec4(Albedo.rgb * pow(1.0-pow(1.0-color.a,2),2) * 5.0 * 0.1, color.a);\n    #endif\n\n\t#if defined SPIDER_EYES || defined GLOWING \n\t\tif(Albedo.a < 1.0/255.0 || dot(Albedo.rgb, vec3(0.33333)) < 1.0/255.0) { discard; return; }\n\n\t\t#ifdef DISABLE_VANILLA_EMISSIVES\n\t\t\tvec3 emissiveColor = vec3(0.0);\n\t\t\tAlbedo.a = 0.0;\n\t\t#else\n\t\t\tvec3 emissiveColor = Albedo.rgb * color.a * Emissive_Brightness;\n\t\t#endif\n\n\t\tgl_FragData[0] = vec4(emissiveColor * 0.1, 0.000001);\n\t#endif\n\n\t#ifdef ENCHANT_GLINT\n\t\t#ifdef DISABLE_ENCHANT_GLINT\n\t\t\tvec3 GlintColor = vec3(0.0);\n\t\t\tAlbedo.a = 0.0;\n\t\t#else\n\t\t\tvec3 GlintColor = Albedo.rgb * 0.2 * Emissive_Brightness;\n\t\t#endif\n\n\t\tgl_FragData[0] = vec4(GlintColor * 0.1, 0.000001);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/all_vanilla_emissives.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\nout vec4 color;\nout vec2 texcoord;\n\nuniform sampler2D colortex4;\n\nuniform vec2 texelSize;\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\t\t\t\t\t\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tcolor = gl_Color;\n\n\ttexcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;\n\n\tgl_Position = ftransform();\n\n\t#ifdef BEACON_BEAM\n\t\tif(gl_Color.a < 1.0) gl_Position = vec4(10,10,10,0);\n\t#endif\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = (gl_Position.xy + gl_Position.w) * RENDER_SCALE-gl_Position.w;\n\t#endif\n\t#ifdef TAA\n\t    gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize;\n\t#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/begin.csh",
    "content": "#define RENDER_SHADOWCOMP\r\n\r\nlayout (local_size_x = 9, local_size_y = 1, local_size_z = 1) in;\r\n\r\nconst ivec3 workGroups = ivec3(1, 1, 1);\r\n\r\n#ifdef IS_LPV_ENABLED\r\n\t#ifdef LPV_SHADOWS\r\n\t\tlayout(r32ui) uniform restrict writeonly uimage1D imgCloseLights;\r\n\t\tlayout(r32ui) uniform restrict readonly uimage3D imgSortLights;\r\n\t#endif\r\n#endif\r\n\r\n////////////////////////////// VOID MAIN //////////////////////////////\r\n\r\nvoid main() {\r\n\t#ifdef IS_LPV_ENABLED\r\n\t\t#ifdef LPV_SHADOWS\r\n\t\t\tfor (int i = 0; i < 10; i++) {\r\n\t\t\t\timageStore(imgCloseLights, i, uvec4(imageLoad(imgSortLights, ivec3(0,0,i))));\r\n\t\t\t}\r\n\t\t#endif\r\n\t#endif\r\n}"
  },
  {
    "path": "shaders/dimensions/composite.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\n#ifndef DH_AMBIENT_OCCLUSION\n\t#undef DISTANT_HORIZONS\n#endif\n\nflat in vec3 WsunVec;\nflat in vec2 TAA_Offset;\n\n#include \"/lib/res_params.glsl\"\n\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex1;\nuniform sampler2D colortex3; // Noise\nuniform sampler2D colortex6; // Noise\nuniform sampler2D colortex7; // Noise\nuniform sampler2D colortex8; // Noise\nuniform sampler2D colortex14; // Noise\nuniform sampler2D colortex10; // Noise\nuniform sampler2D colortex12; // Noise\nuniform sampler2D colortex13; // Noise\nuniform sampler2D colortex15; // Noise\nuniform int isEyeInWater;\nuniform sampler2D shadow;\n\n#ifdef TRANSLUCENT_COLORED_SHADOWS\n\tuniform sampler2D shadowcolor0;\n\tuniform sampler2D shadowtex0;\n\tuniform sampler2D shadowtex1;\n#endif\n\nuniform vec3 sunVec;\nuniform vec2 texelSize;\nuniform float frameTimeCounter;\nuniform float rainStrength;\nuniform ivec2 eyeBrightnessSmooth;\n\nuniform float viewWidth;\nuniform float aspectRatio;\nuniform float viewHeight;\n\nuniform float near;\n\n#include \"/lib/Shadows.glsl\"\n#include \"/lib/projections.glsl\"\n\nvec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort){\n\tfloat alpha = (sampleNumber+jitter)/nb;\n\tfloat angle = jitter*6.28+alpha * nbRot * 6.28;\n\tfloat sin_v, cos_v;\n\n\tsin_v = sin(angle);\n\tcos_v = cos(angle);\n\n\treturn vec2(cos_v, sin_v)*alpha;\n}\n\nvec2 tapLocation2(int sampleNumber, int nb, float jitter){\n\tfloat alpha = (sampleNumber+jitter)/nb;\n\tfloat angle = jitter*6.28 + alpha * 84.0 * 6.28;\n\n\tfloat sin_v, cos_v;\n\n\tsin_v = sin(angle);\n\tcos_v = cos(angle);\n\n\treturn vec2(cos_v, sin_v)*sqrt(alpha);\n}\n\nvec4 blueNoise(vec2 coord){\n\treturn texelFetch2D(colortex6, ivec2(coord)%512 , 0) ;\n}\n\n#include \"/lib/Shadow_Params.glsl\"\n\nvec2 SpiralSample(\n\tint samples, int totalSamples, float rotation, float Xi\n){\n\tXi = max(Xi,0.0015);\n\t\n\tfloat alpha = float(samples + Xi) * (1.0 / float(totalSamples));\n\t\n\tfloat theta = TAU * alpha * rotation;\n\n\tfloat r = sqrt(Xi);\n\tfloat x = r * sin(theta);\n\tfloat y = r * cos(theta);\n\n\treturn vec2(x, y);\n}\n\nvec2 CleanSample(\n\tint samples, float totalSamples, float noise\n){\n\n\t// 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\n\tfloat variance = noise * 0.897;\n\n\t// for every sample input, it will have variance applied to it.\n\tfloat variedSamples = float(samples) + variance;\n\t\n\t// for every sample, the sample position must change its distance from the origin.\n\t// otherwise, you will just have a circle.\n\tfloat spiralShape = variedSamples / (totalSamples + variance);\n\n\tfloat shape = 2.26;\n\tfloat theta = variedSamples * (PI * shape);\n\n\tfloat x =  cos(theta) * spiralShape;\n\tfloat y =  sin(theta) * spiralShape;\n\n\treturn vec2(x, y);\n}\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\nvoid convertHandDepth(inout float depth) {\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\tdepth = ndcDepth * 0.5 + 0.5;\n}\n\nfloat convertHandDepth_2(in float depth, bool hand) {\n\tif(!hand) return depth;\n\t\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\treturn ndcDepth * 0.5 + 0.5;\n}\n\nvec2 SSAO(\n\tvec3 viewPos, vec3 normal, vec3 flatnormal, bool hand, float noise\n){\n\tint samples = 7;\n\tfloat occlusion = 0.0; \n\tfloat sss = 0.0;\n\n\tvec2 jitterOffsets = TAA_Offset*texelSize*0.5 * RENDER_SCALE - texelSize*0.5;\n\n\t// scale the offset radius down as distance increases.\n\tfloat linearViewDistance = length(viewPos);\n\tfloat distanceScale = hand ? 30.0 : mix(40.0, 10.0, pow(clamp(1.0 - linearViewDistance/50.0,0.0,1.0),2.0));\n\tfloat depthCancelation = (linearViewDistance*linearViewDistance) / distanceScale ;\n\n\t// distanceScale *= 10;\n  \tvec2 screenEdges = 2.0/vec2(viewWidth, viewHeight);\n\n\tfloat n = 0.0;\n\tfor (int i = 0; i < samples; i++) {\n\t\tvec2 offsets = CleanSample(i, samples - 1, noise) / distanceScale;\n\n\t\tivec2 offsetUV = ivec2(clamp((gl_FragCoord.xy + offsets*vec2(viewWidth, viewHeight*aspectRatio)*RENDER_SCALE)*texelSize,screenEdges,1.0-screenEdges)/texelSize);\n\n\t\tif (offsetUV.x >= 0 && offsetUV.y >= 0 && offsetUV.x < viewWidth*RENDER_SCALE.x && offsetUV.y < viewHeight*RENDER_SCALE.y ) {\n\t\t\n\t\t\tfloat sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, offsetUV, 0).x, hand);\n\n\t\t\t#ifdef DISTANT_HORIZONS\n\t\t\t\tfloat sampleDHDepth = texelFetch2D(dhDepthTex1, offsetUV, 0).x;\n\t\t\t\tvec3 offsetViewPos = toScreenSpace_DH((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth, sampleDHDepth);\n\t\t\t#else\n\t\t\t\tvec3 offsetViewPos = toScreenSpace(vec3((offsetUV*texelSize - jitterOffsets) * (1.0/RENDER_SCALE), sampleDepth));\n\t\t\t#endif\n\n\t\t\tvec3 viewPosDiff = offsetViewPos - viewPos;\n\t\t\tfloat viewPosDiffSquared = dot(viewPosDiff, viewPosDiff);\n\t\t\t\n\t\t\tfloat threshHold = max(1.0 - viewPosDiffSquared/depthCancelation, 0.0);\n\n\t\t\tif (viewPosDiffSquared > 1e-5){\n\t\t\t\tn += 1.0;\n\t\t\t\tfloat preAo = 1.0 - clamp(dot(normalize(viewPosDiff), flatnormal)*25.0,0.0,1.0);\n\t\t\t\tocclusion += max(0.0, dot(normalize(viewPosDiff), normal) - preAo) * threshHold;\n\t\t\t\t\n\t\t\t\t#ifdef Ambient_SSS\n\t\t\t\t\t#ifdef OLD_INDIRECT_SSS\n\t\t\t\t\t\tsss += clamp(-dot(normalize(viewPosDiff), flatnormal),0.0,1.0) * exp(-10*occlusion);\n\t\t\t\t\t#else\n\t\t\t\t\t\tsss += clamp(-dot(normalize(viewPosDiff), flatnormal) - occlusion/n,0.0,1.0) * 0.25 + (normalize(mat3(gbufferModelViewInverse) * -viewPosDiff).y - occlusion/n) * threshHold;\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\tfloat finaalAO = max(1.0 - occlusion*AO_Strength/max(n,1e-5), 0.0);\n\tfloat finalSSS = sss/float(samples);\n\n\treturn vec2(finaalAO, finalSSS);\n}\n\nfloat ld(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\n#include \"/lib/sky_gradient.glsl\"\n\n/* RENDERTARGETS:3,14,12,10*/\n\nvoid main() {\n\n\tfloat noise = R2_dither();\n\tvec2 texcoord = gl_FragCoord.xy*texelSize;\n\n\tvec4 data = texelFetch2D(colortex1,ivec2(gl_FragCoord.xy),0);\n\tvec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y));\n\tvec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w));\n\tvec3 normal = mat3(gbufferModelViewInverse) * clamp(worldToView(decode(dataUnpacked0.yw)),-1.,1.);\n\tvec2 lightmap = dataUnpacked1.yz;\n\n\tfloat lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0);\n\n\tgl_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);\n\n\t// bool lightningBolt = abs(dataUnpacked1.w-0.5) <0.01;\n\tbool isLeaf = abs(dataUnpacked1.w-0.55) <0.01;\n\t// bool translucent2 = abs(dataUnpacked1.w-0.6) <0.01;\t// Weak translucency\n\t// bool translucent4 = abs(dataUnpacked1.w-0.65) <0.01;\t// Weak translucency\n\tbool entities = abs(dataUnpacked1.w-0.45) < 0.01;\t\n\tbool hand = abs(dataUnpacked1.w-0.75) < 0.01;\n\t// bool blocklights = abs(dataUnpacked1.w-0.8) <0.01;\n\n\tfloat z = texelFetch2D(depthtex1,ivec2(gl_FragCoord.xy),0).x;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat DH_depth1 = texelFetch2D(dhDepthTex1,ivec2(gl_FragCoord.xy),0).x;\n\t\tfloat swappedDepth = z >= 1.0 ? DH_depth1 : z;\n\t#else\n\t\tfloat DH_depth1 = 1.0;\n\t\tfloat swappedDepth = z;\n\t#endif\n\n\tvec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z, DH_depth1);\n\tvec3 playerPos = mat3(gbufferModelViewInverse) * viewPos;\n\n\tfloat depth = z;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat _near = near;\n\t\tfloat _far = far*4.0;\n\t\tif (depth >= 1.0) {\n\t\t\tdepth = DH_depth1;\n\t\t\t_near = dhNearPlane;\n\t\t\t_far = dhFarPlane;\n\t\t}\n\n\t\tdepth = linearizeDepthFast(depth, _near, _far);\n\t\tdepth = depth / dhFarPlane;\n\n\t\t\tif(depth < 1.0) {\n\t\t\t\tgl_FragData[2] = vec4(vec3(0.0), depth * depth * 65000.0);\n\t\t\t} else {\n\t\t\t\tgl_FragData[2] = vec4(vec3(0.0), 65000.0);\n\t\t\t}\n\t#endif\n\n\t#if defined DENOISE_SSS_AND_SSAO && indirect_effect == 1\n\t\tvec3 FlatNormals = normalize(texture2D(colortex15,texcoord).rgb * 2.0 - 1.0);\n\t\tif(z >= 1.0) FlatNormals = normal;\n\n\t\tvec2 SSAO_SSS = SSAO(viewPos, worldToView(normal), worldToView(FlatNormals), hand, noise);\n\n\t\t#ifndef OLD_INDIRECT_SSS\n\t\t\tSSAO_SSS.y = clamp(SSAO_SSS.y + 0.5 * lightmap.y*lightmap.y,0.0,1.0);\n\t\t#endif\n\n\t\tif(swappedDepth >= 1.0) SSAO_SSS = vec2(1.0,0.0);\n\n\t\tgl_FragData[1].xy = SSAO_SSS;\n\t#endif\n\n\t/*------------- VOLUMETRICS BEHIND TRANSLUCENTS PASS-THROUGH -------------*/\n\t// colortex10 is the history buffer used in reprojection of volumetrics, i can just hijack that.\n\tgl_FragData[3] = texture2D(colortex10, texcoord);\n\n\t#ifdef OVERWORLD_SHADER\n\t\tfloat SpecularTex = texture2D(colortex8,texcoord).z;\n\t\tfloat LabSSS = clamp((-64.0 + SpecularTex * 255.0) / 191.0 ,0.0,1.0);\n\n\t\tfloat NdotL = clamp(dot(normal,WsunVec),0.0,1.0);\n\t\tfloat vanillAO = clamp(texture2D(colortex15,texcoord).a,0.0,1.0)  ;\n\n\t\tfloat minshadowfilt = Min_Shadow_Filter_Radius;\n\t\tfloat maxshadowfilt = Max_Shadow_Filter_Radius;\n\n\t\t#ifdef BASIC_SHADOW_FILTER\n\t\t\tif (LabSSS > 0.0 && NdotL < 0.001){  \n\t\t\t\tminshadowfilt = 50;\n\t\t\t\t// maxshadowfilt = 50;\n\t\t\t}\n\t\t#endif\n\n\t\tgl_FragData[0] = vec4(minshadowfilt, 0.0, 0.0, 0.0);\n\n\t\t#ifdef Variable_Penumbra_Shadows\t\n\t\t\tvec3 feetPlayerPos = toWorldSpace(viewPos);\n\n\t\t\t#if LIGHTLEAKFIX_MODE == 1 && indirect_lighting_effects == 1\n\t\t\t\tif(!hand) GriAndEminShadowFix(feetPlayerPos, FlatNormals, lightLeakFix);\n\t\t\t#endif\n\n\t\t\tvec3 projectedShadowPosition = toShadowSpaceProjected(feetPlayerPos);\n\n\t\t\t//apply distortion\n\t\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\t\tfloat distortFactor = calcDistort(projectedShadowPosition.xy);\n\t\t\t\tprojectedShadowPosition.xy *= distortFactor;\n\t\t\t#else\n\t\t\t\tfloat distortFactor = 1.0;\n\t\t\t#endif\n\n\t\t\t//do shadows only if on shadow map\n\t\t\tif (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0 ){\n\t\t\t\tprojectedShadowPosition.z += shadowProjection[3].z * 0.0013;\n\t\t\t\tconst float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95);\n\t\t\t\tfloat distortThresh = (sqrt(1.0-NdotL*NdotL)/NdotL+0.7)/distortFactor;\n\t\t\t\tfloat diffthresh = distortThresh/6000.0*threshMul;\n\t\t\t\tprojectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5);\n\n\t\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\t\tprojectedShadowPosition.xy *= 0.8;\n\t\t\t\t#endif\n\n\t\t\t\tfloat mult = maxshadowfilt;\n\t\t\t\tfloat avgBlockerDepth = 0.0;\n\t\t\t\tvec2 scales = vec2(0.0, Max_Filter_Depth);\n\t\t\t\tfloat blockerCount = 0.0;\n\t\t\t\tfloat rdMul = distortFactor*(1.0+mult)*d0*k/shadowMapResolution;\n\t\t\t\tfloat diffthreshM = diffthresh*mult*d0*k/20.;\n\t\t\t\tfloat avgDepth = 0.0;\n\n\t\t\t\tfor(int i = 0; i < VPS_Search_Samples; i++){\n\n\t\t\t\t\t// vec2 offsetS = SpiralSample(i, 7, 8, noise) * 0.5;\n\t\t\t\t\tvec2 offsetS = CleanSample(i, VPS_Search_Samples - 1, noise) * 0.5;\n\n\t\t\t\t\tfloat weight = 3.0 + (i+noise) * rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution*distortFactor/2.7;\n\n\t\t\t\t\tfloat d = texelFetch2D(shadow, ivec2((projectedShadowPosition.xy+offsetS*rdMul)*shadowMapResolution),0).x;\n\t\t\t\t\tfloat b = smoothstep(weight*diffthresh/2.0, weight*diffthresh, projectedShadowPosition.z - d);\n\n\t\t\t\t\tblockerCount += b;\n\n\t\t\t\t\t#ifdef DISTANT_HORIZONS_SHADOWMAP\n\t\t\t\t\t\tavgDepth += max(projectedShadowPosition.z - d, 0.0)*10000.0;\n\t\t\t\t\t#else\n\t\t\t\t\t\tavgDepth += max(projectedShadowPosition.z - d, 0.0)*1000.0;\n\t\t\t\t\t#endif\n\n\t\t\t\t\tavgBlockerDepth += d * b;\n\t\t\t\t}\n\n\t\t\t\tgl_FragData[0].g = avgDepth / VPS_Search_Samples;\n\n\t\t\t\tgl_FragData[0].b = blockerCount / VPS_Search_Samples;\n\n\t\t\t\tif (blockerCount >= 0.9){\n\t\t\t\t\tavgBlockerDepth /= blockerCount;\n\t\t\t\t\tfloat ssample = max(projectedShadowPosition.z - avgBlockerDepth,0.0)*1500.0;\n\t\t\t\t\tgl_FragData[0].r = clamp(ssample, scales.x, scales.y)/(scales.y)*(mult-minshadowfilt)+minshadowfilt;\n\t\t\t\t}\n\t\t\t}\n\t\t#endif\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/composite.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n\nflat out vec2 TAA_Offset;\nflat out vec3 WsunVec;\n\nuniform sampler2D colortex4;\n\nuniform float sunElevation;\nuniform vec3 sunPosition;\nuniform mat4 gbufferModelViewInverse;\n\n#include \"/lib/res_params.glsl\"\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\tWsunVec = (float(sunElevation > 1e-5)*2-1.)*normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\tTAA_Offset = vec2(0.0);\n\t#ifdef TAA\n\t\tTAA_Offset = offsets[framemod8];\n\t#endif\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/composite1.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\n#ifdef IS_LPV_ENABLED\n\t#extension GL_ARB_shader_image_load_store: enable\n\t#extension GL_ARB_shading_language_packing: enable\n#endif\n\n#include \"/lib/res_params.glsl\"\n\nconst bool colortex5MipmapEnabled = true;\n\n#ifdef OVERWORLD_SHADER\n\tconst bool shadowHardwareFiltering = true;\n\tuniform sampler2DShadow shadow;\n\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tuniform sampler2D shadowcolor0;\n\t\tuniform sampler2DShadow shadowtex0;\n\t\tuniform sampler2DShadow shadowtex1;\n\t#endif\n\n\tflat in vec3 averageSkyCol_Clouds;\n\tflat in vec4 lightCol;\n\tflat in vec3 moonCol;\n\n\t#include \"/lib/lightning_stuff.glsl\"\n#endif\n\n#ifdef NETHER_SHADER\n\tconst bool colortex4MipmapEnabled = true;\n\tuniform vec3 lightningEffect;\n#endif\n\n#ifdef END_SHADER\n\tuniform vec3 lightningEffect;\n\tflat in float Flashing;\n#endif\n\nuniform int hideGUI;\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\nuniform sampler2D depthtex2;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex0; //clouds\nuniform sampler2D colortex1; //albedo(rgb),material(alpha) RGBA16\nuniform sampler2D colortex2; //translucents(rgba)\nuniform sampler2D colortex3; //filtered shadowmap(VPS)\nuniform sampler2D colortex4; //LUT(rgb), quarter res depth(alpha)\nuniform sampler2D colortex5; //TAA buffer/previous frame\nuniform sampler2D colortex6; //Noise\nuniform sampler2D colortex7; //water?\nuniform sampler2D colortex8; //Specular\n// uniform sampler2D colortex9; //Specular\nuniform sampler2D colortex10;\nuniform sampler2D colortex11;\nuniform sampler2D colortex12;\nuniform sampler2D colortex13;\nuniform sampler2D colortex14;\nuniform sampler2D colortex15; // flat normals(rgb), vanillaAO(alpha)\n\n#ifdef IS_LPV_ENABLED\n\tuniform usampler1D texBlockData;\n\tuniform sampler3D texLpv1;\n\tuniform sampler3D texLpv2;\n#endif\n\nuniform float updateFadeTime;\n// uniform float centerDepthSmooth;\n\nuniform float near;\nuniform float farPlane;\n\nflat in vec3 zMults;\n\nuniform vec2 texelSize;\nuniform vec2 viewSize;\n\nuniform float eyeAltitude;\nflat in vec2 TAA_Offset;\n\nuniform float frameTimeCounter;\nuniform int worldTime;\nuniform int worldDay;\n\nuniform float rainStrength;\nuniform float wetnessAmount;\nuniform float wetness;\n\nuniform int isEyeInWater;\nuniform float waterEnteredAltitude;\nuniform ivec2 eyeBrightnessSmooth;\nuniform float nightVision;\n\nuniform vec3 sunVec;\nflat in vec3 WsunVec;\nflat in vec3 unsigned_WsunVec;\nflat in vec3 WmoonVec;\nflat in vec3 albedoSmooth;\n\n#ifdef IS_LPV_ENABLED\n\tuniform int heldItemId;\n\tuniform int heldItemId2;\n#endif\n\nvoid convertHandDepth(inout float depth) {\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\tdepth = ndcDepth * 0.5 + 0.5;\n}\n\nfloat convertHandDepth_2(in float depth, bool hand) {\n\tif(!hand) return depth;\n\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\treturn ndcDepth * 0.5 + 0.5;\n}\n\n#include \"/lib/projections.glsl\"\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/waterBump.glsl\"\n\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/Shadows.glsl\"\n#include \"/lib/stars.glsl\"\n#include \"/lib/climate_settings.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n#include \"/lib/ripples.glsl\"\n\n#ifdef OVERWORLD_SHADER\n\t#include \"/lib/scene_controller.glsl\"\n\t#define CLOUDSHADOWSONLY\n\t#include \"/lib/volumetricClouds.glsl\"\n\t#include \"/lib/aurora.glsl\"\n#endif\n\n#ifdef IS_LPV_ENABLED\n\t#include \"/lib/hsv.glsl\"\n\t#include \"/lib/lpv_common.glsl\"\n\t#include \"/lib/lpv_render.glsl\"\n#endif\n\n#define DEFERRED_SPECULAR\n#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]\n#define DEFERRED_BACKGROUND_REFLECTION\n#define DEFERRED_ROUGH_REFLECTION\n\n#include \"/lib/specular.glsl\"\n#include \"/lib/diffuse_lighting.glsl\"\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n#include \"/lib/end_fog.glsl\"\n\nfloat ld(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n\t// return (2.0 * near) / (far + near - depth * (far - near));\n}\n\nfloat triangularize(float dither){\n\tfloat center = dither*2.0-1.0;\n\tdither = center*inversesqrt(abs(center));\n\treturn clamp(dither-fsign(center),0.0,1.0);\n}\n\nvec3 fp10Dither(vec3 color,float dither){\n\tconst vec3 mantissaBits = vec3(6.,6.,5.);\n\tvec3 exponent = floor(log2(color));\n\treturn color + dither*exp2(-mantissaBits)*exp2(exponent);\n}\n\nvec4 blueNoise(vec2 coord){\n\treturn texelFetch2D(colortex6, ivec2(coord)%512 , 0) ;\n}\n\nvec2 CleanSample(\n\tint samples, float totalSamples, float noise\n){\n\n\t// 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\n\tfloat variance = noise * 0.897;\n\n\t// for every sample input, it will have variance applied to it.\n\tfloat variedSamples = float(samples) + variance;\n\t\n\t// for every sample, the sample position must change its distance from the origin.\n\t// otherwise, you will just have a circle.\n\tfloat spiralShape = sqrt(variedSamples / (totalSamples + variance));\n\n\tfloat shape = 2.26; // this is very important. 2.26 is very specific\n\tfloat theta = variedSamples * (PI * shape);\n\n\tfloat x =  cos(theta) * spiralShape;\n\tfloat y =  sin(theta) * spiralShape;\n\n\treturn vec2(x, y);\n}\n\nfloat swapperlinZ(float depth, float _near, float _far) {\n\treturn (2.0 * _near) / (_far + _near - depth * (_far - _near));\n\t// l = (2*n)/(f+n-d(f-n))\n\t// f+n-d(f-n) = 2n/l\n\t// -d(f-n) = ((2n/l)-f-n)\n\t// d = -((2n/l)-f-n)/(f-n)\n}\n\nvec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, bool isSSS, bool hand){\n\tfloat shadows = 1.0;\n\tfloat samples = 16.0;\n\tfloat SSS = 0.0;\n\n\tfloat _near = near; float _far = far*4.0;\n\n\tif (depthCheck) {\n\t\t_near = dhNearPlane;\n\t\t_far = dhFarPlane;\n\t}\n\n\tvec3 position = toClipSpace3_DH(viewPos, depthCheck);\n\n\t//prevents the ray from going behind the camera\n\tfloat rayLength = ((viewPos.z + lightDir.z * _far*sqrt(3.0)) > -_near)\n\t\t\t\t\t? (-_near -viewPos.z) / lightDir.z\n\t\t\t\t\t: _far*sqrt(3.0);\n\n\tvec3 direction = toClipSpace3_DH(viewPos + lightDir * rayLength, depthCheck) - position; //convert to clip space\n\n\tdirection.xyz = direction.xyz / max(max(abs(direction.x)/0.0005, abs(direction.y)/0.0005),400.0); //fixed step size\n\tdirection *= 6.0;\n\n\tposition.xy *= RENDER_SCALE;\n\tdirection.xy *= RENDER_SCALE;\n\t\n\tvec3 newPos = position + direction * noise;\n\t// literally shadow bias to fight shadow acne due to precision problems when comparing sampled depth and marched position\n\tnewPos += direction * 0.3;\n\n\tfloat SSSdistanceScale = 1.0 / (1.0 + swapperlinZ(position.z, _near, _far) * 32.0);\n\tfloat distanceScale2 = 1.0 + length(mat3(gbufferModelViewInverse) * viewPos) / 150.0;\n\n\tfor (int i = 0; i < int(samples); i++) {\n\t\t\n\t\tfloat sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, ivec2(newPos.xy/texelSize),0).x, hand);\n\t\t\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tif(depthCheck) sampleDepth = texelFetch2D(dhDepthTex1, ivec2(newPos.xy/texelSize),0).x;\n\t\t#endif\n\n\t\tif(sampleDepth < newPos.z){\n\t\t\tfloat linearCurrentPos = swapperlinZ(newPos.z, _near, _far);\n\t\t\tfloat linearSampledDepth = swapperlinZ(sampleDepth, _near, _far);\n\n\t\t\tfloat dist = abs(linearSampledDepth - linearCurrentPos) / linearCurrentPos;\n\t\t\t\n\t\t\t// if (dist < 0.035){\n\t\t\tif (dist < 0.035/(1.0+linearCurrentPos) && (sampleDepth < newPos.z )) shadows = 0.0;\n\n\t\t\t// if (dist < 0.3/(1.0+linearCurrentPos)) SSS += distanceScale2;\n\t\t\tif (dist < SSSdistanceScale) SSS += distanceScale2;\n\t\t}\n\t\tnewPos += direction;\n\t}\n\treturn vec2(shadows, SSS / samples);\n}\n\nfloat SSRT_FlashLight_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise){\n\n\tfloat steps = 16.0;\n\tfloat Shadow = 1.0; \n\tfloat SSS = 0.0;\n\t// isSSS = true;\n\n\tfloat _near = near; float _far = far*4.0;\n\n\tif (depthCheck) {\n\t\t_near = dhNearPlane;\n\t\t_far = dhFarPlane;\n\t}\n\n\tvec3 clipPosition = toClipSpace3_DH(viewPos, depthCheck);\n\t//prevents the ray from going behind the camera\n\tfloat rayLength = ((viewPos.z + lightDir.z * _far*sqrt(3.0)) > -_near)\n\t\t\t\t\t? (-_near -viewPos.z) / lightDir.z\n\t\t\t\t\t: _far*sqrt(3.0);\n\n\tvec3 direction = toClipSpace3_DH(viewPos + lightDir*rayLength, depthCheck) - clipPosition; //convert to clip space\n\n\tdirection.xyz = direction.xyz / max(abs(direction.x)/0.0005, abs(direction.y)/0.0005); //fixed step size\n\n\tfloat Stepmult = 6.0;\n\n\tvec3 rayDir = direction * Stepmult * vec3(RENDER_SCALE,1.0);\n\tvec3 screenPos = clipPosition * vec3(RENDER_SCALE,1.0) + rayDir*noise;\n\n\n\tfor (int i = 0; i < int(steps); i++) {\n\t\t\n\t\tfloat samplePos = texture2D(depthtex2, screenPos.xy).x;\n\t\t\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tif(depthCheck) samplePos = texture2D(dhDepthTex1, screenPos.xy).x;\n\t\t#endif\n\n\t\tif(samplePos < screenPos.z){// && (samplePos <= max(minZ,maxZ) && samplePos >= min(minZ,maxZ))\n\t\t\t// vec2 linearZ = vec2(swapperlinZ(screenPos.z, _near, _far), swapperlinZ(samplePos, _near, _far));\n\t\t\t// float calcthreshold = abs(linearZ.x - linearZ.y) / linearZ.x;\n\n\t\t\t// if (calcthreshold < 0.035) \n\t\t\tShadow = 0.0;\n\t\t} \n\t\tscreenPos += rayDir;\n\t}\n\treturn Shadow;\n}\n\nvoid Emission(\n\tinout vec3 Lighting,\n\tvec3 Albedo,\n\tfloat Emission\n){\n\tif( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve));\n}\n\n#include \"/lib/PhotonGTAO.glsl\"\n#include \"/lib/indirect_lighting_effects.glsl\"\n\nvoid doEdgeAwareBlur(\n\tsampler2D tex1, sampler2D tex2, sampler2D depth,\n\tfloat referenceDepth, bool hand,\n\tinout vec2 ambientEffects, inout vec3 filteredShadow\n){\n\tfloat threshold = clamp(referenceDepth*referenceDepth*0.5,0.0001,0.005);\n\tvec3 shadow_RESULT = vec3(0.0);\n\tvec2 ssao_RESULT = vec2(0.0);\n\tfloat edgeSum = 0.0;\n\n\tvec2 coord = gl_FragCoord.xy - 1.5;\n\tivec2 UV = ivec2(coord);\n\tivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1);\n\n\tivec2 OFFSET[4] = ivec2[](\n\t\tivec2(-1,-1),\n\t\tivec2( 1, 1),\n\t\tivec2(-1, 1),\n\t\tivec2( 1,-1)\n\t);\n\n\tfor(int i = 0; i < 4; i++) {\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tfloat offsetDepth = sqrt(texelFetch2D(depth, UV + OFFSET[i] + UV_NOISE,0).a/65000.0);\n\t\t#else\n\t\t\tfloat offsetDepth = ld(convertHandDepth_2(texelFetch2D(depth, UV + OFFSET[i] + UV_NOISE, 0).r,hand));\n\t\t#endif\n\n\t\tfloat edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7;\n\n\t\t#ifdef Variable_Penumbra_Shadows\n\t\t\tshadow_RESULT += texelFetch2D(tex1, UV + OFFSET[i] + UV_NOISE, 0).rgb*edgeDiff;\n\t\t#endif\n\n\t\tssao_RESULT += texelFetch2D(tex2, UV + OFFSET[i] + UV_NOISE, 0).rg*edgeDiff;\n\t\tedgeSum += edgeDiff;\n\t}\n\t// sample without an offset with texture filtering to get a slightly blurred sample. make sure to average without skewing the rest of the average.\n\tfilteredShadow = shadow_RESULT/edgeSum * 0.8 + 0.2 * texture2D(tex1, texelSize*gl_FragCoord.xy).rgb;\n\tambientEffects = ssao_RESULT/edgeSum * 0.8 + 0.2 * texture2D(tex2, texelSize*gl_FragCoord.xy).rg;\n}\n\nvec4 BilateralUpscale_VLFOG(sampler2D tex, sampler2D depth, float referenceDepth){\n\tvec4 colorSum = vec4(0.0);\n\tfloat edgeSum = 0.0;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat threshold = referenceDepth * mix(0.5,  0.05, min(max(0.1 - referenceDepth,0)/0.1,1));\n\t#else\n\t\tfloat threshold = referenceDepth * 0.05;\n\t#endif\n\n\tvec2 coord = gl_FragCoord.xy - 1.5;\n\tvec2 UV = coord;\n\tconst ivec2 SCALE = ivec2(1.0/VL_RENDER_RESOLUTION);\n\tivec2 UV_DEPTH = ivec2(UV*VL_RENDER_RESOLUTION)*SCALE;\n\tivec2 UV_COLOR = ivec2(UV*VL_RENDER_RESOLUTION);\n\tivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1);\n\n\tivec2 OFFSET[5] = ivec2[](\n\t\tivec2(-1,-1),\n\t\tivec2( 1, 1),\n\t\tivec2(-1, 1),\n\t\tivec2( 1,-1),\n\t\tivec2( 0, 0)\n\t);\n\n\tfor(int i = 0; i < 4; i++) {\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tfloat offsetDepth = sqrt(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE,0).a/65000.0);\n\t\t#else\n\t\t\tfloat offsetDepth = ld(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE, 0).r);\n\t\t#endif\n\n\t\tfloat edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7;\n\t\tvec4 offsetColor = texelFetch2D(tex, UV_COLOR + OFFSET[i] + UV_NOISE, 0).rgba;\n\t\tcolorSum += offsetColor*edgeDiff;\n\t\tedgeSum += edgeDiff;\n\t}\n\treturn colorSum/edgeSum;\n}\n\n#ifdef OVERWORLD_SHADER\n\tvec3 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) {\n\t\tfloat backface = NdotL <= 0.0 ? 1.0 : 0.0;\n\t\tvec3 shadowColor = vec3(0.0);\n\t\tvec3 translucentTint = vec3(0.0);\n\n\t\tint samples = 1;\n\t\t#ifdef BASIC_SHADOW_FILTER\n\t\t\tsamples = SHADOW_FILTER_SAMPLE_COUNT;\n\t\t\tfloat rdMul = (shadowBlockerDepth * distortFactor * d0 * k / shadowMapResolution) * 0.3;\n\n\t\t\tfor(int i = 0; i < samples; i++){\n\t\t\t\tvec2 offsetS = CleanSample(i, samples - 1, noise) * rdMul;\n\t\t\t\tprojectedShadowPosition.xy += offsetS;\n\t\t#endif\n\n\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\t\tfloat opaqueShadow = shadow2D(shadowtex0, projectedShadowPosition).x;\n\t\t\tfloat opaqueShadowT = shadow2D(shadowtex1, projectedShadowPosition).x;\n\t\t\tvec4 translucentShadow = texture2D(shadowcolor0, projectedShadowPosition.xy);\n\n\t\t\tfloat shadowAlpha = pow(translucentShadow.a * (2.0 - translucentShadow.a), 5.0);\n\t\t\ttranslucentShadow.rgb = normalize(translucentShadow.rgb * translucentShadow.rgb + 0.0001) * (1.0 - shadowAlpha);\n\n\t\t\tshadowColor += directLightColor * mix(translucentShadow.rgb * opaqueShadowT, vec3(1.0), opaqueShadow);\n\n\t\t\ttranslucentTint += mix(translucentShadow.rgb, vec3(1.0), max(opaqueShadow, backface * (shadowAlpha < 1.0 ? 0.0 : 1.0)));\n\t\t\ttShadow += ((1.0 - shadowAlpha) * opaqueShadowT) / samples;\n\t\t#else\n\t\t\tshadowColor += vec3(1.0) * shadow2D(shadow, projectedShadowPosition).x;\n\t\t#endif\n\n\t\t#ifdef BASIC_SHADOW_FILTER\n\t\t\t}\n\t\t#endif\n\n\t\t#ifdef debug_SHADOWMAP\n\t\t\tshadowDebug = shadow2D(shadow, projectedShadowPosition).x;\n\t\t#endif\n\n\t\treturn shadowColor.rgb / samples;\n\t}\n#endif\n\nfloat CustomPhase(float LightPos){\n\n\tfloat PhaseCurve = 1.0 - LightPos;\n\tfloat Final = exp2(sqrt(PhaseCurve) * -25.0);\n\tFinal += exp(PhaseCurve * -10.0)*0.5;\n\n\treturn Final;\n}\n\nvec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, float lightPos, float SS_shadows, float distantSSS, bool hand){\n\tScattering *= sss_density_multiplier;\n\n\tfloat density = 1e-6 + Density * 2.0;\n\tfloat scatterDepth = max(1.0 - Scattering/density, 0.0);\n\tscatterDepth *= exp(-7.0 * (1.0-scatterDepth));\n\n\tscatterDepth = scatterDepth * mix(exp(-4.0 * SS_shadows), 1.0, (1.0-SCREENSPACE_DIRECT_SSS_BLENDING) * scatterDepth * distantSSS);\n\n\tif(hand) scatterDepth = max(1.0 - Scattering * 10.0, 0.0) * exp(-4.0 * SS_shadows);\n\n\tvec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -20.0 * sss_absorbance_multiplier);\n\tvec3 scatter = scatterDepth * mix(absorbColor, vec3(1.0), scatterDepth);\n\n\t#if SSS_TYPE == 3\n\t\tscatter *= pow(Density, LabSSS_Curve);\n\t#else\n\t\tif(Density < 0.01) scatter = vec3(0.0);\n\t#endif\n\n\tscatter *= 1.0 + CustomPhase(lightPos) * 6.0; // ~10x brighter at the peak\n\n\treturn scatter;\t\n}\n\nvec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){\n\n\t#ifdef OLD_INDIRECT_SSS\n\t\tfloat scatterDepth = 1.0 - pow(1.0-Scattering, 0.5 + Density * 2.5);\n\t\tvec3 absorbColor = vec3(1.0) * exp(-(15.0 - 10.0 * scatterDepth)  * sss_absorbance_multiplier * 0.01);\n\t\tvec3 scatter =  scatterDepth * absorbColor * pow(Density, LabSSS_Curve);\n\t#else\n\t\tfloat scatterDepth = pow(Scattering, 3.5);\n\t\tscatterDepth = 1.0 - pow(1 - scatterDepth, 5.0);\n\n\t\tvec3 absorbColor = exp(max(luma(albedo) - albedo*vec3(1.0,1.1,1.2), 0.0) * -20.0 * sss_absorbance_multiplier);\n\t\tvec3 scatter = scatterDepth * mix(absorbColor, vec3(1.0), scatterDepth) * pow(Density, LabSSS_Curve);\n\t#endif\n\n\t// scatter *= 1.0 + exp(-7.0*(-playerPosNormalized.y*0.5+0.5));\n\n\treturn scatter;\n}\n\nvoid applyPuddles(\n\tin vec3 worldPos, in vec3 flatNormals, in float lightmap, in bool isWater, inout vec3 albedo, inout vec3 normals, inout float roughness, inout float f0\n){\n\tfloat halfWet = min(wetnessAmount,1.0);\n\tfloat fullWet = clamp(wetnessAmount - 2.0,0.0,1.0);\n\n\tvec2 driprate = vec2(0.0,frameTimeCounter)*0.05;\n\n\tvec2 UV = mix(worldPos.xz, worldPos.xy*vec2(2.0, 0.5)+driprate, abs(flatNormals.z));\n\tUV = mix(UV, worldPos.zy*vec2(2.0, 0.5)+driprate, abs(flatNormals.x));\n\n\tfloat noise = texture2D(noisetex, UV * 0.02).b;\n\n\tfloat lightmapMax = min(max(lightmap - 0.9,0.0) * 10.0,1.0) ;\n\tfloat lightmapMin = min(max(lightmap - 0.8,0.0) * 5.0,1.0) ;\n\tlightmap = clamp(lightmapMax + noise*lightmapMin*2.0,0.0,1.0);\n\tlightmap = pow(1.0-pow(1.0-lightmap,3.0),2.0);\n\t\n\tfloat puddles = max(halfWet - noise,0.0);\n\tpuddles = clamp(halfWet - exp(-25.0 * puddles * puddles * puddles * puddles * puddles),0.0,1.0);\n\t\n\tfloat wetnessStages = mix(puddles, 1.0, fullWet) * lightmap;\n\tif(isWater) wetnessStages = 0.0;\n\n\t#ifdef GROUND_RIPPLES\n\t\tvec3 rippleNormal = vec3(0.0);\n\t\tif (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;\n\t\tflatNormals = normalize(flatNormals + rippleNormal);\n\t#endif\n\n\tnormals = mix(normals, flatNormals, puddles * lightmap * clamp(flatNormals.y,0.0,1.0));\n\t#if MATERIAL_WETNESS_TYPE == 0\n\t\troughness = mix(roughness, 1.0, wetnessStages * (roughness * 0.5 + 0.5));\n\t#elif MATERIAL_WETNESS_TYPE == 1\n\t\troughness = mix(roughness, 1.0, wetnessStages);\n\t#endif\n\tif(f0 < 229.5/255.0) albedo = pow(albedo * (1.0 - 0.08*wetnessStages), vec3(1.0 + 0.7*wetnessStages));\n\n\t//////////////// snow\n\t// vec3 unchangedNormals = normals;\n\n\t// float upnormal = clamp(-(normals / dot(abs(normals),vec3(1.0))).y+clamp(flatNormals.y,0.5,1.0),0,1);\n\t// halfWet = clamp(halfWet - upnormal - (1.0-lightmap),0.0,1.0);\n\t// float snow = max(halfWet - noise,0.0);\n\t// snow = clamp(halfWet - exp(-20.0 * snow*snow*snow*snow*snow),0.0,1.0);\n\t\n\t// if(isWater || f0 > 229.5/255.0) snow = 0.0;\n\n\t// normals = mix(normals, unchangedNormals, snow);\n\t// roughness = mix(roughness, 0.5, snow);\n\t// albedo = mix(albedo, vec3(1.0), snow);\n}\n\nvoid main() {\n\tvec3 DEBUG = vec3(1.0);\n\n\t////// --------------- SETUP STUFF --------------- //////\n\tvec2 texcoord = gl_FragCoord.xy * texelSize;\n\t\n\tfloat noise_2 = R2_dither();\n\tvec2 bnoise = blueNoise(gl_FragCoord.xy).rg;\n\n\tint seed = 600;\n\t#ifdef TAA\n\t\tseed = (frameCounter*5)%40000;\n\t#endif\n\n\tvec2 r2_sequence = R2_samples(seed).xy;\n\tvec2 BN = fract(r2_sequence + bnoise);\n\tfloat noise = BN.y;\n\t\t\n\tfloat z0 = texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy), 0).x;\n\tfloat z =  texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x;\n\tfloat swappedDepth = z;\n\n\tbool isDHrange = z >= 1.0;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat DH_mixedLinearZ = sqrt(texture2D(colortex12,texcoord).a/65000.0);\n\t\tfloat DH_depth0 = texture2D(dhDepthTex,texcoord).x;\n\t\tfloat DH_depth1 = texture2D(dhDepthTex1,texcoord).x;\n\n\t\tfloat depthOpaque = z;\n\t\tfloat depthOpaqueL = linearizeDepthFast(depthOpaque, near, farPlane);\n\t\t\t\n\t\tfloat dhDepthOpaque = DH_depth1;\n\t\tfloat dhDepthOpaqueL = linearizeDepthFast(dhDepthOpaque, dhNearPlane, dhFarPlane);\n\n\t\tif (depthOpaque >= 1.0 || (dhDepthOpaqueL < depthOpaqueL && dhDepthOpaque > 0.0)){\n\t\t\tdepthOpaque = dhDepthOpaque;\n\t\t\tdepthOpaqueL = dhDepthOpaqueL;\n\t\t}\n\n\t\tswappedDepth = depthOpaque;\n\t#else\n\t\tfloat DH_depth0 = 0.0;\n\t\tfloat DH_depth1 = 0.0;\n\t#endif\n\n\t////// --------------- UNPACK OPAQUE GBUFFERS --------------- //////\n\t\n\tvec4 data = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy), 0);\n\n\tvec3 skyboxCol = data.rgb;\n\n\tvec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); // albedo, masks\n\tvec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); // normals, lightmaps\n\n\tvec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x));\n\tvec3 normal = decode(dataUnpacked0.yw);\n\tvec2 lightmap = dataUnpacked1.yz;\n\n\tlightmap.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\n\t\t\n\t#ifndef OVERWORLD_SHADER\n\t\tlightmap.y = 1.0;\n\t#endif\n\n\t////// --------------- UNPACK MISC --------------- //////\n\t\n\tvec4 SpecularTex = texelFetch2D(colortex8, ivec2(gl_FragCoord.xy), 0);\n\tfloat LabSSS = clamp((-65.0 + SpecularTex.z * 255.0) / 190.0 ,0.0,1.0);\t\n\t// LabSSS = 1;\n\n\tvec4 normalAndAO = texture2D(colortex15,texcoord);\n\tvec3 FlatNormals = normalize(normalAndAO.rgb * 2.0 - 1.0);\n\tvec3 slopednormal = normal;\n\n\tfloat vanilla_AO = z < 1.0 ? clamp(normalAndAO.a,0,1) : 0.0;\n\tnormalAndAO.a = clamp(pow(normalAndAO.a*5,4),0,1);\n\n\tif(isDHrange){\n\t\tFlatNormals = normal;\n\t\tslopednormal = normal;\n\t}\n\n\t////// --------------- MASKS/BOOLEANS --------------- //////\n\n\t// 1.0-0.8 ???\n\t// 0.75 = hand mask\n\t// 0.60 = grass mask\n\t// 0.55 = leaf mask (for ssao-sss)\n\t// 0.50 = lightning bolt mask\n\t// 0.45 = entity mask\n\tfloat opaqueMasks = dataUnpacked1.w;\n\t// 1.0 = water mask\n\t// 0.9 = entity mask\n\t// 0.8 = reflective entities\n\t// 0.7 = reflective blocks\n  \tfloat translucentMasks = texture2D(colortex7, texcoord).a;\n\n\tbool isWater = translucentMasks > 0.99;\n\t// bool isReflectiveEntity = abs(translucentMasks - 0.8) < 0.01;\n\t// bool isReflective = abs(translucentMasks - 0.7) < 0.01 || isWater || isReflectiveEntity;\n\t// bool isEntity = abs(translucentMasks - 0.9) < 0.01 || isReflectiveEntity;\n\n\tbool lightningBolt = abs(opaqueMasks-0.5) <0.01;\n\tbool isLeaf = abs(opaqueMasks-0.55) <0.01;\n\tbool entities = abs(opaqueMasks-0.45) < 0.01;\t\n\tbool isGrass = abs(opaqueMasks-0.60) < 0.01;\n\tbool hand = abs(opaqueMasks-0.75) < 0.01 && z < 1.0;\n\t// bool handwater = abs(translucentMasks-0.3) < 0.01 ;\n\t// bool blocklights = abs(opaqueMasks-0.8) <0.01;\n\n\tif(hand){\n\t\tconvertHandDepth(z);\n\t\tconvertHandDepth(z0);\n\t}\n\n\t#ifdef DISTANT_HORIZONS\n\t\tvec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z, DH_depth1);\n\t#else\n\t\tvec3 viewPos = toScreenSpace(vec3(texcoord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z));\n\t#endif\n\t\t\n\tvec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos;\n\tvec3 feetPlayerPos_normalized = normalize(feetPlayerPos);\n\n\t////// --------------- COLORS --------------- //////\n\n\tvec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);\n\tvec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B);\n\tvec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);\n\tvec3 scatterCoef = Dirt_Amount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14;\n\n\tvec3 Absorbtion = vec3(1.0);\n\tvec3 AmbientLightColor = vec3(0.0);\n\tvec3 MinimumLightColor = vec3(1.0);\n\tvec3 Indirect_lighting = vec3(0.0);\n\tvec3 Indirect_SSS = vec3(0.0);\n\tvec2 SSAO_SSS = vec2(1.0);\n\n\tvec3 DirectLightColor = vec3(0.0);\n\tvec3 Direct_lighting = vec3(0.0);\n\tvec3 Direct_SSS = vec3(0.0);\n\tfloat cloudShadow = 1.0;\n\tfloat Shadows = 1.0;\n\n\tvec3 shadowColor = vec3(1.0);\n\tvec3 SSSColor = vec3(1.0);\n\tvec3 filteredShadow = vec3(Min_Shadow_Filter_Radius,1.0,0.0);\n\n\tfloat NdotL = 1.0;\n\tfloat lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0);\n\n\t#ifdef OVERWORLD_SHADER\n\t\tDirectLightColor = lightCol.rgb / 2400.0;\n\t\tAmbientLightColor = averageSkyCol_Clouds / 900.0;\n\n\t\t#ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS\n\t\t\tDirectLightColor.rgb = luma(DirectLightColor.rgb) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B);\n\t\t\tAmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B);\n\t\t#endif\n\n\t\tshadowColor = DirectLightColor;\n\n\t\tbool inShadowmapBounds = false;\n\t#endif\n\n\tMinimumLightColor = MinimumLightColor + 0.7 * MinimumLightColor * dot(slopednormal, feetPlayerPos_normalized);\n\n\t////////////////////////////////////////////////////////////////////////////////////////////\n\t////////////////////////////////\tUNDER WATER SHADING\t\t////////////////////////////////\n\t////////////////////////////////////////////////////////////////////////////////////////////\n\n \tif ((isEyeInWater == 0 && isWater) || (isEyeInWater == 1 && !isWater)){\n\n\t\tfeetPlayerPos += gbufferModelViewInverse[3].xyz;\n\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tvec3 playerPos0 = toWorldSpace(toScreenSpace_DH(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z0, DH_depth0));\n\t\t#else\n\t\t\tvec3 playerPos0 = toWorldSpace(toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0)));\n\t\t#endif\n\n\t\tfloat Vdiff = distance(feetPlayerPos, playerPos0);\n\t\tfloat estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y);// assuming water plane\n\n\t\t// force the absorbance to start way closer to the water surface in low light areas, so the water is visible in caves and such.\n\t\t#if MINIMUM_WATER_ABSORBANCE > -1\n\t\t\tfloat minimumAbsorbance = MINIMUM_WATER_ABSORBANCE*0.1;\n\t\t#else\n\t\t\tfloat minimumAbsorbance\t= (1.0 - lightLeakFix);\n\t\t#endif\n\t\tAbsorbtion = exp(-totEpsilon * max(Vdiff, minimumAbsorbance));\n\n\t\t// things to note about sunlight in water\n\t\t// 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\n\t\t// based on the angle of the sun, sunlight will travel through more/less water to reach the same spot. scale absorbtion depth accordingly\n\t\tvec3 sunlightAbsorbtion = exp(-totEpsilon * (estimatedDepth/abs(WsunVec.y)));\n\n\t\tif (isEyeInWater == 1){\n\t\t\testimatedDepth = 1.0;\n\n\t\t\t// viewerWaterDepth = max(0.9-lightmap.y,0.0)*3.0;\n\t  \t\tfloat distanceFromWaterSurface = max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ;\n\n\t\t\tAbsorbtion = exp(-totEpsilon * distanceFromWaterSurface);\n\t\t\t\n\t\t\tsunlightAbsorbtion = exp(-totEpsilon * (distanceFromWaterSurface/abs(WsunVec.y)));\n\t\t}\n\n\t\tDirectLightColor *= sunlightAbsorbtion;\n\n\t\t// brighten up the fully absorbed parts of water when night vision activates.\n\t\tif(nightVision > 0.0) Absorbtion += exp(-totEpsilon * 25.0) * nightVision;\n\n\t\t// apply caustics to the lighting, and make sure they dont look weird\n\t\tDirectLightColor *= pow(mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec) * WATER_CAUSTICS_BRIGHTNESS, clamp(estimatedDepth,0,1)), WATER_CAUSTICS_STRENGTH);\n\t}\n\n\tif (swappedDepth < 1.0) {\n\n\t\t// idk why this do\n\t\tfeetPlayerPos += gbufferModelViewInverse[3].xyz;\n\n\t////////////////////////////////////////////////////////////////////////////////////////////\n\t///////////////////////////////////\t    FILTER STUFF      //////////////////////////////////\n\t////////////////////////////////////////////////////////////////////////////////////////////\n\n\t\t#if defined DISTANT_HORIZONS && defined DH_AMBIENT_OCCLUSION\n\t\t\tdoEdgeAwareBlur(colortex3, colortex14, colortex12, DH_mixedLinearZ, hand, SSAO_SSS, filteredShadow);\n\t\t#else\n\t\t\tdoEdgeAwareBlur(colortex3, colortex14, depthtex0, ld(z0), \thand, SSAO_SSS, filteredShadow);\n\t\t#endif\n\n\t\tfloat ShadowBlockerDepth = filteredShadow.y;\n\n\t////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////\tMAJOR LIGHTSOURCE STUFF \t////////////////////////\n\t////////////////////////////////////////////////////////////////////////////////////\n\n\t\t#ifdef OVERWORLD_SHADER\n\n\t\t\tfloat LM_shadowMapFallback =  clamp(lightmap.y, 0.0,1.0);\n\n\t\t\tfloat LightningPhase = 0.0;\n\t\t\tvec3 LightningFlashLighting = Iris_Lightningflash(feetPlayerPos, lightningBoltPosition.xyz, slopednormal, LightningPhase) * pow(lightmap.y,10);\n\n\t\t\tNdotL = clamp((-15 + dot(slopednormal, WsunVec)*255.0) / 240.0  ,0.0,1.0);\n\n\t\t\t// NdotL = 1;\n\t\t\tfloat flatNormNdotL = clamp((-15 + dot((FlatNormals), WsunVec)*255.0) / 240.0  ,0.0,1.0);\n\n\t////////////////////////////////\tSHADOWMAP\t\t////////////////////////////////\n\n\t\t\t// setup shadow projection\n\t\t\tfloat shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / (shadowDistance+32.0),0.0)*5.0,1.0));\n\t\t\tfloat shadowMapFalloff2 = smoothstep(0.0, 1.0, min(max(1.0 - length(feetPlayerPos) / shadowDistance,0.0)*5.0,1.0));\n\n\t\t\tif(isEyeInWater == 1){\n\t\t\t\tshadowMapFalloff = 1.0;\n\t\t\t\tshadowMapFalloff2 = 1.0;\n\t\t\t}\n\n\t\t\tvec3 shadowPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz;\n\t\t\n\t\t\t#if LIGHTLEAKFIX_MODE == 1\n\t\t\t\tif(!hand) GriAndEminShadowFix(shadowPlayerPos, FlatNormals, lightLeakFix);\n\t\t\t#endif\n\n\t\t\tvec3 projectedShadowPosition = mat3(shadowModelView) * shadowPlayerPos + shadowModelView[3].xyz;\n\n\t\t\tapplyShadowBias(projectedShadowPosition, shadowPlayerPos, FlatNormals);\n\n\t\t\tprojectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz;\n\n\t\t\t// Calclulate distortion factor before bias application\n\t\t\tfloat distortFactor = 1.0;\n\t\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\t\tdistortFactor = calcDistort(projectedShadowPosition.xy);\n\t\t\t\tprojectedShadowPosition.xy *= distortFactor;\n\t\t\t#endif\n\n\t\t\tprojectedShadowPosition.z += shadowProjection[3].z * 0.0012;\n\t\t\tprojectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5) ;\n\n\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\tprojectedShadowPosition.xy *= 0.8;\n\t\t\t#endif\n\n\t\t\tfloat ShadowAlpha = 0.0; // this is for subsurface scattering later.\n\t\t\tvec3 tintedSunlight = DirectLightColor; // this is for subsurface scattering later.\n\t\t\n\t\t\tshadowColor = ComputeShadowMap_COLOR(projectedShadowPosition, distortFactor, noise_2, filteredShadow.x, flatNormNdotL, shadowMapFalloff, DirectLightColor, ShadowAlpha, tintedSunlight, LabSSS > 0.0,Shadows);\n\t\t\n\t\t\t// transition to fallback lightmap shadow mask.\n\t\t\t// shadowColor *= mix(isWater ? lightLeakFix : LM_shadowMapFallback, 1.0, shadowMapFalloff2);\n\n\t\t\t#if LIGHTLEAKFIX_MODE == 2\n\t\t\t\tif(isEyeInWater != 1) shadowColor *= lightLeakFix; // light leak fix\n\t\t\t#endif\n\t\t\n\t////////////////////////////////\tSUN SSS\t\t////////////////////////////////\n\t\n\t\t\t#if SSS_TYPE != 0\n\t\t\t\tfloat sunSSS_density = LabSSS;\n\t\t\t\tfloat SSS_shadow = ShadowAlpha;\n\n\t\t\t\t#ifdef DISTANT_HORIZONS\n\t\t\t\t\tshadowMapFalloff2 = 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));\n\t\t\t\t#endif\n\n\t\t\t\t#ifndef RENDER_ENTITY_SHADOWS\n\t\t\t\t\tif(entities) sunSSS_density = 0.0;\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef SCREENSPACE_CONTACT_SHADOWS\n\t\t\t\t\tvec2 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);\n\n\t\t\t\t\t// combine shadowmap with a minumum shadow determined by the screenspace shadows.\n\t\t\t\t\tshadowColor *= SS_directLight.r;\n\t\t\t\t#else\n\t\t\t\t\tvec2 SS_directLight = vec2(1,0);\n\t\t\t\t\tShadowBlockerDepth = max(ShadowBlockerDepth, (1.0-shadowMapFalloff2) * 10.0);\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\t\t\t\tSSSColor = tintedSunlight;\n\t\t\t\t#else\n\t\t\t\t\tSSSColor = DirectLightColor;\n\t\t\t\t#endif\n\n\t\t\t\tSSSColor = SubsurfaceScattering_sun(albedo, ShadowBlockerDepth, sunSSS_density, clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), SS_directLight.g, shadowMapFalloff2, hand);\n\n\t\t\t\tif(isEyeInWater != 1) SSSColor *= lightLeakFix;\n\n\t\t\t\tfloat cloudShadows = getCloudShadow(feetPlayerPos.xyz + cameraPosition, WsunVec);\n\t\t\t\tshadowColor *= cloudShadows;\n\t\t\t\tSSSColor *= cloudShadow*cloudShadows;\n\t\t\t#endif\n\t\t#endif\n\n\t\t#ifdef END_SHADER\n\t\t\tfloat vortexBounds = clamp(vortexBoundRange - length(feetPlayerPos+cameraPosition), 0.0,1.0);\n\t\t\tvec3 lightPos = LightSourcePosition(feetPlayerPos+cameraPosition, cameraPosition,vortexBounds);\n\n\t\t\tfloat lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0;\n\t\t\tvec3 lightColors = LightSourceColors(vortexBounds, lightningflash);\n\n\t\t\tfloat end_NdotL = clamp(dot(slopednormal, normalize(-lightPos))*0.5+0.5,0.0,1.0);\n\t\t\tend_NdotL *= end_NdotL;\n\n\t\t\tfloat fogShadow = GetEndFogShadow(feetPlayerPos+cameraPosition, lightPos);\n\t\t\tfloat endPhase = endFogPhase(lightPos);\n\n\t\t\tDirect_lighting += lightColors * endPhase * end_NdotL * fogShadow;\n\t\t#endif\n\n\t/////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////\tINDIRECT LIGHTING \t/////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tfloat skylight = 1.0;\n\t\t\n\t\t\t#if indirect_effect == 0 || indirect_effect == 1 || indirect_effect == 2\n\n\t\t\t\tvec3 indirectNormal = slopednormal / dot(abs(slopednormal),vec3(1.0));\n\n\t\t\t\tfloat SkylightDir = indirectNormal.y;\n\t\t\t\tif(isGrass) SkylightDir = 1.0;\n\t\t\t\t\n\t\t\t\tSkylightDir = clamp(SkylightDir*0.7+0.3, 0.0, pow(1-pow(1-SSAO_SSS.x, 0.5),4.0) * 0.7 + 0.3);\n\n\t\t\t\tskylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir)/2.5;\n\n\t\t\t#elif indirect_effect == 3\n\t\t\t\tskylight = 1.0;\n\t\t\t#endif\n\t\t\t\n\t\t\tIndirect_lighting += doIndirectLighting(AmbientLightColor * skylight, MinimumLightColor, lightmap.y);\n\t\t#endif\n\n\t\t#ifdef NETHER_SHADER\n\t\t\tIndirect_lighting = volumetricsFromTex(normalize(normal), colortex4, 6).rgb / 1200.0;\n\t\t\tvec3 up = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb / 1200.0;\n\t\t\t\n\t\t\t#if indirect_effect == 1\n\t\t\t\tIndirect_lighting = mix(up, Indirect_lighting,  clamp(pow(1.0-pow(1.0-SSAO_SSS.x, 0.5),2.0),0.0,1.0));\n\t\t\t#endif\n\t\t\t\n\t\t\tAmbientLightColor = Indirect_lighting;\n\t\t#endif\n\t\t\n\t\t#ifdef END_SHADER\n\t\t\tIndirect_lighting = vec3(END_FOG_R, END_FOG_G, END_FOG_B);\n\t\t\tIndirect_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));\n\t\t\tIndirect_lighting *= 0.2;\n\n\t\t\tIndirect_lighting += lightColors * (endPhase*endPhase) * (1.0-exp(vec3(0.6,2.0,2.0) * -(endPhase*0.01))) /1000.0;\n\t\t#endif\n\t\t\n\t\t#ifdef IS_LPV_ENABLED\n\t\t\tvec3 normalOffset = vec3(0.0);\n\n\t\t\tif (any(greaterThan(abs(FlatNormals), vec3(1.0e-6))))\n\t\t\t\tnormalOffset = 0.5*(FlatNormals);\n\n\t\t\t#if LPV_NORMAL_STRENGTH > 0\n\t\t\t\tvec3 texNormalOffset = -normalOffset + slopednormal;\n\t\t\t\tnormalOffset = mix(normalOffset, texNormalOffset, (LPV_NORMAL_STRENGTH*0.01));\n\t\t\t#endif\n\n\t\t\tvec3 lpvPos = GetLpvPosition(feetPlayerPos) + normalOffset;\n\t\t#else\n\t\t\tconst vec3 lpvPos = vec3(0.0);\n\t\t#endif\n\n\t\tvec3 blockLightColor = doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos, FlatNormals);\n\t\tIndirect_lighting += blockLightColor;\n\n\t/////////////////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////\tEFFECTS FOR INDIRECT\t/////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////////////////\n\n\t\tfloat SkySSS = 1.0;\n\t\tSkySSS = SSAO_SSS.y;\n\n\t\tvec3 AO = vec3(1.0);\n\n\t\t#if indirect_effect == 0\n\t\t\tAO = vec3(pow(1.0 - vanilla_AO*vanilla_AO,5.0));\n\t\t\tIndirect_lighting *= AO;\n\n\t\t#elif indirect_effect == 1\n\t\t\tfloat SSAO_curve = pow(SSAO_SSS.x,4.0);\n\n\t\t\tAO = vec3(SSAO_curve);\n\t\t\tIndirect_lighting *= AO;\n\n\t\t// GTAO... this is so dumb but whatevverrr\n\t\t#elif indirect_effect == 2\n\t\t\tfloat vanillaAO_curve = pow(1.0 - vanilla_AO*vanilla_AO,5.0);\n\n\t\t\tvec2 r2 = fract(R2_samples((frameCounter%40000) + frameCounter*2) + bnoise);\n\t\t\tfloat GTAO =  !hand ? ambient_occlusion(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5, z), viewPos, worldToView(slopednormal), r2) : 1.0;\n\n\t\t\tAO = vec3(min(vanillaAO_curve,GTAO));\n\t\t\tIndirect_lighting *= AO;\n\n\t\t// SSGI\n\t\t#elif indirect_effect == 3\n\t\t\tif(!hand) Indirect_lighting = ApplySSRT(Indirect_lighting, blockLightColor, MinimumLightColor, viewPos, normal, vec3(bnoise, noise_2), lightmap.y, isGrass, isDHrange);\n\t\t#endif\n\n\t\tvec4 flashLightSpecularData = vec4(0.0);\n\t\t#ifdef FLASHLIGHT\n\t\t\tvec3 newViewPos = viewPos;\n\n\t\t\tfloat flashlightshadows = SSRT_FlashLight_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, newViewPos, interleaved_gradientNoise_temporal());\n\n\t\t\tvec3 ssrtFLASHLIGHT = calculateFlashlight(texcoord, viewPos, albedoSmooth, slopednormal, flashLightSpecularData, hand);\n\t\t\tIndirect_lighting += ssrtFLASHLIGHT;\n\t\t#endif\n\n\t////////////////////////////////////////////////////////////////////////////////\n\t///////////////////////// SUB SURFACE SCATTERING\t/////////////////////////\n\t////////////////////////////////////////////////////////////////////////////////\n\t\n\t/////////////////////////////\tSKY SSS /////////////////////////////\n\n\t\t#if defined Ambient_SSS && defined OVERWORLD_SHADER\n\t\t\tvec3 ambientColor = AmbientLightColor * ambientsss_brightness * ambient_brightness * 2.0;\n\n\t\t\tIndirect_SSS = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS);\n\t\t\tIndirect_SSS *= lightmap.y;\n\n\t\t\tfloat thingy = SkySSS;\n\t\t\tthingy = pow(thingy, 3.5);\n\t\t\tthingy = 1.0 - pow(1 - thingy, 5.0);\n\n\t\t\tIndirect_lighting = Indirect_lighting + Indirect_SSS * ambientColor;\n\t\t#endif\n\t\n\t/////////////////////////////////////////////////////////////////////////\n\t/////////////////////////////\tFINALIZE\t/////////////////////////////\n\t/////////////////////////////////////////////////////////////////////////\n\n\t\t#ifdef SSS_view\n\t\t\talbedo = vec3(1);\n\t\t\tNdotL = 0;\n\t\t#endif\n\n\t\t#ifdef END_SHADER\n\t\t\tDirect_lighting *= AO;\n\t\t#endif\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\t#ifdef AO_in_sunlight\n\t\t\t\tDirect_lighting = DirectLightColor * mix(SSSColor, vec3(1.0), NdotL*shadowColor * (AO*0.7+0.3));\n\t\t\t#else\n\t\t\t\tDirect_lighting = DirectLightColor * mix(SSSColor, vec3(1.0), NdotL*shadowColor);\n\t\t\t#endif\n\n\t\t\t#ifdef DEFERRED_SPECULAR\n\t\t\t\tif(!hand && !entities) applyPuddles(feetPlayerPos + cameraPosition, FlatNormals, lightmap.y, isWater, albedo, normal, SpecularTex.r, SpecularTex.g);\n\t\t\t#endif\n\t\t#endif\n\n\t\tvec3 FINAL_COLOR = (Indirect_lighting + Direct_lighting) * albedo;\n\t\tEmission(FINAL_COLOR, albedo, SpecularTex.a);\n\n\t\tif(lightningBolt) FINAL_COLOR = vec3(77.0, 153.0, 255.0);\n\n\t\t#ifdef DEFERRED_SPECULAR\t\n\t\t\tvec3 specularNoises = vec3(BN.xy, blueNoise());\n\t\t\tvec3 specularNormal = normal;\n\t\t\tif (dot(normal, (feetPlayerPos_normalized)) > 0.0) specularNormal = FlatNormals;\n\t\t\t\n\t\t\tFINAL_COLOR = specularReflections(viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, specularNormal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, DirectLightColor*shadowColor, lightmap.y, hand, flashLightSpecularData);\n\t\t#endif\n\n\t\tgl_FragData[0].rgb = FINAL_COLOR;\n\t}else{\n\t\tvec3 Background = vec3(0.0);\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tfloat 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.\n\n\t\t\t#if RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 3\n\t\t\t\tvec3 orbitstar = normalize(mat3(gbufferModelViewInverse) * toScreenSpace(vec3(texcoord/RENDER_SCALE,1.0)));\n\t\t\t\tfloat radiance = 2.39996 - worldTime/24000.0 * STAR_MOVEMENT_MULT;\n\t\t\t\tmat2 rotationMatrix  = mat2(vec2(cos(radiance), -sin(radiance)), vec2(sin(radiance), cos(radiance)));\n\t\t\t\torbitstar.xy *= rotationMatrix;\n\n \t\t\t\t#ifdef TWILIGHT_FOREST_FLAG\n \t\t\t\t\tBackground += drawStars(orbitstar) * 100.0;\n   \t\t\t\t#else\n \t\t\t\t\tBackground += drawStars(orbitstar) * 10.0 * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0);\n \t\t\t\t#endif\n\n\t\t\t\t#ifdef SHOOTING_STARS\n \t\t\t\t\tBackground += drawShootingStars(feetPlayerPos_normalized) * clamp(-unsigned_WsunVec.y*2.0,0.0,1.0);\n \t\t\t\t#endif\n\n\t\t\t\t#if !defined ambientLight_only && (RESOURCEPACK_SKY == 0 || RESOURCEPACK_SKY == 1)\n\t\t\t\t\tBackground += drawSun(dot(unsigned_WsunVec, feetPlayerPos_normalized), 0, DirectLightColor,vec3(0.0));\n\n\t\t\t\t\tvec3 moonLightCol = moonCol / 2400.0;\n\n\t\t\t\t\tBackground += drawMoon(feetPlayerPos_normalized, WmoonVec, moonLightCol, Background); \n\t\t\t\t#endif\n\n\t\t\t\tBackground *= atmosphereGround;\n\t\t\t#endif\n\n\t\t\t// Render aurora\n\t\t\tif (unsigned_WsunVec.y < 0) {\n\t\t\t\tBackground += drawAurora(feetPlayerPos_normalized, noise) * AURORA_BRIGHTNESS * applyAurora;\n\t\t\t}\n\n\t\t\t#ifndef ISOLATE_RESOURCEPACK_SKY\n\t\t\t\tvec3 Sky = skyFromTex(feetPlayerPos_normalized, colortex4)/1200.0 * Sky_Brightness;\n\t\t\t\tBackground += Sky;\n\t\t\t#endif\n\n\t\t\t#if RESOURCEPACK_SKY == 1 || RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3\n\t\t\t\tvec3 resourcePackskyBox = skyboxCol * 50.0 * clamp(unsigned_WsunVec.y * 255.0, 0.1, 1.0);\n\n\t\t\t\t#if defined SKY_GROUND && !defined ISOLATE_RESOURCEPACK_SKY\n\t\t\t\t\tresourcePackskyBox *= atmosphereGround;\n\t\t\t\t#endif\n\n\t\t\t\tBackground += resourcePackskyBox;\n\t\t\t#endif\n\t\t#endif\n\n\t\t#ifdef END_SHADER\n\t\t\tBackground += drawStars(feetPlayerPos_normalized) * 20.0;\n\t\t#endif\n\n\t\tgl_FragData[0].rgb = clamp(fp10Dither(Background, triangularize(noise_2)), 0.0, 65000.);\n\t}\n\n\tif(translucentMasks > 0.0){\n\t\t// water absorbtion will impact ALL light coming up from terrain underwater.\n\t\tgl_FragData[0].rgb *= Absorbtion;\n\n\t\t#ifdef DISTANT_HORIZONS\n\t  \t\tfloat DH_mixedLinearZ = sqrt(texelFetch2D(colortex12,ivec2(gl_FragCoord.xy),0).a/65000.0);\n\t\t\tvec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, colortex12, DH_mixedLinearZ);\n\t\t#else\n\t\t\tvec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, ld(z));\n\t\t#endif\n\n\t\tgl_FragData[0].rgb = gl_FragData[0].rgb * vlBehingTranslucents.a + vlBehingTranslucents.rgb;\n\t}\n\n\t////// DEBUG VIEW STUFF\n\t#if DEBUG_VIEW == debug_SHADOWMAP\t\n\t\tgl_FragData[0].rgb = vec3(1.0) * (Shadows * NdotL * 0.9 + 0.1);\n\t\t\n\t\tif(dot(feetPlayerPos_normalized, unsigned_WsunVec) > 0.999 ) gl_FragData[0].rgb = vec3(10,10,0);\n\t\tif(dot(feetPlayerPos_normalized, -WmoonVec) > 0.999 ) gl_FragData[0].rgb = vec3(1,1,10);\n\t#elif DEBUG_VIEW == debug_NORMALS\n\t\tif(swappedDepth >= 1.0) Direct_lighting = vec3(1.0);\n\t\tgl_FragData[0].rgb = normal ;\n\t#elif DEBUG_VIEW == debug_SPECULAR\n\t\tif(swappedDepth >= 1.0) Direct_lighting = vec3(1.0);\n\t\tgl_FragData[0].rgb = SpecularTex.rgb;\n\t#elif DEBUG_VIEW == debug_INDIRECT\n\t\tif(swappedDepth >= 1.0) Direct_lighting = vec3(5.0);\n\t\tgl_FragData[0].rgb = Indirect_lighting;\n\t#elif DEBUG_VIEW == debug_DIRECT\n\t\tif(swappedDepth < 1.0) gl_FragData[0].rgb = Direct_lighting;\n\t#elif DEBUG_VIEW == debug_VIEW_POSITION\n\t\tgl_FragData[0].rgb = viewPos * 0.001;\n\t#elif DEBUG_VIEW == debug_FILTERED_STUFF\n\t\tfloat value = SSAO_SSS.y;\n\t\tvalue = pow(value,3.5);\n\t\tvalue = 1-pow(1-value,5);\n\n\t\tif(hideGUI == 1) value = pow(SSAO_SSS.x,6);\n\t\tgl_FragData[0].rgb = vec3(value);\n\n\t\tif(swappedDepth >= 1.0) gl_FragData[0].rgb  = vec3(1.0);\n\t#endif\n\n\t/* RENDERTARGETS:3 */\n}"
  },
  {
    "path": "shaders/dimensions/composite1.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/util.glsl\"\n\n#ifdef END_SHADER\n\tflat out float Flashing;\n#endif\n\nuniform int worldDay;\n#include \"/lib/scene_controller.glsl\"\n\nflat out vec3 WsunVec;\nflat out vec3 WmoonVec;\nflat out vec3 unsigned_WsunVec;\nflat out vec3 averageSkyCol_Clouds;\nflat out vec4 lightCol;\nflat out vec3 moonCol;\nflat out vec3 albedoSmooth;\n\nflat out vec2 TAA_Offset;\nflat out vec3 zMults;\nuniform sampler2D colortex4;\n\nuniform float near;\n\nuniform mat4 gbufferModelViewInverse;\nuniform vec3 sunPosition;\nuniform vec3 moonPosition;\n\nuniform float sunElevation;\nuniform float frameTimeCounter;\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\n#include \"/lib/Shadow_Params.glsl\"\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\t#ifdef END_SHADER\n\t\tFlashing = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0;\n\t#endif\n\n\tzMults = vec3(1.0/(far * near),far+near,far-near);\n\n\tlightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb;\n\tlightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0;\n\n\tmoonCol = texelFetch2D(colortex4,ivec2(9,37),0).rgb;\n\n\t#if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT\n\t\talbedoSmooth = texelFetch2D(colortex4,ivec2(15.5,2.5),0).rgb;\n\t#endif\n\n\taverageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;\n\n\tunsigned_WsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\tvec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition);\n\n\tWmoonVec = moonVec;\n\n\tif(dot(-moonVec, unsigned_WsunVec) < 0.9999) WmoonVec = -moonVec;\n\n\tWsunVec = mix(WmoonVec, unsigned_WsunVec, clamp(lightCol.a,0,1));\n\n\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\n\t#ifdef TAA\n\t\tTAA_Offset = offsets[framemod8];\n\t#else\n\t\tTAA_Offset = vec2(0.0);\n\t#endif\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;\n\t#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/composite10.fsh",
    "content": "#include \"/lib/settings.glsl\"\n\nuniform sampler2D colortex3;\nuniform sampler2D colortex6;\n\nuniform vec2 texelSize;\nuniform float viewWidth;\nuniform float viewHeight;\n\nfloat w0(float a)\n{\n    return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0);\n}\n\nfloat w1(float a)\n{\n    return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0);\n}\n\nfloat w2(float a)\n{\n    return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0);\n}\n\nfloat w3(float a)\n{\n    return (1.0/6.0)*(a*a*a);\n}\n\nfloat g0(float a)\n{\n    return w0(a) + w1(a);\n}\n\nfloat g1(float a)\n{\n    return w2(a) + w3(a);\n}\n\nfloat h0(float a)\n{\n    return -1.0 + w1(a) / (w0(a) + w1(a));\n}\n\nfloat h1(float a)\n{\n    return 1.0 + w3(a) / (w2(a) + w3(a));\n}\n\nvec4 texture2D_bicubic(sampler2D tex, vec2 uv)\n{\n\tvec4 texelSize = vec4(texelSize,1.0/texelSize);\n\tuv = uv*texelSize.zw;\n\tvec2 iuv = floor( uv );\n\tvec2 fuv = fract( uv );\n\n    float g0x = g0(fuv.x);\n    float g1x = g1(fuv.x);\n    float h0x = h0(fuv.x);\n    float h1x = h1(fuv.x);\n    float h0y = h0(fuv.y);\n    float h1y = h1(fuv.y);\n\n\tvec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy;\n\tvec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy;\n\tvec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy;\n\tvec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy;\n\n    return g0(fuv.y) * (g0x * texture2D(tex, p0)  +\n                        g1x * texture2D(tex, p1)) +\n           g1(fuv.y) * (g0x * texture2D(tex, p2)  +\n                        g1x * texture2D(tex, p3));\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n/* DRAWBUFFERS:3 */\nvec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\nvec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize;\n\n#ifdef OLD_BLOOM\n    vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.).rgb;\t//1/4 res\n    bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb; //1/8 res\n    bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb;  //1/16 res\n    bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res\n    bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res\n    bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res\n    bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res\n\n    gl_FragData[0].rgb = bloom * 2.0;\n#else\n\n\tfloat 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    );\n\t// 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)\t);\n\n    vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.).rgb * weights[0];\t//1/4 res\n    bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb * weights[1]; //1/8 res\n    bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb * weights[2];  //1/16 res\n    bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb * weights[3]; //1/32 res\n    bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb * weights[4]; //1/64 res\n    bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb * weights[5]; //1/128 res\n    bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb * weights[6]; //1/256 res\n\n    gl_FragData[0].rgb = bloom * 2.0;\n#endif\n\ngl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);\n}\n"
  },
  {
    "path": "shaders/dimensions/composite10.vsh",
    "content": "uniform float viewWidth;\nuniform float viewHeight;\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\t//Improves performances and makes sure bloom radius stays the same at high resolution (>1080p)\n\tvec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\tgl_Position = ftransform();\n\t//*0.51 to avoid errors when sampling outside since clearing is disabled\n\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0;\n}\n"
  },
  {
    "path": "shaders/dimensions/composite11.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\nflat in vec4 exposure;\nflat in vec2 rodExposureDepth;\nin vec2 texcoord;\n\nconst bool colortex5MipmapEnabled = true;\n// uniform sampler2D colortex4;\nuniform sampler2D colortex5;\nuniform sampler2D colortex3;\n// uniform sampler2D colortex6;\nuniform sampler2D colortex7;\n// uniform sampler2D colortex8; // specular\nuniform sampler2D colortex9; // specular\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\nuniform sampler2D noisetex;\nuniform vec2 texelSize;\n\nuniform ivec2 eyeBrightnessSmooth;\nuniform float viewWidth;\nuniform float viewHeight;\nuniform float frameTimeCounter;\nuniform int frameCounter;\nuniform int isEyeInWater;\nuniform float near;\nuniform float aspectRatio;\nuniform float far;\nuniform float rainStrength;\nuniform float screenBrightness;\nuniform vec4 Moon_Weather_properties; // R = cloud coverage\tG = fog density\nuniform int hideGUI;\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nuniform mat4 gbufferModelViewInverse;\nuniform mat4 gbufferProjectionInverse;\nvec4 Weather_properties = Moon_Weather_properties;\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/color_dither.glsl\"\n// #include \"/lib/biome_specifics.glsl\"\n#include \"/lib/bokeh.glsl\"\n\nfloat cdist(vec2 coord) {\n\treturn max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0;\n}\n\nfloat blueNoise(){\n\treturn fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter);\n}\n\nfloat ld(float depth) {\n\treturn (2.0 * near) / (far + near - depth * (far - near));\n}\n\n// uniform float viewWidth;\n// uniform float viewHeight;\n\n// uniform sampler2D depthtex0;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n#endif\nuniform float dhNearPlane;\nuniform float dhFarPlane;\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far){\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\nfloat bloomWeight(){\n\n\tfloat 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);\n\t// 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));\n\n\tfloat result = 0.0;\n\n\tfor ( int i = 0; i < 7; i++){\n\t\tresult += weights[i];\n\t}\n\n\treturn result;\n}\n\nconst mat3 ACESInputMat =\nmat3(0.59719, 0.35458, 0.04823,\n\t0.07600, 0.90834, 0.01566,\n\t0.02840, 0.13383, 0.83777\n);\n\n// ODT_SAT => XYZ => D60_2_D65 => sRGB\nconst mat3 ACESOutputMat =\nmat3(1.60475, -0.53108, -0.07367,\n\t-0.10208,  1.10813, -0.00605,\n\t-0.00327, -0.07276,  1.07602\n);\n\nvec3 LinearTosRGB(in vec3 color){\n\tvec3 x = color * 12.92f;\n\tvec3 y = 1.055f * pow(clamp(color,0.0,1.0), vec3(1.0f / 2.4f)) - 0.055f;\n\n\tvec3 clr = color;\n\tclr.r = color.r < 0.0031308f ? x.r : y.r;\n\tclr.g = color.g < 0.0031308f ? x.g : y.g;\n\tclr.b = color.b < 0.0031308f ? x.b : y.b;\n\n\treturn clr;\n}\n\nuniform sampler2D colortex6;\n\nfloat w0(float a){\n\treturn (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0);\n}\n\nfloat w1(float a){\n\treturn (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0);\n}\n\nfloat w2(float a){\n\treturn (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0);\n}\n\nfloat w3(float a){\n\treturn (1.0/6.0)*(a*a*a);\n}\n\nfloat g0(float a){\n\treturn w0(a) + w1(a);\n}\n\nfloat g1(float a){\n\treturn w2(a) + w3(a);\n}\n\nfloat h0(float a){\n\treturn -1.0 + w1(a) / (w0(a) + w1(a));\n}\n\nfloat h1(float a){\n\treturn 1.0 + w3(a) / (w2(a) + w3(a));\n}\n\nvec4 texture2D_bicubic(sampler2D tex, vec2 uv){\n\tvec4 texelSize = vec4(texelSize,1.0/texelSize);\n\tuv = uv*texelSize.zw;\n\tvec2 iuv = floor(uv);\n\tvec2 fuv = fract(uv);\n\n\tfloat g0x = g0(fuv.x);\n\tfloat g1x = g1(fuv.x);\n\tfloat h0x = h0(fuv.x);\n\tfloat h1x = h1(fuv.x);\n\tfloat h0y = h0(fuv.y);\n\tfloat h1y = h1(fuv.y);\n\n\tvec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy;\n\tvec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy;\n\tvec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy;\n\tvec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy;\n\n\treturn g0(fuv.y) * (g0x * texture2D(tex, p0) +\n\t\t\tg1x * texture2D(tex, p1)) +\n\t\t\tg1(fuv.y) * (g0x * texture2D(tex, p2) +\n\t\t\tg1x * texture2D(tex, p3));\n}\n\nvoid main() {\n  /* DRAWBUFFERS:7 */\n\n\tfloat vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.);\n\tvec3 col = texture2D(colortex5,texcoord).rgb;\n\n\t#if DOF_QUALITY >= 0\n\t\t/*--------------------------------*/\n\t\tfloat z = ld(texture2D(depthtex1, texcoord.st*RENDER_SCALE).r)*far;\n\t\t#if MANUAL_FOCUS == -2\n\t\t\tfloat focus = rodExposureDepth.y*far;\n\t\t#elif MANUAL_FOCUS == -1\n\t\t\tfloat focus = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);\n\t\t#elif MANUAL_FOCUS > 0\n\t\t\tfloat focus = MANUAL_FOCUS;\n\t\t#endif\n\n\t\t#if DOF_QUALITY < 5\n\t\t\tfloat pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0);\n\n\t\t\t#ifdef FAR_BLUR_ONLY\n\t\t\t\tpcoc *= float(z > focus);\n\t\t\t#endif\n\n\t\t\t#ifdef REMOVE_HAND_BLUR\n \t\t\t\tpcoc *= float(z > 0.56);\n \t\t\t#endif\n\n\t\t\tvec3 bcolor = vec3(0.);\n\t\t\tfloat nb = 0.0;\n\t\t\tvec2 bcoord = vec2(0.0);\n\t\t\t/*--------------------------------*/\n\t\t\tfloat dofLodLevel = pcoc * 200.0;\n\n \t\t\tvec2 dispersion = (texcoord - 0.5) * pcoc * 200.0 * DOF_DISPERSION_MULT;\n\n\t\t\tfor (int i = 0; i < BOKEH_SAMPLES; i++) { \n \t\t\t\tbcolor.r += texture2DLod(colortex5, texcoord.xy + (bokeh_offsets[i] + dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).r;\n \t\t\t\tbcolor.g += texture2DLod(colortex5, texcoord.xy + bokeh_offsets[i]*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).g;\n \t\t\t\tbcolor.b += texture2DLod(colortex5, texcoord.xy + (bokeh_offsets[i] - dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).b;\n\t\t\t}\n\t\t\tcol = bcolor/BOKEH_SAMPLES;\n\t\t#endif\n\t#endif\n\n\tvec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\n\tvec2 resScale = vec2(1920.,1080.)/clampedRes;\n\tvec2 bloomTileUV = (((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.);\n\n\tvec3 bloomTile0 = texture2D_bicubic(colortex3, bloomTileUV/2.).rgb; //1/4 res\n\tvec3 bloomTile1 = texture2D_bicubic(colortex6, bloomTileUV/4.).rgb; //1/8 res\n\tvec3 bloomTile2 = texture2D_bicubic(colortex6, bloomTileUV/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb;  //1/16 res\n\tvec3 bloomTile3 = texture2D_bicubic(colortex6, bloomTileUV/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res\n\tvec3 bloomTile4 = texture2D_bicubic(colortex6, bloomTileUV/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res\n\tvec3 bloomTile5 = texture2D_bicubic(colortex6, bloomTileUV/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res\n\tvec3 bloomTile6 = texture2D_bicubic(colortex6, bloomTileUV/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res\n\n\t#ifdef OLD_BLOOM\n\t\tvec3 bloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0;\n\t\tvec3 fogBloom = bloom;\n\n\t\tfloat lightScat = clamp((BLOOM_STRENGTH+3) * 0.05 * pow(exposure.a, 0.2)  ,0.0,1.0) * vignette;\n\t#else\n\t\tfloat 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    );\n\t\tvec3 bloom = (bloomTile0*weights[0] + bloomTile1*weights[1] + bloomTile2*weights[2] + bloomTile3*weights[3] + bloomTile4*weights[4] + bloomTile5*weights[5] + bloomTile6*weights[6]) / bloomWeight();\n\t\tvec3 fogBloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0;\n\n\t\tfloat lightScat = clamp(BLOOM_STRENGTH * 0.3,0.0,1.0) * vignette;\n\t#endif\n\n \tfloat VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r;\n\n\t#if Purkinje_strength > 0\n\t\tfloat pstrength = float(Purkinje_strength) / 100.0;\n\t\n\t\t#ifdef AUTO_EXPOSURE\n\t\t\tfloat purkinje = clamp(exposure.a*exposure.a,0.0,1.0) * clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1);\n\t\t#else\n\t\t\tfloat purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1);\n\t\t#endif\t\n\n  \t\tVL_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);\n\t\tcol = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb;\n\n  \t\tfloat lum = dot(col, vec3(0.15,0.3,0.55));\n\t\tfloat lum2 = dot(col, vec3(0.85,0.7,0.45));\n\t\tfloat rodLum = lum2*200.0;\n\t\tfloat rodCurve = clamp(mix(1.0, rodLum/(2.5+rodLum), purkinje),0.0,1.0);\n\n\t\tcol = mix(lum * vec3(Purkinje_R, Purkinje_G, Purkinje_B) * Purkinje_Multiplier, col, rodCurve);\n\t#else\n  \t\tVL_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);\n\t\tcol = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb;\n\t#endif\n\n\t#ifdef USE_ACES_COLORSPACE_APPROXIMATION\n\t\tcol = col * ACESInputMat;\n\t\tcol = TONEMAP(col);\n\t\tcol = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0));\n\t#else\n\t\tcol = LinearTosRGB(TONEMAP(col));\n\t#endif\n\n\tgl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0);\n\n\t#if DOF_QUALITY == 5\n\t\t#if FOCUS_LASER_COLOR == 0 // Red\n\t\t\tvec3 laserColor = vec3(25, 0, 0);\n\t\t#elif FOCUS_LASER_COLOR == 1 // Green\n\t\t\tvec3 laserColor = vec3(0, 25, 0);\n\t\t#elif FOCUS_LASER_COLOR == 2 // Blue\n\t\t\tvec3 laserColor = vec3(0, 0, 25);\n\t\t#elif FOCUS_LASER_COLOR == 3 // Pink\n\t\t\tvec3 laserColor = vec3(25, 10, 15);\n\t\t#elif FOCUS_LASER_COLOR == 4 // Yellow\n\t\t\tvec3 laserColor = vec3(25, 25, 0);\n\t\t#elif FOCUS_LASER_COLOR == 5 // White\n\t\t\tvec3 laserColor = vec3(25);\n\t\t#endif\n\t\tfloat depth = texture(depthtex0, texcoord).r;\n\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tfloat _near = near;\n\t\t\tfloat _far = far*4.0;\n\n\t\t\tif (depth >= 1.0) {\n\t\t\t\tdepth = texture2D(dhDepthTex, texcoord).x;\n\t\t\t\t_near = dhNearPlane;\n\t\t\t\t_far = dhFarPlane;\n\t\t\t}\n\n\t\t\tdepth = linearizeDepthFast(depth, _near, _far);\n\t\t#else\n\t\t\tdepth = linearizeDepthFast(depth, near, far);\n\t\t#endif\n\n\t\t// focus = gl_FragCoord.x * 0.1;\n\t\tif( hideGUI < 1) gl_FragData[0].rgb += laserColor * pow(clamp(1.0-abs(focus-abs(depth)),0,1),25) ;\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/composite11.vsh",
    "content": "#include \"/lib/settings.glsl\"\n\nout vec2 texcoord;\n\nuniform sampler2D colortex4;\n\nflat out vec4 exposure;\nflat out vec2 rodExposureDepth;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n\tgl_Position = ftransform();\n\ttexcoord = gl_MultiTexCoord0.xy;\n\n\texposure = vec4(vec3(texelFetch2D(colortex4,ivec2(10,37),0).r),texelFetch2D(colortex4,ivec2(10,37),0).r);\n\trodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg;\n\trodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0);\n}"
  },
  {
    "path": "shaders/dimensions/composite12.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\nin vec2 texcoord;\nuniform vec2 texelSize;\n\nuniform sampler2D colortex7;\nuniform sampler2D colortex14;\nuniform sampler2D depthtex0;\n\nuniform float viewHeight;\nuniform float viewWidth;\nuniform float aspectRatio;\n\nuniform float frameTimeCounter;\n\nuniform int hideGUI;\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/color_dither.glsl\"\n#include \"/lib/res_params.glsl\"\n\n/*\nvec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize) {\n    // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding\n    // down the sample location to get the exact center of our \"starting\" texel. The starting texel will be at\n    // location [1, 1] in the grid, where [0, 0] is the top left corner.\n    vec2 samplePos = uv * texSize;\n    vec2 texPos1 = floor(samplePos - 0.5) + 0.5;\n\n    // Compute the fractional offset from our starting texel to our original sample location, which we'll\n    // feed into the Catmull-Rom spline function to get our filter weights.\n    vec2 f = samplePos - texPos1;\n\n    // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier.\n    // These equations are pre-expanded based on our knowledge of where the texels will be located,\n    // which lets us avoid having to evaluate a piece-wise function.\n    vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f));\n    vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f);\n    vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) );\n    vec2 w3 = f * f * (-0.5 + 0.5 * f);\n\n    // Work out weighting factors and sampling offsets that will let us use bilinear filtering to\n    // simultaneously evaluate the middle 2 samples from the 4x4 grid.\n    vec2 w12 = w1 + w2;\n    vec2 offset12 = w2 / (w1 + w2);\n\n    // Compute the final UV coordinates we'll use for sampling the texture\n    vec2 texPos0 = texPos1 - vec2(1.0);\n    vec2 texPos3 = texPos1 + vec2(2.0);\n    vec2 texPos12 = texPos1 + offset12;\n\n    texPos0 *= texelSize;\n    texPos3 *= texelSize;\n    texPos12 *= texelSize;\n\n    vec4 result = vec4(0.0);\n    result += texture2D(tex, vec2(texPos0.x,  texPos0.y)) * w0.x * w0.y;\n    result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y;\n    result += texture2D(tex, vec2(texPos3.x,  texPos0.y)) * w3.x * w0.y;\n\n    result += texture2D(tex, vec2(texPos0.x,  texPos12.y)) * w0.x * w12.y;\n    result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y;\n    result += texture2D(tex, vec2(texPos3.x,  texPos12.y)) * w3.x * w12.y;\n\n    result += texture2D(tex, vec2(texPos0.x,  texPos3.y)) * w0.x * w3.y;\n    result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y;\n    result += texture2D(tex, vec2(texPos3.x,  texPos3.y)) * w3.x * w3.y;\n\n    return result;\n}\n*/\n\nfloat lowerCurve(float x) {\n\tfloat y = 16 * x * (0.5 - x) * 0.1;\n\treturn clamp(y, 0.0, 1.0);\n}\n\nfloat upperCurve(float x) {\n\tfloat y = 16 * (0.5 - x) * (x - 1.0) * 0.1;\n\treturn clamp(y, 0.0, 1.0);\n}\n\nvec3 luminanceCurve(vec3 color){\n\tcolor.r += LOWER_CURVE * lowerCurve(color.r) + UPPER_CURVE * upperCurve(color.r);\n\tcolor.g += LOWER_CURVE * lowerCurve(color.g) + UPPER_CURVE * upperCurve(color.g);\n\tcolor.b += LOWER_CURVE * lowerCurve(color.b) + UPPER_CURVE * upperCurve(color.b);\n\treturn color;\n}\n\nvec3 colorGrading(vec3 color) {\n\tfloat grade_luma = dot(color, vec3(1.0 / 3.0));\n\tfloat shadows_amount = clamp(-6.0 * grade_luma + 2.75, 0.0, 1.0);\n\tfloat mids_amount = clamp(-abs(6.0 * grade_luma - 3.0) + 1.25, 0.0, 1.0);\n\tfloat highlights_amount = clamp(6.0 * grade_luma - 3.25, 0.0, 1.0);\n\n\tvec3 graded_shadows = color * SHADOWS_TARGET * SHADOWS_GRADE_MUL;\n\tvec3 graded_mids = color * MIDS_TARGET * MIDS_GRADE_MUL;\n\tvec3 graded_highlights = color * HIGHLIGHTS_TARGET * HIGHLIGHTS_GRADE_MUL;\n\n\treturn clamp((graded_shadows * shadows_amount + graded_mids * mids_amount + graded_highlights * highlights_amount) * 1.7320508076, 0.0, 1.0);\n}\n\nvec3 contrastAdaptiveSharpening(vec3 color, vec2 texcoord){\n\n\t//Weights : 1 in the center, 0.5 middle, 0.25 corners\n\tvec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;\n\tvec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;\n\tvec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;\n\tvec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;\n \n\tvec3 m1 = -0.5/3.5*color + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5;\n  \n\tvec3 std = abs(color - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) +\n\tabs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1);\n\n\tfloat contrast = 1.0 - luma(std)/5.0;\n\n\tcolor = color*(1.0+(SHARPENING+UPSCALING_SHARPNENING)*contrast) -\n\t(SHARPENING+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*color); \n\n\treturn color;\n}\n\nvec3 saturationAndCrosstalk(vec3 color){\n\n\tfloat luminance = luma(color);\n\n\tvec3 lumaColDiff = color - luminance;\n\n\tcolor = color + lumaColDiff * (SATURATION - luminance * CROSSTALK);\n\n\treturn color;\n}\n\nvec3 chromaticAberration(vec2 UV){\n\tfloat noise = blueNoise() - 0.5;\n\n\tvec2 centeredUV = (texcoord - 0.5);\n\t// not stretched by aspect ratio; circular by choice :) it makes most the abberation on the left/right of the screen.\n\tfloat vignette = 1.0 - clamp(1.0 - length(centeredUV * vec2(aspectRatio,1.0)) / 200.0,0.0,1.0);\n\n\tfloat aberrationStrength = CHROMATIC_ABERRATION_STRENGTH * vignette;\n\n\tvec3 color = vec3(0.0);\n\tcolor.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r;\n\tcolor.g = texture2D(colortex7, texcoord).g;\n\tcolor.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b;\n\n\treturn color;\n}\n\nvoid main() {\n\n\t/* DRAWBUFFERS:7 */\n\n\t#ifdef CHROMATIC_ABERRATION\n\t\tvec3 color = chromaticAberration(texcoord);\n\t#else\n\t\tvec3 color = texture2D(colortex7,texcoord).rgb;\n\t#endif\n\n\t#ifdef CONTRAST_ADAPTATIVE_SHARPENING\n\t\tcolor = contrastAdaptiveSharpening(color, texcoord);\n\t#endif\n\n\tcolor = saturationAndCrosstalk(color);\n\n\t#ifdef LUMINANCE_CURVE\n\t\tcolor = luminanceCurve(color);\n\t#endif\n\n\t#ifdef COLOR_GRADING_ENABLED\n\t\tcolor = colorGrading(color);\n\t#endif\n\n\tgl_FragData[0].rgb = clamp(int8Dither(color, texcoord),0.0,1.0);\n}\n"
  },
  {
    "path": "shaders/dimensions/composite12.vsh",
    "content": "#include \"/lib/settings.glsl\"\n\nout vec2 texcoord;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_Position = ftransform();\n\ttexcoord = gl_MultiTexCoord0.xy;\n}\n"
  },
  {
    "path": "shaders/dimensions/composite2.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\n#define EXCLUDE_WRITE_TO_LUT\n\nflat in vec4 lightCol;\nflat in vec3 averageSkyCol;\nflat in vec3 averageSkyCol_Clouds;\n\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex0;\nuniform sampler2D colortex2;\nuniform sampler2D colortex3;\nuniform sampler2D colortex4;\nuniform sampler2D colortex6;\nuniform sampler2D colortex7;\nuniform sampler2D colortex10;\n\nflat in vec3 WsunVec;\nuniform vec3 sunVec;\nuniform float sunElevation;\n\nuniform float near;\n// uniform float far;\n// uniform float dhFarPlane;\n\n#ifdef VIVECRAFT\n \tuniform bool vivecraftIsVR;\n \tuniform vec3 vivecraftRelativeMainHandPos;\n \tuniform vec3 vivecraftRelativeOffHandPos;\n \tuniform mat4 vivecraftRelativeMainHandRot;\n \tuniform mat4 vivecraftRelativeOffHandRot;\n #endif\n\nuniform float frameTimeCounter;\nuniform int worldTime;\nuniform int worldDay;\n\n// in vec2 texcoord;\nuniform vec2 texelSize;\nflat in vec2 TAA_Offset;\n\nuniform int isEyeInWater;\nuniform float rainStrength;\nuniform ivec2 eyeBrightnessSmooth;\nuniform float eyeAltitude;\nuniform float caveDetection;\n\n// uniform int dhRenderDistance;\n#define DHVLFOG\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/color_dither.glsl\"\n#include \"/lib/projections.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/waterBump.glsl\"\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\n#define IS_LPV_ENABLED\n\n#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED\n\tflat in float exposure;\n\n\t#extension GL_ARB_shader_image_load_store: enable\n\t#extension GL_ARB_shading_language_packing: enable\n\n\tuniform usampler1D texBlockData;\n\tuniform sampler3D texLpv1;\n\tuniform sampler3D texLpv2;\n\n\t#include \"/lib/hsv.glsl\"\n\t#include \"/lib/lpv_common.glsl\"\n\t#include \"/lib/lpv_render.glsl\"\n#endif\n\nfloat invLinZ (float lindepth){\n\treturn -((2.0*near/lindepth)-far-near)/(far-near);\n}\n\n#ifdef OVERWORLD_SHADER\n\tconst bool shadowHardwareFiltering = true;\n\tuniform sampler2DShadow shadow;\n\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tuniform sampler2D shadowcolor0;\n\t\tuniform sampler2DShadow shadowtex0;\n\t\tuniform sampler2DShadow shadowtex1;\n\t#endif\n\n\tflat in vec3 refractedSunVec;\n\n\t#include \"/lib/lightning_stuff.glsl\"\n\t#include \"/lib/climate_settings.glsl\"\n\t#include \"/lib/scene_controller.glsl\"\n\t#include \"/lib/volumetricClouds.glsl\"\n\t#include \"/lib/overworld_fog.glsl\"\n\t#include \"/lib/aurora.glsl\"\n#endif\n\n#ifdef NETHER_SHADER\n\t#include \"/lib/nether_fog.glsl\"\n#endif\n\n#ifdef END_SHADER\n\t#include \"/lib/end_fog.glsl\"\n#endif\n\nvoid waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient){\n\tinColor *= exp(-rayLength * waterCoefs); //No need to take the integrated value\n\t\n\tint spCount = rayMarchSampleCount;\n\tvec3 start = toShadowSpaceProjected(toWorldSpace(rayStart));\n\tvec3 end = toShadowSpaceProjected(toWorldSpace(rayEnd));\n\tvec3 dV = (end-start);\n\t//limit ray length at 32 blocks for performance and reducing integration error\n\t//you can't see above this anyway\n\tfloat maxZ = min(rayLength,12.0)/(1e-8+rayLength);\n\tdV *= maxZ;\n\n\trayLength *= maxZ;\n\t\n\tfloat dY = normalize(mat3(gbufferModelViewInverse) * rayEnd).y * rayLength;\n\testEndDepth *= maxZ;\n\testSunDepth *= maxZ;\n\n\tvec3 wpos = toWorldSpace(rayStart);\n\tvec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz);\n\n\tvec3 absorbance = vec3(1.0);\n\tvec3 vL = vec3(0.0);\n\n\tfloat expFactor = 11.0;\n\tfor (int i=0;i<spCount;i++) {\n\t\tfloat d = (pow(expFactor, float(i+dither)/float(spCount))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\n\t\tfloat dd = pow(expFactor, float(i+dither)/float(spCount)) * log(expFactor) / float(spCount)/(expFactor-1.0);\n\t\tvec3 spPos = start.xyz + dV*d;\n\n\t\tvec3 progressW = start.xyz+cameraPosition+dVWorld;\n\n\t\tvec3 ambientMul = exp(-max(estEndDepth * d,0.0) * waterCoefs);\n\t\tvec3 Indirectlight = ambientMul*ambient;\n\n\t\tvec3 light = Indirectlight * scatterCoef;\n\n\t\tvL += (light - light * exp(-waterCoefs * dd * rayLength)) / waterCoefs * absorbance;\n\t\tabsorbance *= exp(-dd * rayLength * waterCoefs);\n\t}\n\tinColor += vL;\n}\n\nuniform float waterEnteredAltitude;\n\nvec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){\n\tint spCount = 8;\n\n\tvec3 start = toShadowSpaceProjected(toWorldSpace(rayStart));\n\tvec3 end = toShadowSpaceProjected(toWorldSpace(rayEnd));\n\tvec3 dV = (end-start);\n\n\t//limit ray length at 32 blocks for performance and reducing integration error\n\t//you can't see above this anyway\n\tfloat maxZ = min(rayLength,32.0)/(1e-8+rayLength);\n\t\n\tdV *= maxZ;\n\trayLength *= maxZ;\n\n\tvec3 dVWorld = mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ;\n\n\tvec3 absorbance = vec3(1.0);\n\tvec3 vL = vec3(0.0);\n\t\n\t#ifdef OVERWORLD_SHADER\n\t\tfloat lowlightlevel  = clamp(eyeBrightnessSmooth.y/240.0,0.1,1.0);\n\t\tfloat phase = fogPhase(VdotL) * 5.0;\n\t#else\n\t\tfloat lowlightlevel  = 1.0;\n\t\tfloat phase = 0.0;\n\t#endif\n\n \tfloat thing = -normalize(dVWorld).y;\n \tthing = clamp(thing + 0.333,0.0,1.0);\n \tthing = pow(1.0-pow(1.0-thing,2.0),2.0);\n \n \tthing *= 15.0;\n  \n\tfloat expFactor = 11.0;\n\tfor (int i=0;i<spCount;i++) {\n\t\tfloat d = (pow(expFactor, float(i+dither.x)/float(spCount))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\t\t// exponential step position (0-1)\n\t\tfloat dd = pow(expFactor, float(i+dither.y)/float(spCount)) * log(expFactor) / float(spCount)/(expFactor-1.0);\t//step length (derivative)\n\t\t\n\t\tvec3 progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld;\n\t\t\n\t\tfloat distanceFromWaterSurface = max(-(progressW.y - waterEnteredAltitude),0.0);\n\n\t\tvec3 sh = vec3(1.0);\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tvec3 spPos = start.xyz + dV*d;\n\n\t\t\t//project into biased shadowmap space\n\t\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\t\tfloat distortFactor = calcDistort(spPos.xy);\n\t\t\t#else\n\t\t\t\tfloat distortFactor = 1.0;\n\t\t\t#endif\n\n\t\t\tvec3 pos = vec3(spPos.xy*distortFactor, spPos.z);\n\t\t\tif (abs(pos.x) < 1.0-0.5/2048. && abs(pos.y) < 1.0-0.5/2048){\n\t\t\t\tpos = pos*vec3(0.5,0.5,0.5/6.0)+0.5;\n\n\t\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\t\tpos.xy *= 0.8;\n\t\t\t\t#endif\n\n\t\t\t\t// sh = shadow2D( shadow, pos).x;\n\n\t\t\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\t\t\t\tsh = vec3(shadow2D(shadowtex0, pos).x);\n\n\t\t\t\t\tif(shadow2D(shadowtex1, pos).x > pos.z && sh.x < 1.0){\n\t\t\t\t\t\tvec4 translucentShadow = texture2D(shadowcolor0, pos.xy);\n\t\t\t\t\t\tif(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001);\n\t\t\t\t\t}\n\t\t\t\t#else\n\t\t\t\t\tsh = vec3(shadow2D(shadow, pos).x);\n\t\t\t\t#endif\n\t\t\t}\n\n\t\t\tsh *= getCloudShadow(progressW, WsunVec * lightCol.a);\n\n\t\t#endif\n\n\t\tfloat bubble = exp2(-10.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0));\n\t\tfloat caustics = max(max(waterCaustics(progressW, WsunVec), phase*0.5) * mix(0.5, 1.5, bubble), phase) ;\n\n\t\tvec3 sunAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface/abs(WsunVec.y)));\n\t\tvec3 WaterAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface + thing));\n\n\t\tvec3 Directlight = lightSource * sh * phase * caustics * sunAbsorbance;\n\t\tvec3 Indirectlight = ambient * WaterAbsorbance;\n\n\t\tvec3 light = (Indirectlight + Directlight) * scatterCoef;\n\t\t\n\t\tvec3 volumeCoeff = exp(-waterCoefs * length(dd*dVWorld));\n\t\tvL += (light - light * volumeCoeff) / waterCoefs * absorbance;\n\t\tabsorbance *= volumeCoeff;\n\t}\n\treturn vec4(vL, dot(absorbance,vec3(0.335)));\n}\n\nvec4 blueNoise(vec2 coord){\n\treturn texelFetch2D(colortex6, ivec2(coord)%512 , 0) ;\n}\n\nfloat fogPhase2(float lightPoint){\n\tfloat linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0);\n\tfloat linear2 = 1.0 - clamp(lightPoint,0.0,1.0);\n\n\tfloat exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5;\n\texponential += sqrt(exp2(sqrt(linear) * -12.5));\n\n\treturn exponential;\n}\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nfloat convertHandDepth(float depth) {\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\treturn ndcDepth * 0.5 + 0.5;\n}\n\nvec3 alterCoords(in vec3 coords, bool lighting){\n\tfloat theDistance = length(coords + (lighting ? vec3(0.0) : cameraPosition));\n\n\tcoords.x = coords.x*3;\n\tcoords.y = coords.y;\n\tcoords.z = coords.z*3;\n\n\treturn coords;\n }\n\nvec4 raymarchTest(\n\tin vec3 viewPosition,\n\tin vec2 dither\n){\n\t\n\tvec3 color = vec3(0.0);\n\tfloat totalAbsorbance = 1.0;\n\tfloat expFactor = 16.0;\n\n\tfloat minHeight = 250.0;\n\tfloat maxHeight = minHeight + 100.0;\n\t\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat maxdist = dhFarPlane - 16.0;\n\t#else\n\t\tfloat maxdist = far*4;\n\t#endif\n\n   \tfloat referenceDistance = length(viewPosition) < maxdist ? length(viewPosition) - 1.0 : 100000000.0;\n\n\tint SAMPLECOUNT = 8;\n\n\t//project pixel position into projected shadowmap space\n\tvec3 wpos =  toWorldSpace(viewPosition);\n\tvec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz;\n\tvec3 dVWorldN = normalize(dVWorld);\n\n\tfloat cloudRange = max(minHeight - cameraPosition.y, 0.0);\n\n\tvec3 rayDirection = dVWorldN.xyz * ((maxHeight - minHeight) / length(alterCoords(dVWorldN, false)) / SAMPLECOUNT);\n\t\n\t// float cloudRange = mix(max(cameraPosition.y - maxHeight,0.0), max(minHeight - cameraPosition.y,0.0), clamp(rayDirection.y,0.0,1.0));\n\n\tvec3 rayProgress = rayDirection + cameraPosition + (rayDirection / length(alterCoords(rayDirection, false))) * 200.0;\n\n\tfloat dL = length(rayDirection);\n\n\tfor (int i = 0; i < SAMPLECOUNT; i++) {\n\t\tif(length(rayProgress - cameraPosition) > referenceDistance) break;\n\n\t\tfloat d = (pow(expFactor, float(i + dither.x)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\n\t\tfloat dd = pow(expFactor, float(i + dither.y)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);\n\t\t\n\t\tfloat theDistance = length(alterCoords(rayProgress-cameraPosition, true));\n\n\t\tfloat 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));\n\n\t\tfloat fogVolumeCoeff = exp(-fogDensity*dd*dL);\n\n\t\t// vec3 lighting = vec3(1.0) * (1.0-clamp((minHeight-50) - theDistance,0,1));\n\n\t\tvec3 lighting = vec3(1.0) * clamp(minHeight - theDistance/1.2,0,1);\n\n\t\tcolor += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance;\n\n\t\ttotalAbsorbance *= fogVolumeCoeff;\n\n\t\trayProgress += rayDirection;\n\t}\n\treturn vec4(color, totalAbsorbance);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n\t/* RENDERTARGETS:0 */\n\n\tfloat noise_2 = blueNoise();\n\tfloat noise_1 = max(1.0 - R2_dither(),0.0015);\n\t// float noise_2 = interleaved_gradientNoise_temporal();\n\tvec2 bnoise = blueNoise(gl_FragCoord.xy).rg;\n\n\tint seed = (frameCounter*5)%40000;\n\tvec2 r2_sequence = R2_samples(seed).xy;\n\tvec2 BN = fract(r2_sequence + bnoise);\n\n\t// vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize + texelSize*0.5;\n\tvec2 tc = (gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize;\n\n\tbool iswater = texture2D(colortex7,tc).a > 0.99;\n\n\tfloat depth = texelFetch2D(depthtex0, ivec2(tc/texelSize),0).x;\n\n\tfloat z0 = depth < 0.56 ? convertHandDepth(depth) : depth;\n\n\tfloat DH_z0 = 0.0;\n\t#ifdef DISTANT_HORIZONS\n\t\tDH_z0 = texelFetch2D(dhDepthTex, ivec2(tc/texelSize),0).x;\n\t#endif\n\n\tvec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0);\n\tvec3 viewPos0_water = toScreenSpace(vec3(tc/RENDER_SCALE, z0));\n\tvec3 playerPos = toWorldSpace(viewPos0);\n\tvec3 playerPos_normalized = normalize(playerPos);\n\n\tvec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);\n\tvec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B);\n\tvec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);\n\tvec3 scatterCoef = Dirt_Amount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14;\n\n\tvec3 directLightColor = lightCol.rgb / 2400.0;\n\tvec3 indirectLightColor = averageSkyCol / 1200.0;\n\tvec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0;\n\tfloat cloudPlaneDistance = 0.0;\n\n\t#ifdef OVERWORLD_SHADER\n\t\tvec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WsunVec, directLightColor + aurEmit * 0.2, indirectLightColor + aurEmit * 0.01, cloudPlaneDistance);\n\n\t\t#ifdef CAVE_FOG\n  \t  \t\tfloat skyhole = pow(clamp(1.0-pow(max(playerPos_normalized.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2) * caveDetection;\n\t\t\tVolumetricClouds.rgb *= 1.0-skyhole;\n\t\t\tVolumetricClouds.a = mix(VolumetricClouds.a, 1.0, skyhole);\n\t\t#endif\n\n\t\tfloat atmosphereAlpha = 1.0;\n\n\t\tvec3 sceneColor = texelFetch2D(colortex3,ivec2(tc/texelSize),0).rgb * VolumetricClouds.a + VolumetricClouds.rgb;\n\t\tvec4 VolumetricFog = GetVolumetricFog(viewPos0, WsunVec, BN, directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb, cloudPlaneDistance);\n\t\tVolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a * VolumetricClouds.a);\n\t#else\n\t\tvec4 VolumetricFog = GetVolumetricFog(viewPos0, BN.x, BN.y);\n\t#endif\n\n\tif (isEyeInWater == 1){\n\t\tvec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0_water, length(viewPos0_water), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0_water), normalize(sunVec* lightCol.a )));\n\n\t\tVolumetricFog = vec4(underWaterFog.rgb, 1.0);\n\t}\n\n\tgl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0);\n}"
  },
  {
    "path": "shaders/dimensions/composite2.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/util.glsl\"\n\nflat out vec4 lightCol;\nflat out vec3 averageSkyCol;\nflat out vec3 averageSkyCol_Clouds;\n\n#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED\n\tflat out float exposure;\n#endif\n\nuniform int worldDay;\n#include \"/lib/scene_controller.glsl\"\n\nflat out vec3 WsunVec;\nflat out vec3 refractedSunVec;\n\nuniform vec2 texelSize;\n\nuniform sampler2D colortex4;\n\nuniform float sunElevation;\nuniform vec3 sunPosition;\nuniform vec3 moonPosition;\nuniform mat4 gbufferModelViewInverse;\n\nflat out vec2 TAA_Offset;\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nuniform float frameTimeCounter;\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0;\n\t\n\t#ifdef OVERWORLD_SHADER\n\t\tlightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb;\n\t\taverageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb;\n\t\taverageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;\n\t\n\t\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t#endif\n\n\t#ifdef NETHER_SHADER\n\t\tlightCol.rgb = vec3(0.0);\n\t\taverageSkyCol = vec3(0.0);\n\t\taverageSkyCol_Clouds = vec3(0.0);\n\t#endif\n\n\t#ifdef END_SHADER\n\t\tlightCol.rgb = vec3(0.0);\n\t\taverageSkyCol = vec3(0.0);\n\t\taverageSkyCol_Clouds = vec3(5.0);\n\t#endif\n\n\tlightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0;\n\tWsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\tvec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition);\n\tvec3 WmoonVec = moonVec;\n\tif(dot(-moonVec, WsunVec) < 0.9999) WmoonVec = -moonVec;\n\n\tWsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1));\n\n\trefractedSunVec = refract(lightCol.a*WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333);\n\n\t#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED\n\t\texposure = texelFetch2D(colortex4,ivec2(10,37),0).r;\n\t#endif\n\n\t#ifdef TAA\n\t\tTAA_Offset = offsets[framemod8];\n\t#else\n\t\tTAA_Offset = vec2(0.0);\n\t#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/composite3.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\nflat in vec3 zMults;\n\nflat in vec2 TAA_Offset;\nflat in vec3 WsunVec;\n\n#ifdef OVERWORLD_SHADER\n\tflat in vec3 skyGroundColor;\n#endif\n\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex0;\n// uniform sampler2D colortex1;\nuniform sampler2D colortex2;\nuniform sampler2D colortex3;\nuniform sampler2D colortex4;\n// uniform sampler2D colortex5;\nuniform sampler2D colortex6;\nuniform sampler2D colortex7;\n// uniform sampler2D colortex8;\nuniform sampler2D colortex9;\nuniform sampler2D colortex10;\nuniform sampler2D colortex11;\nuniform sampler2D colortex12;\n// uniform sampler2D colortex13;\n// uniform sampler2D colortex14;\n// uniform sampler2D colortex15;\n\nuniform vec2 texelSize;\n// uniform float viewHeight;\n// uniform float viewWidth;\n// uniform vec3 sunVec;\nuniform float frameTimeCounter;\nuniform float far;\nuniform float near;\nuniform float farPlane;\nuniform int dhRenderDistance;\n\nuniform int hideGUI;\nuniform int isEyeInWater;\nuniform ivec2 eyeBrightnessSmooth;\nuniform ivec2 eyeBrightness;\nuniform float nightVision;\nuniform float rainStrength;\nuniform float wetness;\nuniform float blindness;\nuniform float darknessFactor;\nuniform float darknessLightFactor;\nuniform float caveDetection;\nuniform float waterEnteredAltitude;\nuniform float fogEnd;\nuniform vec3 fogColor;\nuniform float eyeAltitude;\n\n#include \"/lib/waterBump.glsl\"\n#include \"/lib/res_params.glsl\"\n\n#include \"/lib/projections.glsl\"\n#include \"/lib/DistantHorizons_projections.glsl\"\n\n#ifdef OVERWORLD_SHADER\n\t#include \"/lib/climate_settings.glsl\"\n\t#include \"/lib/rainbow.glsl\"\n#endif\n\n#include \"/lib/sky_gradient.glsl\"\n\nvec4 blueNoise(vec2 coord){\n\treturn texelFetch2D(colortex6, ivec2(coord)%512 , 0);\n}\n\nvec3 normVec(vec3 vec){\n\treturn vec*inversesqrt(dot(vec,vec));\n}\n\nfloat ld(float depth) {\n\treturn 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near\n}\n\nfloat linearize(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\nvec2 clampUV(in vec2 uv, vec2 texcoord){\n\n\t// get the gradient when a refracted axis and non refracted axis go above 1.0 or below 0.0\n\t// use this gradient to lerp between refracted and non refracted uv\n\t// the goal of this is to stretch the uv back to normal when the refracted image exposes off screen uv\n\t// emphasis on *stretch*, as i want the transition to remain looking like refraction, not a sharp cut.\n\n\tfloat vignette = max(uv.x * texcoord.x, 0.0);\n\tvignette = max(uv.y * texcoord.y, vignette);\n\tvignette = max((uv.x-1.0) * (texcoord.x-1.0), vignette);\n\tvignette = max((uv.y-1.0) * (texcoord.y-1.0), vignette);\n\n\tvignette *= vignette * vignette * vignette * vignette;\n\n\treturn clamp(mix(uv, texcoord, vignette), 0.0, 0.9999999);\n}\n\nvec3 doRefractionEffect(inout vec2 passTexcoord, vec2 normal, float linearDistance, bool isReflectiveEntity, bool underwater){\n\t// correct normal directions to match texcoord directions (right facing X, up facing Y)\n\tnormal.y = -normal.y;\n\tvec2 texcoord = passTexcoord;\n\n\tvec3 color = vec3(0.0);\n\n\tfloat refractAmount = float(FAKE_REFRACTION_AMOUNT)/4.0;\n\tfloat dispersionAmount = float(FAKE_DISPERSION_AMOUNT)/4.0;\n\tfloat smudgeAmount = float(REFRACTION_SMUDGE_AMOUNT)/4.0;\n\n\trefractAmount *= 0.5 / (1.0 + pow(linearDistance,0.8) * (underwater ? 0.1 : 1.0));\n\tif(isReflectiveEntity) refractAmount *= 0.5;\n\n\tdispersionAmount *= 0.035;\n\tsmudgeAmount *= 0.035;\n\n\tvec2 dispersion = (clamp(normal, -0.2, 0.2) / 0.2);\n\n\t#if REFRACTION_SMUDGE_AMOUNT > 0\n\t\tvec2 smudge = smudgeAmount * dispersion * (blueNoise()-0.5);\n\t#else\n\t\tvec2 smudge = vec2(0.0);\n\t#endif\n\n\tdispersion *= dispersionAmount;\n\n\t#if FAKE_DISPERSION_AMOUNT > 0\n\t\t// do not offset texcoord if alpha is 1.0\n\t\trefractAmount *= min(decodeVec2(texelFetch2D(colortex11, ivec2(clampUV(texcoord - ((normal + dispersion) + smudge)*refractAmount, texcoord)/texelSize),0).b).g,\n                    \tdecodeVec2(texelFetch2D(colortex11, ivec2(clampUV(texcoord - ((normal - dispersion) + smudge)*refractAmount, texcoord)/texelSize),0).b).g) > 0.0 ? 1.0 : 0.0;\n\n\t\t// create offsets\n\t\tvec2 offsetTexcoord = clampUV(texcoord - (normal + smudge)*refractAmount, texcoord);\n\t\tpassTexcoord = offsetTexcoord;\n\n\t\t// sample color with offsetted texcoord. in this case, the red and blue channels have offsets in opposite directions for a dispersion effect.\n\t\tcolor.g = texture2D(colortex3, offsetTexcoord).g;\n\n\t\toffsetTexcoord = clampUV(texcoord - ((normal + dispersion) + smudge)*refractAmount, texcoord);\n\t\tcolor.r = texture2D(colortex3, offsetTexcoord).r;\n\n\t\toffsetTexcoord = clampUV(texcoord - ((normal - dispersion) + smudge)*refractAmount, texcoord);\n\t\tcolor.b = texture2D(colortex3, offsetTexcoord).b;\n\t#else\n\t\t// do not offset texcoord if alpha is 1.0\n\t\trefractAmount *= decodeVec2(texelFetch2D(colortex11, ivec2(clampUV(texcoord - (normal + smudge)*refractAmount, texcoord)/texelSize),0).b).g > 0.0 ? 1.0 : 0.0;\n\t\t// create offsets\n\t\tvec2 offsetTexcoord = clampUV(texcoord - (normal + smudge)*refractAmount, texcoord);\n\t\tpassTexcoord = offsetTexcoord;\n\n\t\t// sample color with distorted texcoords\n\t\tcolor.rgb = texture2D(colortex3, offsetTexcoord).rgb;\n\t#endif\n\n\treturn color;\n}\n\nvec4 bilateralUpsample(out float outerEdgeResults, float referenceDepth, sampler2D depth, bool hand){\n\tvec4 colorSum = vec4(0.0);\n\tfloat edgeSum = 0.0;\n\tfloat threshold = 0.005;\n\n\tvec2 coord = gl_FragCoord.xy - 1.5;\n\n\tvec2 UV = coord;\n\tconst ivec2 SCALE = ivec2(1.0/VL_RENDER_RESOLUTION);\n\tivec2 UV_DEPTH = ivec2(UV*VL_RENDER_RESOLUTION)*SCALE;\n\tivec2 UV_COLOR = ivec2(UV*VL_RENDER_RESOLUTION);\n\tivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1);\n\n\tivec2 OFFSET[5] = ivec2[](\n\t\tivec2(-1,-1),\n\t\tivec2( 1, 1),\n\t\tivec2(-1, 1),\n\t\tivec2( 1,-1),\n\t\tivec2( 0, 0)\n\t);\n\n\tfor(int i = 0; i < 5; i++) {\n \n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tfloat offsetDepth = sqrt(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE,0).a/65000.0);\n\t\t#else\n\t\t\tfloat offsetDepth = linearize(texelFetch2D(depth, UV_DEPTH + (OFFSET[i] + UV_NOISE) * SCALE, 0).r);\n\t\t#endif\n \n\t\tfloat edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7;\n\t\touterEdgeResults = max(outerEdgeResults, abs(referenceDepth - offsetDepth));\n\n\t\tvec4 offsetColor = texelFetch2D(colortex0, UV_COLOR + OFFSET[i] + UV_NOISE, 0).rgba;\n\t\tcolorSum += offsetColor*edgeDiff;\n\t\tedgeSum += edgeDiff;\n\t}\n\n\touterEdgeResults = outerEdgeResults > (hand ? 0.005 : referenceDepth*0.05 + 0.1) ? 1.0 : 0.0;\n\n\treturn colorSum / edgeSum;\n}\n\nvec4 VLTemporalFiltering(vec3 viewPos, in float referenceDepth, sampler2D depth, bool hand){\n\tvec2 offsetTexcoord = gl_FragCoord.xy * texelSize;\n\tvec2 VLtexCoord = offsetTexcoord * VL_RENDER_RESOLUTION;\n\n\t// get previous frames position stuff for UV\n\tvec3 previousPosition = toPreviousPos(viewPos);\n\tpreviousPosition = toClipSpace3Prev(previousPosition);\n\n\tvec2 velocity = previousPosition.xy - offsetTexcoord;\n\tpreviousPosition.xy = offsetTexcoord + velocity;\n\n\tvec4 currentFrame = texture2D(colortex0, VLtexCoord);\n\n\t// to fill pixel gaps in geometry edges, do a bilateral upsample.\n\t// pass a mask to only show upsampled color around the edges of blocks. this is so it doesnt blur reprojected results.\n\tfloat outerEdgeResults = 0.0;\n\tvec4 upsampledCurrentFrame = bilateralUpsample(outerEdgeResults, referenceDepth, depth, hand);\n\n\tif (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return currentFrame;\n\n\tvec4 col1 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, texelSize.y));\n\tvec4 col2 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, -texelSize.y));\n\tvec4 col3 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, -texelSize.y));\n\tvec4 col4 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, texelSize.y));\n\tvec4 col5 = texture2D(colortex0, VLtexCoord + vec2( 0.0, texelSize.y));\n\tvec4 col6 = texture2D(colortex0, VLtexCoord + vec2( 0.0, -texelSize.y));\n\tvec4 col7 = texture2D(colortex0, VLtexCoord + vec2(-texelSize.x, 0.0));\n\tvec4 col8 = texture2D(colortex0, VLtexCoord + vec2( texelSize.x, 0.0));\n\n\tvec4 colMax = max(currentFrame,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8))))))));\n\tvec4 colMin = min(currentFrame,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8))))))));\n\n\tvec4 frameHistory = texture2D(colortex10, previousPosition.xy*RENDER_SCALE);\n\tvec4 clampedFrameHistory = clamp(frameHistory, colMin, colMax);\n\n\tfloat blendingFactor = 0.1;\n\n\tif(abs(clampedFrameHistory.a  - frameHistory.a) > 0.1) blendingFactor = 1.0;\n\n\tvec4 reprojectFrame = mix(clampedFrameHistory, currentFrame, blendingFactor);\n\n\t// return clamp(reprojectFrame,0.0,65000.0);\n\treturn clamp(mix(reprojectFrame, upsampledCurrentFrame, outerEdgeResults),0.0,65000.0);\n}\n\nvoid blendAllFogTypes(inout vec3 color, inout float bloomyFogMult, vec4 volumetrics, float linearDistance, vec3 playerPos, vec3 cameraPosition, bool isSky){\n\n\t// blend cave fog\n\t#if defined OVERWORLD_SHADER && defined CAVE_FOG\n\t\tif (isEyeInWater == 0 && eyeAltitude < 1500){\n\t\t\tvec3 cavefogCol = vec3(CaveFogColor_R, CaveFogColor_G, CaveFogColor_B) * 0.3;\n\t\t\tcavefogCol *= 1.0-pow(1.0-pow(1.0 - max(1.0 - linearDistance/far,0),2),CaveFogFallOff);\n\t\t\tcavefogCol *= exp(-7.0*clamp(playerPos.y*0.5+0.5,0,1)) * 0.999 + 0.001;\n\n\t\t\t#ifdef CAVE_FOG_DARKEN_SKY\n\t\t\t\tfloat skyhole = pow(clamp(1.0-pow(max(playerPos.y - 0.6,0.0)*5.0,2.0),0.0,1.0),2);\n\t\t\t\tcolor.rgb = mix(color.rgb + cavefogCol * caveDetection, cavefogCol, isSky ? skyhole * caveDetection : 0.0);\n\t\t\t#else\n\t\t\t\tcolor.rgb += cavefogCol * caveDetection;\n\t\t\t#endif\n\t\t}\n\t#endif\n\n\t/// water absorption; it is completed when volumetrics are blended.\n\tif(isEyeInWater == 1){\n\t\tvec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);\n\t\tvec3 scatterCoef = Dirt_Amount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14;\n\n\t\tfloat distanceFromWaterSurface = playerPos.y + 1.0 + (cameraPosition.y - waterEnteredAltitude)/waterEnteredAltitude;\n\t\tdistanceFromWaterSurface = clamp(distanceFromWaterSurface,0,1);\n\n\t\tvec3 transmittance = exp(-totEpsilon * linearDistance);\n\t\tcolor.rgb *= transmittance;\n\n\t\tvec3 transmittance2 = exp(-totEpsilon * 50.0);\n\t\tfloat fogfade = 1.0 - max((1.0 - linearDistance / min(far, 16.0*7.0) ),0);\n\t\tcolor.rgb += (transmittance2 * scatterCoef) * fogfade;\n    \n\t\tbloomyFogMult *= dot(transmittance,vec3(0.3333))*0.5;\n\t}\n\n\t/// blend volumetrics\n\tcolor = color * volumetrics.a + volumetrics.rgb;\n  \n\t// make bloomy fog only work outside of the overworld (unless underwater)\n\t#ifndef OVERWORLD_SHADER\n\t\tbloomyFogMult *= volumetrics.a;\n\t#endif\n\n\t// blend vanilla fogs (blindness, darkness, lava, powdered snow)\n\tif(isEyeInWater > 1 || blindness > 0 || darknessFactor > 0){\n\t\tfloat enviornmentFogDensity = 1.0 - clamp(linearDistance/fogEnd,0,1);\n\t\tenviornmentFogDensity = 1.0 - enviornmentFogDensity*enviornmentFogDensity;\n\t\tenviornmentFogDensity *= enviornmentFogDensity;\n\t\tenviornmentFogDensity =  mix(enviornmentFogDensity, 1.0, min(darknessLightFactor*2.0,1));\n\n\t\tcolor = mix(color, toLinear(fogColor), enviornmentFogDensity);\n\t}\n}\n\nvoid blendForwardRendering( inout vec3 color, vec4 translucentShader ){\n\n\t// REMEMBER that forward rendered color is written as color.rgb/10.0, invert it.\n\tif(translucentShader.a > 0) {\n\t\tcolor = color * (1.0 - translucentShader.a) + translucentShader.rgb * 10.0;\n\t}\n}\n\nfloat getBorderFogDensity(float linearDistance, vec3 playerPos, bool sky){\n\tif(sky) return 0.0;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / dhRenderDistance,0.0)*3.0,1.0)   );\n\t#else\n\t\tfloat borderFogDensity = smoothstep(1.0, 0.0, min(max(1.0 - linearDistance / far,0.0)*3.0,1.0)   );\n\t#endif\n  \n\tborderFogDensity *= exp(-10.0 * pow(clamp(playerPos.y,0.0,1.0)*4.0,2.0));\n\tborderFogDensity *= (1.0-caveDetection);\n\n\treturn borderFogDensity;\n}\n\nvoid main() {\n  /* RENDERTARGETS:7,3,10 */\n\n\t////// --------------- SETUP STUFF --------------- //////\n\tvec2 texcoord = gl_FragCoord.xy*texelSize;\n\tfloat depth = texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy),0).x;\n\tbool hand = depth < 0.56;\n\tfloat z = depth;\n\n\tfloat z2 = texture2D(depthtex1, texcoord).x;\n\tfloat frDepth = linearize(z);\n\n\tfloat swappedDepth = z;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat DH_depth0 = texture2D(dhDepthTex,texcoord).x;\n\t\tfloat depthOpaque = z;\n\t\tfloat depthOpaqueL = linearizeDepthFast(depthOpaque, near, farPlane);\n\t\t\n\t\tfloat dhDepthOpaque = DH_depth0;\n\t\tfloat dhDepthOpaqueL = linearizeDepthFast(dhDepthOpaque, dhNearPlane, dhFarPlane);\n\t\tif (depthOpaque >= 1.0 || (dhDepthOpaqueL < depthOpaqueL && dhDepthOpaque > 0.0)){\n\t\t\tdepthOpaque = dhDepthOpaque;\n\t\t\tdepthOpaqueL = dhDepthOpaqueL;\n\t\t}\n\n\t\tswappedDepth = depthOpaque;\n\t#else\n\t\tfloat DH_depth0 = 0.0;\n\t#endif\n\n\tbool isSky = swappedDepth >= 1.0;\n\n\tvec3 viewPos = toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth0);\n\tvec3 playerPos = toWorldSpace(viewPos);\n\n\tfloat linearDistance = length(playerPos);\n\tfloat linearDistance_cylinder = length(playerPos.xz);\n\tvec3 playerPos_normalized = normalize(playerPos);\n\n\tvec3 viewPos_alt = toScreenSpace(vec3(texcoord/RENDER_SCALE, z2));\n\tvec3 playerPos_alt = toWorldSpace(viewPos_alt);\n\tfloat linearDistance_cylinder_alt = length(playerPos_alt.xz);\n\n\tfloat lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240.,2) ,0.0,1.0);\n\tfloat lightleakfixfast = clamp(eyeBrightness.y/240.,0.0,1.0);\n\n\t////// --------------- UNPACK OPAQUE GBUFFERS --------------- //////\n\t// float opaqueMasks = decodeVec2(texture2D(colortex1,texcoord).a).y;\n\t// bool isOpaque_entity = abs(opaqueMasks-0.45) < 0.01;\n\n\t////// --------------- UNPACK TRANSLUCENT GBUFFERS --------------- //////\n\tvec4 data = texelFetch2D(colortex11,ivec2(texcoord/texelSize),0).rgba;\n\tvec4 unpack0 = vec4(decodeVec2(data.r),decodeVec2(data.g)) ;\n\tvec4 unpack1 = vec4(decodeVec2(data.b),decodeVec2(data.a)) ;\n\t\n\tvec4 albedo = vec4(unpack0.ba,unpack1.rg);\n\tvec2 tangentNormals = unpack0.xy*2.0-1.0;\n  \n\tbool nameTagMask = abs(unpack1.a - 0.1) < 0.01;\n\tfloat nametagbackground = nameTagMask ? 0.25 : 1.0;\n\n\tif(albedo.a < 0.01) tangentNormals = vec2(0.0);\n\n\t////// --------------- UNPACK MISC --------------- //////\n\t// 1.0 = water mask\n\t// 0.9 = entity mask\n\t// 0.8 = reflective entities\n\t// 0.7 = reflective blocks\n\tfloat translucentMasks = texture2D(colortex7, texcoord).a;\n\n\tbool isWater = translucentMasks > 0.99;\n\tbool isReflectiveEntity = abs(translucentMasks - 0.8) < 0.01;\n\tbool isReflective = abs(translucentMasks - 0.7) < 0.01 || isWater || isReflectiveEntity;\n\tbool isEntity = abs(translucentMasks - 0.9) < 0.01 || isReflectiveEntity;\n\n  ////// --------------- get volumetrics\n\n\t#ifdef OVERWORLD_SHADER \n\t\tfloat DH_mixedLinearZ = sqrt(texelFetch2D(colortex12,ivec2(gl_FragCoord.xy),0).a/65000.0);\n\t\tvec4 temporallyFilteredVL = VLTemporalFiltering(viewPos, DH_mixedLinearZ, colortex12, hand);\n\t#else\n\t\tvec4 temporallyFilteredVL = VLTemporalFiltering(viewPos, frDepth, depthtex0, hand);\n\t#endif\n\n\tgl_FragData[2] = temporallyFilteredVL;\n\n\tfloat bloomyFogMult = 1.0;\n\n  ////// --------------- distort texcoords as a refraction effect\n\tvec2 refractedCoord = texcoord;\n\n  ////// --------------- MAIN COLOR BUFFER\n\t#if FAKE_REFRACTION_AMOUNT > 0\n\t\tvec3 color = doRefractionEffect(refractedCoord, tangentNormals.xy, linearDistance, isReflectiveEntity, isWater && isEyeInWater == 1);\n\t#else\n\t\tvec3 color = texture2D(colortex3, texcoord).rgb;\n\t#endif\n\n  ////// --------------- START BLENDING FOGS AND FORWARD RENDERED COLOR\n\tvec4 TranslucentShader = texture2D(colortex2, texcoord);\n\n  // blend border fog. be sure to blend before and after forward rendered color blends.\n\t#if defined BorderFog && defined OVERWORLD_SHADER\n\t\tvec4 borderFog = vec4(skyGroundColor, getBorderFogDensity(linearDistance_cylinder, playerPos_normalized, swappedDepth >= 1.0));\n\n\t\t#ifndef SKY_GROUND\n\t\t\tborderFog.rgb = skyFromTex(playerPos_normalized, colortex4)/1200.0 * Sky_Brightness;\n\t\t#endif\n\n\t\t#ifndef DISTANT_HORIZONS\n\t\t\tif(!isWater) color = mix(color, borderFog.rgb, getBorderFogDensity(linearDistance_cylinder_alt, normalize(playerPos_alt), z2 >= 1.0 || TranslucentShader.a <= 0));\n\t\t#endif\n\t#else\n\t\tvec4 borderFog = vec4(0.0);\n\t#endif\n\n  // apply block breaking effect.\n\tif(albedo.a > 0.01 && !isWater && TranslucentShader.a <= 0.0 && !isEntity) color = mix(color*6.0, color, luma(albedo.rgb)) * albedo.rgb;\n  \n  // apply multiplicative color blend for glass n stuff\n\t#ifdef Glass_Tint\n\t\tif(!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))) ;\n\t#endif\n\n  // blend forward rendered programs onto the color.\n\tblendForwardRendering(color, TranslucentShader);\n\n\t#if defined BorderFog && defined OVERWORLD_SHADER\n\t\tcolor = mix(color, borderFog.rgb, getBorderFogDensity(linearDistance_cylinder, playerPos_normalized, swappedDepth >= 1.0));\n\t#endif\n\n  // tweaks to VL for nametag rendering\n\t#ifdef IS_IRIS\n\t\ttemporallyFilteredVL.a = min(temporallyFilteredVL.a + (1.0-nametagbackground),1.0);\n\t\ttemporallyFilteredVL.rgb *= nametagbackground;\n\t#endif\n\n  // bloomy rain effect\n\t#ifdef OVERWORLD_SHADER\n\t\tfloat rainDrops =  clamp(texture2D(colortex9, texcoord).a, 0.0, 1.0); \n\t\tif(rainDrops > 0.0) bloomyFogMult *= clamp(1.0 - pow(rainDrops * 5.0, 2), 0.0, 1.0);\n\t#endif\n \n  // blend all fog types. volumetric fog, volumetric clouds, distance based fogs for lava, powdered snow, blindness, and darkness.\n\tblendAllFogTypes(color, bloomyFogMult, temporallyFilteredVL, linearDistance, playerPos_normalized, cameraPosition, isSky);\n\n////// --------------- RAINBOWS\n\n\t#if RAINBOW > 0 && defined OVERWORLD_SHADER\n\t\tvec3 rainbow = drawRainbow(playerPos);\n\t\tfloat bottomLayerHeight = min(CloudLayer0_height, CloudLayer1_height);\n\t\tfloat bottomLayerTallness = CloudLayer0_height < CloudLayer1_height ? CloudLayer0_tallness : CloudLayer1_tallness;\n\t\trainbow = mix(rainbow * temporallyFilteredVL.a, rainbow, smoothstep(bottomLayerHeight + bottomLayerTallness, bottomLayerHeight, playerPos_normalized.y * RAINBOW_DISTANCE + cameraPosition.y)); // Insert cloud\n\t\tcolor += rainbow;\n\t#endif\n\n////// --------------- FINALIZE\n\t#ifdef display_LUT\n\t\tfloat zoomLevel = 1.0;\n\t\tvec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy/zoomLevel),0).rgb /1200.0;\n\n\t\tif(luma(thingy) > 0.0) {\n\t\t\tcolor.rgb =  thingy;\n\t\t\tbloomyFogMult = 1.0;\n\t\t}\n\n\t\tif(hideGUI == 1) {\n\t\t\t#ifdef OVERWORLD_SHADER\n\t\t\t\tcolor.rgb = skyCloudsFromTex(playerPos_normalized, colortex4).rgb/1200.0;\n\t\t\t#else\n\t\t\t\tcolor.rgb = volumetricsFromTex(playerPos_normalized, colortex4, 0.0).rgb/1200.0;\n\t\t\t#endif\n\t\t}\n\t#endif\n\n\tgl_FragData[0].r = bloomyFogMult; // pass fog alpha so bloom can do bloomy fog\n\tgl_FragData[1].rgb = clamp(color.rgb, 0.0,68000.0);\n}"
  },
  {
    "path": "shaders/dimensions/composite3.vsh",
    "content": "#include \"/lib/settings.glsl\"\n\nout vec2 texcoord;\nflat out vec3 zMults;\n\n#ifdef BorderFog\n\tuniform sampler2D colortex4;\n\tflat out vec3 skyGroundColor;\n#endif\n\nflat out vec3 WsunVec;\nflat out vec2 TAA_Offset;\n\nuniform float far;\nuniform float near;\nuniform float dhFarPlane;\nuniform float dhNearPlane;\n\nuniform mat4 gbufferModelViewInverse;\nuniform vec3 sunPosition;\nuniform float sunElevation;\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n\t#ifdef OVERWORLD_SHADER\n\t\t#ifdef BorderFog\n\t\t\tskyGroundColor = texelFetch2D(colortex4,ivec2(1,37),0).rgb / 1200.0 * Sky_Brightness;\n\t\t#endif\n\t\tWsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\t#endif\n\n\t#ifdef TAA\n\t\tTAA_Offset = offsets[framemod8];\n\t#else\n\t\tTAA_Offset = vec2(0.0);\n\t#endif\n\tzMults = vec3(1.0/(far * near),far+near,far-near);\n\n\tgl_Position = ftransform();\n\ttexcoord = gl_MultiTexCoord0.xy;\n}\n"
  },
  {
    "path": "shaders/dimensions/composite4.fsh",
    "content": "#include \"/lib/settings.glsl\"\n\nuniform sampler2D colortex3;\n// Compute 3x3 min max for TAA\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n/* DRAWBUFFERS:06 */\n\tivec2 center = ivec2(gl_FragCoord.xy);\n\n\t// vec3 current = texelFetch2D(colortex3, center, 0).rgb;\n\t// vec3 cMin = current;\n\t// vec3 cMax = current;\n\t// current = texelFetch2D(colortex3, center + ivec2(-1, -1), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(-1, 0), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(-1, 1), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(0, -1), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(0, 1), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(1, -1), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(1, 0), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// current = texelFetch2D(colortex3, center + ivec2(1, 1), 0).rgb;\n\t// cMin = min(cMin, current);\n\t// cMax = max(cMax, current);\n\t// gl_FragData[0].rgb = cMax;\n\t// gl_FragData[1].rgb = cMin;\n\n\tvec3 col0 = texelFetch2D(colortex3, center, 0).rgb;\n\tvec3 col1 = texelFetch2D(colortex3, center + ivec2(1, 1), 0).rgb;\n\tvec3 col2 = texelFetch2D(colortex3, center + ivec2(1, -1), 0).rgb;\n\tvec3 col3 = texelFetch2D(colortex3, center + ivec2(-1, -1), 0).rgb;\n\tvec3 col4 = texelFetch2D(colortex3, center + ivec2(-1, 1), 0).rgb;\n\tvec3 col5 = texelFetch2D(colortex3, center + ivec2(0, 1), 0).rgb;\n\tvec3 col6 = texelFetch2D(colortex3, center + ivec2(0, -1), 0).rgb;\n\tvec3 col7 = texelFetch2D(colortex3, center + ivec2(-1, 0), 0).rgb;\n\tvec3 col8 = texelFetch2D(colortex3, center + ivec2(1, 0), 0).rgb;\n\n\tvec3 colMax = max(col0,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8))))))));\n\tvec3 colMin = min(col0,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8))))))));\n\n\tvec3 colMax5 = max(col0,max(col5,max(col6,max(col7,col8))));\n\tvec3 colMin5 = min(col0,min(col5,min(col6,min(col7,col8))));\n\n\tcolMin = 0.5 * (colMin + colMin5);\n\tcolMax = 0.5 * (colMax + colMax5);\n\n\tgl_FragData[0].rgb = colMax;\n\tgl_FragData[1].rgb = colMin;\n}"
  },
  {
    "path": "shaders/dimensions/composite4.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;\n\t#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/composite5.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/util.glsl\"\n\n/*\nconst int colortex0Format = RGBA16F;\t\t\t\t// low res clouds (deferred->composite2) + low res VL (composite5->composite15)\nconst int colortex1Format = RGBA16;\t\t\t\t// terrain gbuffer (gbuffer->composite2)\nconst int colortex2Format = RGBA16F;\t\t\t\t// forward + transparencies (gbuffer->composite4)\nconst int colortex3Format = R11F_G11F_B10F;\t\t\t// frame buffer + bloom (deferred6->final)\nconst int colortex4Format = RGBA16F;\t\t\t\t// light values and skyboxes (everything)\nconst int colortex6Format = R11F_G11F_B10F;\t\t\t// additionnal buffer for bloom (composite3->final)\nconst int colortex7Format = RGBA8;\t\t\t\t\t// Final output, transparencies id (gbuffer->composite4)\nconst int colortex8Format = RGBA8;\t\t\t\t\t// Specular Texture\nconst int colortex9Format = RGBA8;\t\t\t\t\t// rain in alpha\nconst int colortex10Format = RGBA16F;\t\t\t\t// resourcepack Skies\nconst int colortex11Format = RGBA16; \t\t\t\t// unchanged translucents albedo, alpha and tangent normals\nconst int colortex12Format = RGBA16F;\t\t\t\t// DISTANT HORIZONS + VANILLA MIXED DEPTHs\nconst int colortex13Format = RGBA16F;\t\t\t\t// low res VL (composite5->composite15)\nconst int colortex14Format = RGBA16;\t\t\t\t// rg = SSAO and SS-SSS. a = skylightmap for translucents.\nconst int colortex15Format = RGBA8;\t\t\t\t// flat normals and vanilla AO\n*/\n\n//no need to clear the buffers, saves a few fps\nconst bool colortex0Clear = false;\nconst bool colortex1Clear = false;\nconst bool colortex2Clear = true;\nconst bool colortex3Clear = false;\nconst bool colortex4Clear = false;\nconst bool colortex5Clear = false;\nconst bool colortex6Clear = false;\nconst bool colortex7Clear = false;\nconst bool colortex8Clear = false;\nconst bool colortex9Clear = true;\nconst bool colortex10Clear = false;\nconst bool colortex11Clear = true;\nconst bool colortex12Clear = false;\nconst bool colortex13Clear = false;\nconst bool colortex14Clear = true;\nconst bool colortex15Clear = false;\n\n#ifdef SCREENSHOT_MODE\n\t/*\n\tconst int colortex5Format = RGBA32F;\t\t\t//TAA buffer (everything)\n\t*/\n#else\n\t/*\n\tconst int colortex5Format = RGBA16F;\t\t\t//TAA buffer (everything)\n\t*/\n#endif\n\nin vec2 texcoord;\nflat in float tempOffsets;\nuniform sampler2D colortex0;\nuniform sampler2D colortex1;\nuniform sampler2D colortex3;\nuniform sampler2D colortex5;\nuniform sampler2D colortex6;\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n\nuniform vec2 texelSize;\nuniform float frameTimeCounter;\nuniform float viewHeight;\nuniform float viewWidth;\n\nuniform mat4 gbufferPreviousModelViewInverse;\n\nuniform int hideGUI;\n\n#ifdef DAMAGE_TAKEN_EFFECT\n\tuniform float CriticalDamageTaken;\n#endif\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/projections.glsl\"\n\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nfloat interleaved_gradientNoise(){\n\treturn fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets);\n}\n\nfloat triangularize(float dither){\n\tfloat center = dither*2.0-1.0;\n\tdither = center*inversesqrt(abs(center));\n\treturn clamp(dither-fsign(center),0.0,1.0);\n}\n\nvec4 fp10Dither(vec4 color ,float dither){\n\tconst vec3 mantissaBits = vec3(6.,6.,5.);\n\tvec3 exponent = floor(log2(color.rgb));\n\treturn vec4(color.rgb + dither*exp2(-mantissaBits)*exp2(exponent), color.a);\n}\n\nvoid convertHandDepth(inout float depth){\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\tdepth = ndcDepth * 0.5 + 0.5;\n}\n\nfloat convertHandDepth2( float depth){\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\treturn ndcDepth * 0.5 + 0.5;\n}\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n#endif\nuniform float near;\nuniform float far;\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nfloat ld(float dist) {\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\n//Modified texture interpolation from inigo quilez\nvec4 smoothfilter(in sampler2D tex, in vec2 uv){\n\tvec2 textureResolution = vec2(viewWidth,viewHeight);\n\tuv = uv*textureResolution + 0.5;\n\tvec2 iuv = floor( uv );\n\tvec2 fuv = fract( uv );\n\n\tuv = iuv + (fuv*fuv)*(3.0-2.0*fuv);\n\tuv = (uv - 0.5)/textureResolution;\n\n\treturn texture2D(tex, uv);\n}\n\nvec2 smoothfilterUV(in vec2 uv){\n\tvec2 textureResolution = vec2(viewWidth,viewHeight);\n\tuv = uv*textureResolution + 0.5;\n\tvec2 iuv = floor( uv );\n\tvec2 fuv = fract( uv );\n\n\tuv = iuv + (fuv*fuv)*(3.0-2.0*fuv);\n\tuv = (uv - 0.5)/textureResolution;\n\n\treturn uv;\n}\n\n//approximation from SMAA presentation from siggraph 2016\nvec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount){\n\tvec2 position = rtMetrics.zw * texcoord;\n\tvec2 centerPosition = floor(position - 0.5) + 0.5;\n\tvec2 f = position - centerPosition;\n\tvec2 f2 = f * f;\n\tvec2 f3 = f * f2;\n\n\tfloat c = sharpenAmount;\n\tvec2 w0 =        -c  * f3 +  2.0 * c         * f2 - c * f;\n\tvec2 w1 =  (2.0 - c) * f3 - (3.0 - c)        * f2         + 1.0;\n\tvec2 w2 = -(2.0 - c) * f3 + (3.0 -  2.0 * c) * f2 + c * f;\n\tvec2 w3 =         c  * f3 -                c * f2;\n\n\tvec2 w12 = w1 + w2;\n\tvec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12);\n\tvec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb;\n\tvec2 tc0 = rtMetrics.xy * (centerPosition - 1.0);\n\tvec2 tc3 = rtMetrics.xy * (centerPosition + 2.0);\n\tvec4 color =   vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) +\n\tvec4(texture2D(colorTex, vec2(tc0.x,  tc12.y)).rgb, 1.0) * (w0.x  * w12.y) +\n\tvec4(centerColor,                                      1.0) * (w12.x * w12.y) +\n\tvec4(texture2D(colorTex, vec2(tc3.x,  tc12.y)).rgb, 1.0) * (w3.x  * w12.y) +\n\tvec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y );\n\n\treturn color.rgb/color.a;\n}\n\nvec3 closestToCamera5taps(vec2 texcoord, sampler2D depth){\n\tvec2 du = vec2(texelSize.x*2., 0.0);\n\tvec2 dv = vec2(0.0, texelSize.y*2.);\n\n\tvec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, \t\t\t\ttexture2D(depth, texcoord - dv - du).x);\n\tvec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depth, texcoord - dv + du).x);\n\tvec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, \t\t\t\t\ttexture2D(depth, texcoord).x);\n\tvec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, \ttexture2D(depth, texcoord + dv - du).x);\n\tvec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, \ttexture2D(depth, texcoord + dv + du).x);\n\n\tvec3 dmin = dmc;\n\tdmin = dmin.z > dtr.z ? dtr : dmin;\n\tdmin = dmin.z > dtl.z ? dtl : dmin;\n\tdmin = dmin.z > dbl.z ? dbl : dmin;\n\tdmin = dmin.z > dbr.z ? dbr : dmin;\n\n\t#ifdef TAA_UPSCALING\n\t\tdmin.xy = dmin.xy/RENDER_SCALE;\n\t#endif\n\n\treturn dmin;\n}\n\nvec3 closestToCamera5taps_DH(vec2 texcoord, sampler2D depth, sampler2D dhDepth, bool depthCheck){\n\tvec2 du = vec2(texelSize.x*2., 0.0);\n\tvec2 dv = vec2(0.0, texelSize.y*2.);\n\n\tvec3 dtl = vec3(texcoord,0.);\n\tvec3 dtr = vec3(texcoord,0.);\n\tvec3 dmc = vec3(texcoord,0.);\n\tvec3 dbl = vec3(texcoord,0.);\n\tvec3 dbr = vec3(texcoord,0.);\n\n\tdtl += vec3(-texelSize, \t\t\t\t\tdepthCheck ? texture2D(dhDepth, texcoord - dv - du).x\t:\ttexture2D(depth, texcoord - dv - du).x);\n\tdtr += vec3( texelSize.x, -texelSize.y, \tdepthCheck ? texture2D(dhDepth, texcoord - dv + du).x\t:\ttexture2D(depth, texcoord - dv + du).x);\n\tdmc += vec3( 0.0, 0.0, \t\t\t\t   \t\tdepthCheck ? texture2D(dhDepth, texcoord).x\t\t\t\t:\ttexture2D(depth, texcoord).x);\n\tdbl += vec3(-texelSize.x, texelSize.y, \t\tdepthCheck ? texture2D(dhDepth, texcoord + dv - du).x\t:\ttexture2D(depth, texcoord + dv - du).x);\n\tdbr += vec3( texelSize.x, texelSize.y, \t\tdepthCheck ? texture2D(dhDepth, texcoord + dv + du).x\t:\ttexture2D(depth, texcoord + dv + du).x);\n\n\tvec3 dmin = dmc;\n\tdmin = dmin.z > dtr.z ? dtr : dmin;\n\tdmin = dmin.z > dtl.z ? dtl : dmin;\n\tdmin = dmin.z > dbl.z ? dbl : dmin;\n\tdmin = dmin.z > dbr.z ? dbr : dmin;\n\n\t#ifdef TAA_UPSCALING\n\t\tdmin.xy = dmin.xy/RENDER_SCALE;\n\t#endif\n\n\treturn dmin;\n}\n\nvec4 computeTAA(vec2 texcoord, bool hand){\n\n\tvec2 jitter = offsets[framemod8]*texelSize*0.5;\n\tvec2 adjTC = clamp(texcoord*RENDER_SCALE - texelSize*0.5, vec2(0.0), RENDER_SCALE- texelSize*1.5);\n\tvec2 adjTC_noJitter = adjTC + jitter;\n\n\t// get previous frames position stuff for UV\t\n\t//use velocity from the nearest texel from camera in a 3x3 box in order to improve edge quality in motion\t\n\t#ifdef DISTANT_HORIZONS\n\t\tbool depthCheck = texture2D(depthtex0,adjTC).x >= 1.0;\n\t\tvec3 closestToCamera = closestToCamera5taps_DH(adjTC, depthtex0, dhDepthTex, depthCheck);\n\t\tvec3 viewPos = toScreenSpace_DH_special(closestToCamera, depthCheck);\n\t#else\n\t\tvec3 closestToCamera = closestToCamera5taps(adjTC, depthtex0);\n\t\tvec3 viewPos = toScreenSpace(closestToCamera);\n\t#endif\n\n\tvec3 previousPosition = toPreviousPos(viewPos);\n\n\t#ifdef DISTANT_HORIZONS\n\t\tpreviousPosition = toClipSpace3Prev_DH(previousPosition, depthCheck);\n\t#else\n\t\tpreviousPosition = toClipSpace3Prev(previousPosition);\n\t#endif\n\n\tvec2 velocity = previousPosition.xy - closestToCamera.xy;\n\n\tpreviousPosition.xy = texcoord + (hand ? vec2(0.0) : velocity);\n\n\t// sample current frame, and make sure it is de-jittered\n\t#ifdef TAA_UPSCALING\n\t\tvec3 currentFrame = smoothfilter(colortex3, adjTC_noJitter).rgb;\n\t#else\n\t\tvec3 currentFrame = texelFetch2D(colortex3, ivec2(adjTC_noJitter/texelSize), 0).rgb;\n\t#endif\n\n\t//reject history if off-screen and early exit\n\tif (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return vec4(currentFrame, 1.0);\n\n\t#ifdef TAA_UPSCALING\n\t\t// Interpolating neighboorhood clampling boundaries between pixels\n\t\tvec3 colMax = texture2D(colortex0, adjTC).rgb;\n\t\tvec3 colMin = texture2D(colortex6, adjTC).rgb;\n\t#else\n\t\t// 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\n\t\tvec3 col0 = currentFrame; // can use this because its the center sample.\n\t\tvec3 col1 = texture2D(colortex3, adjTC_noJitter + vec2( texelSize.x,\t texelSize.y)).rgb;\n\t\tvec3 col2 = texture2D(colortex3, adjTC_noJitter + vec2( texelSize.x,\t-texelSize.y)).rgb;\n\t\tvec3 col3 = texture2D(colortex3, adjTC_noJitter + vec2(-texelSize.x,\t-texelSize.y)).rgb;\n\t\tvec3 col4 = texture2D(colortex3, adjTC_noJitter + vec2(-texelSize.x,\t texelSize.y)).rgb;\n\t\tvec3 col5 = texture2D(colortex3, adjTC_noJitter + vec2( 0.0,\t\t\t texelSize.y)).rgb;\n\t\tvec3 col6 = texture2D(colortex3, adjTC_noJitter + vec2( 0.0,\t\t\t-texelSize.y)).rgb;\n\t\tvec3 col7 = texture2D(colortex3, adjTC_noJitter + vec2(-texelSize.x,\t\t\t0.0)).rgb;\n\t\tvec3 col8 = texture2D(colortex3, adjTC_noJitter + vec2( texelSize.x,\t\t\t0.0)).rgb;\n\n\t\tvec3 colMax = max(col0,max(col1,max(col2,max(col3, max(col4, max(col5, max(col6, max(col7, col8))))))));\n\t\tvec3 colMin = min(col0,min(col1,min(col2,min(col3, min(col4, min(col5, min(col6, min(col7, col8))))))));\n\t\t\n\t\tcolMin = 0.5 * (colMin + min(col0,min(col5,min(col6,min(col7,col8)))));\n\t\tcolMax = 0.5 * (colMax + max(col0,max(col5,max(col6,max(col7,col8)))));\n\t#endif\n\t\n\t#ifdef DAMAGE_TAKEN_EFFECT\n\t\t////// when this triggers, use current frame UV to sample history, for a funny trailing effect.\n\t\tif(CriticalDamageTaken > 0.01) previousPosition.xy = texcoord;\n\t#endif\n\n\tvec3 frameHistory = max(FastCatmulRom(colortex5, previousPosition.xy, vec4(texelSize, 1.0/texelSize), 0.75).xyz,0.0);\n\tvec3 clampedframeHistory = clamp(frameHistory, colMin, colMax);\n\n\tfloat blendingFactor = BLEND_FACTOR;\n\n\t// reduce history usage if the camera moves to reduce artifacts in motion.\n\tfloat cameraMovement = length(velocity/texelSize);\n\tblendingFactor = clamp(cameraMovement, blendingFactor, BLEND_FACTOR_DURING_MOVEMENT);\n\tif(hand) blendingFactor = clamp(cameraMovement, blendingFactor, 1.0);\n\n\t////// Increases blending factor when far from AABB, reduces ghosting\n\tblendingFactor = clamp(blendingFactor + luma(abs(clampedframeHistory - frameHistory)/clampedframeHistory),0.0,1.0);\n\n\t////// Blend current pixel with clamped history, apply fast tonemap beforehand to reduce flickering\n\tvec3 finalResult = invTonemap(mix(tonemap(clampedframeHistory), tonemap(currentFrame), blendingFactor));\n\n\t#ifdef DAMAGE_TAKEN_EFFECT\n\t\t////// when this triggers, do a funny trailing effect.\n\t\tif(CriticalDamageTaken > 0.01) finalResult = mix(finalResult, frameHistory, sqrt(CriticalDamageTaken)*0.8);\n\t#endif\n\t#ifdef SCREENSHOT_MODE\n\t\t// when this is on, do \"infinite frame accumulation\"\n\t\tif (hideGUI == 0) return vec4(finalResult, 1.0);\n\n\t\tvec4 superSampledHistory = texture2D(colortex5, previousPosition.xy);\n\t\tvec3 superSampledResult = superSampledHistory.rgb * superSampledHistory.a + currentFrame;\n\n\t\treturn vec4(superSampledResult/(superSampledHistory.a+1.0), superSampledHistory.a+1.0);\n\t#endif\n\n\treturn vec4(finalResult, 1.0);\n}\n\nvoid main() {\n/* DRAWBUFFERS:5 */\n\t#ifdef TAA\n\t\tvec2 taauTC = clamp(texcoord*RENDER_SCALE, vec2(0.0), RENDER_SCALE - texelSize*2.0);\n\n\t\tfloat dataUnpacked = decodeVec2(texelFetch2D(colortex1,ivec2(gl_FragCoord.xy*RENDER_SCALE),0).w).y; \n\n\t\tbool hand = abs(dataUnpacked-0.75) < 0.01 && texture2D(depthtex1,taauTC).x < 1.0;\n\n\t\tvec4 color = computeTAA(texcoord, hand);\n\n\t\t#ifdef SCREENSHOT_MODE\n\t\t\tgl_FragData[0] = clamp(color, 0.0, 65000.0);\n\t\t#else\n\t\t\tgl_FragData[0] = clamp(fp10Dither(color, triangularize(interleaved_gradientNoise())), 0.0, 65000.0);\n\t\t#endif\n\t#else\n\t\tvec3 color = clamp(fp10Dither(vec4(texture2D(colortex3,texcoord).rgb,1.0), triangularize(interleaved_gradientNoise())).rgb,0.0,65000.);\n\t\tgl_FragData[0].rgb = color;\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/composite5.vsh",
    "content": "#include \"/lib/res_params.glsl\"\n#include \"/lib/util.glsl\"\n\nout vec2 texcoord;\nflat out float tempOffsets;\n\nuniform int frameCounter;\nuniform int framemod8;\n#include \"/lib/TAA_jitter.glsl\"\n\nvoid main() {\n\n\tgl_Position = ftransform();\n\ttexcoord = gl_MultiTexCoord0.xy;\n\n\ttempOffsets = Hammersley(frameCounter%10000);\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/composite6.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n\nuniform sampler2D depthtex0;\nuniform sampler2D colortex1;\nuniform sampler2D colortex5;\nuniform vec2 texelSize;\nuniform float viewWidth;\nuniform float viewHeight;\n\nvec2 decodeVec2(float a){\n    const vec2 constant1 = 65535. / vec2(256., 65536.);\n    const float constant2 = 256. / 255.;\n    return fract(a * constant1) * constant2;\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n/* DRAWBUFFERS:3 */\n\nvec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.);\nvec2 quarterResTC = gl_FragCoord.xy*2.0*resScale*texelSize;\n\n// vec2 texcoord = (gl_FragCoord.xy*2.0*resScale*texelSize) * RENDER_SCALE; \n\n// bool hand = abs(decodeVec2(texture2D(colortex1,texcoord).w).y-0.75) < 0.01 && texture2D(depthtex0,texcoord).x < 1.0;\n\n\t\t//0.5\n\t\tgl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5;\n\n\t\t//0.25\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125;\n\n\t\t//0.125\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125;\n\n\t\t//0.125\n\t\tgl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125;\n\n\t\tgl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);\n\t\tif (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);\n\n}\n"
  },
  {
    "path": "shaders/dimensions/composite6.vsh",
    "content": "uniform float viewWidth;\nuniform float viewHeight;\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\t//Improves performances and makes sure bloom radius stays the same at high resolution (>1080p)\n\tvec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\tgl_Position = ftransform();\n\t//*0.51 to avoid errors when sampling outside since clearing is disabled\n\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0;\n}\n"
  },
  {
    "path": "shaders/dimensions/composite7.fsh",
    "content": "uniform sampler2D colortex3;\nuniform vec2 texelSize;\nuniform float viewWidth;\nuniform float viewHeight;\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n/* DRAWBUFFERS:6 */\nvec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.);\nvec2 quarterResTC = gl_FragCoord.xy*2.*texelSize;\n\n\t\t//0.5\n\t\tgl_FragData[0] = texture2D(colortex3,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5;\n\n\t\t//0.25\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125;\n\n\t\t//0.125\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125;\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125;\n\n\t\t//0.125\n\t\tgl_FragData[0] += texture2D(colortex3,quarterResTC)*0.125;\n\n\t\tgl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);\n\n\n\n}\n"
  },
  {
    "path": "shaders/dimensions/composite7.vsh",
    "content": "uniform float viewWidth;\nuniform float viewHeight;\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\t//Improves performances and makes sure bloom radius stays the same at high resolution (>1080p)\n\tvec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\tgl_Position = ftransform();\n\t//*0.51 to avoid errors when sampling outside since clearing is disabled\n\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26/clampedRes*vec2(1920.0,1080.)*2-1.0;\n}\n"
  },
  {
    "path": "shaders/dimensions/composite8.fsh",
    "content": "uniform sampler2D colortex6;\nuniform vec2 texelSize;\nin vec2 texcoord;\nuniform float viewWidth;\nuniform float viewHeight;\n\nvec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\nvec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){\n\tvec4 tot = vec4(0.);\n\tfloat maxTC = 0.25*resScale.x;\n\tfloat minTC = 0.;\n\tfor (int i = -maxIT;i<maxIT+1;i++){\n\t\tfloat weight = exp(-i*i*alpha*4.0);\n\t\t//here we take advantage of bilinear filtering for 2x less sample, as a side effect the gaussian won't be totally centered for small blurs\n\t\tvec2 spCoord = coord+dir*texelSize*(2.0*i+0.5);\n\t\ttot += vec4(texture2D(colortex6,spCoord).rgb,1.0)*weight*float(spCoord.x > minTC && spCoord.x < maxTC);\n\t}\n\treturn  tot.rgb/max(1.0,tot.a);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n/* DRAWBUFFERS:6 */\n\n\tvec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize;\n\n\tvec2 gaussDir = vec2(1.0,0.0);\n\tgl_FragData[0].rgb = vec3(0.0);\n\n\tvec2 tc2 = texcoord*vec2(2.0,1.)/2.;\n\tif (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(tc2/2,gaussDir,0.16,0);\n\n\tvec2 tc4 = texcoord*vec2(4.0,1.)/2.-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*2.0;\n\tif (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(tc4/2,gaussDir,0.16,3);\n\n\tvec2 tc8 = texcoord*vec2(8.0,1.)/2.-vec2(0.75*resScale.x+8.*texelSize.x,0.)*4.0;\n\tif (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(tc8/2,gaussDir,0.035,6);\n\n\tvec2 tc16 = texcoord*vec2(8.0,1./2.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*8.0;\n\tif (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(tc16/2,gaussDir,0.0085,12);\n\n\tvec2 tc32 = texcoord*vec2(16.0,1./2.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*16.0;\n\tif (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(tc32/2,gaussDir,0.002,28);\n\n\tvec2 tc64 = texcoord*vec2(32.0,1./2.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*32.0;\n\tif (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(tc64/2,gaussDir,0.0005,60);\n\n\tgl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);\n}"
  },
  {
    "path": "shaders/dimensions/composite8.vsh",
    "content": "uniform float viewWidth;\nuniform float viewHeight;\nout vec2 texcoord;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tvec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0));\n\tgl_Position = ftransform();\n\t//0-0.25\n\tgl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0;\n\t//0-0.5\n\tgl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0;\n\ttexcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.);\n}\n"
  },
  {
    "path": "shaders/dimensions/composite9.fsh",
    "content": "uniform sampler2D colortex6;\nuniform vec2 texelSize;\nin vec2 texcoord;\nuniform float viewWidth;\nuniform float viewHeight;\n\nvec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\nvec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){\n\tvec4 tot = vec4(0.);\n\tfloat maxTC = 0.25*resScale.y;\n\tfloat minTC = 0.;\n\tfor (int i = -maxIT;i<maxIT+1;i++){\n\t\tfloat weight = exp(-i*i*alpha*4.0);\n\t\tvec2 spCoord = coord+dir*texelSize*(2.0*i+0.5);\n\t\ttot += vec4(texture2D(colortex6,spCoord).rgb,1.0)*weight*float(spCoord.y > minTC && spCoord.y < maxTC);\n\t}\n\treturn  tot.rgb/max(1.0,tot.a);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n/* DRAWBUFFERS:6 */\n\n\tvec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize;\n\n\tvec2 gaussDir = vec2(0.0,1.0);\n\tgl_FragData[0].rgb = vec3(0.0);\n\n\tvec2 tc2 = texcoord*vec2(2.0,1.);\n\tif (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,4.0),gaussDir,0.16,0);\n\n\tvec2 tc4 = texcoord*vec2(4.0,2.)-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*4.0;\n\tif (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,2.0),gaussDir,0.16,3);\n\n\tvec2 tc8 = texcoord*vec2(8.0,4.)-vec2(0.75*resScale.x+8.*texelSize.x,0.)*8.0;\n\tif (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,2.0)/vec2(2.0,2.0),gaussDir,0.035,6);\n\n\tvec2 tc16 = texcoord*vec2(16.0,8.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*16.0;\n\tif (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,4.0)/vec2(2.0,2.0),gaussDir,0.0085,12);\n\n\tvec2 tc32 = texcoord*vec2(32.0,16.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*32.0;\n\tif (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,8.0)/vec2(2.0,2.0),gaussDir,0.002,30);\n\n\tvec2 tc64 = texcoord*vec2(64.0,32.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*64.0;\n\tif (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y)\n\t\tgl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,16.0)/vec2(2.0,2.0),gaussDir,0.0005,60);\n\n\tgl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);\n}"
  },
  {
    "path": "shaders/dimensions/composite9.vsh",
    "content": "uniform float viewWidth;\nuniform float viewHeight;\nout vec2 texcoord;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tvec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0));\n\tgl_Position = ftransform();\n\t//0-0.25\n\tgl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0;\n\t//0-0.5\n\tgl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0;\n\ttexcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.);\n\n}\n"
  },
  {
    "path": "shaders/dimensions/deferred.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\nflat in vec3 averageSkyCol_Clouds;\nflat in vec3 averageSkyCol;\n\nflat in vec3 lightSourceColor;\nflat in vec3 sunColor;\nflat in vec3 moonColor;\n\nflat in vec2 tempOffsets;\n\nflat in float exposure;\nflat in float avgBrightness;\nflat in float rodExposure;\nflat in float avgL2;\nflat in float centerDepth;\n\nuniform sampler2D colortex1;\nuniform sampler2D colortex4;\n\nuniform float frameTime;\nuniform float frameTimeCounter;\nuniform int worldTime;\nuniform int worldDay;\nuniform float rainStrength;\nuniform float eyeAltitude;\nuniform vec3 sunVec;\nuniform vec2 texelSize;\nuniform mat4 shadowModelViewI;\nuniform float sunElevation;\nuniform vec3 sunPosition;\nuniform vec3 moonPosition;\nuniform ivec2 eyeBrightnessSmooth;\n// uniform ivec2 eyeBrightness;\nuniform float caveDetection;\nuniform int isEyeInWater;\nuniform float nightVision;\n\nvec4 lightCol = vec4(lightSourceColor, float(sunElevation > 1e-5)*2-1.);\n\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/waterBump.glsl\"\n\n#include \"/lib/projections.glsl\"\n#include \"/lib/DistantHorizons_projections.glsl\"\n\n#include \"/lib/scene_controller.glsl\"\n#include \"/lib/atmosphere.glsl\"\n#include \"/lib/sky_gradient.glsl\"\nvec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec;\n\n#define DHVLFOG\n\nuniform float near;\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\nfloat invLinZ (float lindepth){\n\treturn -((2.0*near/lindepth)-far-near)/(far-near);\n}\n\n#ifdef OVERWORLD_SHADER\n\t// uniform sampler2D colortex12;\n\t// const bool shadowHardwareFiltering = true;\n\tuniform sampler2DShadow shadow;\n\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tuniform sampler2D shadowcolor0;\n\t\tuniform sampler2DShadow shadowtex0;\n\t\tuniform sampler2DShadow shadowtex1;\n\t#endif\n\n\t#include \"/lib/lightning_stuff.glsl\"\n\n\t#define VL_CLOUDS_DEFERRED\n\n\t#include \"/lib/climate_settings.glsl\"\n\t#include \"/lib/volumetricClouds.glsl\"\n\t#include \"/lib/overworld_fog.glsl\"\n\t#include \"/lib/aurora.glsl\"\n#endif\n\n#ifdef NETHER_SHADER\n\t#include \"/lib/nether_fog.glsl\"\n#endif\n\n#ifdef END_SHADER\n\t#include \"/lib/end_fog.glsl\"\n#endif\n\nvec3 rodSample(vec2 Xi){\n\tfloat r = sqrt(1.0f - Xi.x*Xi.y);\n\tfloat phi = TAU * Xi.y;\n\n\treturn normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy;\n}\n\nuniform bool worldTimeChangeCheck;\n\nuniform int hideGUI;\n\nvoid main() {\n/* DRAWBUFFERS:4 */\n\n\tgl_FragData[0] = vec4(0.0);\n\n\tfloat mixhistory = 0.06;\n\n\t#ifdef OVERWORLD_SHADER\n\n\t//////////////////////////////////////////////\n\t/// --- STORE DAILY WEATHER PARAMETERS --- ///\n\t//////////////////////////////////////////////\n\n\t\t// the idea is to store the 8 values, coverage + density of 3 cloud layers and 2 fog density values.\n\n\t\tif (gl_FragCoord.x > 1 && gl_FragCoord.x < 4 && gl_FragCoord.y > 1 && gl_FragCoord.y < 4){\n\t\t\tmixhistory = 10.0 * frameTime;\n\n\t\t\tgl_FragData[0].rgb = writeSceneControllerParameters(gl_FragCoord.xy, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t\t}\n\n\t///////////////////////////////\n\t/// --- STORE COLOR LUT --- ///\n\t///////////////////////////////\n\n\t\tvec3 AmbientLightTint = vec3(AmbientLight_R, AmbientLight_G, AmbientLight_B);\n\n\t\t// --- the color of the atmosphere + the average color of the atmosphere.\n\t\tvec3 skyGroundCol = skyFromTex(vec3(0, -1 ,0), colortex4).rgb;// * clamp(WsunVec.y*2.0,0.2,1.0);\n\n\t\t/// --- Save light values\n\t\tif (gl_FragCoord.x < 1. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) {\n\t\t\tgl_FragData[0] = vec4(averageSkyCol_Clouds * AmbientLightTint,1.0);\n\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t}\n\t\tif (gl_FragCoord.x > 1. && gl_FragCoord.x < 2.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) {\n\t\t\tgl_FragData[0] = vec4((skyGroundCol/150.0) * AmbientLightTint,1.0);\n\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t}\n\t\t#ifdef ambientLight_only\n\t\t\tif (gl_FragCoord.x > 6. && gl_FragCoord.x < 7.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1)\n\t\t\t\tgl_FragData[0] = vec4(0.0,0.0,0.0,1.0);\n\n\t\t\tif (gl_FragCoord.x > 8. && gl_FragCoord.x < 9.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1)\n\t\t\t\tgl_FragData[0] = vec4(0.0,0.0,0.0,1.0);\n\n\t\t\tif (gl_FragCoord.x > 13. && gl_FragCoord.x < 14.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1)\n\t\t\t\tgl_FragData[0] = vec4(0.0,0.0,0.0,1.0);\n\t\t#else\n\t\t\tif (gl_FragCoord.x > 6. && gl_FragCoord.x < 7.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) {\n\t\t\t\tgl_FragData[0] = vec4(lightSourceColor,1.0);\n\t\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t\t}\n\n\t\t\tif (gl_FragCoord.x > 8. && gl_FragCoord.x < 9.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) {\n\t\t\t\tgl_FragData[0] = vec4(sunColor,1.0);\n\t\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t\t}\n\n\t\t\tif (gl_FragCoord.x > 9. && gl_FragCoord.x < 10.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1) {\n\t\t\t\tgl_FragData[0] = vec4(moonColor,1.0);\n\t\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t\t}\n\t\t#endif\n\n\t\t#if defined FLASHLIGHT && defined FLASHLIGHT_BOUNCED_INDIRECT\n\n\t\t\t// sample center pixel of albedo color, and interpolate it overtime.\n\t\t\tif (gl_FragCoord.x > 15 && gl_FragCoord.x < 16 && gl_FragCoord.y > 2 && gl_FragCoord.y < 3){\n\n\t\t\t\tmixhistory = 0.01;\n\n\t\t\t\tvec3 data = texelFetch2D(colortex1, ivec2(0.5/texelSize), 0).rgb;\n\t\t\t\tvec3 decodeAlbedo = vec3(decodeVec2(data.x).x,decodeVec2(data.y).x, decodeVec2(data.z).x);\n\t\t\t\tvec3 albedo = toLinear(decodeAlbedo);\n\n\t\t\t\talbedo = normalize(albedo + 1e-7) * (dot(albedo,vec3(0.21, 0.72, 0.07))*0.5+0.5);\n\n\t\t\t\tgl_FragData[0] = vec4(albedo,1.0);\n\t\t\t}\n\t\t#endif\n\n////////////////////////////////\n/// --- ATMOSPHERE IMAGE --- ///\n////////////////////////////////\n\n/// --- Sky only\n\n\t\tif (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){\n\t\t\tvec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.,1.))/256.+tempOffsets/256.,0.0,1.0);\n\t\t\tvec3 viewVector = cartToSphere(p);\n\n\t\t\tvec2 planetSphere = vec2(0.0);\n\t\t\tvec3 sky = vec3(0.0);\n\t\t\tvec3 skyAbsorb = vec3(0.0);\n\n\t\t\tsky = calculateAtmosphere((averageSkyCol*4000.0/2.0), viewVector, vec3(0.0,1.0,0.0), WsunVec, -WsunVec, planetSphere, skyAbsorb, blueNoise());\n\n\t\t\t// fade atmosphere conditions for rain away when you pass above the cloud plane.\n\t\t\tfloat heightRelativeToClouds = clamp(1.0 - max(eyeAltitude - CloudLayer0_height,0.0) / 200.0 ,0.0,1.0);\n\t\t\tif(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);\n\t\n\t\t\t#ifdef AEROCHROME_MODE\n\t\t\t\tsky *= vec3(0.0, 0.18, 0.35);\n\t\t\t#endif\n\n\t\t\tgl_FragData[0] = vec4(sky / 4000.0 , 1.0);\n  \n\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t}\n\n/// --- Sky + clouds + fog \n\n\t\tif (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+257.){\n\t\t\tvec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.+tempOffsets/256.,0.0,1.0);\n\t\t\tvec3 viewVector = cartToSphere(p);\n\n\t\t\tvec3 viewPos = mat3(gbufferModelView)*viewVector*1024.0;\n\t\t\tfloat noise = interleaved_gradientNoise_temporal();\n\n\t\t\tWsunVec = normalize(toWorldSpace(sunPosition));// * (float(sunElevation > 1e-5)*2.0-1.0);\n\t\t\tvec3 WmoonVec = normalize(toWorldSpace(moonPosition));\n\n\t\t\tif(dot(-WmoonVec, WsunVec) < 0.9999) WmoonVec = -WmoonVec;\n\n\t\t\tWsunVec = mix(WmoonVec, WsunVec, clamp(float(sunElevation > 1e-5)*2.0-1.0 ,0,1));\n\n\t\t\tvec3 sky = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy)-ivec2(257,0),0).rgb/150.0;\n\t\t\tsky = mix(averageSkyCol_Clouds * AmbientLightTint * 0.25, sky,  pow(clamp(viewVector.y+1.0,0.0,1.0),5.0));\n\t\n\t\t\tvec3 suncol = lightSourceColor;\n\n\t\t\t#ifdef ambientLight_only\n\t\t\t\tsuncol = vec3(0.0);\n\t\t\t#endif\n\n\t\t\tfloat cloudPlaneDistance = 0.0;\n \t\t\tvec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, suncol*2.5, skyGroundCol/30.0, cloudPlaneDistance);\n\n\t\t\tfloat atmosphereAlpha = 1.0;\n\t\t\tvec4 volumetricFog = GetVolumetricFog(viewPos, WsunVec, vec2(noise, 1.0-noise), suncol*2.5, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha, volumetricClouds.rgb, cloudPlaneDistance);\n\n\t\t\tsky += volumetricClouds.rgb * volumetricClouds.a + volumetricFog.rgb * volumetricFog.a;\n\n\t\t\tgl_FragData[0] = vec4(sky,1.0);\n\n\t\t\tif(worldTimeChangeCheck) mixhistory = 1.0;\n\t\t}\n\t#endif\n\n\t#if defined NETHER_SHADER || defined END_SHADER\n\t\tvec2 fogPos = vec2(256.0 - 256.0*0.12,1.0);\n\n\t\t//Sky gradient with clouds\n\t\tif (gl_FragCoord.x > (fogPos.x - fogPos.x*0.22) && gl_FragCoord.y > 0.4 && gl_FragCoord.x < 535){\n\t\t\tvec2 p = clamp(floor(gl_FragCoord.xy-fogPos)/256.+tempOffsets/256.,-0.2,1.2);\n\t\t\tvec3 viewVector = cartToSphere(p);\n\t\t\tfloat noise = interleaved_gradientNoise_temporal();\n\n\t \t\tvec3 BackgroundColor = vec3(0.0);\n\n\t\t\tvec4 VL_Fog = GetVolumetricFog(mat3(gbufferModelView)*viewVector*256., noise, 1.0-noise);\n\n\t\t\tBackgroundColor += VL_Fog.rgb + vec3(0.5,0.75,1.0) * nightVision;\n\n\t  \t\tgl_FragData[0] = vec4(BackgroundColor*8.0, 1.0);\n\n\t\t}\n\t#endif\n\n\t#ifdef END_SHADER\n\t/* ---------------------- TIMER ---------------------- */\n\n\t\tfloat flash = 0.0;\n\t\tfloat maxWaitTime = 5;\n\n\t\tfloat Timer = texelFetch2D(colortex4, ivec2(3,1), 0).x/150.0;\n\t\tTimer -= frameTime;\n\n\t\tif(Timer <= 0.0){\n\t\t\tflash = 1.0;\n\n\t\t\tTimer = pow(hash11(frameCounter), 5) * maxWaitTime;\n\t\t}\n\n\t\tvec2 pixelPos0 = vec2(3,1);\n\t\tif (gl_FragCoord.x > pixelPos0.x && gl_FragCoord.x < pixelPos0.x + 1 && gl_FragCoord.y > pixelPos0.y && gl_FragCoord.y < pixelPos0.y + 1){\n\t\t\tmixhistory = 1.0;\n\t\t\tgl_FragData[0] = vec4(Timer, 0.0, 0.0, 1.0);\n\t\t}\n\n\t/* ---------------------- FLASHING ---------------------- */\n\n\t\tvec2 pixelPos1 = vec2(1,1);\n\t\tif (gl_FragCoord.x > pixelPos1.x && gl_FragCoord.x < pixelPos1.x + 1 && gl_FragCoord.y > pixelPos1.y && gl_FragCoord.y < pixelPos1.y + 1){\n\t\t\tmixhistory = clamp(4.0 * frameTime,0.0,1.0);\n\t\t\tgl_FragData[0] = vec4(flash, 0.0, 0.0, 1.0);\n\t\t}\n\n\t/* ---------------------- POSITION ---------------------- */\n\n\t\tvec2 pixelPos2 = vec2(2,1);\n\t\tif (gl_FragCoord.x > pixelPos2.x && gl_FragCoord.x < pixelPos2.x + 1 && gl_FragCoord.y > pixelPos2.y && gl_FragCoord.y < pixelPos2.y + 1){\n\t\t\tmixhistory = clamp(500.0 * frameTime,0.0,1.0);\n\n\t\t\tvec3 LastPos = (texelFetch2D(colortex4,ivec2(2,1),0).xyz/150.0) * 2.0 - 1.0;\n\t\t\n\t\t\tLastPos += (hash31(frameCounter / 50) * 2.0 - 1.0);\n\t\t\tLastPos = LastPos * 0.5 + 0.5;\n\n\t\t\tif(Timer > maxWaitTime * 0.7 ){ \n\t\t\t\tLastPos = vec3(0.0);\n\t\t\t}\n\n\t\t\tgl_FragData[0] = vec4(LastPos, 1.0);\n\t\t}\n\t#endif\n\n\t//Temporally accumulate sky and light values\n\tvec3 frameHistory = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb;\n\tvec3 currentFrame = gl_FragData[0].rgb*150.;\n\n\tgl_FragData[0].rgb = clamp(mix(frameHistory, currentFrame, clamp(mixhistory,0.0,1.0)),0.0,65000.);\n\n\t//Exposure values\n\tif (gl_FragCoord.x > 10. && gl_FragCoord.x < 11.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1)\n\t\tgl_FragData[0] = vec4(exposure, avgBrightness, avgL2,1.0);\n\tif (gl_FragCoord.x > 14. && gl_FragCoord.x < 15.  && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1)\n\t\tgl_FragData[0] = vec4(rodExposure, centerDepth,0.0, 1.0);\n}"
  },
  {
    "path": "shaders/dimensions/deferred.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/util.glsl\"\n\n// uniform int dhRenderDistance;\nuniform float frameTimeCounter;\n#include \"/lib/Shadow_Params.glsl\"\n\nflat out vec3 averageSkyCol_Clouds;\nflat out vec3 averageSkyCol;\n\nflat out vec3 sunColor;\nflat out vec3 moonColor;\nflat out vec3 lightSourceColor;\n\nflat out vec2 tempOffsets;\n\nflat out float exposure;\nflat out float avgBrightness;\nflat out float rodExposure;\nflat out float avgL2;\nflat out float centerDepth;\n\nuniform int hideGUI;\n\nuniform sampler2D colortex4;\nuniform sampler2D colortex6;\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\nuniform sampler2D depthtex2;\n\nuniform mat4 gbufferModelViewInverse;\nuniform vec3 sunPosition;\nuniform vec2 texelSize;\nuniform float sunElevation;\nuniform float eyeAltitude;\nuniform float near;\n// uniform float far;\nuniform float frameTime;\nuniform int frameCounter;\nuniform int worldTime;\nuniform int worldDay;\nuniform float rainStrength;\nuniform float nightVision;\n\n#include \"/lib/climate_settings.glsl\"\n#include \"/lib/scene_controller.glsl\"\n#include \"/lib/atmosphere.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n#include \"/lib/aurora.glsl\"\n\nvec3 rodSample(vec2 Xi) {\n\tfloat r = sqrt(1.0 - Xi.x * Xi.y);\n\tfloat phi = TAU * Xi.y;\n\n\treturn normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy;\n}\n\nfloat ld(float depth) {\n\treturn (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near\n}\n\nvoid main() {\n\n\tgl_Position = ftransform() * 0.5 + 0.5;\n\tgl_Position.xy = gl_Position.xy * vec2(18.0 + 258.0 * 2.0, 258.0) * texelSize;\n\tgl_Position.xy = gl_Position.xy * 2.0 - 1.0;\n\n\t#ifdef OVERWORLD_SHADER\n\t\tvec3 sunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n///////////////////////////////////\n/// --- AMBIENT LIGHT STUFF --- ///\n///////////////////////////////////\n\n\t\taverageSkyCol_Clouds = vec3(0.0);\n\t\taverageSkyCol = vec3(0.0);\n\n\t\tvec2 sample3x3[9] = vec2[](\n\t\t\tvec2(-1.0, -0.3),\n\t\t\tvec2( 0.0,  0.0),\n\t\t\tvec2( 1.0, -0.3),\n\n\t\t\tvec2(-1.0, -0.5),\n\t\t\tvec2( 0.0, -0.5),\n\t\t\tvec2( 1.0, -0.5),\n\n\t\t\tvec2(-1.0, -1.0),\n\t\t\tvec2( 0.0, -1.0),\n\t\t\tvec2( 1.0, -1.0)\n\t\t);\n\n\t\t// sample in a 3x3 pattern to get a good area for average color\n\t\tfloat maxIT = 20.0;\n\t\tfor (int i = 0; i < int(maxIT); i++) {\n\t\t\tvec2 ij = R2_samples(((i*50+1)%1000)*int(maxIT)+i) ;//* vec2(0.3183,0.9000);\n\t\t\tvec3 pos = normalize(rodSample(ij)) * vec3(1.0,0.5,1.0) + vec3(0.0,0.5,0.0);\n\n\t\t\taverageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0;\n\t\t\taverageSkyCol += 1.5 * skyFromTex(pos,colortex4).rgb/maxIT/150.0;\n\t\t}\n\n\t\tvec3 minimumlight = MIN_LIGHT_AMOUNT * vec3(0.01) + nightVision * 0.05;\n\n\t\t// luminance based reinhard is useful ouside of tonemapping too.\n\t\taverageSkyCol_Clouds = 1.5 * (averageSkyCol_Clouds / (1.0+luma(averageSkyCol_Clouds) * 0.2));\n\n\t\taverageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS,0.0) + minimumlight;\n\n\t\t#ifdef USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS\n\t\t\taverageSkyCol = luma(averageSkyCol) * vec3(SKY_GROUND_R,SKY_GROUND_G,SKY_GROUND_B);\n\t\t#endif\n\n////////////////////////////////////////\n/// --- SUNLIGHT/MOONLIGHT STUFF --- ///\n////////////////////////////////////////\n\n\t\tvec2 planetSphere = vec2(0.0);\n\t\tvec3 skyAbsorb = vec3(0.0);\n\n\t\tfloat sunVis = clamp(sunElevation,0.0,0.05)/0.05*clamp(sunElevation,0.0,0.05)/0.05;\n\t\tfloat moonVis = clamp(-sunElevation,0.0,0.05)/0.05*clamp(-sunElevation,0.0,0.05)/0.05;\n\n\t\tsunColor = calculateAtmosphere(vec3(0.0), sunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 0.0);\n\t\tsunColor = sunColorBase/4000.0 * skyAbsorb;\n\t\tmoonColor = moonColorBase/4000.0;\n\n\t\t// lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis;\n\t\tlightSourceColor = sunColor * sunVis + moonColor * moonVis;\n\n\t\t#ifdef TWILIGHT_FOREST_FLAG\n\t\t\tlightSourceColor = vec3(0.0);\n\t\t\tmoonColor = vec3(0.0);\n\t\t#endif\n\n///////////////////////////////////////////\n /// --- SCENE CONTROLLER PARAMETERS --- ///\n ///////////////////////////////////////////\n\n\t\t// components are split for readability/user friendliness within this function\n\t\tapplySceneControllerParameters(\n\t\t\tparameters.smallCumulus.x, parameters.smallCumulus.y, \n\t\t\tparameters.largeCumulus.x, parameters.largeCumulus.y,\n\t\t\tparameters.altostratus.x, parameters.altostratus.y,\n\t\t\tparameters.fog.x, parameters.fog.y\n\t\t);\n\t#endif\n\n//////////////////////////////\n/// --- EXPOSURE STUFF --- ///\n//////////////////////////////\n\n\tfloat avgLuma = 0.0;\n\tfloat m2 = 0.0;\n\tint n=100;\n\tvec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.));\n\tfloat avgExp = 0.0;\n\tfloat avgB = 0.0;\n\tvec2 resScale = vec2(1920.,1080.)/clampedRes;\n\tconst int maxITexp = 50;\n\tfloat w = 0.0;\n\tfor (int i = 0; i < maxITexp; i++){\n\t\tvec2 ij = R2_samples((frameCounter%2000)*maxITexp+i);\n\t\tvec2 tc = 0.5 + (ij-0.5) * 0.7;\n\t\tvec3 sp = texture2D(colortex6, tc/16. * resScale+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb;\n\t\tavgExp += log(sqrt(luma(sp)));\n\t\tavgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2));\n\t}\n\n\tavgExp = exp(avgExp/maxITexp);\n\tavgB = exp(avgB/maxITexp);\n\n\tavgBrightness = clamp(mix(avgExp,texelFetch2D(colortex4,ivec2(10,37),0).g,0.95),0.00003051757,65000.0);\n\n\tfloat L = max(avgBrightness,1e-8);\n\tfloat keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0);\n\tfloat expFunc = 0.5+0.5*tanh(log(L));\n\t\n\t// float targetExposure = 1.0/log(L+1.05);\n\tfloat targetExposure = (EXPOSURE_DARKENING * 0.35)/log(L+1.0 + EXPOSURE_BRIGHTENING * 0.05);\n\t// float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; // choc original\n\n\tavgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0);\n\tfloat targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2;\n\n\texposure = max(targetExposure * EXPOSURE_MULTIPLIER, 0.0);\n\n\tfloat currCenterDepth = ld(texture2D(depthtex2, vec2(0.5)*RENDER_SCALE).r);\n\tcenterDepth = 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));\n\tcenterDepth = centerDepth * centerDepth * 65000.0;\n\n\trodExposure = targetrodExposure;\n\n\t#ifndef AUTO_EXPOSURE\n\t \texposure = Manual_exposure_value;\n\t \trodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0);\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/deferred1.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/projections.glsl\"\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nuniform sampler2D colortex4;\nuniform sampler2D colortex1;\nuniform sampler2D colortex12;\n\nuniform vec2 texelSize;\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\nuniform float near;\nuniform float far;\n\nfloat linZ(float depth) {\n\treturn (2.0 * near) / (far + near - depth * (far - near));\n}\n\nfloat DH_linZ(float dist) {\n\treturn (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - dist * (dhFarPlane - dhNearPlane));\n}\n\nvoid convertHandDepth(inout float depth) {\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\tdepth = ndcDepth * 0.5 + 0.5;\n}\n\nvec2 decodeVec2(float a){\n\tconst vec2 constant1 = 65535. / vec2(256., 65536.);\n\tconst float constant2 = 256. / 255.;\n\treturn fract(a * constant1) * constant2 ;\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n/* RENDERTARGETS:4,12 */\n\tvec3 oldTex = texelFetch2D(colortex4, ivec2(gl_FragCoord.xy), 0).xyz;\n\tfloat newTex = texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy*4), 0).x;\n\n\tfloat dataUnpacked = decodeVec2(texelFetch2D(colortex1,ivec2(gl_FragCoord.xy*4),0).w).y; \n\tbool hand = abs(dataUnpacked-0.75) < 0.01;\n\n\tif(hand) convertHandDepth(newTex);\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat QuarterResDepth = texelFetch2D(dhDepthTex, ivec2(gl_FragCoord.xy*4), 0).x;\n\t\tQuarterResDepth = DH_linZ(QuarterResDepth);\n   \t\tgl_FragData[1].a = QuarterResDepth*QuarterResDepth*65000.0;\n\t#endif\n\t\n\tnewTex = linZ(newTex);\n\tgl_FragData[0] = vec4(oldTex, newTex*newTex*65000.0);\n}"
  },
  {
    "path": "shaders/dimensions/deferred1.vsh",
    "content": "#include \"/lib/settings.glsl\"\n\nuniform vec2 texelSize;\n#include \"/lib/res_params.glsl\"\n\nvoid main() {\n\tgl_Position = ftransform();\n\tvec2 scaleRatio = max(vec2(0.25), vec2(18.+258*2,258.)*texelSize);\n\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(scaleRatio+0.01,0.0,1.0)*2.0-1.0;\n}\n"
  },
  {
    "path": "shaders/dimensions/deferred2.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\nuniform sampler2D depthtex0;\nuniform sampler2D dhDepthTex;\n\nuniform sampler2D colortex1;\nuniform sampler2D colortex2;\n\nuniform vec2 texelSize;\n\nfloat interleaved_gradientNoise(){\n\tvec2 coord = gl_FragCoord.xy;\n\tfloat noise = fract(52.9829189 * fract((coord.x * 0.06711056) + (coord.y * 0.00583715)));\n\treturn noise;\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\n#if RESOURCEPACK_SKY != 0\n\t/* RENDERTARGETS:1,2 */\n#endif\n\nvoid main() {\n\tvec2 texcoord = gl_FragCoord.xy * texelSize;\n\n\tgl_FragData[0] = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy),0);\n\n\tif(\n\t\ttexelFetch2D(depthtex0, ivec2(gl_FragCoord.xy), 0).x < 1.0 \t\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\t|| texelFetch2D(dhDepthTex, ivec2(gl_FragCoord.xy), 0).x < 1.0\n\t\t#endif\n \t) {\n \t\t// doing this for precision reasons, DH does NOT like depth => 1.0\n\t}else{\n\t\tvec3 skyColor = texelFetch2D(colortex2, ivec2(gl_FragCoord.xy),0).rgb;\n\t\tskyColor.rgb = max(skyColor.rgb - skyColor.rgb * interleaved_gradientNoise()*0.05, 0.0);\n\t\tgl_FragData[0].rgb = skyColor/50.0;\n\t\tgl_FragData[0].a = 0.0;\n\t}\n\tgl_FragData[1] = vec4(0,0,0,0);\n}"
  },
  {
    "path": "shaders/dimensions/deferred2.vsh",
    "content": "#include \"/lib/res_params.glsl\"\n\nvoid main() {\n\n\tgl_Position = ftransform();\n\n\t#ifdef TAA_UPSCALING\n\t\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;\n\t#endif\n}"
  },
  {
    "path": "shaders/dimensions/final.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\n#include \"/lib/projections.glsl\"\n\nuniform sampler2D colortex1;\nuniform sampler2D colortex5;\nuniform sampler2D colortex6;\nuniform sampler2D colortex7;\nuniform sampler2D colortex14;\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\nuniform sampler2D depthtex2;\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex0;\n#endif\n\nuniform float rainStrength;\n\n#ifdef OVERWORLD_SHADER\n\tuniform int worldTime;\n\tuniform int worldDay;\n\tflat in vec3 WsunVec;\n\n\t#include \"/lib/scene_controller.glsl\"\n\n\tuniform sampler2D colortex4;\n\t#define CLOUDSHADOWSONLY\n\t#include \"/lib/volumetricClouds.glsl\"\n#endif\n\nin vec2 texcoord;\n\nuniform vec2 texelSize;\nuniform vec2 viewSize;\nuniform float frameTime;\nuniform float frameTimeCounter;\nuniform float viewHeight;\nuniform float viewWidth;\nuniform float aspectRatio;\n\nuniform int hideGUI;\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/color_dither.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/lensflare.glsl\"\n#include \"/lib/gameplay_effects.glsl\"\n\n#if DEBUG_VIEW == debug_LIGHTS && defined LPV_SHADOWS\n\tuniform usampler1D texCloseLights;\n\tuniform usampler3D texSortLights;\n\n\t#include \"/lib/text.glsl\"\n\t#include \"/lib/cube/lightData.glsl\"\n#endif\n\nuniform float near;\nuniform float far;\n\nfloat ld(float dist){\n\treturn (2.0 * near) / (far + near - dist * (far - near));\n}\n\nfloat convertHandDepth_2(in float depth, bool hand) {\n\tif(!hand) return depth;\n\n\tfloat ndcDepth = depth * 2.0 - 1.0;\n\tndcDepth /= MC_HAND_DEPTH;\n\treturn ndcDepth * 0.5 + 0.5;\n}\n\nvoid doCameraGridLines(inout vec3 color, vec2 UV){\n\n\tfloat lineThicknessY = 0.001;\n\tfloat lineThicknessX = lineThicknessY/aspectRatio;\n  \n\tfloat horizontalLines = abs(UV.x-0.33);\n\thorizontalLines = min(abs(UV.x-0.66), horizontalLines);\n\n\tfloat verticalLines = abs(UV.y-0.33);\n\tverticalLines = min(abs(UV.y-0.66), verticalLines);\n\n\tfloat gridLines = horizontalLines < lineThicknessX || verticalLines < lineThicknessY ? 1.0 : 0.0;\n\n\tif(hideGUI > 0.0) gridLines = 0.0;\n\tcolor = mix(color, vec3(1.0),  gridLines);\n}\n\nvec3 doMotionBlur(vec2 texcoord, float depth, float noise, bool hand){\n\tfloat samples = 4.0;\n\tvec3 color = vec3(0.0);\n\n\tfloat blurMult = 1.0;\n\tif(hand) blurMult = 0.0;\n\n\tvec3 viewPos = toScreenSpace(vec3(texcoord, depth));\n\n\tvec3 previousPosition = toPreviousPos(viewPos);\n\tpreviousPosition = toClipSpace3(previousPosition);\n\n\tvec2 velocity = texcoord - previousPosition.xy;\n  \n\t// thank you Capt Tatsu for letting me use these\n\tvelocity /= 1.0 + length(velocity); // ensure the blurring stays sane where UV is beyond 1.0 or -1.0\n\tvelocity /= 1.0 + frameTime * 1000.0 * samples * 0.25; // ensure the blur radius stays roughly the same no matter the framerate\n\tvelocity *= blurMult * MOTION_BLUR_STRENGTH; // remove hand blur and add user control\n\n\ttexcoord = texcoord - velocity*(samples*0.5 + noise);\n\n\tvec2 screenEdges = 2.0/viewSize;\n\n\tfor (int i = 0; i < int(samples); i++) {\n\t\ttexcoord += velocity;\n\t\tcolor += texture2D(colortex7, clamp(texcoord, screenEdges, 1.0-screenEdges)).rgb;\n\t}\n\n\treturn color / samples;\n}\n\nuniform sampler2D shadowcolor1;\n\nfloat doVignette(in vec2 texcoord, in float noise){\n\tfloat vignette = 1.0-clamp(1.0-length(texcoord-0.5),0.0,1.0);\n  \n\tvignette *= vignette*vignette;\n\tvignette = 1.0-vignette;\n\tvignette *= vignette*vignette*vignette*vignette;\n  \n\t// stop banding\n\tvignette = vignette + vignette*(noise-0.5)*0.01;\n  \n\treturn mix(1.0, vignette, VIGNETTE_STRENGTH);\n}\n\nvec3 applyFishEye(vec2 uv, vec3 color) {\n\tvec2 coords = uv;\n\tcoords = (coords - 0.5) * 2.0;\n\n\tvec2 coordOffset = vec2(0.0);\n\tcoordOffset.x = (1.0 - coords.y * coords.y) * coords.x;\n\tcoordOffset.y = (1.0 - coords.x * coords.x) * coords.y;\n\tcoordOffset *= 0.1 * FISHEYE_STRENGTH;\n\n\tvec2 fisheyeUV = uv - coordOffset;\n\n\tfisheyeUV = clamp(fisheyeUV, vec2(0.0), vec2(1.0));\n\n\treturn texture2D(colortex7, fisheyeUV).rgb;\n}\n\nvoid main() {\n\tfloat noise = blueNoise();\n\n\tvec3 COLOR = texture2D(colortex7,texcoord).rgb;\n\n\t#ifdef MOTION_BLUR\n\t\tfloat depth = texture2D(depthtex0, texcoord*RENDER_SCALE).r;\n\t\tbool hand = depth < 0.56;\n\t\tfloat depth2 = convertHandDepth_2(depth, hand);\n\n\t\tCOLOR = doMotionBlur(texcoord, depth2, noise, hand);\n\t#endif\n\n\t#ifdef FISHEYE_EFFECT\n\t\tCOLOR = applyFishEye(texcoord, COLOR);\n\t#endif\n\n\t#ifdef OVERWORLD_SHADER\n\t\t#ifdef LENS_FLARE\n\t\t\tif(isEyeInWater == 0 && WsunVec.y > 0.0){\n\t\t\t\tvec3 sunNDC = toNDC3(WsunVec);\n\t\t\t\tvec2 sunPos = sunNDC.xy * 0.5 + 0.5;\n\n\t\t\t\tfloat screenVis = smoothstep(0.5, 0.45, abs(sunPos.x - 0.5)) * smoothstep(0.5, 0.45, abs(sunPos.y - 0.5));\n\t\t\t\tfloat depthVis = step(1.0, texture2D(depthtex0, sunPos).x);\n\t\t\t\t#ifdef DISTANT_HORIZONS\n\t\t\t\t\tdepthVis *= step(1.0, texture2D(dhDepthTex0, sunPos).x);\n\t\t\t\t#endif\n\n\t\t\t\tfloat cloudVis = 1.0;\n\t\t\t\t#if defined VOLUMETRIC_CLOUDS && (defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2)\n\t\t\t\t\tcloudVis = getSunOcculsion(cameraPosition, WsunVec);\n\t\t\t\t\tcloudVis = clamp(1.0 - cloudVis * 32.0, 0.0, 1.0);\n\t\t\t\t#endif\n\n\t\t\t\tfloat lfAmount = smoothstep(0.0, 0.3, WsunVec.y);\n\t\t\t\tfloat sunVis = screenVis * depthVis * cloudVis * lfAmount;\n\n\t\t\t\tvec3 lf = lensflare(texcoord, sunPos) * sunVis;\n\t\t\t\tCOLOR += lf;\n\t\t\t}\n\t\t#endif\n\t#endif\n\n\t#if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT || defined WATER_ON_CAMERA_EFFECT  \n\t\t// for making the fun, more fun\n\t\tapplyGameplayEffects(COLOR, texcoord, noise);\n\t#endif\n\n\t#ifdef VIGNETTE\n\t\tCOLOR *= doVignette(texcoord, noise);\n\t#endif\n  \n\t#ifdef CAMERA_GRIDLINES\n\t\tdoCameraGridLines(COLOR, texcoord);\n\t#endif\n\n\t#if DEBUG_VIEW == debug_LIGHTS && defined LPV_SHADOWS\n\t\tbeginText(ivec2(gl_FragCoord.xy * 0.25), ivec2(0, viewHeight*0.25));\n\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\n\t\t\tuint data = texelFetch(texCloseLights, i, 0).r;\n\t\t\tprintString((_L, _i, _g, _h, _t, _space));\n\t\t\tprintInt(i);\n\t\t\tfloat dist;\n\t\t\tivec3 pos;\n\t\t\tuint id;\n\t\t\tif (!getLightData(data, dist, pos, id)) {\n\t\t\t\tprintString((_colon, _space, _n, _u, _l, _l));\n\t\t\t} else {\n\t\t\t\tprintString((_colon, _space, _d, _colon, _space));\n\t\t\t\tprintFloat(dist);\n\t\t\t\tprintString((_comma, _space, _x, _colon, _space));\n\t\t\t\tprintInt(pos.x - 15);\n\t\t\t\tprintString((_comma, _space, _y, _colon, _space));\n\t\t\t\tprintInt(pos.y - 15);\n\t\t\t\tprintString((_comma, _space, _z, _colon, _space));\n\t\t\t\tprintInt(pos.z - 15);\n\t\t\t\tprintString((_comma, _space, _i, _d, _colon, _space));\n\t\t\t\tprintInt(int(id));\n\t\t\t}\n\t\t\tprintLine();\n\t\t}\n\t\tendText(COLOR);\n\n\t\tint curLight = int(frameTimeCounter * 2.0) % LPV_SHADOWS_LIGHT_COUNT;\n\t\tivec3 coords = ivec3((texcoord - vec2(0.75, 0)) * vec2(4.0, 2.0) * textureSize(texSortLights, 0).xy, curLight);\n\t\tif(texcoord.x > 0.75 && texcoord.y < 0.5) {\n\t\t\tCOLOR.rgb = vec3(texelFetch(texSortLights, coords, 0).rgb / 4294967295.0);\n\t\t}\n\n\t\tbeginText(ivec2(gl_FragCoord.xy * 0.25), ivec2(viewWidth *  0.19, viewHeight * 0.135));\n\t\tprintString((_L, _i, _g, _h, _t, _colon, _space));\n\t\tprintInt(curLight);\n\t\tendText(COLOR);\n\n\t\tvec2 shadowUV = texcoord * vec2(4.0, 2.0);\n\t\tif(shadowUV.x < 1.0 && shadowUV.y < 1.0) COLOR = texture2D(shadowcolor1,shadowUV).rgb;\n\t#endif\n\n\t#if DEBUG_VIEW == debug_SHADOWMAP\n\t\tvec2 shadowUV = texcoord * vec2(2.0, 1.0) ;\n\n\t\tif(shadowUV.x < 1.0 && shadowUV.y < 1.0 && hideGUI == 1) COLOR = texture2D(shadowcolor1,shadowUV).rgb;\n\t#elif DEBUG_VIEW == debug_DEPTHTEX0\n\t\tCOLOR = vec3(ld(texture2D(depthtex0, texcoord*RENDER_SCALE).r));\n\t#elif DEBUG_VIEW == debug_DEPTHTEX1\n\t\tCOLOR = vec3(ld(texture2D(depthtex1, texcoord*RENDER_SCALE).r));\n\t#endif\n\n\tgl_FragColor.rgb = COLOR;\n}"
  },
  {
    "path": "shaders/dimensions/final.vsh",
    "content": "#include \"/lib/settings.glsl\"\n\nuniform mat4 gbufferModelViewInverse;\n\nout vec2 texcoord;\n\n#ifdef OVERWORLD_SHADER\n\tuniform vec3 sunPosition;\n\tuniform sampler2D colortex4;\n\n\tflat out vec3 WsunVec;\n\n\tuniform int worldDay;\n\t#include \"/lib/scene_controller.glsl\"\n#endif\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_Position = ftransform();\n\ttexcoord = gl_MultiTexCoord0.xy;\n\n\t#ifdef OVERWORLD_SHADER\n\t\tWsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\t\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/fogBehindTranslucent_pass.fsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/util.glsl\"\n#include \"/lib/dither.glsl\"\n\n// #if defined END_SHADER || defined NETHER_SHADER\n\t#undef IS_LPV_ENABLED\n// #endif\n\nflat in vec4 lightCol;\nflat in vec3 averageSkyCol;\nflat in vec3 averageSkyCol_Clouds;\n\n// uniform int dhRenderDistance;\nuniform sampler2D depthtex0;\nuniform sampler2D depthtex1;\n#ifdef DISTANT_HORIZONS\n\tuniform sampler2D dhDepthTex;\n\tuniform sampler2D dhDepthTex1;\n#endif\n\nuniform sampler2D colortex2;\nuniform sampler2D colortex3;\nuniform sampler2D colortex4;\nuniform sampler2D colortex6;\nuniform sampler2D colortex7;\nuniform sampler2D colortex11;\nuniform sampler2D colortex14;\n\nflat in vec3 WsunVec;\nuniform vec3 sunVec;\nuniform float sunElevation;\n\nuniform float near;\n// uniform float far;\n// uniform float dhFarPlane;\n\nuniform float frameTimeCounter;\nuniform int worldTime;\nuniform int worldDay;\n\n// in vec2 texcoord;\nuniform vec2 texelSize;\n// flat in vec2 TAA_Offset;\n\nuniform int isEyeInWater;\nuniform float rainStrength;\nuniform ivec2 eyeBrightnessSmooth;\nuniform float eyeAltitude;\nuniform float caveDetection;\nuniform float nightVision;\n\n#define DHVLFOG\n\n#include \"/lib/tonemaps.glsl\"\n#include \"/lib/color_dither.glsl\"\n#include \"/lib/projections.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/waterBump.glsl\"\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nfloat linearizeDepthFast(const in float depth, const in float near, const in float far) {\n\treturn (near * far) / (depth * (near - far) + far);\n}\n\n#ifdef OVERWORLD_SHADER\n\tconst bool shadowHardwareFiltering = true;\n\tuniform sampler2DShadow shadow;\n\t\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tuniform sampler2D shadowcolor0;\n\t\tuniform sampler2DShadow shadowtex0;\n\t\tuniform sampler2DShadow shadowtex1;\n\t#endif\n\n\tflat in vec3 refractedSunVec;\n\n\t#include \"/lib/scene_controller.glsl\"\n\n\t#include \"/lib/diffuse_lighting.glsl\"\n\t#include \"/lib/lightning_stuff.glsl\"\n\n\t// #define CLOUDSHADOWSONLY\n\t#include \"/lib/climate_settings.glsl\"\n\t#include \"/lib/volumetricClouds.glsl\"\n\t#include \"/lib/overworld_fog.glsl\"\n#endif\n\n#ifdef NETHER_SHADER\n\t#include \"/lib/nether_fog.glsl\"\n#endif\n\n#ifdef END_SHADER\n\t#include \"/lib/end_fog.glsl\"\n#endif\n\nvec4 blueNoise(vec2 coord){\n\treturn texelFetch2D(colortex6, ivec2(coord)%512 , 0) ;\n}\n\nfloat fogPhase2(float lightPoint){\n\tfloat linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0);\n\tfloat linear2 = 1.0 - clamp(lightPoint,0.0,1.0);\n\n\tfloat exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5;\n\texponential += sqrt(exp2(sqrt(linear) * -12.5));\n\n\treturn exponential;\n}\n\nvec4 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){\n\tint spCount = rayMarchSampleCount;\n\n\tvec3 start = toShadowSpaceProjected(toWorldSpace(rayStart));\n\tvec3 end = toShadowSpaceProjected(toWorldSpace(rayEnd));\n\tvec3 dV = (end-start);\n\n\t//limit ray length at 32 blocks for performance and reducing integration error\n\t//you can't see above this anyway\n\tfloat maxZ = min(rayLength,12.0)/(1e-8+rayLength);\n\tdV *= maxZ;\n\trayLength *= maxZ;\n\testEndDepth *= maxZ;\n\testSunDepth *= maxZ;\n\t\n\tvec3 wpos = toWorldSpace(rayStart);\n\tvec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz;\n\n\tvec3 absorbance = vec3(1.0);\n\tvec3 vL = vec3(0.0);\n\n\tfloat expFactor = 11.0;\n\n\tfloat phase = 1.0;\n\tvec3 sh = vec3(1.0);\n\n\t#ifdef OVERWORLD_SHADER\n\t\tphase *= fogPhase(VdotL) * 5.0;\n\n\t\t// do this outside raymarch loop, masking the water surface is good enough\n\t\tsh *= getCloudShadow(wpos+cameraPosition, WsunVec);\n\t#endif\n\n\tfloat thing = -normalize(dVWorld).y;\n  \tthing = clamp(thing - 0.333,0.0,1.0);\n  \tthing = pow(1.0-pow(1.0-thing,2.0),2.0);\n  \tthing *= 15.0;\n \n\tfor (int i=0;i<spCount;i++) {\n\t\tfloat d = (pow(expFactor, float(i+dither)/float(spCount))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\n\t\tfloat dd = pow(expFactor, float(i+dither)/float(spCount)) * log(expFactor) / float(spCount)/(expFactor-1.0);\n\t\t\n\t\tvec3 progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld;\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tvec3 spPos = start.xyz + dV*d;\n\n\t\t\t//project into biased shadowmap space\n\t\t\tfloat distortFactor = 1.0;\n\t\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\t\tdistortFactor = calcDistort(spPos.xy);\n\t\t\t#endif\n\n\t\t\tvec3 pos = vec3(spPos.xy*distortFactor, spPos.z);\n\t\t\tif(abs(pos.x) < 1.0-0.5/2048. && abs(pos.y) < 1.0-0.5/2048){\n\t\t\t\tpos = pos*vec3(0.5,0.5,0.5/6.0)+0.5;\n\n\t\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\t\tpos.xy *= 0.8;\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\t\t\t\tsh *= vec3(shadow2D(shadowtex0, pos).x);\n\n\t\t\t\t\tif(shadow2D(shadowtex1, pos).x > pos.z && sh.x < 1.0){\n\t\t\t\t\t\tvec4 translucentShadow = texture2D(shadowcolor0, pos.xy);\n\t\t\t\t\t\tif(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001);\n\t\t\t\t\t}\n\t\t\t\t#else\n\t\t\t\t\tsh *= vec3(shadow2D(shadow, pos).x);\n\t\t\t\t#endif\n\t\t\t}\n\t\t#endif\n\n\t\tvec3 sunAbsorbance = exp(-waterCoefs * estSunDepth * d);\n\t\tvec3 ambientAbsorbance = exp(-waterCoefs * (estEndDepth * d + thing));\n\n\t\tvec3 Directlight = lightSource * sh * phase * sunAbsorbance;\n\t\tvec3 Indirectlight = ambient * ambientAbsorbance;\n\n\t\tvec3 light = (Indirectlight + Directlight) * scatterCoef;\n\n\t\tvec3 volumeCoeff = exp(-waterCoefs * dd * rayLength);\n\t\tvL += (light - light * volumeCoeff) / waterCoefs * absorbance;\n\t\tabsorbance *= volumeCoeff;\n\t}\n\treturn vec4(vL, dot(absorbance,vec3(0.335)));\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\n\nvoid main() {\n/* RENDERTARGETS:13 */\n\n\tgl_FragData[0] = vec4(0,0,0,1);\n\n\tvec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize;\n\n\tfloat alpha = texture2D(colortex7,tc).a ;\n\tfloat blendedAlpha = texture2D(colortex2, tc).a;\n\n\tbool iswater = alpha > 0.99;\n\n\t//////////////////////////////////////////////////////////\n\t///////////////// BEHIND OF TRANSLUCENTS /////////////////\n\t//////////////////////////////////////////////////////////\n\n\tif(blendedAlpha > 0.0 || iswater){\n\n\t\tfloat noise_1 = R2_dither();\n\t\tfloat noise_2 = blueNoise();\n\n\t\tfloat z0 = texelFetch2D(depthtex0, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0).x;\n\t\tfloat z = texelFetch2D(depthtex1, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0).x;\n\n\t\tfloat DH_z0 = 0.0;\n\t\tfloat DH_z = 0.0;\n\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tDH_z0 = texelFetch2D(dhDepthTex, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;//texture2D(dhDepthTex,tc).x;\n\t\t\tDH_z = texelFetch2D(dhDepthTex1, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;//texture2D(dhDepthTex,tc).x;\n\t\t#endif\n\n\t\t// vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.);\n\n    \t// float dirtAmount = Dirt_Amount + 0.01;\n\t\tvec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);\n\t\tvec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B);\n\t\tvec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);//dirtEpsilon * Dirt_Amount + waterEpsilon;\n\t\tvec3 scatterCoef = Dirt_Amount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14;\n\n\t\t#ifdef BIOME_TINT_WATER\n\t\t\t// yoink the biome tint written in this buffer for water only.\n\t\t\tif(iswater){\n\t\t\t\tvec2 data = texelFetch2D(colortex11,ivec2(tc/texelSize),0).gb;\n\t\t\t\tvec3 wateralbedo = vec3(decodeVec2(data.x),decodeVec2(data.y).r);\n\t\t\t\tscatterCoef = Dirt_Amount * (normalize(wateralbedo.rgb+1e-7) * 0.5 + 0.5) / 3.14;\n\t\t\t}\n\t\t#endif\n\n\t\tvec3 directLightColor = lightCol.rgb / 2400.0;\n\t\tvec3 indirectLightColor = averageSkyCol / 1200.0;\n\t\tvec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0;\n\n\t\tvec3 viewPos1 = toScreenSpace_DH(tc/RENDER_SCALE, z, DH_z);\n\t\tvec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0);\n\n\t\tvec3 playerPos = mat3(gbufferModelViewInverse) *  viewPos1;\n\t\tvec3 playerPos0 = mat3(gbufferModelViewInverse) *  viewPos0;\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tvec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).x);\n\n\t\t\t#ifdef DISTANT_HORIZONS\n\t\t\t\tif(z >= 1.0) lightmap.y = 0.99;\n\t\t\t#endif\n\t\t#else\n\t\t\tvec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).a);\n\t\t\tlightmap.y = 1.0;\n\t\t#endif\n\n\t\tfloat Vdiff = distance(viewPos1, viewPos0);\n\t\tfloat estimatedDepth = Vdiff * abs(normalize(playerPos).y);\n\t\tfloat estimatedSunDepth = Vdiff / abs(WsunVec.y); //assuming water plane\n\n\t \tindirectLightColor_dynamic *= ambient_brightness * lightmap.y*lightmap.y;\n\n\t\tindirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02;\n\n\t\tindirectLightColor_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;\n\n\t\tvec4 finalVolumetrics = vec4(0.0,0.0,0.0,1.0);\n\n\t\tfloat cloudPlaneDistance = 0.0;\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\tvec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WsunVec, directLightColor, indirectLightColor,cloudPlaneDistance);\n\n\t\t\tfloat atmosphereAlpha = 1.0;\n\t\t\tvec4 VolumetricFog = GetVolumetricFog(viewPos1, WsunVec,  vec2(noise_1, noise_2), directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb,cloudPlaneDistance);\n\n\t\t\tfinalVolumetrics.rgb += VolumetricClouds.rgb;\n \t\t\tfinalVolumetrics.a *= VolumetricClouds.a;\n\t\t#else\n \t\t\tvec4 VolumetricFog = GetVolumetricFog(viewPos1, noise_1, noise_2);\n \t\t#endif\n\n\t\tfinalVolumetrics.rgb = finalVolumetrics.rgb * VolumetricFog.a + VolumetricFog.rgb;\n\t\tfinalVolumetrics.a *= VolumetricFog.a;\n\n\t\tvec4 underwaterVlFog = vec4(0,0,0,1);\n\n\t\tfloat lightleakfix = clamp(lightmap.y + (1-caveDetection),0.0,1.0);\n\n\t\tif(iswater && isEyeInWater != 1) {\n \t\t\tvec4 underWaterFog = waterVolumetrics(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor, dot(normalize(viewPos1), normalize(sunVec*lightCol.a)) ,lightleakfix); \n \t\t\tfinalVolumetrics.rgb = finalVolumetrics.rgb * underWaterFog.a*underWaterFog.a + underWaterFog.rgb;\n \t\t\tfinalVolumetrics.a *= underWaterFog.a;\n \t\t}\n\t\tgl_FragData[0] = clamp(finalVolumetrics, 0.0, 65000.0);\n\t}\n}"
  },
  {
    "path": "shaders/dimensions/fogBehindTranslucent_pass.vsh",
    "content": "#include \"/lib/settings.glsl\"\n#include \"/lib/res_params.glsl\"\n#include \"/lib/util.glsl\"\n\nflat out vec4 lightCol;\nflat out vec3 averageSkyCol;\nflat out vec3 averageSkyCol_Clouds;\n\nuniform int worldDay;\n#include \"/lib/scene_controller.glsl\"\n\nflat out vec3 WsunVec;\nflat out vec3 refractedSunVec;\n\n// flat out float tempOffsets;\n\nuniform sampler2D colortex4;\n\nuniform float sunElevation;\nuniform vec2 texelSize;\nuniform vec3 sunPosition;\nuniform vec3 moonPosition;\nuniform mat4 gbufferModelViewInverse;\nuniform float frameTimeCounter;\n\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/sky_gradient.glsl\"\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\t// gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51*2.0-1.0;\n\tgl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0;\n\n\tlightCol.rgb = vec3(0.0);\n\taverageSkyCol = vec3(0.0);\n\n\t#ifdef OVERWORLD_SHADER\n\t\tlightCol.rgb = texelFetch2D(colortex4,ivec2(6,37),0).rgb;\n\t\taverageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb;\n\t\taverageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;\n\t\t\n\t\treadSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);\n\t#endif\n\n\t#ifdef NETHER_SHADER\n\t\taverageSkyCol_Clouds = volumetricsFromTex(vec3(0.0,1.0,0.0), colortex4, 6).rgb;\n\t#endif\n\n\t#ifdef END_SHADER\n\t\taverageSkyCol_Clouds = vec3(15.0);\n\t#endif\n\n\tlightCol.a = float(sunElevation > 1e-5)*2.0 - 1.0;\n\tWsunVec = normalize(mat3(gbufferModelViewInverse) * sunPosition);\n\n\tvec3 moonVec = normalize(mat3(gbufferModelViewInverse) * moonPosition);\n\tvec3 WmoonVec = moonVec;\n\tif(dot(-moonVec, WsunVec) < 0.9999) WmoonVec = -moonVec;\n\n\tWsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1));\n\t\n\trefractedSunVec = refract(WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333);\n}\n"
  },
  {
    "path": "shaders/dimensions/setup.csh",
    "content": "layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;\n\nconst ivec3 workGroups = ivec3(6, 6, 1);\n\n#ifdef IS_LPV_ENABLED\n\t#include \"/lib/items.glsl\"\n\t#include \"/lib/blocks.glsl\"\n\t#include \"/lib/entities.glsl\"\n\t#include \"/lib/lpv_blocks.glsl\"\n\n\tconst vec3 LightColor_Amethyst = vec3(0.464, 0.227, 0.788);\n\tconst vec3 LightColor_Candles = vec3(1.0, 0.4, 0.1);\n\tconst vec3 LightColor_CopperBulb = vec3(1.0);\n\tconst vec3 LightColor_LightBlock = vec3(1.0);\n\tconst vec3 LightColor_RedstoneTorch = vec3(0.939, 0.305, 0.164);\n\tconst vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212);\n\n\tconst vec3 LightColor_Candles_Black = vec3(0.200);\n\tconst vec3 LightColor_Candles_Blue = vec3(0.000, 0.259, 1.000);\n\tconst vec3 LightColor_Candles_Brown = vec3(0.459, 0.263, 0.149);\n\tconst vec3 LightColor_Candles_Cyan = vec3(0.000, 0.839, 0.839);\n\tconst vec3 LightColor_Candles_Gray = vec3(0.329, 0.357, 0.388);\n\tconst vec3 LightColor_Candles_Green = vec3(0.263, 0.451, 0.000);\n\tconst vec3 LightColor_Candles_LightBlue = vec3(0.153, 0.686, 1.000);\n\tconst vec3 LightColor_Candles_LightGray = vec3(0.631, 0.627, 0.624);\n\tconst vec3 LightColor_Candles_Lime = vec3(0.439, 0.890, 0.000);\n\tconst vec3 LightColor_Candles_Magenta = vec3(0.757, 0.098, 0.812);\n\tconst vec3 LightColor_Candles_Orange = vec3(1.000, 0.459, 0.000);\n\tconst vec3 LightColor_Candles_Pink = vec3(1.000, 0.553, 0.718);\n\tconst vec3 LightColor_Candles_Purple = vec3(0.569, 0.000, 1.000);\n\tconst vec3 LightColor_Candles_Red = vec3(0.859, 0.000, 0.000);\n\tconst vec3 LightColor_Candles_White = vec3(1.000);\n\tconst vec3 LightColor_Candles_Yellow = vec3(1.000, 0.878, 0.000);\n\n\tuint 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) {\n\t\treturn east | (west << 1) | (down << 2) | (up << 3) | (south << 4) | (north << 5);\n\t}\n\n\tmat4 GetSaturationMatrix(const in float saturation) {\n\t\tconst vec3 luminance = vec3(0.3086, 0.6094, 0.0820);\n\n\t\tvec3 lumSat = luminance * (1.0 - saturation);\n\t\tvec2 satZero = vec2(saturation, 0.0);\n        \n\t\treturn mat4(\n\t\t\tvec4(lumSat.r + satZero.xyy, 0.0),\n\t\t\tvec4(lumSat.g + satZero.yxy, 0.0),\n\t\t\tvec4(lumSat.b + satZero.yyx, 0.0),\n\t\t\tvec4(0.0, 0.0, 0.0, 1.0));\n\t}\n#endif\n\nvoid main() {\n\t#ifdef IS_LPV_ENABLED\n\t\tint blockId = int(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 48);\n\t\tif (blockId >= 2048) return;\n\n\t\tvec3 lightColor = vec3(0.0);\n\t\tfloat lightRange = 0.0;\n\t\tfloat mixWeight = 0.0;\n\t\tuint mixMask = 0xFFFF;\n\t\tvec3 tintColor = vec3(1.0);\n\n\t\tif (blockId == BLOCK_SSS_WEAK || blockId == BLOCK_SSS_WEAK_3 || blockId == BLOCK_SSS_STRONG) {\n\t\t\tmixWeight = 1.0;\n\t\t}\n\n\t\tswitch (blockId) {\n\t\t\tcase BLOCK_WATER:\n\t\t\t\tmixWeight = 0.8;\n\t\t\t\tbreak;\n\n\t\t\tcase BLOCK_BAMBOO:\n\t\t\t\tmixWeight = 0.8;\n\t\t\t\tbreak;\n\n\t\t\tcase BLOCK_GRASS_SHORT:\n\t\t\tcase BLOCK_GRASS_TALL_UPPER:\n\t\t\tcase BLOCK_GRASS_TALL_LOWER:\n\t\t\t\tmixWeight = 0.85;\n\t\t\t\tbreak;\n\n\t\t\tcase BLOCK_GROUND_WAVING:\n\t\t\tcase BLOCK_GROUND_WAVING_VERTICAL:\n\t\t\tcase BLOCK_AIR_WAVING:\n\t\t\t\tmixWeight = 0.9;\n\t\t\t\tbreak;\n\n\t\t\tcase BLOCK_SAPLING:\n\t\t\t\tmixWeight = 0.9;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// lightsources\n\t\tif (blockId == BLOCK_AMETHYST_BUD_SMALL || blockId == ITEM_AMETHYST_BUD_SMALL) {\n\t\t\tlightColor = LightColor_Amethyst;\n\t\t\tlightRange = 1.0;\n\t\t\tmixWeight = 1.0;\n\t\t}\n\n\t\tif (blockId == BLOCK_AMETHYST_BUD_MEDIUM || blockId == ITEM_AMETHYST_BUD_MEDIUM) {\n\t\t\tlightColor = LightColor_Amethyst;\n\t\t\tlightRange = 2.0;\n\t\t\tmixWeight = 0.8;\n\t\t}\n\n\t\tif (blockId == BLOCK_AMETHYST_BUD_LARGE || blockId == ITEM_AMETHYST_BUD_LARGE) {\n\t\t\tlightColor = LightColor_Amethyst;\n\t\t\tlightRange = 4.0;\n\t\t\tmixWeight = 0.6;\n\t\t}\n\n\t\tif (blockId == BLOCK_AMETHYST_CLUSTER || blockId == ITEM_AMETHYST_CLUSTER) {\n\t\t\tlightColor = LightColor_Amethyst;\n\t\t\tlightRange = 5.0;\n\t\t\tmixWeight = 0.4;\n\t\t}\n\n\t\tif (blockId == BLOCK_BEACON || blockId == ITEM_BEACON) {\n\t\t\tlightColor = vec3(1.0);\n\t\t\tlightRange = 15.0;\n\t\t}\n\n\t\tif (blockId == BLOCK_BREWING_STAND) {\n\t\t\tlightColor = vec3(0.636, 0.509, 0.179);\n\t\t\tlightRange = 1.0;\n\t\t\tmixWeight = 0.8;\n\t\t}\n\n\t\t#ifdef LPV_COLORED_CANDLES\n\t\t\tif (blockId >= BLOCK_CANDLES_PLAIN_LIT_1 && blockId <= BLOCK_CANDLES_YELLOW_LIT_4) {\n\t\t\t\tswitch (blockId) {\n\t\t\t\t\tcase BLOCK_CANDLES_PLAIN_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PLAIN_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PLAIN_LIT_3:\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PLAIN_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_BLACK_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Black;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BLACK_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Black;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BLACK_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Black;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BLACK_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Black;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_BLUE_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Blue;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BLUE_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Blue;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BLUE_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Blue;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BLUE_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Blue;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_BROWN_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Brown;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BROWN_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Brown;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BROWN_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Brown;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_BROWN_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Brown;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_CYAN_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Cyan;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_CYAN_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Cyan;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_CYAN_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Cyan;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_CYAN_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Cyan;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_GRAY_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Gray;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_GRAY_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Gray;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_GRAY_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Gray;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_GRAY_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Gray;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_GREEN_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Green;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_GREEN_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Green;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_GREEN_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Green;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_GREEN_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Green;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_BLUE_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightBlue;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_BLUE_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightBlue;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_BLUE_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightBlue;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_BLUE_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightBlue;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_GRAY_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightGray;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_GRAY_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightGray;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_GRAY_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightGray;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIGHT_GRAY_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_LightGray;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_LIME_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Lime;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIME_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Lime;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIME_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Lime;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIME_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Lime;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_MAGENTA_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Magenta;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_MAGENTA_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Magenta;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_MAGENTA_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Magenta;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_MAGENTA_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Magenta;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_ORANGE_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Orange;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_ORANGE_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Orange;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_ORANGE_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Orange;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_ORANGE_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Orange;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_PINK_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Pink;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PINK_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Pink;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PINK_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Pink;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PINK_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Pink;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_PURPLE_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Purple;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PURPLE_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Purple;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PURPLE_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Purple;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_PURPLE_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Purple;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_RED_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Red;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_RED_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Red;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_RED_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Red;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_RED_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Red;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_WHITE_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_White;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_WHITE_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_White;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_WHITE_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_White;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_WHITE_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_White;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase BLOCK_CANDLES_YELLOW_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Yellow;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_YELLOW_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Yellow;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_YELLOW_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Yellow;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_YELLOW_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles_Yellow;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t#else\n\t\t\tif (blockId >= BLOCK_CANDLES_LIT_1 && blockId <= BLOCK_CANDLES_LIT_4) {\n\t\t\t\tswitch (blockId) {\n\t\t\t\t\tcase BLOCK_CANDLES_LIT_1:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 3.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIT_2:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 6.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIT_3:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 9.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BLOCK_CANDLES_LIT_4:\n\t\t\t\t\t\tlightColor = LightColor_Candles;\n\t\t\t\t\t\tlightRange = 12.0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t#endif\n\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (blockId == ITEM_BLAZE_ROD) {\n\t\tlightColor = vec3(0.864, 0.598, 0.348);\n            \n\t\tlightRange = 8.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (blockId == BLOCK_CAVE_VINE_BERRIES || blockId == ITEM_GLOW_BERRIES) {\n\t\tlightColor = vec3(1.0, 1.0, 0.5);\n            \n\t\tlightRange = 14.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (blockId == BLOCK_FIREFLY_BUSH || blockId == ITEM_FIREFLY_BUSH) {\n\t\tlightColor = vec3(1.0, 1.0, 0.5);\n            \n\t\tlightRange = 4.0;\n\t\tmixWeight = 0.2;\n\t}\n\n\t#ifdef LPV_REDSTONE_LIGHTS\n\t\tif (blockId == BLOCK_COMPARATOR_LIT) {\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 4.0;\n\t\t}\n\t#endif\n\n\tswitch (blockId) {\n\t\tcase BLOCK_COPPER_BULB_LIT:\n\t\t\tlightColor = LightColor_CopperBulb;\n\t\t\tlightRange = 15.0;\n\t\t\tbreak;\n\t\tcase BLOCK_COPPER_BULB_EXPOSED_LIT:\n\t\t\tlightColor = LightColor_CopperBulb;\n\t\t\tlightRange = 12.0;\n\t\t\tbreak;\n\t\tcase BLOCK_COPPER_BULB_OXIDIZED_LIT:\n\t\t\tlightColor = LightColor_CopperBulb;\n\t\t\tlightRange = 4.0;\n\t\t\tbreak;\n\t\tcase BLOCK_COPPER_BULB_WEATHERED_LIT:\n\t\t\tlightColor = LightColor_CopperBulb;\n\t\t\tlightRange = 8.0;\n\t\t\tbreak;\n\t\tcase BLOCK_CONDUIT:\n\t\t\tlightColor = vec3(1.0);\n\t\t\tlightRange = 15.0;\n\t\t\tbreak;\n\t}\n\n\tif (blockId == BLOCK_CRYING_OBSIDIAN) {\n\t\tlightColor = vec3(0.390, 0.065, 0.646);\n\t\tlightRange = 10.0;\n\t}\n\n\tif (blockId == BLOCK_END_GATEWAY) {\n\t\tlightColor = vec3(1.0);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_END_ROD || blockId == ITEM_END_ROD) {\n\t\tlightColor = vec3(0.957, 0.929, 0.875);\n\t\tlightRange = 14.0;\n\t}\n\n\tif (blockId == BLOCK_FIRE) {\n\t\tlightColor = vec3(0.864, 0.598, 0.348);\n\t\tlightRange = 15.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (blockId == BLOCK_FIRE_FLIES) {\n\t\tlightColor = vec3(0.729, 0.639, 0.31);\n\t\tlightRange = 2.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (blockId == BLOCK_FROGLIGHT_OCHRE || blockId == ITEM_FROGLIGHT_OCHRE) {\n\t\tlightColor = vec3(0.768, 0.648, 0.108);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_FROGLIGHT_PEARLESCENT || blockId == ITEM_FROGLIGHT_PEARLESCENT) {\n\t\tlightColor = vec3(0.737, 0.435, 0.658);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_FROGLIGHT_VERDANT || blockId == ITEM_FROGLIGHT_VERDANT) {\n\t\tlightColor = vec3(0.463, 0.763, 0.409);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_FURNACE_LIT) {\n\t\tlightColor = vec3(0.7, 0.4, 0.2);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_GLOW_LICHEN || blockId == ITEM_GLOW_LICHEN) {\n\t\tlightColor = vec3(0.1, 0.2, 0.12);\n\t\tlightRange = 7.0;\n\t}\n\n\tif (blockId == BLOCK_GLOWSTONE || blockId == ITEM_GLOWSTONE) {\n\t\tlightColor = vec3(0.747, 0.594, 0.326);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == ITEM_GLOWSTONE_DUST) {\n\t\tlightColor = vec3(0.747, 0.594, 0.326);\n\t\tlightRange = 8.0;\n\t}\n\n\tif (blockId == BLOCK_JACK_O_LANTERN || blockId == ITEM_JACK_O_LANTERN) {\n\t\tlightColor = vec3(0.864, 0.598, 0.348);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_LANTERN || blockId == ITEM_LANTERN) {\n\t\tlightColor = vec3(0.839, 0.541, 0.2);\n\t\tlightRange = 15.0;\n\t\tmixWeight = 0.8;\n\t}\n\n\tif (blockId == BLOCK_LAVA) {\n\t\tlightColor = vec3(0.659, 0.302, 0.106);\n\t\tlightRange = 15.0;\n\t}\n\telse if (blockId == ITEM_LAVA_BUCKET) {\n\t\tlightColor = vec3(0.659, 0.302, 0.106);\n\t\tlightRange = 8.0;\n\t}\n\n\tif (blockId >= BLOCK_LIGHT_1 && blockId <= BLOCK_LIGHT_15) {\n\t\tlightColor = LightColor_LightBlock;\n\t\tmixWeight = 1.0;\n\n\t\tswitch (blockId) {\n\t\t\tcase BLOCK_LIGHT_1:\n\t\t\t\tlightRange = 1;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_2:\n\t\t\t\tlightRange = 2;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_3:\n\t\t\t\tlightRange = 3;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_4:\n\t\t\t\tlightRange = 4;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_5:\n\t\t\t\tlightRange = 5;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_6:\n\t\t\t\tlightRange = 6;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_7:\n\t\t\t\tlightRange = 7;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_8:\n\t\t\t\tlightRange = 8;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_9:\n\t\t\t\tlightRange = 9;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_10:\n\t\t\t\tlightRange = 10;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_11:\n\t\t\t\tlightRange = 11;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_12:\n\t\t\t\tlightRange = 12;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_13:\n\t\t\t\tlightRange = 13;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_14:\n\t\t\t\tlightRange = 14;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LIGHT_15:\n\t\t\t\tlightRange = 15;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (blockId == BLOCK_MAGMA || blockId == ITEM_MAGMA) {\n\t\tlightColor = vec3(0.747, 0.323, 0.110);\n\t\tlightRange = 3.0;\n\t\tmixWeight = 0.0;\n\t}\n\n\tif (blockId == BLOCK_RAIL_POWERED_ON) {\n\t\tlightColor = LightColor_RedstoneTorch;\n\t\tlightRange = 7.0;\n\t\tmixWeight = 0.9;\n\t}\n\n\tif (blockId == BLOCK_REDSTONE_LAMP_LIT) {\n\t\tlightColor = vec3(0.953, 0.796, 0.496);\n\t\tlightRange = 15.0;\n\t\tmixWeight = 0.0;\n\t}\n\n\tif (blockId == BLOCK_REDSTONE_ORE_LIT || blockId == BLOCK_DEEPSLATE_REDSTONE_ORE_LIT) {\n\t\tlightColor = LightColor_RedstoneTorch;\n\t\tlightRange = 7.0;\n\t\tmixWeight = 0.0;\n\t}\n\n\tif (blockId == BLOCK_REDSTONE_TORCH_LIT || blockId == ITEM_REDSTONE_TORCH) {\n\t\tlightColor = LightColor_RedstoneTorch;\n\t\tlightRange = 7.0;\n\t\tmixWeight = 0.9;\n\t}\n\n\tswitch (blockId) {\n\t#ifdef LPV_REDSTONE_LIGHTS\n\t\tcase BLOCK_REDSTONE_WIRE_1:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 0.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_2:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 1.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_3:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 1.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_4:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 2.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_5:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 2.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_6:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 3.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_7:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 3.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_8:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 4.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_9:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 4.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_10:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 5.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_11:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 5.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_12:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 6.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_13:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 6.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_14:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 7.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_REDSTONE_WIRE_15:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 7.5;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\n\t\tcase BLOCK_REPEATER_LIT:\n\t\t\tlightColor = LightColor_RedstoneTorch;\n\t\t\tlightRange = 4.0;\n\t\t\tbreak;\n\t#endif\n\n\t\tcase BLOCK_RESPAWN_ANCHOR_4:\n\t\t\tlightColor = vec3(1.0, 0.2, 1.0);\n\t\t\tlightRange = 15.0;\n\t\t\tbreak;\n\t\tcase BLOCK_SCULK_SENSOR_ACTIVE:\n\t\t\tlightColor = vec3(0.1, 0.4, 1.0);\n\t\t\tlightRange = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_SEA_PICKLE_WET_1:\n\t\t\tlightColor = LightColor_SeaPickle;\n\t\t\tlightRange = 6.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_SEA_PICKLE_WET_2:\n\t\t\tlightColor = LightColor_SeaPickle;\n\t\t\tlightRange = 9.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_SEA_PICKLE_WET_3:\n\t\t\tlightColor = LightColor_SeaPickle;\n\t\t\tlightRange = 12.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_SEA_PICKLE_WET_4:\n\t\t\tlightColor = LightColor_SeaPickle;\n\t\t\tlightRange = 15.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t}\n\t\n\tif (blockId == BLOCK_SEA_LANTERN || blockId == ITEM_SEA_LANTERN) {\n\t\tlightColor = vec3(0.553, 0.748, 0.859);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_SHROOMLIGHT || blockId == ITEM_SHROOMLIGHT) {\n\t\tlightColor = vec3(0.848, 0.469, 0.205);\n\t\tlightRange = 15.0;\n\t}\n\n\tif (blockId == BLOCK_SOUL_FIRE) {\n\t\tlightColor = vec3(0.1, 0.6, 1.0);\n\t\tlightRange = 10.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (\n\t\tblockId == BLOCK_SOUL_TORCH || blockId == ITEM_SOUL_TORCH ||\n\t\tblockId == BLOCK_SOUL_LANTERN || blockId == ITEM_SOUL_LANTERN\n\t) {\n\t\tlightColor = vec3(0.1, 0.6, 1.0);\n\t\tlightRange = 10.0;\n\t\tmixWeight = 0.8;\n\t}\n\n\tif (blockId == BLOCK_TORCH || blockId == ITEM_TORCH ||\n\t\tblockId == BLOCK_LANTERN || blockId == ITEM_LANTERN\n\t) {\n\t\tlightColor = vec3(TORCH_R, TORCH_G, TORCH_B);\n\t\tlightRange = 14.0;\n\t\tmixWeight = 0.8;\n\t}\n\n\tif (blockId >= BLOCK_LAMP_LIT_BLACK && blockId <= BLOCK_LAMP_LIT_YELLOW) {\n\t\tlightRange = 15.0;\n\t\tmixWeight = 0.25;\n\n\t\tswitch (blockId) {\n\t\t\tcase BLOCK_LAMP_LIT_BLACK:\n\t\t\t\tlightColor = LightColor_Candles_Black;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_BLUE:\n\t\t\t\tlightColor = LightColor_Candles_Blue;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_BROWN:\n\t\t\t\tlightColor = LightColor_Candles_Brown;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_CYAN:\n\t\t\t\tlightColor = LightColor_Candles_Cyan;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_GRAY:\n\t\t\t\tlightColor = LightColor_Candles_Gray;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_GREEN:\n\t\t\t\tlightColor = LightColor_Candles_Green;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_LIGHT_BLUE:\n\t\t\t\tlightColor = LightColor_Candles_LightBlue;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_LIGHT_GRAY:\n\t\t\t\tlightColor = LightColor_Candles_LightGray;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_LIME:\n\t\t\t\tlightColor = LightColor_Candles_Lime;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_MAGENTA:\n\t\t\t\tlightColor = LightColor_Candles_Magenta;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_ORANGE:\n\t\t\t\tlightColor = LightColor_Candles_Orange;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_PINK:\n\t\t\t\tlightColor = LightColor_Candles_Pink;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_PURPLE:\n\t\t\t\tlightColor = LightColor_Candles_Purple;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_RED:\n\t\t\t\tlightColor = LightColor_Candles_Red;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_WHITE:\n\t\t\t\tlightColor = LightColor_Candles_White;\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_LAMP_LIT_YELLOW:\n\t\t\t\tlightColor = LightColor_Candles_Yellow;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// reflective translucents / glass\n\n\tswitch (blockId) {\n\t\tcase BLOCK_GLASS:\n\t\t\ttintColor = vec3(1.0);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_BLACK:\n\t\t\ttintColor = vec3(0.3);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_BLUE:\n\t\t\ttintColor = vec3(0.1, 0.1, 0.98);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_BROWN:\n\t\t\ttintColor = vec3(0.566, 0.388, 0.148);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_CYAN:\n\t\t\ttintColor = vec3(0.082, 0.533, 0.763);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_GRAY:\n\t\t\ttintColor = vec3(0.4, 0.4, 0.4);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_GREEN:\n\t\t\ttintColor = vec3(0.125, 0.808, 0.081);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_LIGHT_BLUE:\n\t\t\ttintColor = vec3(0.320, 0.685, 0.955);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_LIGHT_GRAY:\n\t\t\ttintColor = vec3(0.7);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_LIME:\n\t\t\ttintColor = vec3(0.633, 0.924, 0.124);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_MAGENTA:\n\t\t\ttintColor = vec3(0.698, 0.298, 0.847);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_ORANGE:\n\t\t\ttintColor = vec3(0.919, 0.586, 0.185);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_PINK:\n\t\t\ttintColor = vec3(0.949, 0.274, 0.497);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_PURPLE:\n\t\t\ttintColor = vec3(0.578, 0.170, 0.904);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_RED:\n\t\t\ttintColor = vec3(0.999, 0.188, 0.188);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_WHITE:\n\t\t\ttintColor = vec3(0.96, 0.96, 0.96);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_GLASS_YELLOW:\n\t\t\ttintColor = vec3(0.965, 0.965, 0.123);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_HONEY:\n\t\t\ttintColor = vec3(0.984, 0.733, 0.251);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_NETHER_PORTAL:\n\t\t\tlightColor = vec3(0.502, 0.165, 0.831);\n\t\t\ttintColor = vec3(0.502, 0.165, 0.831);\n\t\t\tlightRange = 7.0;\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\t\tcase BLOCK_SLIME:\n\t\t\ttintColor = vec3(0.408, 0.725, 0.329);\n\t\t\tmixWeight = 1.0;\n\t\t\tbreak;\n\n\t// LPV shapes\n\n\t\tcase BLOCK_LPV_IGNORE:\n\t\t\tmixWeight = 1.00;\n\t\t\tbreak;\n\t\tcase BLOCK_LPV_MIN:\n\t\t\tmixWeight = 0.75;\n\t\t\tbreak;\n\t\tcase BLOCK_LPV_MED:\n\t\t\tmixWeight = 0.50;\n\t\t\tbreak;\n\t\tcase BLOCK_LPV_MAX:\n\t\t\tmixWeight = 0.25;\n\t\t\tbreak;\n\n\t\tcase BLOCK_CARPET:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u);\n\t\t\tmixWeight = 0.9;\n\t\t\tbreak;\n\n\t\tcase BLOCK_DOOR_N:\n\t\t\tmixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_DOOR_E:\n\t\t\tmixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_DOOR_S:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_DOOR_W:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\n\t\tcase BLOCK_PRESSURE_PLATE:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u);\n\t\t\tmixWeight = 0.9;\n\t\t\tbreak;\n\n\t\tcase BLOCK_SLAB_TOP:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u);\n\t\t\tmixWeight = 0.5;\n\t\t\tbreak;\n\t\tcase BLOCK_SLAB_BOTTOM:\n\t\tcase BLOCK_SNOW_LAYERS:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u);\n\t\t\tmixWeight = 0.5;\n\t\t\tbreak;\n\n\t\tcase BLOCK_TRAPDOOR_BOTTOM:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_TRAPDOOR_TOP:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_TRAPDOOR_N:\n\t\t\tmixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_TRAPDOOR_E:\n\t\t\tmixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_TRAPDOOR_S:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t\tcase BLOCK_TRAPDOOR_W:\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u);\n\t\t\tmixWeight = 0.8;\n\t\t\tbreak;\n\t}\n\n\t// STAIRS\n\tif (blockId >= BLOCK_STAIRS_BOTTOM_N && blockId <= BLOCK_STAIRS_TOP_OUTER_S_W) {\n\t\tmixWeight = 0.25;\n\n\t\tswitch (blockId) {\n\t\t\tcase BLOCK_STAIRS_BOTTOM_N:\n\t\t\t\tmixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 0u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_E:\n\t\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 0u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_S:\n\t\t\t\tmixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 0u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_W:\n\t\t\t\tmixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 0u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_INNER_S_E:\n\t\t\t\tmixMask = BuildLpvMask(0u, 1u, 1u, 0u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_INNER_S_W:\n\t\t\t\tmixMask = BuildLpvMask(0u, 0u, 1u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_INNER_N_W:\n\t\t\t\tmixMask = BuildLpvMask(1u, 0u, 0u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_BOTTOM_INNER_N_E:\n\t\t\t\tmixMask = BuildLpvMask(1u, 1u, 0u, 0u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (blockId >= BLOCK_STAIRS_BOTTOM_OUTER_N_W && blockId <= BLOCK_STAIRS_BOTTOM_OUTER_S_W) {\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u);\n\t\t}\n\n\t\tswitch (blockId) {\n\t\t\tcase BLOCK_STAIRS_TOP_N:\n\t\t\t\tmixMask = BuildLpvMask(1u, 1u, 0u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_E:\n\t\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 0u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_S:\n\t\t\t\tmixMask = BuildLpvMask(0u, 1u, 1u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_W:\n\t\t\t\tmixMask = BuildLpvMask(1u, 0u, 1u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_INNER_S_E:\n\t\t\t\tmixMask = BuildLpvMask(0u, 1u, 1u, 0u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_INNER_S_W:\n\t\t\t\tmixMask = BuildLpvMask(0u, 0u, 1u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_INNER_N_W:\n\t\t\t\tmixMask = BuildLpvMask(1u, 0u, 0u, 1u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t\tcase BLOCK_STAIRS_TOP_INNER_N_E:\n\t\t\t\tmixMask = BuildLpvMask(1u, 1u, 0u, 0u, 0u, 1u);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (blockId >= BLOCK_STAIRS_TOP_OUTER_N_W && blockId <= BLOCK_STAIRS_TOP_OUTER_S_W) {\n\t\t\tmixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u);\n\t\t}\n\t}\n\n\t// WALL\n\tif (blockId >= BLOCK_WALL_MIN && blockId <= BLOCK_WALL_MAX) {\n\t\tmixWeight = 0.25;\n\n\t\tif (blockId == BLOCK_WALL_POST_TALL_ALL || blockId == BLOCK_WALL_TALL_ALL\n\t\t\t  || blockId == BLOCK_WALL_POST_TALL_N_W_S\n\t\t\t  || blockId == BLOCK_WALL_POST_TALL_N_E_S\n\t\t\t  || blockId == BLOCK_WALL_POST_TALL_W_N_E\n\t\t\t  || blockId == BLOCK_WALL_POST_TALL_W_S_E) {\n\t\t\tmixMask = BuildLpvMask(0u, 0u, 0u, 0u, 1u, 1u);\n\t\t\tmixWeight = 0.125;\n\t\t}\n\t\telse if (blockId == BLOCK_WALL_POST_TALL_N_S || blockId == BLOCK_WALL_TALL_N_S) {\n\t\t\tmixMask = BuildLpvMask(1u, 0u, 1u, 0u, 1u, 1u);\n\t\t}\n\t\telse if (blockId == BLOCK_WALL_POST_TALL_W_E || blockId == BLOCK_WALL_TALL_W_E) {\n\t\t\tmixMask = BuildLpvMask(0u, 1u, 0u, 1u, 1u, 1u);\n\t\t}\n\t\t// TODO: more walls\n\t}\n\n\t// Misc\n\n\tif (blockId == BLOCK_SIGN) {\n\t\tmixWeight = 0.9;\n\t}\n\n\t// Entities\n\n\tif (blockId == ENTITY_BLAZE) {\n\t\tlightColor = vec3(1.000, 0.592, 0.000);\n\t\tlightRange = 8.0;\n\t}\n\n\tif (blockId == ENTITY_END_CRYSTAL) {\n\t\tlightColor = vec3(1.000, 0.000, 1.000);\n\t\tlightRange = 8.0;\n\t}\n\n\tif (blockId == ENTITY_FIREBALL_SMALL) {\n\t\tlightColor = vec3(0.000, 1.000, 0.000);\n\t\tlightRange = 8.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\tif (blockId == ENTITY_GLOW_SQUID) {\n\t\tlightColor = vec3(0.180, 0.675, 0.761);\n\t\tlightRange = 6.0;\n\t\tmixWeight = 0.5;\n\t}\n\n\tif (blockId == ENTITY_MAGMA_CUBE) {\n\t\tlightColor = vec3(0.747, 0.323, 0.110);\n\t\tlightRange = 9.0;\n\t}\n\n\tif (blockId == ENTITY_TNT) {\n\t\tlightColor = vec3(1.0);\n\t\tlightRange = 8.0;\n\t}\n\n\tif (blockId == ENTITY_SPECTRAL_ARROW) {\n\t\tlightColor = vec3(0.839, 0.541, 0.2);\n\t\tlightRange = 8.0;\n\t\tmixWeight = 1.0;\n\t}\n\n\t#ifdef EMISSIVE_ORE\n\t\tif (blockId == 266) {\n\t\t\tlightColor = vec3(EMISSIVE_ORE_R, EMISSIVE_ORE_G, EMISSIVE_ORE_B);\n\t\t\tlightRange = EMISSIVE_ORE_RANGE;\n\t\t}\n\t#endif\n\n\t// hack to increase light (if set)\n\tif (lightRange > 0.0) lightRange += 1.0;\n\n\t// apply saturation changes to light color\n\tconst float saturationF = LPV_SATURATION / 100.0;\n\tmat4 matSaturation = GetSaturationMatrix(saturationF);\n\tlightColor = (matSaturation * vec4(lightColor, 1.0)).rgb;\n\n\t// apply saturation changes to tint color\n\tconst float tintSaturationF = LPV_TINT_SATURATION / 100.0;\n\tmat4 matTintSaturation = GetSaturationMatrix(tintSaturationF);\n\ttintColor = (matTintSaturation * vec4(tintColor, 1.0)).rgb;\n\n\t// lazy fix for migrating from mixWeight to tintColor\n\ttintColor *= mixWeight;\n\n\tuint lightColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0));\n\tuint tintColorMask = packUnorm4x8(vec4(tintColor, 0.0));\n\ttintColorMask |= mixMask << 24;\n\n\timageStore(imgBlockData, blockId, uvec4(lightColorRange, tintColorMask, 0u, 0u));\n#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/shadowcomp.csh",
    "content": "#define RENDER_SHADOWCOMP\n\nlayout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in;\n\n#if LPV_SIZE == 8\n\tconst ivec3 workGroups = ivec3(32, 32, 32);\n#elif LPV_SIZE == 7\n\tconst ivec3 workGroups = ivec3(16, 16, 16);\n#elif LPV_SIZE == 6\n\tconst ivec3 workGroups = ivec3(8, 8, 8);\n#endif\n\n#ifdef IS_LPV_ENABLED\n\tshared vec4 lpvSharedData[10*10*10];\n\tshared uint voxelSharedData[10*10*10];\n\n\tconst vec2 LpvBlockSkyFalloff = vec2(0.96, 0.96);\n\tconst ivec3 lpvFlatten = ivec3(1, 10, 100);\n\n\tuniform vec3 cameraPosition;\n\tuniform vec3 previousCameraPosition;\n\tuniform int frameCounter;\n\n\t#include \"/lib/hsv.glsl\"\n\t#include \"/lib/util.glsl\"\n\t#include \"/lib/blocks.glsl\"\n\t#include \"/lib/lpv_common.glsl\"\n\t#include \"/lib/lpv_blocks.glsl\"\n\t#include \"/lib/lpv_buffer.glsl\"\n\t#include \"/lib/voxel_common.glsl\"\n\n\t#ifdef LPV_SHADOWS\n\t\t#include \"/lib/cube/lightData.glsl\"\n\t\tshared bool lightSharedData[10*10*10];\n\t\tuniform usampler1D texCloseLights;\n\t#endif\n\n\tint sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;}\n\n\tint getSharedIndex(ivec3 pos) {\n\t\treturn sumOf(pos * lpvFlatten);\n\t}\n\n\tvec4 GetLpvValue(in ivec3 texCoord) {\n\t\tif (clamp(texCoord, ivec3(0), ivec3(LpvSize) - 1) != texCoord) return vec4(0.0);\n\n\t\tvec4 lpvSample = (frameCounter % 2) == 0 ? imageLoad(imgLpv2, texCoord) : imageLoad(imgLpv1, texCoord);\n\n\t\tvec4 hsv_sky = vec4(RgbToHsv(lpvSample.rgb), lpvSample.a);\n\t\thsv_sky.zw = exp2(hsv_sky.zw * LpvBlockSkyRange) - 1.0;\n\t\tlpvSample = vec4(HsvToRgb(hsv_sky.xyz), hsv_sky.w);\n\n\t\treturn lpvSample;\n\t}\n    \n\tuint GetVoxelBlock(const in ivec3 voxelPos) {\n\t\tif (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos)\n\t\t\treturn BLOCK_EMPTY;\n\t\treturn imageLoad(imgVoxelMask, voxelPos).r;\n\t}\n\n\tvoid PopulateSharedIndex(const in ivec3 imgCoordOffset, const in ivec3 workGroupOffset, const in uint i) {\n\t\tivec3 pos = workGroupOffset + ivec3(i / lpvFlatten) % 10;\n\n\t\tlpvSharedData[i] = GetLpvValue(imgCoordOffset + pos);\n\t\tvoxelSharedData[i] = GetVoxelBlock(pos);\n\t\t#ifdef LPV_SHADOWS\n\t\t\tlightSharedData[i] = false;\n\t\t\tfor (int l = 0; l < LPV_SHADOWS_LIGHT_COUNT; l++) {\n\t\t\t\tfloat dist; ivec3 lpos; uint id;\n\t\t\t\tif (getLightData(texelFetch(texCloseLights, l, 0).r, dist, lpos, id)) {\n\t\t\t\t\tif (length(vec3(pos) - vec3(lpos - 15 + int(LpvSize / 2))) < 1.5 && dist < 13) {\n\t\t\t\t\t\tlightSharedData[i] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t#endif\n\t}\n\n\tvec4 sampleShared(ivec3 pos, int mask_index) {\n\t\tint shared_index = getSharedIndex(pos + 1);\n\n\t\tfloat mixWeight = 1.0;\n\t\tuint mask = 0xFFFF;\n\t\tuint blockId = voxelSharedData[shared_index];\n        \n\t\tif (blockId > 0 && blockId != BLOCK_EMPTY) {\n\t\t\tuvec2 blockData = imageLoad(imgBlockData, int(blockId)).rg;\n\t\t\tmask = (blockData.g >> 24) & 0xFFFF;\n\t\t}\n\n\t\treturn lpvSharedData[shared_index] * ((mask >> mask_index) & 1u);\n\t}\n\n\tvec4 mixNeighbours(const in ivec3 fragCoord, const in uint mask) {\n\t\tuvec3 m1 = (uvec3(mask) >> uvec3(0, 2, 4)) & uvec3(1u);\n\t\tuvec3 m2 = (uvec3(mask) >> uvec3(1, 3, 5)) & uvec3(1u);\n\n\t\tvec4 sX1 = sampleShared(fragCoord + ivec3(-1,  0,  0), 1) * m1.x;\n\t\tvec4 sX2 = sampleShared(fragCoord + ivec3( 1,  0,  0), 0) * m2.x;\n\t\tvec4 sY1 = sampleShared(fragCoord + ivec3( 0, -1,  0), 3) * m1.y;\n\t\tvec4 sY2 = sampleShared(fragCoord + ivec3( 0,  1,  0), 2) * m2.y;\n\t\tvec4 sZ1 = sampleShared(fragCoord + ivec3( 0,  0, -1), 5) * m1.z;\n\t\tvec4 sZ2 = sampleShared(fragCoord + ivec3( 0,  0,  1), 4) * m2.z;\n\n\t\tconst vec4 avgFalloff = (1.0/6.0) * LpvBlockSkyFalloff.xxxy;\n\t\treturn (sX1 + sX2 + sY1 + sY2 + sZ1 + sZ2) * avgFalloff;\n\t}\n#endif\n\n////////////////////////////// VOID MAIN //////////////////////////////\n\nvoid main() {\n\t#ifdef IS_LPV_ENABLED\n\t\tuvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize;\n\t\tif (any(greaterThanEqual(chunkPos, LpvSize3))) return;\n\n\t\t// Pre-populate shared-memory buffer for improved sampling performance\n\t\tuint i = uint(gl_LocalInvocationIndex) * 2u;\n\t\tif (i < 1000u) {\n\t\t\tivec3 imgCoordOffset = ivec3(floor(cameraPosition) - floor(previousCameraPosition));\n\t\t\tivec3 workGroupOffset = ivec3(gl_WorkGroupID * gl_WorkGroupSize) - 1;\n\n\t\t\tPopulateSharedIndex(imgCoordOffset, workGroupOffset, i);\n\t\t\tPopulateSharedIndex(imgCoordOffset, workGroupOffset, i + 1u);\n\t\t}\n\n\t\tbarrier();\n\n\t\t// Exit early if outside LPV buffer size\n\t\tivec3 imgCoord = ivec3(gl_GlobalInvocationID);\n\t\tif (any(greaterThanEqual(imgCoord, LpvSize3))) return;\n\n\t\tvec4 lightValue = vec4(0.0);\n\t\tvec3 lightColor = vec3(0.0);\n\t\tvec3 tintColor = vec3(1.0);\n\t\tfloat lightRange = 0.0;\n\t\tuint mixMask = 0xFFFF;\n    \n\t\t// Decode light data for current voxel\n\t\tint index = getSharedIndex(ivec3(gl_LocalInvocationID) + 1);\n\t\tuint blockId = voxelSharedData[index];\n\n\t\tif (blockId > 0u) {\n\t\t\tuvec2 blockData = imageLoad(imgBlockData, int(blockId)).rg;\n\t\t\tvec4 lightColorRange = unpackUnorm4x8(blockData.r);\n\t\t\tlightColor = srgbToLinear(lightColorRange.rgb);\n\t\t\tlightRange = lightColorRange.a * 255.0;\n\t\t\tvec4 tintColorMask = unpackUnorm4x8(blockData.g);\n\t\t\ttintColor = srgbToLinear(tintColorMask.rgb);\n\t\t\tmixMask = (blockData.g >> 24) & 0xFFFF;\n\t\t}\n\n\t\t// Mix neighbor voxel light values\n\t\tif (any(greaterThan(tintColor, vec3(0.0)))) {\n\t\t\tvec4 lightMixed = mixNeighbours(ivec3(gl_LocalInvocationID), mixMask);\n\t\t\tlightMixed.rgb *= tintColor;\n\t\t\tlightValue += lightMixed;\n\t\t}\n\n\t\t// Add light for current voxel\n\t\tif (lightRange > 0.0) {\n\t\t\tvec3 hsv = RgbToHsv(lightColor);\n\t\t\thsv.z = exp2(lightRange) - 1.0;\n\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\tif (lightSharedData[index]) hsv.z *= LPV_SHADOWS_LIGHT_MULT;\n\t\t\t#endif\n\t\t\tlightValue.rgb += HsvToRgb(hsv);\n\t\t}\n\n\t\t// Convert back to linear RGB space\n\t\tvec4 hsv_sky = vec4(RgbToHsv(lightValue.rgb), lightValue.a);\n\t\thsv_sky.zw = log2(hsv_sky.zw + 1.0) / LpvBlockSkyRange;\n\t\tlightValue = vec4(HsvToRgb(hsv_sky.xyz), hsv_sky.w);\n\n\t\t// Store final value\n\t\tif (frameCounter % 2 == 0)\n\t\t\timageStore(imgLpv1, imgCoord, lightValue);\n\t\telse\n\t\t\timageStore(imgLpv2, imgCoord, lightValue);\n\t#endif\n}\n"
  },
  {
    "path": "shaders/dimensions/shadowcomp3.csh",
    "content": "#define RENDER_SHADOWCOMP\r\n\r\nlayout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in;\r\n\r\nconst ivec3 workGroups = ivec3(2, 1, 1);\r\n\r\n#ifdef IS_LPV_ENABLED\r\n\t#ifdef LPV_SHADOWS\r\n\t\tuniform vec3 cameraPosition;\r\n\t\tlayout(r32ui) restrict writeonly uniform uimage3D imgSortLights;\r\n\r\n\t\t#include \"/lib/lpv_common.glsl\"\r\n\t\t#include \"/lib/lpv_blocks.glsl\"\r\n\t\t#include \"/lib/voxel_common.glsl\"\r\n\r\n\t\tuint GetVoxelBlock(const in ivec3 voxelPos) {\r\n\t\t\tif (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos)\r\n\t\t\t\treturn BLOCK_EMPTY;\r\n\r\n\t\t\treturn imageLoad(imgVoxelMask, voxelPos).r;\r\n\t\t}\r\n\r\n\t\t#ifdef LPV_HAND_SHADOWS\r\n\t\t\tuniform int heldItemId;\r\n\t\t\tuniform int heldItemId2;\r\n\t\t\tvoid storeHandLight(const in int itemId, inout uint[LPV_SHADOWS_LIGHT_COUNT] allData) {\r\n\t\t\t\tuint blockData = imageLoad(imgBlockData, itemId).r;\r\n\t\t\t\tif (unpackUnorm4x8(blockData).a > 0.0) {\r\n\t\t\t\t\tuvec3 posU = uvec3(15);\r\n\t\t\t\t\t// no distance for hand light\r\n\t\t\t\t\tuint data = posU.x << 21 | posU.y << 16 | posU.z << 11 | itemId;\r\n\t\t\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\t\t\tuint minData = min(allData[i], data);\r\n\t\t\t\t\t\tif (minData == data) data = allData[i];\r\n\t\t\t\t\t\tallData[i] = minData;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t#endif\r\n\t#endif\r\n#endif\r\nvoid main() {\r\n\t#ifdef IS_LPV_ENABLED\r\n\t\t#ifdef LPV_SHADOWS\r\n\t\t\t// total coverage of 32x32\r\n\t\t\t// 8x8 blocks per group, map the 8 z blocks to 2x4, for a total coverage per group of 16x32\r\n\t\t\tuvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize * uvec3(2,1,1);\r\n\t\t\tuvec2 xyPos = chunkPos.xy + uvec2(8) * uvec2(gl_LocalInvocationID.z / 4, gl_LocalInvocationID.z % 4) + gl_LocalInvocationID.xy;\r\n\t\t\t\r\n\t\t\tuint[LPV_SHADOWS_LIGHT_COUNT] allData;\r\n\t\t\tfor(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\tallData[i] = 4294967295u;\r\n\t\t\t}\r\n\t\t\tfor (int z = 0; z < 32; z++) {\r\n\t\t\t\tivec3 pos = ivec3(xyPos.xy, z) - 16;\r\n\t\t\t\tivec3 posGlob = pos + int(LpvSize / 2);\r\n\t\t\t\tuint blockId = GetVoxelBlock(posGlob);\r\n\t\t\t\tif (blockId != BLOCK_EMPTY) {\r\n\t\t\t\t\tuint blockData = imageLoad(imgBlockData, int(blockId)).r;\r\n\t\t\t\t\tif (unpackUnorm4x8(blockData.r).a > 0) {\r\n\t\t\t\t\t\tuvec3 posU = uvec3(pos + 15);\r\n\t\t\t\t\t\tfloat dist = min(length(vec3(pos) - fract(cameraPosition)), 15.9);\r\n\t\t\t\t\t\tif (clamp(posU, uvec3(0), uvec3(31)) == posU) {\r\n\t\t\t\t\t\t\tuint data = uint(dist*4) << 26 | posU.x << 21 | posU.y << 16 | posU.z << 11 | blockId;\r\n\t\t\t\t\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\t\t\t\t\tuint minData = min(allData[i], data);\r\n\t\t\t\t\t\t\t\tif (minData == data) data = allData[i];\r\n\t\t\t\t\t\t\t\tallData[i] = minData;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t#ifdef LPV_HAND_SHADOWS\r\n\t\t\t\t// only do this once\r\n\t\t\t\tif (xyPos.xy == uvec2(16)) {\r\n\t\t\t\t\tif (heldItemId > 0) {\r\n\t\t\t\t\t\tstoreHandLight(heldItemId, allData);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (heldItemId2 > 0) {\r\n\t\t\t\t\t\tstoreHandLight(heldItemId2, allData);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t#endif\r\n\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\timageStore(imgSortLights, ivec3(xyPos.xy, i), uvec4(allData[i]));\r\n\t\t\t}\r\n\t\t#endif\r\n\t#endif\r\n}"
  },
  {
    "path": "shaders/dimensions/shadowcomp4.csh",
    "content": "#define RENDER_SHADOWCOMP\r\n\r\nlayout (local_size_x = 4, local_size_y = 4, local_size_z = 2) in;\r\n\r\nconst ivec3 workGroups = ivec3(1, 1, 1);\r\n\r\n#ifdef IS_LPV_ENABLED\r\n\t#ifdef LPV_SHADOWS\r\n\t\tlayout(r32ui) restrict uniform uimage3D imgSortLights;\r\n\t#endif\r\n#endif\r\n\r\nvoid main() {\r\n\t#ifdef IS_LPV_ENABLED\r\n\t\t#ifdef LPV_SHADOWS\r\n\t\t\t// total coverage of 32x1\r\n\r\n\t\t\tuint[LPV_SHADOWS_LIGHT_COUNT] allData;\r\n\t\t\tfor(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\tallData[i] = 4294967295u;\r\n\t\t\t}\r\n\r\n\t\t\tfor (int y = 0; y < 32; y++) {\r\n\t\t\t\tfor (int z = 0; z < LPV_SHADOWS_LIGHT_COUNT; z++) {\r\n\t\t\t\t\tivec3 pos = ivec3(gl_LocalInvocationIndex, y, z);\r\n\t\t\t\t\tuint data = imageLoad(imgSortLights, pos).r;\r\n\t\t\t\t\t// insert\r\n\t\t\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\t\t\tuint minData = min(allData[i], data);\r\n\t\t\t\t\t\tif (minData == data) data = allData[i];\r\n\t\t\t\t\t\tallData[i] = minData;\r\n\t\t\t\t\t\tif (minData == 4294967295u) break;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\timageStore(imgSortLights, ivec3(gl_LocalInvocationIndex, 0, i), uvec4(allData[i]));\r\n\t\t\t}\r\n\t\t#endif\r\n\t#endif\r\n}"
  },
  {
    "path": "shaders/dimensions/shadowcomp5.csh",
    "content": "#define RENDER_SHADOWCOMP\r\n\r\nlayout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\r\n\r\nconst ivec3 workGroups = ivec3(1, 1, 1);\r\n\r\n#ifdef IS_LPV_ENABLED\r\n\t#ifdef LPV_SHADOWS\r\n\t\tlayout(r32ui) restrict uniform uimage3D imgSortLights;\r\n\t#endif\r\n#endif\r\n\r\nvoid main() {\r\n\t#ifdef IS_LPV_ENABLED\r\n\t\t#ifdef LPV_SHADOWS\r\n\t\t\t// total coverage of 1\r\n\r\n\t\t\tuint[LPV_SHADOWS_LIGHT_COUNT] allData;\r\n\t\t\tfor(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\tallData[i] = 4294967295u;\r\n\t\t\t}\r\n\r\n\t\t\tfor (int x = 0; x < 32; x++) {\r\n\t\t\t\tfor (int z = 0; z < LPV_SHADOWS_LIGHT_COUNT; z++) {\r\n\t\t\t\t\tivec3 pos = ivec3(x, 0, z);\r\n\t\t\t\t\tuint data = imageLoad(imgSortLights, pos).r;\r\n\t\t\t\t\t// insert\r\n\t\t\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\t\t\tuint minData = min(allData[i], data);\r\n\t\t\t\t\t\tif (minData == data) data = allData[i];\r\n\t\t\t\t\t\tallData[i] = minData;\r\n\t\t\t\t\t\tif (minData == 4294967295u) break;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/*uint minData = min(allData[z], data);\r\n\t\t\t\t\tif (minData == data) data = allData[z];\r\n\t\t\t\t\tallData[z] = minData;\r\n\t\t\t\t\tif (minData == 4294967295u) break;*/\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\t\timageStore(imgSortLights, ivec3(0, 0, i), uvec4(allData[i]));\r\n\t\t\t}\r\n\t\t#endif\r\n\t#endif\r\n}"
  },
  {
    "path": "shaders/entity.properties",
    "content": "entity.1601=player\n\nentity.1602=minecraft:lightning_bolt weather2:lightning_bolt\n\n## misc stuff\n\nentity.1603=blaze\n\nentity.1604=ender_dragon wither\n\nentity.1605=end_crystal\n\nentity.1606=glow_squid\n\nentity.1607=item_frame item_display\n\nentity.1608=magma_cube\n\nentity.1609=tnt firework_rocket\n\nentity.1610=small_fireball\n\nentity.1611=spectral_arrow bigglobe:torch_arrow entity_flame\n\n################################################\n###### SUB-SURFACE SCATTERING\n################################################\n\n## medium sss (same as strong sss for blocks)\nentity.1801=giant ghast elder_guardian \\\n naturalist:butterfly naturalist:firefly naturalist:caterpillar naturalist:dragonfly\n\n## weak sss (same as weak sss for blocks)\nentity.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 \\\n 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\n#removed: player blaze magma_cube\n\n################################################\n###### REFLECTIVE TRANSLUCENTS\n################################################\n\nentity.1803=slime\n"
  },
  {
    "path": "shaders/item.properties",
    "content": "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\n\nitem.1001=medium_amethyst_bud\n\nitem.1002=large_amethyst_bud\n\nitem.1003=amethyst_cluster\n\nitem.1004=beacon\n\nitem.1005=blaze_rod\n\nitem.1006=end_rod\n\nitem.1007=ochre_froglight\n\nitem.1008=pearlescent_froglight\n\nitem.1009=verdant_froglight\n\nitem.1010=glow_berries\n\nitem.1011=glow_lichen\n\nitem.1012=glowstone\n\nitem.1013=glowstone_dust\n\nitem.1014=jack_o_lantern\n\nitem.1015=lantern\n\nitem.1016=lava_bucket\n\n## ITEM_LIGHT\n# item.* = light\n\nitem.1017=magma_block\n\nitem.1018=redstone_torch\n\nitem.1019=sculk_catalyst\n\nitem.1020=sea_lantern betternether:willow_torch\n\nitem.1021=shroomlight\n\nitem.1022=soul_lantern\n\nitem.1023=soul_torch\n\nitem.1024=torch\n\nitem.1025=firefly_bush\n"
  },
  {
    "path": "shaders/lang/en_us.lang",
    "content": "option.SHADER_VERSION_LABEL = Bliss-BSPT by WF99\n\tprefix.SHADER_VERSION_LABEL = #\n\nprofile.veryLow=§aVery Low\nprofile.Low=§bLow\nprofile.Medium=§9Medium\nprofile.High=§dHigh\nprofile.veryHigh=§cVery High\n\nscreen.World=World\nscreen.Sky=Sky Configuration\n\toption.sunPathRotation=Sun Angle\n\t\tsuffix.sunPathRotation=°\n\toption.RAINBOW=Rainbow Type\n\t\tvalue.RAINBOW.0=OFF\n\t\tvalue.RAINBOW.1=Realistic\n\t\tvalue.RAINBOW.2=All time\n\toption.RAINBOW_STRENGTH=Rainbow Strength\n\nscreen.Sky_coefficients=Sky\n\toption.Sky_Brightness=Sky Brightness\n\toption.sky_coefficientRayleighR=Rayleigh R\n\toption.sky_coefficientRayleighG=Rayleigh G\n\toption.sky_coefficientRayleighB=Rayleigh B\n\toption.sky_coefficientMieR=Mie R\n\toption.sky_coefficientMieG=Mie G\n\toption.sky_coefficientMieB=Mie B\n\nscreen.Sun_and_Moon=Sun & Moon\n\toption.sunColorR=Sun R\n\toption.sunColorG=Sun G\n\toption.sunColorB=Sun B\n\toption.moonColorR=Moon R\n\toption.moonColorG=Moon G\n\toption.moonColorB=Moon B\n\toption.colortype=Color Type\n\t\tvalue.colortype.1=RGB\n\t\tvalue.colortype.2=Temperature\n\toption.Sun_temp=Sun Temperature\n\t\tsuffix.Sun_temp=K\n\toption.Moon_temp=Moon Temperature\n\t\tsuffix.Moon_temp=K\n\toption.sun_illuminance=Sun Illuminance\n\t\tsuffix.sun_illuminance=LX\n\toption.moon_illuminance=Moon Illuminance\n\t\tsuffix.moon_illuminance=LX\n\toption.MOONPHASE_BASED_MOONLIGHT=Moonphase Brightness Levels\n\nscreen.Aurora=Aurora\n\toption.AURORA_BRIGHTNESS=Aurora Brightness\n\toption.AURORA_SPEED=Aurora Speed\n\toption.AURORA_SNOWY=Aurora Appears Snow Biome ONLY\n\toption.AUR_ENV_OFFSET=Aurora Light Contribution to Environment\n\toption.AURORA_UPPER_R=Aurora Upper Color R\n\toption.AURORA_UPPER_G=Aurora Upper Color G\n\toption.AURORA_UPPER_B=Aurora Upper Color B\n\toption.AURORA_LOWER_R=Aurora Lower Color R\n\toption.AURORA_LOWER_G=Aurora Lower Color G\n\toption.AURORA_LOWER_B=Aurora Lower Color B\n\nscreen.Shooting_Stars=Stars & Shooting Stars\n\toption.STAR_DENSITY=Star Density\n\toption.STAR_MOVEMENT_MULT=Star Rotation Speed\n\toption.SHOOTING_STARS=Shooting Stars\n\toption.SHOOTING_STARS_SPEED=Shooting Star Speed\n\toption.SHOOTING_STARS_FREQUENCY=Shooting Star Frequency\n\toption.SHOOTING_STARS_TRAIL_VISIBILITY=Shooting Star Trail Visibility\n\toption.SHOOTING_STARS_TRAIL_LENGTH=Shooting Star Trail Length\n\toption.SHOOTING_STARS_TRAIL_WIDTH=Shooting Star Trail Width\n\nscreen.Weather=Weather\n\toption.RAIN_VISIBILITY=Rain/Snow Visibility\n\toption.Rain_coverage=Rain Cloud Coverage\n\toption.WATER_RIPPLES=Water Ripples\n\toption.GROUND_RIPPLES=Ground Ripples\n\nscreen.Rain_Fog= Rain Fog\n\toption.RainFog_amount=Rain Fog Density\n\toption.RAINFOG_R=Rain Fog Color R\n\toption.RAINFOG_G=Rain Fog Color G\n\toption.RAINFOG_B=Rain Fog Color B\n\nscreen.DAILY_WEATHER=Daily Weather Settings\n\toption.Daily_Weather=Daily Weather\n\toption.CHOOSE_RANDOM_WEATHER_PROFILE=Random Weather Profile\n\nscreen.DAY0_WEATHER = Day 0 Weather Profile\n\toption.DAY0_l0_coverage = Small Cumulus Coverage\n\toption.DAY0_l0_density = Small Cumulus Density\n\toption.DAY0_l1_coverage = Large Cumulus Coverage\n\toption.DAY0_l1_density = Large Cumulus Density\n\toption.DAY0_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY0_l2_density =  Altostratus Clouds Density\n\toption.DAY0_ufog_density = Uniform Fog Density\n\toption.DAY0_cfog_density = Cloudy Fog Density\n        \nscreen.DAY1_WEATHER = Day 1 Weather Profile\n\toption.DAY1_l0_coverage = Small Cumulus Coverage\n\toption.DAY1_l0_density = Small Cumulus Density\n\toption.DAY1_l1_coverage = Large Cumulus Coverage\n\toption.DAY1_l1_density = Large Cumulus Density\n\toption.DAY1_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY1_l2_density =  Altostratus Clouds Density\n\toption.DAY1_ufog_density = Uniform Fog Density\n\toption.DAY1_cfog_density = Cloudy Fog Density\n        \nscreen.DAY2_WEATHER = Day 2 Weather Profile\n\toption.DAY2_l0_coverage = Small Cumulus Coverage\n\toption.DAY2_l0_density = Small Cumulus Density\n\toption.DAY2_l1_coverage = Large Cumulus Coverage\n\toption.DAY2_l1_density = Large Cumulus Density\n\toption.DAY2_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY2_l2_density =  Altostratus Clouds Density\n\toption.DAY2_ufog_density = Uniform Fog Density\n\toption.DAY2_cfog_density = Cloudy Fog Density\n\nscreen.DAY3_WEATHER = Day 3 Weather Profile\n\toption.DAY3_l0_coverage = Small Cumulus Coverage\n\toption.DAY3_l0_density = Small Cumulus Density\n\toption.DAY3_l1_coverage = Large Cumulus Coverage\n\toption.DAY3_l1_density = Large Cumulus Density\n\toption.DAY3_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY3_l2_density =  Altostratus Clouds Density\n\toption.DAY3_ufog_density = Uniform Fog Density\n\toption.DAY3_cfog_density = Cloudy Fog Density\n\nscreen.DAY4_WEATHER = Day 4 Weather Profile\n\toption.DAY4_l0_coverage = Small Cumulus Coverage\n\toption.DAY4_l0_density = Small Cumulus Density\n\toption.DAY4_l1_coverage = Large Cumulus Coverage\n\toption.DAY4_l1_density = Large Cumulus Density\n\toption.DAY4_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY4_l2_density =  Altostratus Clouds Density\n\toption.DAY4_ufog_density = Uniform Fog Density\n\toption.DAY4_cfog_density = Cloudy Fog Density\n\nscreen.DAY5_WEATHER = Day 5 Weather Profile\n\toption.DAY5_l0_coverage = Small Cumulus Coverage\n\toption.DAY5_l0_density = Small Cumulus Density\n\toption.DAY5_l1_coverage = Large Cumulus Coverage\n\toption.DAY5_l1_density = Large Cumulus Density\n\toption.DAY5_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY5_l2_density =  Altostratus Clouds Density\n\toption.DAY5_ufog_density = Uniform Fog Density\n\toption.DAY5_cfog_density = Cloudy Fog Density\n\nscreen.DAY6_WEATHER = Day 6 Weather Profile\n\toption.DAY6_l0_coverage = Small Cumulus Coverage\n\toption.DAY6_l0_density = Small Cumulus Density\n\toption.DAY6_l1_coverage = Large Cumulus Coverage\n\toption.DAY6_l1_density = Large Cumulus Density\n\toption.DAY6_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY6_l2_density =  Altostratus Clouds Density\n\toption.DAY6_ufog_density = Uniform Fog Density\n\toption.DAY6_cfog_density = Cloudy Fog Density\n\nscreen.DAY7_WEATHER = Day 7 Weather Profile\n\toption.DAY7_l0_coverage = Small Cumulus Coverage\n\toption.DAY7_l0_density = Small Cumulus Density\n\toption.DAY7_l1_coverage = Large Cumulus Coverage\n\toption.DAY7_l1_density = Large Cumulus Density\n\toption.DAY7_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY7_l2_density =  Altostratus Clouds Density\n\toption.DAY7_ufog_density = Uniform Fog Density\n\toption.DAY7_cfog_density = Cloudy Fog Density\n\nscreen.DAY8_WEATHER = Day 8 Weather Profile\n\toption.DAY8_l0_coverage = Small Cumulus Coverage\n\toption.DAY8_l0_density = Small Cumulus Density\n\toption.DAY8_l1_coverage = Large Cumulus Coverage\n\toption.DAY8_l1_density = Large Cumulus Density\n\toption.DAY8_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY8_l2_density =  Altostratus Clouds Density\n\toption.DAY8_ufog_density = Uniform Fog Density\n\toption.DAY8_cfog_density = Cloudy Fog Density\n\nscreen.DAY9_WEATHER = Day 9 Weather Profile\n\toption.DAY9_l0_coverage = Small Cumulus Coverage\n\toption.DAY9_l0_density = Small Cumulus Density\n\toption.DAY9_l1_coverage = Large Cumulus Coverage\n\toption.DAY9_l1_density = Large Cumulus Density\n\toption.DAY9_l2_coverage = Altostratus Clouds Coverage\n\toption.DAY9_l2_density =  Altostratus Clouds Density\n\toption.DAY9_ufog_density = Uniform Fog Density\n\toption.DAY9_cfog_density = Cloudy Fog Density\n\n\toption.PER_BIOME_ENVIRONMENT=Per Biome Environments\nscreen.Biome=Biome Settings\nscreen.SWAMP=Swamp and Its Variants\n\toption.SWAMP_ENV=Swamp Environment\n\toption.SWAMP_UNIFORM_DENSITY=Uniform Fog Density\n\toption.SWAMP_CLOUDY_DENSITY=Cloudy Fog Density\n\toption.SWAMP_R=Red Amount\n\toption.SWAMP_G=Green Amount\n\toption.SWAMP_B=Blue Amount\n\nscreen.JUNGLE=Jungle and Its Variants\n\toption.JUNGLE_ENV=Jungle Environment\n\toption.JUNGLE_UNIFORM_DENSITY=Uniform Fog Density\n\toption.JUNGLE_CLOUDY_DENSITY=Cloudy Fog Density\n\toption.JUNGLE_R=Red Amount\n\toption.JUNGLE_G=Green Amount\n\toption.JUNGLE_B=Blue Amount\n\nscreen.DARKFOREST=Black Forest and Its Variants\n\toption.DARKFOREST_ENV=Black Forest Environment\n\toption.DARKFOREST_UNIFORM_DENSITY=Uniform Fog Density\n\toption.DARKFOREST_CLOUDY_DENSITY=Cloudy Fog Density\n\toption.DARKFOREST_R=Red Amount\n\toption.DARKFOREST_G=Green Amount\n\toption.DARKFOREST_B=Blue Amount\n\nscreen.SNOWY=Snowy Biomes\n\toption.SNOWY_ENV=Snowy Biomes Environment\n\toption.SNOWY_UNIFORM_DENSITY=Uniform Fog Density\n\toption.SNOWY_CLOUDY_DENSITY=Cloudy Fog Density\n\toption.SNOWY_R=Red Amount\n\toption.SNOWY_G=Green Amount\n\toption.SNOWY_B=Blue Amount\n\nscreen.DRY=Dry Biomes\n\toption.DRY_ENV=Dry Biomes Environment\n\toption.DRY_UNIFORM_DENSITY=Uniform Fog Density\n\toption.DRY_CLOUDY_DENSITY=Cloudy Fog Density\n\toption.DRY_R=Red Amount\n\toption.DRY_G=Green Amount\n\toption.DRY_B=Blue Amount\n\nscreen.Waving_Stuff=Waving Stuff\n\toption.WAVY_PLANTS=Waving Plants\n\toption.RP_MODEL_FIX=Disable 3D Plants Waving\n\toption.WAVY_STRENGTH=Waving Strength\n\toption.WAVY_SPEED=Waving Speed\n\n\toption.SKY_GROUND=Atmosphere ground\n\nscreen.Ambient_Light_Shadow=Ambient Light and Shadow Settings\nscreen.Torch_Settings=Torch Settings\n\toption.TORCH_AMOUNT=Torch Light Brightness\n\toption.TORCH_R=Red Amount\n\toption.TORCH_G=Green Amount\n\toption.TORCH_B=Blue Amount\n\nscreen.Ambient_Colors=Ambient Light Color\n\toption.ambient_brightness=Ambient Light Brightness\n\toption.MIN_LIGHT_AMOUNT=Minimum Light Brightness\n\toption.AmbientLight_R=Red Amount\n\toption.AmbientLight_G=Green Amount\n\toption.AmbientLight_B=Blue Amount\n\n\toption.indirect_effect=Indirect Lighting\n\t\tvalue.indirect_effect.0=Vanilla AO\n\t\tvalue.indirect_effect.1=SSAO\n\t\tvalue.indirect_effect.2=GTAO\n\t\tvalue.indirect_effect.3=RTAO\n\n\toption.indirect_RTGI=Ray-Traced Global Illumination\n\t\tvalue.indirect_RTGI.0=OFF\n\t\tvalue.indirect_RTGI.1=SSGI\n\t\tvalue.indirect_RTGI.2=HQ SSGI\n\nscreen.AO=AO Settings\n\toption.AO_Strength=AO Multiplier\n\toption.AO_in_sunlight=AO In Sunlight\n\nscreen.GI=GI Settings\n\toption.GI_Strength=GI Multiplier\n\toption.RAY_COUNT=Ray Count\n\toption.RT_ITERATION=Ray Iteration\n\toption.UseQuarterResDepth=Use Quarter Resolution Depth\n\nscreen.HAND_HELD_LIGHT=Hand Held Light/Flashlight Settings\n\toption.Hand_Held_lights=Hand Held Light\n\toption.HANDHELD_LIGHT_RANGE=Hand Held Light Range\n\toption.FLASHLIGHT=Flashlight\n\nscreen.FLASHLIGHT_SETTING=Flashlight Settings\n\toption.FLASHLIGHT_RANGE=Flashlight Range\n\toption.FLASHLIGHT_BRIGHTNESS_MULT=Flashlight Brightness\n\toption.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT=Flashlight Brightness Falloff\n\toption.FLASHLIGHT_SPECULAR=Flashlight Specular\n\toption.FLASHLIGHT_SIZE=Flashlight Size\n\toption.FLASHLIGHT_R=Red Amount\n\toption.FLASHLIGHT_G=Green Amount\n\toption.FLASHLIGHT_B=Blue Amount\n\toption.FLASHLIGHT_BOUNCED_INDIRECT=Flashlight Light Bounce\n\toption.FLASHLIGHT_FOG_ILLUMINATION=Flashlight Fog Illumination\n\nscreen.Shadows=Shadow Settings\n\toption.TRANSLUCENT_COLORED_SHADOWS=Translucent Colored Shadows\n\toption.SCREENSPACE_CONTACT_SHADOWS=Screespace Shadows\n\toption.RENDER_ENTITY_SHADOWS=Shadows for Entities\n\toption.RENDER_PLAYER_SHADOWS=Shadows for the Player\n\toption.shadowMapResolution=Shadow Resolution\n\toption.shadowDistance=Shadow Distance\n\t\tvalue.shadowDistance.16 = 1 Chunk\n\t\tvalue.shadowDistance.32 = 2 Chunks\n\t\tvalue.shadowDistance.48 = 3 Chunks\n\t\tvalue.shadowDistance.64 = 4 Chunks\n\t\tvalue.shadowDistance.80 = 5 Chunks\n\t\tvalue.shadowDistance.96 = 6 Chunks\n\t\tvalue.shadowDistance.128 = 8 Chunks\n\t\tvalue.shadowDistance.160 = 10 Chunks\n\t\tvalue.shadowDistance.192 = 12 Chunks\n\t\tvalue.shadowDistance.256 = 16 Chunks\n\t\tvalue.shadowDistance.512 = 32 Chunks\n\t\tvalue.shadowDistance.1024 = 64 Chunks\n\t\tvalue.shadowDistance.2048 = 128 Chunks\n\t\tvalue.shadowDistance.4096 = 256 Chunks\n\t\tvalue.shadowDistance.8192 = 512 Chunks\n\nscreen.Filtering=Shadow Filtering Settings\n\toption.BASIC_SHADOW_FILTER=Basic Shadow Filter\n\toption.SHADOW_FILTER_SAMPLE_COUNT=Basic Shadow Filter Samples\n\toption.Min_Shadow_Filter_Radius=Minimum Shadow filter Radius\n\toption.Variable_Penumbra_Shadows=Variable Penumbra Shadows\n\toption.VPS_Search_Samples=VPS Filter Samples\n\toption.Max_Shadow_Filter_Radius=Maximum Shadow Filter Radius\n\toption.Max_Filter_Depth=Sun Size Factor\n\nscreen.LPV=FloodFill - §cIRIS REQUIRED§r\n\toption.LPV_ENABLED=Enabled\n\toption.LPV_SIZE=Size\n\t\tvalue.LPV_SIZE.6=Small [64]\n\t\tvalue.LPV_SIZE.7=Medium [128]\n\t\tvalue.LPV_SIZE.8=Large [256]\n\toption.LPV_BLOCKLIGHT_SCALE=LPV Range\n\toption.LPV_SATURATION=Light Saturation\n\t\tsuffix.LPV_SATURATION=%\n\toption.LPV_TINT_SATURATION=Tint Saturation\n\t\tsuffix.LPV_TINT_SATURATION=%\n\toption.LPV_NORMAL_STRENGTH=LPV Normal Strength\n\t\tsuffix.LPV_NORMAL_STRENGTH=%\n\t\tvalue.LPV_NORMAL_STRENGTH.0=OFF\n\toption.LPV_ENTITY_LIGHTS=Entity Lights\n\toption.LPV_REDSTONE_LIGHTS=Redstone Lights\n\toption.LPV_COLORED_CANDLES=Colored Candles\n\toption.LPV_NOSHADOW_HACK=Iris <= 1.7.0 Fix\n\toption.LPV_VL_FOG_ILLUMINATION=Fog Light Propagation\n\toption.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=Fog Light Propagation Brightness\n\t\tsuffix.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=%\n\toption.VANILLA_LIGHTMAP_MASK=Vanilla LPV Lighting\n\nscreen.BLOCK_SHADOWS=Block Light Shadow Settings\n\toption.LPV_SHADOWS=LPV Shadow\n\toption.LPV_SHADOWS_LIGHT_COUNT=LPV Shadow Light Intensity\n\toption.LPV_COLOR_SHADOWS=LPV Colored Shadow\n\toption.LPV_SHADOWS_LIGHT_MULT=LPV Light Mult\n\toption.LPV_HAND_SHADOWS=LPV Hand Shadow\n\nscreen.Fog=Fog Settings\n\toption.VL_RENDER_RESOLUTION=Fog Resolution Scaling\n\toption.VL_SAMPLES=Fog Samples\n\toption.BLOOMY_FOG=Bloomy Fog Multiplier\n\toption.Haze_amount=Atmospheric Haze Density\n\toption.BorderFog=Chunk Border Fog\n\toption.FOG_START_HEIGHT=Fog Start Heigt\n\nscreen.Fog_Color=Fog Color\n\toption.fog_coefficientMieR=Mie R\n\toption.fog_coefficientMieG=MieG\n\toption.fog_coefficientMieB=MieB\n\nscreen.TOD_fog = Time Of Day Fog\n\toption.TOD_Fog_mult = Fog Density Multiplier\n\toption.Morning_Uniform_Fog = Morning Fog Density\n\toption.Noon_Uniform_Fog = Noon Fog Density\n\toption.Evening_Uniform_Fog = Evening Fog Density\n\toption.Night_Uniform_Fog = Night Fog Density\n\toption.Morning_Cloudy_Fog = Cloudy Morning Fog Density\n\toption.Noon_Cloudy_Fog = Cloudy Noon Fog Density\n\toption.Evening_Cloudy_Fog = Cloudy Evening Fog Density\n\toption.Night_Cloudy_Fog = Cloudy Night Fog Density\n\nscreen.Cave_Fog = Cave Fog\n\toption.Cave_Fog = Cave Fog\n\toption.CaveFogFallOff = Fog Falloff\n\toption.CaveFogColor_R = Fog R\n\toption.CaveFogColor_G = Fog G\n\toption.CaveFogColor_B = Fog B\n\nscreen.Nether_Fog = Nether Fog\n\toption.NETHER_PLUME_DENSITY = Nether Smoke Density\n\toption.NETHER_PLUME_R = Nether Plume R\n\toption.NETHER_PLUME_G = Nether Plume G\n\toption.NETHER_PLUME_B = Nether Plume B\n\nscreen.End_Fog = End Fog\n\toption.END_STORM_DENSITY = End Storm Density\n\toption.END_FOG_R = End Fog R\n\toption.END_FOG_G = End Fog G\n\toption.END_FOG_B = End Fog B\n\toption.END_VORTEX_R = End Vortex R\n\toption.END_VORTEX_G = End Vortex G\n\toption.END_VORTEX_B = End Vortex B\n\toption.END_LIGHTNING_R = End Lightning Offset R\n\toption.END_LIGHTNING_G = End Lightning Offset G\n\toption.END_LIGHTNING_B = End Lightning Offset B\n\nscreen.Clouds = Cloud Settings\n\toption.VOLUMETRIC_CLOUDS = Volumetric Clouds\n\toption.CLOUDS_QUALITY = Cloud Resolution Scaling\n\toption.CLOUDS_SHADOWS = Cloud Shadows\n\toption.CLOUD_SHADOW_STRENGTH = Cloud Shadow Multiplier\n\toption.HQ_CLOUDS = High Quality Cloud\n\toption.ERODE_AMOUNT = Cloud Erosion Amount\n\toption.Cloud_Speed = Cloud Speed\n\nscreen.S_Cumulus_Cloud = Small Cumulus Cloud Settings\nscreen.L_Cumulus_Cloud = Large Cumulus Cloud Settings\nscreen.Altostratus_Cloud = Altostratus Cloud Settings\n\n\toption.CloudLayer0=Small Cumulus Cloud\n\toption.CloudLayer0_coverage=Coverage\n\toption.CloudLayer0_density=Density\n\toption.CloudLayer0_height=Height\n\toption.CloudLayer0_tallness=Tallness\n\toption.CloudLayer0_scale=Scale\n\n\toption.CloudLayer1=Large Cumulus Cloud\n\toption.CloudLayer1_coverage=Coverage\n\toption.CloudLayer1_density=Density\n\toption.CloudLayer1_height=Height\n\toption.CloudLayer1_tallness=Tallness\n\toption.CloudLayer1_scale=Scale\n\n\toption.CloudLayer2=Altostratus Cloud\n\toption.CloudLayer2_coverage=Coverage\n\toption.CloudLayer2_density=Density\n\toption.CloudLayer2_height=Height\n\toption.CloudLayer2_scale=Scale\n\nscreen.Climate = Climate Settings\n\toption.Seasons = Seasonal Colors\n\toption.Season_Length = Season Length (In Days)\n\toption.Start_Season = Starting Season\n\t\tvalue.Start_Season.0 = Summer (Default)\n\t\tvalue.Start_Season.1 = Fall\n\t\tvalue.Start_Season.2 = Winter\n\t\tvalue.Start_Season.3 = Spring\n\nscreen.Summer_colors = Summer Colors\n\toption.Summer_R = Red Amount\n\toption.Summer_G = Green Amount\n\toption.Summer_B = Blue Amount\n\toption.Summer_Leaf_R = Red Amount (for leaves)\n\toption.Summer_Leaf_G = Green Amount (for leaves)\n\toption.Summer_Leaf_B = Blue Amount (for leaves)\n\nscreen.Fall_colors = Fall Colors\n\toption.Fall_R = Red Amount\n\toption.Fall_G = Green Amount\n\toption.Fall_B = Blue Amount\n\toption.Fall_Leaf_R = Red Amount (for leaves)\n\toption.Fall_Leaf_G = Green Amount (for leaves)\n\toption.Fall_Leaf_B = Blue Amount (for leaves)\n\nscreen.Winter_colors = Winter Colors\n\toption.Winter_R = Red Amount\n\toption.Winter_G = Green Amount\n\toption.Winter_B = Blue Amount\n\toption.Winter_Leaf_R = Red Amount (for leaves)\n\toption.Winter_Leaf_G = Green Amount (for leaves)\n\toption.Winter_Leaf_B = Blue Amount (for leaves)\n\nscreen.Spring_colors = Spring Colors\n\toption.Spring_R = Red Amount\n\toption.Spring_G = Green Amount\n\toption.Spring_B = Blue Amount\n\toption.Spring_Leaf_R = Red Amount (for leaves)\n\toption.Spring_Leaf_G = Green Amount (for leaves)\n\toption.Spring_Leaf_B = Blue Amount (for leaves)\n\nscreen.Water = Water Settings\n\toption.rayMarchSampleCount = RayMarch Sample Count\n\toption.WATER_SUN_SPECULAR = Sun/Moon Reflections\n\toption.FAKE_REFRACTION_EFFECT_AMOUNT = Refraction In Water/Glass\n\t\tvalue.FAKE_REFRACTION_AMOUNT.0 = OFF\n\t\tvalue.FAKE_REFRACTION_AMOUNT.1 = 0.25x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.2 = 0.50x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.3 = 0.75x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.4 = 1.00x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.5 = 1.25x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.6 = 1.50x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.7 = 1.75x\n\t\tvalue.FAKE_REFRACTION_AMOUNT.8 = 2.00x\n\toption.FAKE_DISPERSION_EFFECT_AMOUNT = Dispersion In Water/Glass\n\t\tvalue.FAKE_DISPERSION_AMOUNT.0 = OFF\n\t\tvalue.FAKE_DISPERSION_AMOUNT.1 = 0.25x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.2 = 0.50x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.3 = 0.75x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.4 = 1.00x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.5 = 1.25x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.6 = 1.50x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.7 = 1.75x\n\t\tvalue.FAKE_DISPERSION_AMOUNT.8 = 2.00x\n\toption.REFRACTION_SMUDGE_AMOUNT = Refraction Smudge\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.0 = OFF\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.1 = 0.25x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.2 = 0.50x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.3 = 0.75x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.4 = 1.00x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.5 = 1.25x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.6 = 1.50x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.7 = 1.75x\n\t\tvalue.REFRACTION_SMUDGE_AMOUNT.8 = 2.00x\n\toption.Dirt_Amount = Dirt Amount\n\toption.WATER_WAVE_STRENGTH = Wave Strength\n\toption.SNELLS_WINDOW = Snell's Window\n\toption.MINIMUM_WATER_ABSORBANCE = Minimum Water Absorbance\n\t\tvalue.MINIMUM_WATER_ABSORBANCE.-1 = AUTO\n\toption.WATER_DISTORTION_AMOUNT = Water Distortion Amount\n\toption.WATER_WAVE_SPEED=Wave Speed\n\toption.Vanilla_like_water=Vanilla Water Texture\n\nscreen.Water_fog_color = Water Fog Settings\n\toption.Dirt_Scatter_R = Scatter Red (dirt)\n\toption.Dirt_Scatter_G = Scatter Green (dirt)\n\toption.Dirt_Scatter_B = Scatter Blue (dirt)\n\toption.Dirt_Absorb_R = Absorb Red (dirt)\n\toption.Dirt_Absorb_G = Absorb Green (dirt)\n\toption.Dirt_Absorb_B = Absorb Blue (dirt)\n\toption.Water_Absorb_R = Absorb Red (water)\n\toption.Water_Absorb_G = Absorb Green (water)\n\toption.Water_Absorb_B = Absorb Blue (water)\n\n\toption.PLANET_CURVATURE = Planet Curvation\n\toption.CURVATURE_AMOUNT = Curvation Amount\n\nscreen.Post_Processing = Post Processing\nscreen.COLOR_GRADING = Color Grading\n\toption.LUMINANCE_CURVE = Tone Curve\n\toption.LOWER_CURVE = Lower Curve\n\toption.UPPER_CURVE = Upper Curve\n\toption.COLOR_GRADING_ENABLED=Color Grading\n\toption.SHADOWS_GRADE_R = Shadows §cRed\n\toption.SHADOWS_GRADE_G = Shadows §aGreen\n\toption.SHADOWS_GRADE_B = Shadows §9Blue\n\toption.SHADOWS_GRADE_MUL = Shadows Brightness\n\toption.MIDS_GRADE_R = Midtones §cRed\n\toption.MIDS_GRADE_G = Midtones §aGreen\n\toption.MIDS_GRADE_B = Midtones §9Blue\n\toption.MIDS_GRADE_MUL = Midtones Brightness\n\toption.HIGHLIGHTS_GRADE_R = Highlights §cRed\n\toption.HIGHLIGHTS_GRADE_G = Highlights §aGreen\n\toption.HIGHLIGHTS_GRADE_B = Highlights §9Blue\n\toption.HIGHLIGHTS_GRADE_MUL = Highlights Brightness\nscreen.Exposure = Exposure Settings\nscreen.DepthOfField = Depth Of Field Settings\nscreen.Purkinje_effect = Purkinje Effect Settings\n\toption.Purkinje_strength = Purkinje Effect Blending Amount\n\t\tvalue.Purkinje_strength.0 = OFF\n\t\tsuffix.Purkinje_strength =%\n\toption.SHARPENING = Sharpening Amount\n\toption.BLOOM_STRENGTH = Bloom Multiplier\nscreen.TAA_OPTIONS = Anti-Aliasing Settings\n\toption.SCREENSHOT_MODE = Screenshot Mode\n\toption.TAA = TAA\n\toption.RESPONSIVE_TAA = Responsive TAA §a(TURN THIS OFF WITH TEMPORAL UPSCALING)\n\toption.BLEND_FACTOR = Blend Factor\n\toption.TAA_UPSCALING = Temporal Upscaling\n\toption.SCALE_FACTOR = Scale Factor\n\toption.CAMERA_GRIDLINES = Camera Gridlines\n\toption.MOTION_BLUR = Motion Blur\n\toption.MOTION_BLUR_STRENGTH = Motion Blur Strength\n\toption.CHROMATIC_ABERRATION = Chromatic Aberration\n\toption.CHROMATIC_ABERRATION_STRENGTH = Chromatic Aberration Strength\n\toption.VIGNETTE = Vignette\n\toption.VIGNETTE_STRENGTH = Vignette Strength\n\nscreen.Resource_Pack_Support=Resource Pack Support\nscreen.Reflections=Specular Reflections\n\toption.DEFERRED_SPECULAR=Deferred Specular\n\toption.FORWARD_SPECULAR=Forward Specular\n\toption.DEFERRED_ENVIRONMENT_REFLECTION=Deferred Environment Reflection\n\toption.FORWARD_ENVIRONMENT_REFLECTION=Forward Environment Reflection\n\toption.DEFERRED_BACKGROUND_REFLECTION=Deferred Background Reflection\n\toption.FORWARD_BACKGROUND_REFLECTION=Forward Background Reflection\n\toption.DEFERRED_ROUGH_REFLECTION=Deferred Roughness Reflection\n\toption.FORWARD_ROUGH_REFLECTION=Forward Roughness Reflection\n\toption.ROUGHNESS_THRESHOLD=Roughness Threshold\n\toption.SUN_SPECULAR_MULT=Sun Specular Strength\n\toption.MATERIAL_WETNESS_TYPE=Material Wetness Reflection\n\t\tvalue.MATERIAL_WETNESS_TYPE.0=Adaptive\n\t\tvalue.MATERIAL_WETNESS_TYPE.1=Unified\n\nscreen.Emissives = Emissives\n\toption.Emissive_Brightness = Emission Multiplier\n\toption.Emissive_Curve = Emission Curve\n\toption.EMISSIVE_TYPE = Mode\n\t\tvalue.EMISSIVE_TYPE.0 = No emission\n\t\tvalue.EMISSIVE_TYPE.1 = Hardcoded only\n\t\tvalue.EMISSIVE_TYPE.2 = Hardcoded + Lab Emission\n\t\tvalue.EMISSIVE_TYPE.3 = Lab Emission only\n\nscreen.Subsurface_Scattering = Subsurface Scattering\n\toption.LabSSS_Curve = LabSSS Curve\n\toption.sss_density_multiplier=SSS Density Multiplier\n\toption.sss_absorbance_multiplier=SSS Absorbance Multiplier\n\toption.MISC_BLOCK_SSS = SSS for Specific Blocks\n\toption.MOB_SSS = SSS for MOBs\n\toption.Ambient_SSS = SSS from the Sky\n\toption.ambientsss_brightness = Sky SSS Brightness\n\toption.SSS_TYPE = Mode\n\t\tvalue.SSS_TYPE.0 = None\n\t\tvalue.SSS_TYPE.1 = Hardcoded only\n\t\tvalue.SSS_TYPE.2 = Hardcoded + LabSSS\n\t\tvalue.SSS_TYPE.3 = LabSSS only\n\nscreen.POM=Parallax Occlusion Mapping / POM\n\toption.POM = Parallax Occlusion Mapping\n\toption.MAX_ITERATIONS=Quality\n\toption.POM_DEPTH=Depth\n\toption.MAX_DIST=Maximum Distance\n\toption.Adaptive_Step_length=Dynamic Quality\n\nscreen.Porosity = Porosity / Puddles\n\toption.Porosity = Porosity\n\toption.Puddles = Puddles\n\toption.Puddle_Size = Puddle Size Multiplier\n\n\toption.MATERIAL_AO = Material Ambient Occlusion\n\toption.MATERIAL_NORMAL_STRENGTH = Material Normal Strength\n\n\toption.RESOURCEPACK_SKY = Resource Pack Sky\n\t\tvalue.RESOURCEPACK_SKY.0 = Full Shader Sky\n\t\tvalue.RESOURCEPACK_SKY.1 = Sky + Shader Sun/Moon\n\t\tvalue.RESOURCEPACK_SKY.2 = Full Sky\n\t\tvalue.RESOURCEPACK_SKY.3 = Shader Sky + RP Sun/Moon\n\n\toption.ISOLATE_RESOURCEPACK_SKY=Isolate Resource Pack Sky\n\n\toption.DOF_QUALITY=Depth Of Field\n\t\tvalue.DOF_QUALITY.-1=Off\n\t\tvalue.DOF_QUALITY.0=Hexagonal\n\t\tvalue.DOF_QUALITY.1=Low\n\t\tvalue.DOF_QUALITY.2=Medium\n\t\tvalue.DOF_QUALITY.3=High\n\t\tvalue.DOF_QUALITY.4=Ultra\n\t\tvalue.DOF_QUALITY.5=Jitter\n\toption.MANUAL_FOCUS=Focus\n\toption.DOF_ANAMORPHIC_RATIO=Anamorphic Ratio\n\t\tvalue.MANUAL_FOCUS.-2=Autofocus\n\t\tvalue.MANUAL_FOCUS.-1=Brightness Slider\n\toption.DOF_DISPERSION_MULT=DoF Dispersion Strength\n\toption.focal=Focal\n\toption.aperture=Aperture\n\toption.DoF_Adaptation_Speed=DoF Adaptation Speed\n\toption.FAR_BLUR_ONLY=Only Bluring Faraway\n\toption.REMOVE_HAND_BLUR=Remove Hand Blur\n\nscreen.JITTER_DOF=Jitter DOF Settings\n\toption.JITTER_STRENGTH=Jitter Strength\n\toption.FOCUS_LASER_COLOR=Focus\n\t\tvalue.FOCUS_LASER_COLOR.0=Red\n\t\tvalue.FOCUS_LASER_COLOR.1=Green\n\t\tvalue.FOCUS_LASER_COLOR.2=Blue\n\t\tvalue.FOCUS_LASER_COLOR.3=Pink\n\t\tvalue.FOCUS_LASER_COLOR.4=Yellow\n\t\tvalue.FOCUS_LASER_COLOR.5=White\n\nscreen.Effects=Effect Settings\nscreen.Emissive_Ore = Emissive Ore Settings\n\toption.EMISSIVE_ORE = Emissive Ore\n\toption.EMISSIVE_ORE_RANGE = Emissive Ore Lit Range\n\toption.EMISSIVE_ORE_R = Emissive Ore R\n\toption.EMISSIVE_ORE_G = Emissive Ore G\n\toption.EMISSIVE_ORE_B = Emissive Ore B\n\nscreen.GAMEPLAY_EFFECTS=Gameplay Effect Settings\n\toption.MOTION_AMOUNT=Motion Amount\n\toption.DAMAGE_TAKEN_EFFECT=Damage Taken Effect\n\toption.LOW_HEALTH_EFFECT=Low Health Effect\n\toption.LOW_HEALTH_EFFECT_START=HP for Low Health\n\toption.CRITICALLY_LOW_HEALTH_EFFECT_START=HP for Critical Health\n\nscreen.LENS_EFFECTS=Lens Effect Settings\n\toption.DISTORT_EFFECT_AMOUNT=Distortion Amount\n\toption.WATER_ON_CAMERA_EFFECT=Water on Camera Effect\n\toption.ON_FIRE_DISTORT_EFFECT=Fire Distortion Effect\n\toption.RAIN_ON_CAMERA_EFFECT=Rain on Camera Effect\n\toption.LENS_FLARE = Lens Flare\n\toption.LENS_FLARE_STRENGTH = Lens Flare Strength\n\toption.FISHEYE_EFFECT = Fish Eye Lens\n\toption.FISHEYE_STRENGTH = Fish Eye Lens Aberration Strength\n\nscreen.Aerochrome_Mode=Aerochrome Mode Settings\n\toption.AEROCHROME_MODE=Aerochrome Mode\n\toption.AEROCHROME_PINKNESS=Aerochrome Red:Pink Ratio\n\toption.AEROCHROME_WOOL_ENABLED=Aerochrome Wool\n\n\toption.FANCY_END_PORTAL=Fancy End Portal\n\nscreen.COLOR=Tone-Map / Color Grading Settings\n\toption.TONEMAP=Tone-Map\n\toption.USE_ACES_COLORSPACE_APPROXIMATION=ACES Colorspace Approximation\n\toption.AGX_LOOK=Alternative Preset of AGX\n\t\tvalue.AGX_LOOK.0=Standard\n\t\tvalue.AGX_LOOK.1=WF99\n\t\tvalue.AGX_LOOK.2=Golden\n\t\tvalue.AGX_LOOK.3=Punchy\n\toption.SATURATION=Saturation\n\toption.CROSSTALK=Crosstalk\n\n\toption.AUTO_EXPOSURE=Auto Exposure\n\toption.EXPOSURE_MULTIPLIER=Exposure Multiplier\n\toption.Exposure_Speed=Exposure Speed\n\toption.Manual_exposure_value=Manual Exposure Value\n\toption.EXPOSURE_DARKENING=Exposure Darkening\n\toption.EXPOSURE_BRIGHTENING=Exposure Brightening\n\n\toption.Purkinje_strength=Purkinje Strength\n\toption.Purkinje_R=Purkinje R\n\toption.Purkinje_G=Purkinje G\n\toption.Purkinje_B=Purkinje B\n\toption.Purkinje_Multiplier=Purkinje Multiplier\n\nscreen.Misc_Settings = Misc Settings\nscreen.EXPERIMENTAL_STUFF=Experimental Settings\n\toption.CLOUDS_INTERSECT_TERRAIN=Cloud Intersect Terrain\n\toption.BLOOMY_PARTICLES=Bloomy Particals\n\toption.BIOME_TINT_WATER=Biome Tint Water\n\toption.HYPER_DETAILED_WAVES=Hyper Detailed Wave\n\toption.OLD_BLOOM=Old Bloom\n\toption.OLD_INDIRECT_SSS=Old SSS\n\toption.PLANET_GROUND_BRIGHTNESS=Planet Ground Brightness\n\toption.LIT_PARTICLE_BRIGHTNESS=Lit Particle Brightness\n\toption.WATER_CAUSTICS_BRIGHTNESS=Water Caustics Brightness\n\toption.WATER_CAUSTICS_STRENGTH=Water Caustics Strength\n\toption.OLD_CAVE_DETECTION=Old Cave Detection\n\toption.FORCE_TRANSLUCENT_GLASS=Force Translucent Glass\n\toption.LARGE_WAVE_DISPLACEMENT=Large Wave Displacement\n\toption.LIGHTLEAKFIX_MODE=Light Leak Fix Mode\n\toption.LIGHTNING_FLASH=Lightning Flash Fix\n\toption.Texture_MipMap_Bias=Texture Mipmap Bias\n\n\toption.DEBUG_VIEW=DEBUG View\n\t\tvalue.DEBUG_VIEW.debug_OFF=OFF\n\t\tvalue.DEBUG_VIEW.debug_SHADOWMAP=Shadowmap\n\t\tvalue.DEBUG_VIEW.debug_NORMALS=Normal\n\t\tvalue.DEBUG_VIEW.debug_SPECULAR=Specular\n\t\tvalue.DEBUG_VIEW.debug_INDIRECT=Indirect Lighting\n\t\tvalue.DEBUG_VIEW.debug_DIRECT=Direct Lighting\n\t\tvalue.DEBUG_VIEW.debug_VIEW_POSITION=ViewPos\n\t\tvalue.DEBUG_VIEW.debug_DH_WATER_BLENDING=DH Water Blending\n\t\tvalue.DEBUG_VIEW.debug_FILTERED_STUFF=Filtered Stuff\n\t\tvalue.DEBUG_VIEW.debug_TEMPORAL_REPROJECTION=Temporal Reprojection\n\t\tvalue.DEBUG_VIEW.debug_LIGHTS=Light\n\n\toption.display_LUT=Display LUT\n\toption.WhiteWorld=White World\n\toption.SSS_view=SSS View\n\toption.ambientLight_only=Ambient Light Only\n\toption.DISABLE_ENCHANT_GLINT=Disable Enchant Glint\n\toption.DISABLE_VANILLA_EMISSIVES=Disable Vanilla Emissives\n\toption.PARTICLE_RENDERING_FIX=Particle Rendering Fix\n\toption.TRANSLUCENT_ENTITIES=Translucent Entities\n\toption.LIGHTING_EFFECTS_BLUR_FILTER=Lighting Effects Blur Filter\n\nscreen.selection_box_outline=Selection Box Outline\n\toption.SELECT_BOX=Selection Box\n\toption.SELECT_BOX_COL_R=Selection Box R\n\toption.SELECT_BOX_COL_G=Selection Box G\n\toption.SELECT_BOX_COL_B=Selection Box B\n\nscreen.SCENE_CONTROLLER=Scene Controller\n\toption.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS = Custom Diffuse Colors\nscreen.DIFFUSE_LIGHTING_COLORS=Diffuse Color Settings\n\toption.DIRECTLIGHT_DIFFUSE_R = Sun R\n\toption.DIRECTLIGHT_DIFFUSE_G = Sun G\n\toption.DIRECTLIGHT_DIFFUSE_B = Sun B\n\toption.INDIRECTLIGHT_DIFFUSE_R = Ambient R\n\toption.INDIRECTLIGHT_DIFFUSE_G = Ambient G\n\toption.INDIRECTLIGHT_DIFFUSE_B = Ambient B\n\toption.USE_CUSTOM_CLOUD_LIGHTING_COLORS = Custom Cloud Colors\nscreen.CLOUD_LIGHTING_COLORS=Cloud Color Settings\n\toption.DIRECTLIGHT_CLOUDS_R = Sun R\n\toption.DIRECTLIGHT_CLOUDS_G = Sun G\n\toption.DIRECTLIGHT_CLOUDS_B = Sun B\n\toption.INDIRECTLIGHT_CLOUDS_R = Ambient R\n\toption.INDIRECTLIGHT_CLOUDS_G = Ambient G\n\toption.INDIRECTLIGHT_CLOUDS_B = Ambient B\n\toption.USE_CUSTOM_FOG_LIGHTING_COLORS = Custom Fog Colors\nscreen.FOG_LIGHTING_COLORS=Fog Color Settings\n\toption.DIRECTLIGHT_FOG_R = Sun R\n\toption.DIRECTLIGHT_FOG_G = Sun G\n\toption.DIRECTLIGHT_FOG_B = Sun B\n\toption.INDIRECTLIGHT_FOG_R = Ambient R\n\toption.INDIRECTLIGHT_FOG_G = Ambient G\n\toption.INDIRECTLIGHT_FOG_B = Ambient B\n\toption.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS = Custom Atmosphere Ground Color\nscreen.SKY_GROUND_LIGHTING_COLORS=Atmosphere Ground Color Settings\n\toption.SKY_GROUND_R = Ground R\n\toption.SKY_GROUND_G = Ground G\n\toption.SKY_GROUND_B = Ground B\n\nscreen.Mod_support = Settings for Supported Mods\nscreen.DISTANT_HORIZONS_SETTINGS = §2Distant Horizons §fSettings\n\toption.DH_OVERDRAW_PREVENTION = Overdraw Prevention\n\toption.OVERDRAW_MAX_DISTANCE = Max Distance for Overdraw Prevention\n\t\tvalue.OVERDRAW_MAX_DISTANCE.0 = Unlimited\n\t\tvalue.OVERDRAW_MAX_DISTANCE.32 = 2 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.48 = 3 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.64 = 4 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.80 = 5 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.96 = 6 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.112 = 7 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.128 = 8 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.144 = 9 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.160 = 10 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.176 = 11 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.192 = 12 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.208 = 13 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.224 = 14 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.240 = 15 Chunks\n\t\tvalue.OVERDRAW_MAX_DISTANCE.256 = 16 Chunks\n\n\toption.DH_AMBIENT_OCCLUSION=Ambient Occlusion on LOD Chunks\n\toption.DH_SUBSURFACE_SCATTERING=Subsurface Scattering on LOD Chunks\n\toption.DH_SCREENSPACE_REFLECTIONS=Screen Space Reflections on LOD Chunks\n\toption.DH_TAA_JITTER=DH TAA Jitter\n\toption.DH_NOISE_TEXTURE=DH Noise Texture\n\toption.NOISE_RESOLUTION=DH Noise Resolution\n\toption.NOISE_INTENSITY=DH Noise Intensity\n\toption.NOISE_DROPOFF=DH Noise Dropoff\n\n\toption.DH_KNOWN_ISSUES=DH Known Issues\n\t\tvalue.DH_KNOWN_ISSUES.0=§c Click to Cycle the Page\n\t\tvalue.DH_KNOWN_ISSUES.1=§a GTAO and SSGI Disfunctional in DH LOD - Not Supported\n\n\toption.DISTANT_HORIZONS_SHADOWMAP=DH Shadowmap Support\n\toption.TOGGLE_VL_FOG=Toggle Volumetric Fog\n\nscreen.PHYSICS_MOD_OCEAN_SETTINGS = §2Physics Mod §fSettings\n\n////////////////////////////////// COMMENT //////////////////////////////////\n\noption.sunPathRotation.comment=Configure the angle of the sun or moon to cast longer shadows.\noption.sun_illuminance.comment=Configure the brightness of the sun.\noption.moon_illuminance.comment=Configure the brightness of the moon.\noption.MOONPHASE_BASED_MOONLIGHT.comment=Toggle to adjust moonlight brightness dynamically based on moon phase.\noption.STAR_DENSITY.comment=Configure the density of the starfield.\noption.STAR_MOVEMENT_MULT.comment=Configure the moving/rotating speed of stars.\noption.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.\n\noption.Sky_Brightness.comment=Configure the brightness of the skybox.\n\noption.colortype.comment=Choose the color type for following settings.\noption.Sun_temp.comment=Configure the temperature of the sun. Higher = White. Lower = Yellow.\noption.Moon_temp.comment=Configure the temperature of the moon. Higher = White. Lower = Yellow.\n\noption.AURORA_BRIGHTNESS.comment=Configure the brightness of the aurora.\noption.AURORA_SPEED.comment=Configure the moving speed of the aurora.\noption.AURORA_SNOWY.comment=Toggle to restrict aurora to snowy biomes only.\noption.AUR_ENV_OFFSET.comment=Configure the contribution of lighting to the ground/cloud from the aurora.\n\noption.SHOOTING_STARS.comment=Toggle to enable shooting stars.\noption.SHOOTING_STARS_SPEED.comment=Configure the speed of shooting stars.\noption.SHOOTING_STARS_FREQUENCY.comment=Configure the amount of shooting stars.\noption.SHOOTING_STARS_TRAIL_VISIBILITY.comment=Configure the visibility of the shooting stars' trails.\noption.SHOOTING_STARS_TRAIL_LENGTH.comment=Configure the length of the shooting stars' trails.\noption.SHOOTING_STARS_TRAIL_WIDTH.comment=Configure the width of the shooting stars' trails.\n\noption.Rain_coverage.comment=Configure how much of the sky the clouds cover during rain.\noption.RainFog_amount.comment=Configure how dense the fog gets during rain.\noption.RAIN_VISIBILITY.comment=Configure the particle size of raindrop/snow.\noption.WATER_RIPPLES.comment=Toggle ripples on water surface during rain.\noption.GROUND_RIPPLES.comment=Toggle ripples on ground surface during rain.\noption.LIT_PARTICLE_BRIGHTNESS.comment=Configure the brightness of raindrop/snow particles lit by lightsources.\n\noption.Daily_Weather.comment=Toggle daily weather cycle.\noption.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.\n\noption.PER_BIOME_ENVIRONMENT.comment=Toggle biome-specific environmental effects.\n\noption.SWAMP_ENV.comment=Toggle the special environment in Swamp biome and its variants.\noption.JUNGLE_ENV.comment=Toggle the special environment in Jungle biome and its variants.\noption.DARKFOREST_ENV.comment=Toggle the special environment in Dark Forest biome and its variants.\noption.SNOWY_ENV.comment=Toggle the special environment include blizzard effect in all snowy biomes.\noption.DRY_ENV.comment=Toggle the special environment include sandstorm effect in all dry biomes.\n\noption.WAVY_PLANTS.comment=Toggle the plant waving animation.\noption.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.\noption.WAVY_STRENGTH.comment=Configure the amount the plants wave.\noption.WAVY_SPEED.comment=Configure the speed the plants wave.\n\noption.SKY_GROUND.comment=Configure the strength of atomsphere color affected by sky light.\n\noption.TORCH_AMOUNT.comment=Configure the brightness of light from torches or other placed lightsources.\n\noption.ambient_brightness.comment=Configure ambient light brightness in shaded areas.\noption.MIN_LIGHT_AMOUNT.comment=Configure the minimum amount of light that can be in shaded places.\noption.indirect_effect.comment=Toggle different types of effects to make lighting in shaded places higher quality.\noption.indirect_RTGI.comment=Toggle different types of GI to enable bounced light form ray tracing. ONLY work with RTAO.\n\noption.AO_Strength.comment=Configure ambient occlusion strength (SSAO / GTAO / RTAO).\noption.GI_Strength.comment=Configure the strength of the global illumination created by (HQ) SSGI.\noption.RAY_COUNT.comment=Configure the ray count that involves in ray tracing, higher value will result a less noisy graphic.\noption.RT_ITERATION.comment=Configure the ray tracing quality.\noption.AO_in_sunlight.comment=Toggle the ambient occlusion created by the sun.\noption.UseQuarterResDepth.comment=Toggle 1/4 resolution depth instead of full to improve performance.\noption.Hand_Held_lights.comment=Toggle handheld light source.\noption.HANDHELD_LIGHT_RANGE.comment=Configure the light range of hand held light.\n\noption.FLASHLIGHT.comment=Toggle the flashlight. Can't work with hand held light simultaneously.\noption.FLASHLIGHT_RANGE.comment=Configure the light range of the flashlight.\noption.FLASHLIGHT_BRIGHTNESS_MULT.comment=Configure the brightness of the flashlight.\noption.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT.comment=Configure how quickly the flashlight brightness reaches its brightest part.\noption.FLASHLIGHT_SPECULAR.comment=Toggle the specular reflection from the flashlight.\noption.FLASHLIGHT_SIZE.comment=Configure the size of the flashlight.\noption.FLASHLIGHT_BOUNCED_INDIRECT.comment=Toggle bounced light from the flashlight.\noption.FLASHLIGHT_FOG_ILLUMINATION.comment=Toggle fog illuminination by the flashlight.\n\noption.TRANSLUCENT_COLORED_SHADOWS.comment=Toggle translucent things like stained glass to color the sunlight as it passes through it.\noption.SCREENSPACE_CONTACT_SHADOWS.comment=Toggle shadows for things far away and on small details nearby.\noption.RENDER_ENTITY_SHADOWS.comment=Toggle shadows on all types of entities like mobs, chests, banners or signs.\noption.RENDER_PLAYER_SHADOWS.comment=Toggle shadows on all players.\noption.shadowMapResolution.comment=Configure the quality of shadows from the sun casted by things in the world.\noption.shadowDistance.comment=Configure the maximum distance the shadowmap can render. The distance is not measured linearly in chunks when set to un-optimized.\n\noption.BASIC_SHADOW_FILTER.comment=Toggle basic shadow filter.\noption.SHADOW_FILTER_SAMPLE_COUNT.comment=Configure the quality of the basic shadow filter. The filter is only used for soften the shadows.\noption.Min_Shadow_Filter_Radius.comment=Configure the maximum softness of the basic shadow filter.\noption.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.\noption.VPS_Search_Samples.comment=Configure the quality of the variable penumbra shadow filter.\noption.Max_Shadow_Filter_Radius.comment=Configure the maximum softness the shadows can get when far away from what casted it.\noption.Max_Filter_Depth.comment=Configure the size of the sun. Larger sun will make shadows get softer closer to what casts them.\n\noption.LPV_ENABLED.comment=Toggle the LPV floodfill lighting.\noption.LPV_SIZE.comment=Configure colored lighting volume size (in blocks).\noption.LPV_BLOCKLIGHT_SCALE.comment=Configure the scale of colored lighting.\noption.LPV_SATURATION.comment=Configures the intensity of colored lighting.\noption.LPV_TINT_SATURATION.comment=Configures the intensity of tinting by translucent blocks on colored lighting.\noption.LPV_NORMAL_STRENGTH.comment=Configure the amount surface normals will affect lighting direction.\noption.LPV_ENTITY_LIGHTS.comment=Toggle entities' contribution to colored lighting.\noption.LPV_REDSTONE_LIGHTS.comment=Toggle redstone blocks' contribution to colored lighting.\noption.LPV_COLORED_CANDLES.comment=Toggle colored candles' emission to match colored lighting.\noption.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.\noption.LPV_VL_FOG_ILLUMINATION.comment=Toggle the air / fog illumination of colored lighting.\noption.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS.comment=Configure the brightness of lit up fog.\noption.VANILLA_LIGHTMAP_MASK.comment=Toggle the vanilla like LPV lighting by disabling effects.\n\noption.LPV_SHADOWS.comment=Toggle the LPV based shadowmap.\noption.LPV_SHADOWS_LIGHT_COUNT.comment=Configure the ray count that involves in LPV shadows.\noption.LPV_COLOR_SHADOWS.comment=Toggle LPV colored shadow.\noption.LPV_SHADOWS_LIGHT_MULT.comment=Configure the brightness in LPV shadowed areas.\noption.LPV_HAND_SHADOWS.comment=Toggle the LPV shadow for hands.\n\noption.VL_RENDER_RESOLUTION.comment=Configure the resolution of the volumetric fog.\noption.VL_SAMPLES.comment=Configure the quality of the volumetric fog.\noption.BLOOMY_FOG.comment=Configure the strength of bloom that is applied to fog.\noption.Haze_amount.comment=Configure atmospheric haze density.\noption.BorderFog.comment=Toggle a fog that attempts to hide the chunks loading in.\noption.FOG_START_HEIGHT.comment=Configure the height where the fog starts.\n\noption.TOD_Fog_mult.comment=Configure the density of fog that appears at specific times of the day. \n\noption.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.\noption.CaveFogFallOff.comment=Configure how quickly the fog gradient reaches its brightest part.\n\noption.NETHER_PLUME_DENSITY.comment=Configure the density of plume shape fog in nether.\n\noption.END_STORM_DENSITY.comment=Configure the overall volume of fog in end.\n\noption.VOLUMETRIC_CLOUDS.comment=Toggle the volumetric clouds.\noption.CLOUDS_QUALITY.comment=Configure the resolution of the volumetric clouds.\noption.CLOUDS_SHADOWS.comment=Toggle shadows that are casted from the clouds onto the ground, and fog below them.\noption.CLOUD_SHADOW_STRENGTH.comment=Configure the density of cloud shadows.\noption.HQ_CLOUDS.comment=Toggle high quality cloud density.\noption.ERODE_AMOUNT.comment=Configure the erosion strength of the cloud edge.\noption.Cloud_Speed.comment=Configure cloud movement speed. It's based on world day, an overlarge world day value may cause clouds freezing.\n\noption.CloudLayer0.comment=Configure the small cumulus cloud that appear in lower positions.\noption.CloudLayer0_coverage.comment=Configure how much of the sky these clouds cover.\noption.CloudLayer0_density.comment=Configure how dense, or thick these clouds are.\noption.CloudLayer0_height.comment=Configure the height at which these clouds at.\noption.CloudLayer0_tallness.comment=Configure the tallness of these clouds. Recommend to keep it as default.\noption.CloudLayer0_scale.comment=Configure the scale of there clouds.\noption.CloudLayer1.comment=Configure the large cumulus flocculus appearing in the middle.\noption.CloudLayer1_coverage.comment=Configure how much of the sky these clouds cover.\noption.CloudLayer1_density.comment=Configure how dense, or thick these clouds are.\noption.CloudLayer1_height.comment=Configure the height at which these clouds at. Can't be set lower than small cumulus cloud layer.\noption.CloudLayer1_tallness.comment=Configure the tallness of these clouds. Recommend to keep it as default.\noption.CloudLayer1_scale.comment=Configure the scale of there clouds.\noption.CloudLayer2.comment=Configure the cirrus cloud that appear at higher positions.\noption.CloudLayer2_coverage.comment=Configure how much of the sky these clouds cover.\noption.CloudLayer2_density.comment=Configure how dense, or thick these clouds are.\noption.CloudLayer2_height.comment=Configure the height at which these clouds at.\noption.CloudLayer2_scale.comment=Configure the scale of there clouds.\n\noption.rayMarchSampleCount.comment=Configure the raymarch sample count of water.\noption.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\noption.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\noption.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\noption.Dirt_Amount.comment=Configure how much dirt is in water. This controls how much fog is within water.\noption.WATER_WAVE_STRENGTH.comment=Configure how strong the waves appear.\noption.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\".\noption.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.\noption.WATER_DISTORTION_AMOUNT.comment=Configure the animation intensity of distortion under water.\noption.WATER_WAVE_SPEED.comment=Configure the movement speed of water waves.\noption.Vanilla_like_water.comment=Toggle vanilla water texture style.\n\noption.PLANET_CURVATURE.comment=Toggle planet curvature to enhance immersion and hide distant graphic flaws.\noption.CURVATURE_AMOUNT.comment=Configure the curvature amount. Will affect view distance.\n\noption.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.\noption.BLOOM_STRENGTH.comment=Configure the amount of bloom that is applied to the image.\n\noption.SCREENSHOT_MODE.comment=Toggle frame accumulation to get a low noise and high quality image.\noption.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.\noption.RESPONSIVE_TAA.comment=Toggle the faster mode of TAA at the cost of AA quality.\noption.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.\noption.TAA_UPSCALING.comment=Toggle temporal upscaling. This retains a good amount of quality from a lower resolution image when it upscales.\noption.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.\n\noption.LUMINANCE_CURVE.comment=Toggle the tone curve. This is independent from color grading and is applied first.\noption.LOWER_CURVE.comment=Configure the lower tone curve.\noption.UPPER_CURVE.comment=Configure the upper tone curve.\noption.COLOR_GRADING_ENABLED.comment=Toggle the color grading. The RGB sliders will not affect the brightness. This is applied after the tone curve.\noption.CAMERA_GRIDLINES.comment=Toggle the camera grindlines overlay.\noption.MOTION_BLUR.comment=Toggle the motion blur effect.\noption.MOTION_BLUR_STRENGTH.comment=Configure the motion blur strength.\noption.FISHEYE_EFFECT.comment=Toggle the fish eye lens effect.\noption.FISHEYE_STRENGTH.comment=Configure the fish eye lens aberration strength.\noption.CHROMATIC_ABERRATION.comment=Toggle the chromatic aberration effect to create unique graphic.\noption.CHROMATIC_ABERRATION_STRENGTH.comment=Configure the chromatic aberration strength.\noption.VIGNETTE.comment=Toggle the camera vignette effect.\noption.VIGNETTE_STRENGTH.comment=Toggle the camera vignette strength.\noption.LENS_FLARE.comment = Toggle the lens flare.\noption.LENS_FLARE_STRENGTH.comment = Configure the lens flare strength.\n\noption.DEFERRED_SPECULAR.comment=[WIP]\noption.FORWARD_SPECULAR.comment=[WIP]\noption.DEFERRED_ENVIRONMENT_REFLECTION.comment=[WIP]\noption.FORWARD_ENVIRONMENT_REFLECTION.comment=[WIP]\noption.DEFERRED_BACKGROUND_REFLECTION.comment=[WIP]\noption.FORWARD_BACKGROUND_REFLECTION.comment=[WIP]\noption.DEFERRED_ROUGH_REFLECTION.comment=[WIP]\noption.FORWARD_ROUGH_REFLECTION.comment=[WIP]\noption.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.\noption.SUN_SPECULAR_MULT.comment=Configure how bright the sun's reflection is.\noption.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.\n\noption.Emissive_Brightness.comment=Configure emissive texture brightness.\noption.Emissive_Curve.comment=Configure how quickly the emissive texture reaches its brightest point. 1.0 = linear.\noption.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.\n\noption.LabSSS_Curve.comment=Configure the LabSSS curve.\noption.sss_density_multiplier.comment=Configure the SSS strength.\noption.sss_absorbance_multiplier.comment=Configure the SSS light absorbance strength.\noption.MISC_BLOCK_SSS.comment=Toggle the SSS for grass, grass blocks & sand blocks.\noption.MOB_SSS.comment=Toggle the SSS for MOBs. Players are included.\noption.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\noption.ambientsss_brightness.comment=Configure the brightness of SSS from the sky's light. \noption.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.\n\noption.POM.comment=Toggle POM to simulate 3D geometry using resource pack data.\noption.MAX_ITERATIONS.comment=Configure the quality of the POM effect. if you see individual layers when looking up close, inscreasing this makes more layers.\noption.POM_DEPTH.comment=Configure how deep the POM effect can go into a surface.\noption.MAX_DIST.comment=Configure the maximum distance from the camera that the POM effect can render.\noption.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.\n\noption.Porosity.comment=Toggle the prosity to make textures get darker when they are in wet stage.\noption.Puddles.comment=Toggle puddles for when it rains.\noption.Puddle_Size.comment=Configure the size of the puddles.\n\noption.MATERIAL_AO.comment=Toggle the ambient occlusion for material normal.\noption.MATERIAL_NORMAL_STRENGTH.comment=Configure the strength of material normal.\n\noption.RESOURCEPACK_SKY.comment=Toggle resourcepack sky support. Configure settings to use the whole resourcepack sky, or keep the shader's sun and moon.\n\noption.ISOLATE_RESOURCEPACK_SKY.comment=Toggle to prevent resourcepack sky from affected by the shader or emit lighiting.\n\noption.DOF_QUALITY.comment=Toggle the depth of field effect.\noption.MANUAL_FOCUS.comment=Toggle the distance of manual focus.\noption.DOF_ANAMORPHIC_RATIO.comment=Configure the strength of the DOF anamorphic lens.\noption.DOF_DISPERSION_MULT.comment=Configure the strength of the DOF light dispersion.\noption.focal.comment=Configure the focal of the lens.\noption.aperture.comment=Configure the aperture of the lens.\noption.DoF_Adaptation_Speed.comment=Configure the responsiveness of DOF.\noption.FAR_BLUR_ONLY.comment=Toggle the DOF ONLY to the far away objects.\noption.REMOVE_HAND_BLUR.comment=Toggle the DOF ignore the hand.\n\noption.JITTER_STRENGTH.comment=Configure the strength of jitter DOF.\noption.FOCUS_LASER_COLOR.comment=Configure the color of focus point.\n\noption.EMISSIVE_ORE.comment=Toggle the ore emission rendered by shader.\noption.EMISSIVE_ORE_RANGE.comment=Toggle the ore emission range.\n\noption.MOTION_AMOUNT.comment=Configure the effect strength of bellowing settings. §aFor Iris users ONLY.\noption.DAMAGE_TAKEN_EFFECT.comment=Toggle the damage taken effect filter.\noption.LOW_HEALTH_EFFECT.comment=Toggle the low health effect filter.\noption.LOW_HEALTH_EFFECT_START.comment=Configure how much HP left is considered low health.\noption.CRITICALLY_LOW_HEALTH_EFFECT_START.comment=Configure how much HP left is considered critical health.\n\noption.DISTORT_EFFECT_AMOUNT.comment=Configure the distortion strength of bellowing settings.\noption.WATER_ON_CAMERA_EFFECT.comment=Toggle the effect of water drops slicing over the camera while entering and leaving the water.\noption.ON_FIRE_DISTORT_EFFECT.comment=Toggle the heat distortion effect while on fire.\n\noption.RAIN_ON_CAMERA_EFFECT.comment=Toggle the effect of rain drops slicing over the camera while raining.\n\noption.AEROCHROME_MODE.comment=Toggle the infrared film mode. Google \"Aerochrome\" to get an idea of what it does.\noption.AEROCHROME_PINKNESS.comment=Configure the Aerochrome mode color. Higher = Pink. Lower = Red.\noption.AEROCHROME_WOOL_ENABLED.comment=Toggle the Aerochrome mode for the wool objects.\n\noption.FANCY_END_PORTAL.comment=Toggle the unique end portal effect.\n\noption.TONEMAP.comment=Configure the tonemapping preset.\noption.USE_ACES_COLORSPACE_APPROXIMATION.comment=Toggle the ACES colorspace approximation.\noption.AGX_LOOK.comment=Configure the alternative preset of AGX tone-map. Only work with Tonemap_AGX_Minimal & Tonemap_AGX.\noption.SATURATION.comment=Configure the overall saturation of the graphic.\noption.CROSSTALK.comment=Configure the light crosstalk to the graphic.\n\noption.AUTO_EXPOSURE.comment=Toggle the auto exposure.\noption.EXPOSURE_MULTIPLIER.comment=Configure the intensity of exposure.\noption.Exposure_Speed.comment=Configure the exposure speed.\noption.Manual_exposure_value.comment=Configure the manual exposure settings.\noption.EXPOSURE_DARKENING.comment=Configure the darkening level of the graphic.\noption.EXPOSURE_BRIGHTENING.comment=Configure the brightening level of the graphic.\n\noption.Purkinje_strength.comment=Configure the effect strength of weakening saturation and enhancing brightness in dark places.\noption.Purkinje_Multiplier.comment=Configure the effect multiplier of weakening saturation and enhancing brightness in dark places.\n\noption.CLOUDS_INTERSECT_TERRAIN.comment=[WIP].\noption.BLOOMY_PARTICLES.comment=[WIP]\noption.BIOME_TINT_WATER.comment=Toggle the special water color in specific biomes.\noption.HYPER_DETAILED_WAVES.comment=Toggle the alternative detailed normal for water.\noption.OLD_BLOOM.comment=Toggle the old bloom.\noption.OLD_INDIRECT_SSS.comment=Toggle the old SSS.\noption.PLANET_GROUND_BRIGHTNESS.comment=Configure the brightness of ground when look into it from a very high position.\noption.WATER_CAUSTICS_BRIGHTNESS.comment=Configure the brightness of water caustics.\noption.WATER_CAUSTICS_STRENGTH.comment=Configure the strength of water caustics.\noption.OLD_CAVE_DETECTION.comment=Toggle the old cave detection method.\noption.FORCE_TRANSLUCENT_GLASS.comment=Toggle to force glass and other transparent objects include water to be translucent.\noption.LARGE_WAVE_DISPLACEMENT.comment=Toggle the alternative large wave normal for water.\noption.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.\noption.LIGHTNING_FLASH.comment=Toggle the fixed lightning flash to avoid disabling lightning with specific RPs for Optifine users. \noption.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. \n\noption.DEBUG_VIEW.comment=Configure the DEBUG view.\n\noption.SELECT_BOX.comment=Toggle the customizable selection box.\n\noption.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS.comment = Toggle the custom diffuse lightings.\noption.USE_CUSTOM_CLOUD_LIGHTING_COLORS.comment = Toggle the custom cloud lightings.\noption.USE_CUSTOM_FOG_LIGHTING_COLORS.comment = Toggle the custom fog lightings.\noption.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS.comment = Toggle the custom atomsphere lightings.\n\noption.DH_OVERDRAW_PREVENTION.comment=Toggle the DH overdraw prevention.\noption.OVERDRAW_MAX_DISTANCE.comment=Configure the DH overdraw prevention distance. Recommend to keep it as default.\n\noption.DH_AMBIENT_OCCLUSION.comment=[WIP] Toggle the AO in DH chunks. ONLY work with SSAO.\noption.DH_SUBSURFACE_SCATTERING.comment=[WIP] Toggle the SSS in DH chunks.\noption.DH_SCREENSPACE_REFLECTIONS.comment=[WIP] Toggle the SSR in DH chunks.\noption.DH_TAA_JITTER.comment=Toggle TAA Jitter in DH chuncks.\noption.DH_NOISE_TEXTURE.comment=Toggle noise texture in DH chuncks to make transition between normal chunks and DH chuncks less obvious.\noption.NOISE_RESOLUTION.comment=Configure the noise resolution used in DH chunks.\noption.NOISE_INTENSITY.comment=Configure the noise intensity used in DH chunks.\noption.NOISE_DROPOFF.comment=Configure the dropoff of noise.\n\noption.DH_KNOWN_ISSUES.comment=Click to cycle the known issues.\n\noption.DISTANT_HORIZONS_SHADOWMAP.comment=§c DO NOT USE IF YOU DO NOT KNOW WHAT THIS IS\noption.TOGGLE_VL_FOG.comment=Toggle the volumetric fog in DH chunks."
  },
  {
    "path": "shaders/lang/zh_cn.lang",
    "content": "option.SHADER_VERSION_LABEL = Bliss-BSPT by WF99\n\tprefix.SHADER_VERSION_LABEL = #\n\nprofile.veryLow=§a低质量\nprofile.Low=§b较低质量\nprofile.Medium=§9中等质量\nprofile.High=§d较高质量\nprofile.veryHigh=§c高质量\n\nscreen.World=世界\nscreen.Sky=天空配置\n\toption.sunPathRotation=日月倾角\n\t\tsuffix.sunPathRotation=°\n\toption.RAINBOW=彩虹类型\n\t\tvalue.RAINBOW.0=关\n\t\tvalue.RAINBOW.1=真实\n\t\tvalue.RAINBOW.2=全天\n\toption.RAINBOW_STRENGTH=彩虹强度\n\nscreen.Sky_coefficients=天空系数\n\toption.Sky_Brightness=天空亮度\n\toption.sky_coefficientRayleighR=天空瑞利系数 - 红色比重\n\toption.sky_coefficientRayleighG=天空瑞利系数 - 绿色比重\n\toption.sky_coefficientRayleighB=天空瑞利系数 - 蓝色比重\n\toption.sky_coefficientMieR=天空米氏系数 - 红色比重\n\toption.sky_coefficientMieG=天空米氏系数 - 绿色比重\n\toption.sky_coefficientMieB=天空米氏系数 - 蓝色比重\n\nscreen.Sun_and_Moon=日月\n\toption.sunColorR=太阳 - 红色比重\n\toption.sunColorG=太阳 - 绿色比重\n\toption.sunColorB=太阳 - 蓝色比重\n\toption.moonColorR=月亮 - 红色比重\n\toption.moonColorG=月亮 - 绿色比重\n\toption.moonColorB=月亮 - 蓝色比重\n\toption.colortype=颜色模式\n\t\tvalue.colortype.1=RGB 模式\n\t\tvalue.colortype.2=黑体模式\n\toption.Sun_temp=阳光色温\n\t\tsuffix.Sun_temp=K\n\toption.Moon_temp=月光色温\n\t\tsuffix.Moon_temp=K\n\toption.sun_illuminance=阳光照度\n\t\tsuffix.sun_illuminance=LX\n\toption.moon_illuminance=月光照度\n\t\tsuffix.moon_illuminance=LX\n\toption.MOONPHASE_BASED_MOONLIGHT=月相亮度水平\n\nscreen.Aurora=极光配置\n\toption.AURORA_BRIGHTNESS=极光亮度\n\toption.AURORA_SPEED=极光速度\n\toption.AURORA_SNOWY=仅在寒冷群系出现\n\toption.AUR_ENV_OFFSET=极光光照环境补偿\n\toption.AURORA_UPPER_R=极光上部 - 红色比重\n\toption.AURORA_UPPER_G=极光上部 - 绿色比重\n\toption.AURORA_UPPER_B=极光上部 - 蓝色比重\n\toption.AURORA_LOWER_R=极光下部 - 红色比重\n\toption.AURORA_LOWER_G=极光下部 - 绿色比重\n\toption.AURORA_LOWER_B=极光下部 - 蓝色比重\n\nscreen.Stars_and_Shooting_Stars=星星与流星\n\toption.STAR_DENSITY=星星密度\n\toption.STAR_MOVEMENT_MULT=星星旋转速度\n\toption.SHOOTING_STARS=流星\n\toption.SHOOTING_STARS_SPEED=流星速度\n\toption.SHOOTING_STARS_FREQUENCY=流星频率\n\toption.SHOOTING_STARS_TRAIL_VISIBILITY=流星尾迹可见性\n\toption.SHOOTING_STARS_TRAIL_LENGTH=流星尾迹长度\n\toption.SHOOTING_STARS_TRAIL_WIDTH=流星尾迹宽度\n\nscreen.Weather=天气配置\n\toption.RAIN_VISIBILITY=雨雪能见度\n\toption.Rain_coverage=雨云覆盖率\n\toption.WATER_RIPPLES=水面涟漪\n\toption.GROUND_RIPPLES=地表涟漪\n\nscreen.Rain_Fog=雨雾配置\n\toption.RainFog_amount=雨雾倍率\n\toption.RAINFOG_R=雨雾 - 红色比重\n\toption.RAINFOG_G=雨雾 - 绿色比重\n\toption.RAINFOG_B=雨雾 - 蓝色比重\n\nscreen.DAILY_WEATHER=周期循环的天气配置\n\toption.Daily_Weather=周期循环的天气\n\toption.CHOOSE_RANDOM_WEATHER_PROFILE=随机天气配置\n\nscreen.DAY0_WEATHER=第 0 天天气配置\n\toption.DAY0_l0_coverage=小型积云覆盖率\n\toption.DAY0_l0_density=小型积云密度\n\toption.DAY0_l1_coverage=大型积云覆盖率\n\toption.DAY0_l1_density=大型积云密度\n\toption.DAY0_l2_coverage=高层云覆盖率\n\toption.DAY0_l2_density=高层云密度\n\toption.DAY0_ufog_density=均匀雾气密度\n \toption.DAY0_cfog_density=云雾密度\n        \nscreen.DAY1_WEATHER=第 1 天天气配置\n\toption.DAY1_l0_coverage=小型积云覆盖率\n\toption.DAY1_l0_density=小型积云密度\n\toption.DAY1_l1_coverage=大型积云覆盖率\n\toption.DAY1_l1_density=大型积云密度\n\toption.DAY1_l2_coverage=高层云覆盖率\n\toption.DAY1_l2_density=高层云密度\n\toption.DAY1_ufog_density=均匀雾气密度\n\toption.DAY1_cfog_density=云雾密度\n        \nscreen.DAY2_WEATHER=第 2 天天气配置\n\toption.DAY2_l0_coverage=小型积云覆盖率\n\toption.DAY2_l0_density=小型积云密度\n\toption.DAY2_l1_coverage=大型积云覆盖率\n\toption.DAY2_l1_density=大型积云密度\n\toption.DAY2_l2_coverage=高层云覆盖率\n\toption.DAY2_l2_density=高层云密度\n\toption.DAY2_ufog_density=均匀雾气密度\n\toption.DAY2_cfog_density=云雾密度\n\nscreen.DAY3_WEATHER=第 3 天天气配置\n\toption.DAY3_l0_coverage=小型积云覆盖率\n\toption.DAY3_l0_density=小型积云密度\n\toption.DAY3_l1_coverage=大型积云覆盖率\n\toption.DAY3_l1_density=大型积云密度\n\toption.DAY3_l2_coverage=高层云覆盖率\n\toption.DAY3_l2_density=高层云密度\n\toption.DAY3_ufog_density=均匀雾气密度\n\toption.DAY3_cfog_density=云雾密度\n\nscreen.DAY4_WEATHER=第 4 天天气配置\n\toption.DAY4_l0_coverage=小型积云覆盖率\n\toption.DAY4_l0_density=小型积云密度\n\toption.DAY4_l1_coverage=大型积云覆盖率\n\toption.DAY4_l1_density=大型积云密度\n\toption.DAY4_l2_coverage=高层云覆盖率\n\toption.DAY4_l2_density=高层云密度\n\toption.DAY4_ufog_density=均匀雾气密度\n\toption.DAY4_cfog_density=云雾密度\n\nscreen.DAY5_WEATHER=第 5 天天气配置\n\toption.DAY5_l0_coverage=小型积云覆盖率\n\toption.DAY5_l0_density=小型积云密度\n\toption.DAY5_l1_coverage=大型积云覆盖率\n\toption.DAY5_l1_density=大型积云密度\n\toption.DAY5_l2_coverage=高层云覆盖率\n\toption.DAY5_l2_density=高层云密度\n\toption.DAY5_ufog_density=均匀雾气密度\n\toption.DAY5_cfog_density=云雾密度\n\nscreen.DAY6_WEATHER=第 6 天天气配置\n\toption.DAY6_l0_coverage=小型积云覆盖率\n\toption.DAY6_l0_density=小型积云密度\n\toption.DAY6_l1_coverage=大型积云覆盖率\n\toption.DAY6_l1_density=大型积云密度\n\toption.DAY6_l2_coverage=高层云覆盖率\n\toption.DAY6_l2_density=高层云密度\n\toption.DAY6_ufog_density=均匀雾气密度\n\toption.DAY6_cfog_density=云雾密度\n\nscreen.DAY7_WEATHER=第 7 天天气配置\n\toption.DAY7_l0_coverage=小型积云覆盖率\n\toption.DAY7_l0_density=小型积云密度\n\toption.DAY7_l1_coverage=大型积云覆盖率\n\toption.DAY7_l1_density=大型积云密度\n\toption.DAY7_l2_coverage=高层云覆盖率\n\toption.DAY7_l2_density=高层云密度\n\toption.DAY7_ufog_density=均匀雾气密度\n\toption.DAY7_cfog_density=云雾密度\n\nscreen.DAY8_WEATHER=第 8 天天气配置\n\toption.DAY8_l0_coverage=小型积云覆盖率\n\toption.DAY8_l0_density=小型积云密度\n\toption.DAY8_l1_coverage=大型积云覆盖率\n\toption.DAY8_l1_density=大型积云密度\n\toption.DAY8_l2_coverage=高层云覆盖率\n\toption.DAY8_l2_density=高层云密度\n\toption.DAY8_ufog_density=均匀雾气密度\n\toption.DAY8_cfog_density=云雾密度\n\nscreen.DAY9_WEATHER=第 9 天天气配置\n\toption.DAY9_l0_coverage=小型积云覆盖率\n\toption.DAY9_l0_density=小型积云密度\n\toption.DAY9_l1_coverage=大型积云覆盖率\n\toption.DAY9_l1_density=大型积云密度\n\toption.DAY9_l2_coverage=高层云覆盖率\n\toption.DAY9_l2_density=高层云密度\n\toption.DAY9_ufog_density=均匀雾气密度\n\toption.DAY9_cfog_density=云雾密度\n\n\toption.PER_BIOME_ENVIRONMENT=群系特色环境\nscreen.Biome=群系配置\nscreen.SWAMP=沼泽及其变种\n\toption.SWAMP_ENV=沼泽环境\n\toption.SWAMP_UNIFORM_DENSITY=均匀雾气密度\n\toption.SWAMP_CLOUDY_DENSITY=云雾密度\n\toption.SWAMP_R=红色比重\n\toption.SWAMP_G=绿色比重\n\toption.SWAMP_B=蓝色比重\n\nscreen.JUNGLE=丛林及其变种\n\toption.JUNGLE_ENV=丛林环境\n\toption.JUNGLE_UNIFORM_DENSITY=均匀雾气密度\n\toption.JUNGLE_CLOUDY_DENSITY=云雾密度\n\toption.JUNGLE_R=红色比重\n\toption.JUNGLE_G=绿色比重\n\toption.JUNGLE_B=蓝色比重\n\nscreen.DARKFOREST=黑森林\n\toption.DARKFOREST_ENV=黑森林环境\n\toption.DARKFOREST_UNIFORM_DENSITY=均匀雾气密度\n\toption.DARKFOREST_CLOUDY_DENSITY=云雾密度\n\toption.DARKFOREST_R=红色比重\n\toption.DARKFOREST_G=绿色比重\n\toption.DARKFOREST_B=蓝色比重\n\nscreen.SNOWY=寒冷群系\n\toption.SNOWY_ENV=寒冷群系环境\n\toption.SNOWY_UNIFORM_DENSITY=均匀雾气密度\n\toption.SNOWY_CLOUDY_DENSITY=云雾密度\n\toption.SNOWY_R=红色比重\n\toption.SNOWY_G=绿色比重\n\toption.SNOWY_B=蓝色比重\n\nscreen.DRY=干旱群系\n\toption.DRY_ENV=干旱群系环境\n\toption.DRY_UNIFORM_DENSITY=均匀雾气密度\n\toption.DRY_CLOUDY_DENSITY=云雾密度\n\toption.DRY_R=红色比重\n\toption.DRY_G=绿色比重\n\toption.DRY_B=蓝色比重\n\nscreen.Waving_Stuff=摇晃相关\n\toption.WAVY_PLANTS=植物摇晃\n\toption.RP_MODEL_FIX=禁用 3D 植物摇晃\n\toption.WAVY_STRENGTH=摇晃强度\n\toption.WAVY_SPEED=摇晃速度\n\n\toption.SKY_GROUND=地表大气\n\nscreen.Ambient_Light_Shadow=环境光与阴影配置\nscreen.Torch_Settings=照明配置\n\toption.TORCH_AMOUNT=照明强度倍率\n\toption.TORCH_R=照明红色比重\n\toption.TORCH_G=照明绿色比重\n\toption.TORCH_B=照明蓝色比重\n\nscreen.Ambient_Colors=环境光颜色\n\toption.ambient_brightness=环境光照明亮度\n\toption.MIN_LIGHT_AMOUNT=最小照明亮度\n\toption.AmbientLight_R=环境光红色比重\n\toption.AmbientLight_G=环境光绿色比重\n\toption.AmbientLight_B=环境光蓝色比重\n\n\toption.indirect_effect=间接照明模式\n\t\tvalue.indirect_effect.0=原版 AO\n\t\tvalue.indirect_effect.1=SSAO\n\t\tvalue.indirect_effect.2=GTAO\n\t\tvalue.indirect_effect.3=RTAO\n\n\toption.indirect_RTGI=光线追踪全局光照模式\n\t\tvalue.indirect_RTGI.0=OFF\n\t\tvalue.indirect_RTGI.1=SSGI\n\t\tvalue.indirect_RTGI.2=高质量 SSGI\n\nscreen.AO=环境光遮蔽配置\n\toption.AO_Strength=环境光遮蔽倍率\n\toption.AO_in_sunlight=阳光遮蔽\n\nscreen.GI=全局光照配置\n\toption.GI_Strength=全局照明倍率\n\toption.RAY_COUNT=光照数量\n\toption.RT_ITERATION=光照迭代次数\n\toption.UseQuarterResDepth=使用1/4分辨率深度\n\nscreen.HAND_HELD_LIGHT=手持光源/手电筒配置\n\toption.Hand_Held_lights=手持光源\n\toption.HANDHELD_LIGHT_RANGE=手持光源范围\n\toption.FLASHLIGHT=手电筒\n\nscreen.FLASHLIGHT_SETTING=手电筒配置\n\toption.FLASHLIGHT_RANGE=手电筒照明距离\n\toption.FLASHLIGHT_BRIGHTNESS_MULT=手电筒照明亮度\n\toption.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT=手电筒照明亮度衰减\n\toption.FLASHLIGHT_SPECULAR=手电筒照明高光反射\n\toption.FLASHLIGHT_SIZE=手电筒照明尺寸\n\toption.FLASHLIGHT_R=手电筒照明红色比重\n\toption.FLASHLIGHT_G=手电筒照明绿色比重\n\toption.FLASHLIGHT_B=手电筒照明蓝色比重\n\toption.FLASHLIGHT_BOUNCED_INDIRECT=手电筒光线反弹\n\toption.FLASHLIGHT_FOG_ILLUMINATION=手电筒雾气照明\n\nscreen.Shadows=阴影配置\n\toption.TRANSLUCENT_COLORED_SHADOWS=半透明彩色阴影\n\toption.SCREENSPACE_CONTACT_SHADOWS=屏幕空间阴影\n\toption.RENDER_ENTITY_SHADOWS=实体阴影\n\toption.RENDER_PLAYER_SHADOWS=玩家阴影\n\toption.shadowMapResolution=阴影分辨率\n\toption.shadowDistance=阴影距离\n\t\tvalue.shadowDistance.16 = 1 区块\n\t\tvalue.shadowDistance.32 = 2 区块\n\t\tvalue.shadowDistance.48 = 3 区块\n\t\tvalue.shadowDistance.64 = 4 区块\n\t\tvalue.shadowDistance.80 = 5 区块\n\t\tvalue.shadowDistance.96 = 6 区块\n\t\tvalue.shadowDistance.128 = 8 区块\n\t\tvalue.shadowDistance.160 = 10 区块\n\t\tvalue.shadowDistance.192 = 12 区块\n\t\tvalue.shadowDistance.256 = 16 区块\n\t\tvalue.shadowDistance.512 = 32 区块\n\t\tvalue.shadowDistance.1024 = 64 区块\n\t\tvalue.shadowDistance.2048 = 128 区块\n\t\tvalue.shadowDistance.4096 = 256 区块\n\t\tvalue.shadowDistance.8192 = 512 区块\n\nscreen.Filtering=阴影过滤配置\n\toption.BASIC_SHADOW_FILTER=基础阴影过滤\n\toption.SHADOW_FILTER_SAMPLE_COUNT=基础阴影过滤采样数\n\toption.Min_Shadow_Filter_Radius=最小阴影过滤半径\n\toption.Variable_Penumbra_Shadows=可变半阴影 VPS\n\toption.VPS_Search_Samples=VPS 过滤采样数\n\toption.Max_Shadow_Filter_Radius=最大阴影过滤半径\n\toption.Max_Filter_Depth=最大过滤深度\n\nscreen.LPV=FloodFill 彩色照明\n\toption.LPV_ENABLED=启用 LPV - §c需要使用Iris加载器\n\toption.LPV_SIZE=LPV 规模\n\t\tvalue.LPV_SIZE.6=小 [64]\n\t\tvalue.LPV_SIZE.7=中 [128]\n\t\tvalue.LPV_SIZE.8=大 [256]\n\toption.LPV_BLOCKLIGHT_SCALE=LPV 光照距离\n\toption.LPV_SATURATION=光照饱和度\n\t\tsuffix.LPV_SATURATION=%\n\toption.LPV_TINT_SATURATION=透光饱和度\n\t\tsuffix.LPV_TINT_SATURATION=%\n\toption.LPV_NORMAL_STRENGTH=LPV 法线强度\n\t\tsuffix.LPV_NORMAL_STRENGTH=%\n\t\tvalue.LPV_NORMAL_STRENGTH.0=关闭\n\toption.LPV_ENTITY_LIGHTS=实体光源\n\toption.LPV_REDSTONE_LIGHTS=红石光源\n\toption.LPV_COLORED_CANDLES=彩色蜡烛\n\toption.LPV_NOSHADOW_HACK=Iris版本 <= 1.7.0 修复\n\toption.LPV_VL_FOG_ILLUMINATION=LPV 泛光体积雾\n\toption.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=LPV 泛光体积雾亮度\n\t\tsuffix.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS=%\n\toption.VANILLA_LIGHTMAP_MASK=原版 LPV 光照\n\nscreen.BLOCK_SHADOWS=FloodFill 阴影\n\toption.LPV_SHADOWS=LPV 阴影 - §c需要开启 LPV\n\toption.LPV_SHADOWS_LIGHT_COUNT=LPV 阴影精度\n\toption.LPV_COLOR_SHADOWS=LPV 彩色阴影\n\toption.LPV_SHADOWS_LIGHT_MULT=LPV 阴影区域亮度\n\toption.LPV_HAND_SHADOWS=LPV 手部阴影\n\nscreen.Fog=雾气配置\n\toption.VL_RENDER_RESOLUTION=雾气渲染分辨率\n\toption.VL_SAMPLES=雾气采样值\n\toption.BLOOMY_FOG=泛光雾倍率\n\toption.Haze_amount=大气雾霾密度\n\toption.BorderFog=区块边界雾\n\toption.FOG_START_HEIGHT=雾气起始高度\n\nscreen.Fog_Color=雾气颜色\n\toption.fog_coefficientMieR=雾气米氏系数 - 红色比重\n\toption.fog_coefficientMieG=雾气米氏系数 - 绿色比重\n\toption.fog_coefficientMieB=雾气米氏系数 - 蓝色比重\n\nscreen.TOD_fog = 全天雾气\n\toption.TOD_Fog_mult = 全局雾气密度倍率\n\toption.Morning_Uniform_Fog = 清晨 - 雾气密度\n\toption.Noon_Uniform_Fog = 正午 - 雾气密度\n\toption.Evening_Uniform_Fog = 傍晚 - 雾气密度\n\toption.Night_Uniform_Fog = 夜晚 - 雾气密度\n\toption.Morning_Cloudy_Fog = 清晨 - 云雾密度\n\toption.Noon_Cloudy_Fog = 正午 - 云雾密度\n\toption.Evening_Cloudy_Fog = 傍晚 - 云雾密度\n\toption.Night_Cloudy_Fog =夜晚 - 云雾密度\n\nscreen.Cave_Fog = 洞穴雾气\n\toption.CAVE_FOG=洞穴雾气\n\toption.CaveFogFallOff = 洞穴雾气衰减曲线\n\toption.CaveFogColor_R = 洞穴雾气红色比重\n\toption.CaveFogColor_G = 洞穴雾气绿色比重\n\toption.CaveFogColor_B = 洞穴雾气蓝色比重\n\nscreen.Nether_Fog = 下界雾气\n\toption.NETHER_PLUME_DENSITY = 下界烟柱密度\n\toption.NETHER_PLUME_R = 下界烟柱红色补偿\n\toption.NETHER_PLUME_G = 下界烟柱绿色补偿\n\toption.NETHER_PLUME_B = 下界烟柱蓝色补偿\n\nscreen.End_Fog = 末地雾气\n\toption.END_STORM_DENSITY = 末地风暴密度\n\toption.END_FOG_R = 末地雾气红色比重\n\toption.END_FOG_G = 末地雾气绿色比重\n\toption.END_FOG_B = 末地雾气蓝色比重\n\toption.END_VORTEX_R = 末地漩涡红色比重\n\toption.END_VORTEX_G = 末地漩涡绿色比重\n\toption.END_VORTEX_B = 末地漩涡蓝色比重\n\toption.END_LIGHTNING_R = 末地闪电红色补偿\n\toption.END_LIGHTNING_G = 末地闪电绿色补偿\n\toption.END_LIGHTNING_B = 末地闪电蓝色补偿\n\nscreen.Clouds = 云层配置\n\toption.VOLUMETRIC_CLOUDS = 体积云\n\toption.CLOUDS_QUALITY = 云层渲染分辨率\n\toption.CLOUDS_SHADOWS = 云层阴影\n\toption.CLOUD_SHADOW_STRENGTH = 云层阴影强度\n\toption.HQ_CLOUDS = 高质量云层\n\toption.ERODE_AMOUNT = 云层侵蚀强度\n\toption.Cloud_Speed = 云层速度倍率\n\nscreen.S_Cumulus_Cloud = 小型积云配置\nscreen.L_Cumulus_Cloud = 大型积云配置\nscreen.Altostratus_Cloud = 高层云配置\n\n\toption.CloudLayer0 = 小型积云\n\toption.CloudLayer0_coverage = 覆盖率\n\toption.CloudLayer0_density = 密度\n\toption.CloudLayer0_height = 高度\n\toption.CloudLayer0_tallness = 厚度\n\toption.CloudLayer0_scale = 尺寸\n\n\toption.CloudLayer1 = 大型积云\n\toption.CloudLayer1_coverage = 覆盖率\n\toption.CloudLayer1_density = 密度\n\toption.CloudLayer1_height = 高度\n\toption.CloudLayer1_tallness = 厚度\n\toption.CloudLayer1_scale = 尺寸\n\n\toption.CloudLayer2 = 高层云\n\toption.CloudLayer2_coverage = 覆盖率\n\toption.CloudLayer2_density = 密度\n\toption.CloudLayer2_height = 高度\n\toption.CloudLayer2_scale = 尺寸\n\nscreen.Seasons = 季节配置\n\toption.Seasons = 四季颜色\n\toption.Season_Length = 季节长度 (天)\n\toption.Start_Season = 起始季节\n\t\tvalue.Start_Season.0 = 夏季 (默认)\n\t\tvalue.Start_Season.1 = 秋季\n\t\tvalue.Start_Season.2 = 冬季\n\t\tvalue.Start_Season.3 = 春季\nscreen.Summer_colors = 夏季颜色\n\toption.Summer_R = 植被红色比重\n\toption.Summer_G = 植被绿色比重\n\toption.Summer_B = 植被蓝色比重\n\toption.Summer_Leaf_R = 树叶红色比重\n\toption.Summer_Leaf_G = 树叶绿色比重\n\toption.Summer_Leaf_B = 树叶蓝色比重\n\nscreen.Fall_colors = 秋季颜色\n\toption.Fall_R = 植被红色比重\n\toption.Fall_G = 植被绿色比重\n\toption.Fall_B = 植被蓝色比重\n\toption.Fall_Leaf_R = 树叶红色比重\n\toption.Fall_Leaf_G = 树叶绿色比重\n\toption.Fall_Leaf_B = 树叶蓝色比重\n\nscreen.Winter_colors = 冬季颜色\n\toption.Winter_R = 植被红色比重\n\toption.Winter_G = 植被绿色比重\n\toption.Winter_B = 植被蓝色比重\n\toption.Winter_Leaf_R = 树叶红色比重\n\toption.Winter_Leaf_G = 树叶 - 绿\n\toption.Winter_Leaf_B = 树叶蓝色比重\n\nscreen.Spring_colors = 春季颜色\n\toption.Spring_R = 植被红色比重\n\toption.Spring_G = 植被绿色比重\n\toption.Spring_B = 植被蓝色比重\n\toption.Spring_Leaf_R = 树叶红色比重\n\toption.Spring_Leaf_G = 树叶绿色比重\n\toption.Spring_Leaf_B = 树叶蓝色比重\n\nscreen.Water = 水体配置\n\toption.rayMarchSampleCount = 水体光照采样值\n\toption.WATER_SUN_SPECULAR = 日月反射\n\toption.FAKE_REFRACTION_EFFECT = 折射 (水体/玻璃)\n\toption.FAKE_DISPERSION_EFFECT = 散射 (水体/玻璃)\n\toption.REFRACTION_SMUDGE = 折射涂抹\n\toption.Dirt_Amount = 水体浑浊程度\n\toption.WATER_WAVE_STRENGTH = 水波强度\n\toption.SNELLS_WINDOW = 斯涅尔窗\n\toption.MINIMUM_WATER_ABSORBANCE = 最小水体吸收\n\t\tvalue.MINIMUM_WATER_ABSORBANCE.-1 = 自动\n\toption.WATER_DISTORTION_AMOUNT = 水下失真强度\n\toption.WATER_WAVE_SPEED=水体摇晃速度\n\toption.Vanilla_like_water=原版水体样式\n\nscreen.Water_fog_color = 水雾配置\n\toption.Dirt_Scatter_R = 红色色散 (污物)\n\toption.Dirt_Scatter_G = 绿色色散 (污物)\n\toption.Dirt_Scatter_B = 蓝色色散 (污物)\n\toption.Dirt_Absorb_R = 红色吸收 (污物)\n\toption.Dirt_Absorb_G = 绿色吸收 (污物)\n\toption.Dirt_Absorb_B = 蓝色吸收 (污物)\n\toption.Water_Absorb_R = 红色吸收 (水体)\n\toption.Water_Absorb_G = 绿色吸收 (水体)\n\toption.Water_Absorb_B = 蓝色吸收 (水体)\n\n\toption.PLANET_CURVATURE = 弯曲地表\n\toption.CURVATURE_AMOUNT = 弯曲度\n\nscreen.Post_Processing = 后处理\nscreen.COLOR_GRADING = 颜色分级\n\toption.LUMINANCE_CURVE = 色调曲线\n\toption.LOWER_CURVE = 下部曲线\n\toption.UPPER_CURVE = 上部曲线\n\toption.COLOR_GRADING_ENABLED = 颜色分级\n\toption.SHADOWS_GRADE_R = 暗部 - §c红色比重\n\toption.SHADOWS_GRADE_G = 暗部 - §a绿色比重\n\toption.SHADOWS_GRADE_B = 暗部 - §9蓝色比重\n\toption.SHADOWS_GRADE_MUL = 暗部 - 亮度\n\toption.MIDS_GRADE_R = 中性部 - §c红色比重\n\toption.MIDS_GRADE_G = 中性部 - §a绿色比重\n\toption.MIDS_GRADE_B = 中性部 - §9蓝色比重\n\toption.MIDS_GRADE_MUL = 中性部分 - 亮度\n\toption.HIGHLIGHTS_GRADE_R = 亮部 - §c红色比重\n\toption.HIGHLIGHTS_GRADE_G = 亮部 - §a绿色比重\n\toption.HIGHLIGHTS_GRADE_B = 亮部 - §9蓝色比重\n\toption.HIGHLIGHTS_GRADE_MUL = 亮部 - 亮度\nscreen.Exposure = 曝光\nscreen.DepthOfField = 景深 DOF 配置\nscreen.Purkinje_effect = 浦肯野现象配置\n\toption.Purkinje_strength = 浦肯野现象混合比率\n\t\tvalue.Purkinje_strength.0 = 关闭\n\t\tsuffix.Purkinje_strength =%\n\toption.SHARPENING = 锐化强度\n\toption.BLOOM_STRENGTH = 泛光强度\nscreen.TAA_OPTIONS = 抗锯齿配置\n\toption.SCREENSHOT_MODE = 截图模式\n\toption.TAA = 时间性抗锯齿 TAA\n\toption.RESPONSIVE_TAA = 快速 TAA §a(使用 TAA 升采样时请关闭该选项)\n\toption.BLEND_FACTOR = 混合比重\n\toption.TAA_UPSCALING = TAA 升采样\n\toption.SCALE_FACTOR = 缩放倍率\n\toption.CAMERA_GRIDLINES = 相机网格线\n\toption.MOTION_BLUR = 动态模糊\n\toption.MOTION_BLUR_STRENGTH = 动态模糊强度\n\toption.CHROMATIC_ABERRATION = 色差\n\toption.CHROMATIC_ABERRATION_STRENGTH = 色差强度\n\toption.VIGNETTE = 相机暗角\n\toption.VIGNETTE_STRENGTH = 相机暗角强度\n\nscreen.Resource_Pack_Support = 资源包配置\nscreen.Reflections = 高光反射\n\toption.DEFERRED_SPECULAR = 延迟高光反射\n\toption.FORWARD_SPECULAR = 前向高光反射\n\toption.DEFERRED_ENVIRONMENT_REFLECTION = 延迟环境反射\n\toption.FORWARD_ENVIRONMENT_REFLECTION = 前向环境反射\n\toption.DEFERRED_BACKGROUND_REFLECTION = 延迟背景反射\n\toption.FORWARD_BACKGROUND_REFLECTION = 前向背景反射\n\toption.DEFERRED_ROUGH_REFLECTION = 延迟粗糙度反射\n\toption.FORWARD_ROUGH_REFLECTION = 前向粗糙度反射\n\toption.ROUGHNESS_THRESHOLD = 粗糙度反射阀值\n\toption.SUN_SPECULAR_MULT = 太阳反射强度\n\toption.MATERIAL_WETNESS_TYPE=潮湿反射模式\n\t\tvalue.MATERIAL_WETNESS_TYPE.0=自适应\n\t\tvalue.MATERIAL_WETNESS_TYPE.1=统一\n\nscreen.Emissives = 发光效果\n\toption.Emissive_Brightness = 发光倍率\n\toption.Emissive_Curve = 发光曲线\n\toption.EMISSIVE_TYPE = 发光模式\n\t\tvalue.EMISSIVE_TYPE.0 = 无\n\t\tvalue.EMISSIVE_TYPE.1 = 硬编码\n\t\tvalue.EMISSIVE_TYPE.2 = 硬编码 + LabPBR 自发光\n\t\tvalue.EMISSIVE_TYPE.3 = 仅 LabPBR 自发光\n\nscreen.Subsurface_Scattering = 次表面散射\n\toption.LabSSS_Curve = LabSSS 曲线\n\toption.sss_density_multiplier=次表面散射强度倍率\n\toption.sss_absorbance_multiplier=次表面散射吸光倍率\n\toption.MISC_BLOCK_SSS = 特定方块次表面散射\n\toption.MOB_SSS = 生物次表面散射\n\toption.Ambient_SSS = 天空光次表面散射\n\toption.ambientsss_brightness = 天空光次表面散射亮度\n\toption.SSS_TYPE = 次表面散射模式\n\t\tvalue.SSS_TYPE.0 = 无\n\t\tvalue.SSS_TYPE.1 = 硬编码\n\t\tvalue.SSS_TYPE.2 = 硬编码 + LabSSS\n\t\tvalue.SSS_TYPE.3 = 仅 LabSSS\n\nscreen.POM=视差遮蔽映射/POM\n\toption.POM=视差\n\toption.MAX_ITERATIONS=视差质量\n\toption.POM_DEPTH=视差深度\n\toption.MAX_DIST=视差最大距离\n\toption.Adaptive_Step_length=动态质量\n\nscreen.Porosity=孔隙率/水坑\n\toption.Porosity=孔隙率\n\toption.Puddles=水坑\n\toption.Puddle_Size=水坑尺寸倍率\n\n\toption.MATERIAL_AO=材质环境光遮蔽\n\toption.MATERIAL_NORMAL_STRENGTH=材质法线强度\n\n\toption.RESOURCEPACK_SKY = 资源包天空\n\t\tvalue.RESOURCEPACK_SKY.0 = 完整着色器天空\n\t\tvalue.RESOURCEPACK_SKY.1 = 资源包天空 + 着色器日月\n\t\tvalue.RESOURCEPACK_SKY.2 = 完整资源包天空\n\t\tvalue.RESOURCEPACK_SKY.3 = 着色器天空 + 资源包日月\n\n\toption.ISOLATE_RESOURCEPACK_SKY=独立的资源包天空\n\n\toption.DOF_QUALITY=景深 DOF\n\t\tvalue.DOF_QUALITY.-1=关闭\n\t\tvalue.DOF_QUALITY.0=六边形\n\t\tvalue.DOF_QUALITY.1=低质量\n\t\tvalue.DOF_QUALITY.2=中质量\n\t\tvalue.DOF_QUALITY.3=高质量\n\t\tvalue.DOF_QUALITY.4=极高质量\n\t\tvalue.DOF_QUALITY.5=抖动\n\toption.MANUAL_FOCUS=对焦距离\n\toption.DOF_ANAMORPHIC_RATIO=景深变形比\n\t\tvalue.MANUAL_FOCUS.-2=自动对焦\n\t\tvalue.MANUAL_FOCUS.-1=亮度滑块\n\toption.DOF_DISPERSION_MULT=景深散射倍率\n\toption.focal=焦距\n\toption.aperture=光圈\n\toption.DoF_Adaptation_Speed=景深虚化自适应速度\n\toption.FAR_BLUR_ONLY=仅虚化远处\n\toption.REMOVE_HAND_BLUR=忽略手部景深\n\nscreen.JITTER_DOF=抖动景深配置\n\toption.JITTER_STRENGTH=抖动强度\n\toption.FOCUS_LASER_COLOR=聚焦点\n\t\tvalue.FOCUS_LASER_COLOR.0=红\n\t\tvalue.FOCUS_LASER_COLOR.1=绿\n\t\tvalue.FOCUS_LASER_COLOR.2=蓝\n\t\tvalue.FOCUS_LASER_COLOR.3=粉\n\t\tvalue.FOCUS_LASER_COLOR.4=黄\n\t\tvalue.FOCUS_LASER_COLOR.5=白\n\nscreen.Effects=特效配置\nscreen.Emissive_Ore = 矿物发光配置\n\toption.EMISSIVE_ORE = 矿物发光\n\toption.EMISSIVE_ORE_RANGE = 矿物光照距离\n\toption.EMISSIVE_ORE_R = 矿物光照红色比重\n\toption.EMISSIVE_ORE_G = 矿物光照绿色比重\n\toption.EMISSIVE_ORE_B = 矿物光照蓝色比重\n\nscreen.GAMEPLAY_EFFECTS=游玩效果配置\n\toption.MOTION_AMOUNT=效果强度\n\toption.DAMAGE_TAKEN_EFFECT=受伤效果\n\toption.LOW_HEALTH_EFFECT=低生命值效果\n\toption.LOW_HEALTH_EFFECT_START=配置低生命值的剩余 HP\n\toption.CRITICALLY_LOW_HEALTH_EFFECT_START=配置危险生命值的剩余 HP\n\nscreen.LENS_EFFECTS=镜头效果配置\n\toption.DISTORT_EFFECT_AMOUNT=失真效果强度\n\toption.WATER_ON_CAMERA_EFFECT=相机覆水效果\n\toption.ON_FIRE_DISTORT_EFFECT=灼烧扭曲效果\n\toption.RAIN_ON_CAMERA_EFFECT=相机覆雨效果\n\toption.LENS_FLARE = 镜头光晕\n\toption.LENS_FLARE_STRENGTH = 镜头光晕强度\n\toption.FISHEYE_EFFECT = 鱼眼镜头\n\toption.FISHEYE_STRENGTH = 鱼眼镜头畸变强度\n\nscreen.Aerochrome_Mode=Aerochrome 模式\n\toption.AEROCHROME_MODE=Aerochrome 模式\n\toption.AEROCHROME_PINKNESS=Aerochrome 模式 红色: 粉色 比例\n\toption.AEROCHROME_WOOL_ENABLED=Aerochrome 模式作用于羊毛\n\n\toption.FANCY_END_PORTAL=华丽的末地传送门\n\nscreen.COLOR=色调映射/色彩配置\n\toption.TONEMAP=色调映射配置\n\toption.USE_ACES_COLORSPACE_APPROXIMATION=启用 ACES 色彩空间的近似值拟合\n\toption.AGX_LOOK=AGX预设方案\n\t\tvalue.AGX_LOOK.0=标准\n\t\tvalue.AGX_LOOK.1=WF99\n\t\tvalue.AGX_LOOK.2=金色\n\t\tvalue.AGX_LOOK.3=强对比\n\toption.SATURATION=饱和度\n\toption.CROSSTALK=光照干扰\n\n\toption.AUTO_EXPOSURE=自动曝光\n\toption.EXPOSURE_MULTIPLIER=曝光强度\n\toption.Exposure_Speed=曝光速度\n\toption.Manual_exposure_value=手动曝光值\n\toption.EXPOSURE_DARKENING=暗化曝光\n\toption.EXPOSURE_BRIGHTENING=亮化曝光\n\n\toption.Purkinje_strength=浦肯野现象强度\n\toption.Purkinje_R=浦肯野 - 红色比重\n\toption.Purkinje_G=浦肯野 - 绿色比重\n\toption.Purkinje_B=浦肯野 - 蓝色比重\n\toption.Purkinje_Multiplier=浦肯野现象倍率\n\nscreen.Misc_Settings = 杂项\nscreen.EXPERIMENTAL_STUFF=实验性选项\n\toption.CLOUDS_INTERSECT_TERRAIN=地平线云层\n\toption.BLOOMY_PARTICLES=泛光粒子\n\toption.BIOME_TINT_WATER=群系色调水体\n\toption.HYPER_DETAILED_WAVES=超细节水波\n\toption.OLD_BLOOM=旧版泛光\n\toption.OLD_INDIRECT_SSS=旧版 SSS\n\toption.PLANET_GROUND_BRIGHTNESS=行星地表亮度\n\toption.LIT_PARTICLE_BRIGHTNESS=提高粒子亮度\n\toption.WATER_CAUSTICS_BRIGHTNESS=水体焦散线亮度\n\toption.WATER_CAUSTICS_STRENGTH=水体焦散线强度\n\toption.OLD_CAVE_DETECTION=旧版洞穴检测\n\toption.FORCE_TRANSLUCENT_GLASS=强制玻璃半透明\n\toption.LARGE_WAVE_DISPLACEMENT=大型波浪\n\toption.LIGHTLEAKFIX_MODE=漏光修复模式\n\toption.LIGHTNING_FLASH=闪电闪烁\n\toption.Texture_MipMap_Bias=纹理 Mipmap 偏移\n\n\toption.DEBUG_VIEW=DEBUG视图\n\t\tvalue.DEBUG_VIEW.debug_OFF=关闭\n\t\tvalue.DEBUG_VIEW.debug_SHADOWMAP=阴影图\n\t\tvalue.DEBUG_VIEW.debug_NORMALS=法线\n\t\tvalue.DEBUG_VIEW.debug_SPECULAR=高光\n\t\tvalue.DEBUG_VIEW.debug_INDIRECT=间接照明\n\t\tvalue.DEBUG_VIEW.debug_DIRECT=直接照明\n\t\tvalue.DEBUG_VIEW.debug_VIEW_POSITION=查看位置\n\t\tvalue.DEBUG_VIEW.debug_DH_WATER_BLENDING=DH 水体混合\n\t\tvalue.DEBUG_VIEW.debug_FILTERED_STUFF=滤镜相关\n\t\tvalue.DEBUG_VIEW.debug_TEMPORAL_REPROJECTION=时间重投影\n\t\tvalue.DEBUG_VIEW.debug_LIGHTS=光照\n\n\toption.display_LUT=显示 LUT\n\toption.WhiteWorld=全白世界\n\toption.SSS_view=次表面散射视图\n\toption.ambientLight_only=仅启用环境光\n\toption.DISABLE_ENCHANT_GLINT=禁用附魔光效\n\toption.DISABLE_VANILLA_EMISSIVES=禁用原版光照\n\toption.PARTICLE_RENDERING_FIX=粒子渲染修复\n\toption.TRANSLUCENT_ENTITIES=半透明实体\n\toption.LIGHTING_EFFECTS_BLUR_FILTER=光照模糊效果滤镜\n\nscreen.selection_box_outline=选择框框线\n\toption.SELECT_BOX=选择框\n\toption.SELECT_BOX_COL_R=选择框颜色 - 红色比重\n\toption.SELECT_BOX_COL_G=选择框颜色 - 绿色比重\n\toption.SELECT_BOX_COL_B=选择框颜色 - 蓝色比重\n\nscreen.SCENE_CONTROLLER=环境配置器\n\toption.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS = 自定义散射光\nscreen.DIFFUSE_LIGHTING_COLORS=散射光颜色配置\n\toption.DIRECTLIGHT_DIFFUSE_R = 来自直接照明 - 红色比重\n\toption.DIRECTLIGHT_DIFFUSE_G = 来自直接照明 - 绿色比重\n\toption.DIRECTLIGHT_DIFFUSE_B = 来自直接照明 - 蓝色比重\n\toption.INDIRECTLIGHT_DIFFUSE_R = 来自间接照明 - 红色比重\n\toption.INDIRECTLIGHT_DIFFUSE_G = 来自间接照明 - 绿色比重\n\toption.INDIRECTLIGHT_DIFFUSE_B = 来自间接照明 - 蓝色比重\n\toption.USE_CUSTOM_CLOUD_LIGHTING_COLORS = 自定义云层\nscreen.CLOUD_LIGHTING_COLORS=云层颜色配置\n\toption.DIRECTLIGHT_CLOUDS_R = 来自直接照明 - 红色比重\n\toption.DIRECTLIGHT_CLOUDS_G = 来自直接照明 - 绿色比重\n\toption.DIRECTLIGHT_CLOUDS_B = 来自直接照明 - 蓝色比重\n\toption.INDIRECTLIGHT_CLOUDS_R = 来自间接照明 - 红色比重\n\toption.INDIRECTLIGHT_CLOUDS_G = 来自间接照明 - 绿色比重\n\toption.INDIRECTLIGHT_CLOUDS_B = 来自间接照明 - 蓝色比重\n\toption.USE_CUSTOM_FOG_LIGHTING_COLORS = 自定义雾气\nscreen.FOG_LIGHTING_COLORS=雾气颜色配置\n\toption.DIRECTLIGHT_FOG_R = 来自直接照明 - 红色比重\n\toption.DIRECTLIGHT_FOG_G = 来自直接照明 - 绿色比重\n\toption.DIRECTLIGHT_FOG_B = 来自直接照明 - 蓝色比重\n\toption.INDIRECTLIGHT_FOG_R = 来自间接照明 - 红色比重\n\toption.INDIRECTLIGHT_FOG_G = 来自间接照明 - 绿色比重\n\toption.INDIRECTLIGHT_FOG_B = 来自间接照明 - 蓝色比重\n\toption.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS = 自定义地表大气\nscreen.SKY_GROUND_LIGHTING_COLORS=地表光颜色配置\n\toption.SKY_GROUND_R = 地表大气 - 红色比重\n\toption.SKY_GROUND_G = 地表大气 - 绿色比重\n\toption.SKY_GROUND_B = 地表大气 - 蓝色比重\n\nscreen.Mod_support = 支持的模组配置\nscreen.DISTANT_HORIZONS_SETTINGS = §2Distant Horizons §f配置\n\toption.DH_OVERDRAW_PREVENTION = 防止过度绘制\n\toption.OVERDRAW_MAX_DISTANCE = 防止过度绘制的最大距离\n\t\tvalue.OVERDRAW_MAX_DISTANCE.0 = 无限制\n\t\tvalue.OVERDRAW_MAX_DISTANCE.32 = 2 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.48 = 3 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.64 = 4 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.80 = 5 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.96 = 6 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.112 = 7 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.128 = 8 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.144 = 9 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.160 = 10 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.176 = 11 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.192 = 12 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.208 = 13 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.224 = 14 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.240 = 15 区块\n\t\tvalue.OVERDRAW_MAX_DISTANCE.256 = 16 区块\n\n\toption.DH_AMBIENT_OCCLUSION = LOD 区块的 AO\n\toption.DH_SUBSURFACE_SCATTERING = LOD 区块的 SSS\n\toption.DH_SCREENSPACE_REFLECTIONS = LOD 区块的 SSR\n\toption.DH_TAA_JITTER = DH 抖动 TAA\n\toption.DH_NOISE_TEXTURE = DH 噪声贴图\n\toption.NOISE_RESOLUTION = DH 噪声分辨率\n\toption.NOISE_INTENSITY = DH 噪声强度\n\toption.NOISE_DROPOFF = DH 噪声衰减\n\n\toption.DH_KNOWN_ISSUES =DH 支持已知问题\n\t\tvalue.DH_KNOWN_ISSUES.0 = §c 点击此处文本循环查看已知问题列表\n\t\tvalue.DH_KNOWN_ISSUES.1 = §a LOD 区域的 GTAO, RTAO 和 SSGI 不生效 - 未能实现对 DH 的支持\n\n\toption.DISTANT_HORIZONS_SHADOWMAP = DH 阴影图支持\n\toption.TOGGLE_VL_FOG = 体积雾\n\nscreen.PHYSICS_MOD_OCEAN_SETTINGS = §2物理模组 §f配置\n\n////////////////////////////////// COMMENT //////////////////////////////////\n\noption.sunPathRotation.comment=配置太阳和月亮的角度, 用以投射出更长的阴影.\noption.sun_illuminance.comment=配置太阳的亮度.\noption.moon_illuminance.comment=配置月亮的亮度.\noption.MOONPHASE_BASED_MOONLIGHT.comment=开启此选项以根据月相调整每晚的月光亮度.\noption.STAR_DENSITY.comment=配置夜晚星星的密度.\noption.STAR_MOVEMENT_MULT.comment=配置夜晚星星移动的速度.\noption.RAINBOW.comment=使用此选项以循环彩虹类型. 真实或全天模式下的彩虹特性均遵循真实的自然规律, 在特定的太阳角度下将不可见. 使用真实模式以令彩虹仅在雨后出现.\n\noption.Sky_Brightness.comment=配置天空的亮度.\n\noption.colortype.comment=请根据选择的模式使用对应的颜色调节选项.\noption.Sun_temp.comment=配置太阳的色温. 色温越高颜色将越偏向白色, 反之将越偏向黄色.\noption.Moon_temp.comment=配置月亮的色温. 色温越高颜色将越偏向白色, 反之将越偏向黄色.\n\noption.AURORA_BRIGHTNESS.comment=配置夜晚极光的亮度.\noption.AURORA_SPEED.comment=配置夜晚极光移动的速度.\noption.AURORA_SNOWY.comment=此选项使极光仅在会下雪的群系生成.\noption.AUR_ENV_OFFSET.comment=配置极光照明对云层/地面的增益系数.\n\noption.SHOOTING_STARS.comment=使用此选项以启用流星.\noption.SHOOTING_STARS_SPEED.comment=配置流星的速度.\noption.SHOOTING_STARS_FREQUENCY.comment=配置流星出现的频率.\noption.SHOOTING_STARS_TRAIL_VISIBILITY.comment=配置流星尾迹的可见性.\noption.SHOOTING_STARS_TRAIL_LENGTH.comment=配置流星尾迹的长度.\noption.SHOOTING_STARS_TRAIL_WIDTH.comment=配置流星尾迹的宽度.\n\noption.Rain_coverage.comment=配置雨天云层覆盖天空的增益系数.\noption.RainFog_amount.comment=配置雨天雾气的密度.\noption.RAIN_VISIBILITY.comment=配置雨雪粒子的尺寸.\noption.WATER_RIPPLES.comment=开启此选项以在雨天应用水面涟漪. §a性能开销中等.\noption.GROUND_RIPPLES.comment=开启此选项以在雨天应用地表涟漪. §a性能开销很高.\noption.LIT_PARTICLE_BRIGHTNESS.comment=配置雨雪粒子受光源影响的水平.\n\noption.Daily_Weather.comment=配置可循环的天气系统.\noption.CHOOSE_RANDOM_WEATHER_PROFILE.comment=随机选择以下其中一天的天气配置.\n\noption.PER_BIOME_ENVIRONMENT.comment=开启此选项将在特定群系应用特殊的环境效果. §a性能开销中等.\n\noption.SWAMP_ENV.comment=开启此选项以应用沼泽/红树林沼泽的雾气与色彩滤镜.\noption.JUNGLE_ENV.comment=开启此选项以应用丛林/稀树丛林/竹林的雾气与色彩滤镜.\noption.DARKFOREST_ENV.comment=开启此选项以应用黑森林/苍白之圆的雾气与色彩滤镜.\noption.SNOWY_ENV.comment=开启此选项以应用寒冷群系的雾气与色彩滤镜, 同时包含暴风雪特效.\noption.DRY_ENV.comment=开启此选项以应用干旱群系的雾气与色彩滤镜 同时包含沙尘暴特效.\n\noption.WAVY_PLANTS.comment=开启此选项以启用植物摇晃的所有功能. §a性能开销很低.\noption.RP_MODEL_FIX.comment=开启此选项以禁用一些可能含有 3D 模型的植物摇晃. 用以避免一些图像问题.\noption.WAVY_STRENGTH.comment=配置植物摇晃的强度.\noption.WAVY_SPEED.comment=配置植物摇晃的速度.\n\noption.SKY_GROUND.comment=配置天空光对地表的作用程度.\n\noption.TORCH_AMOUNT.comment=配置照明的亮度.\n\noption.ambient_brightness.comment=配置环境光的亮度.\noption.MIN_LIGHT_AMOUNT.comment=配置阴影区域的最小照明亮度.\noption.indirect_effect.comment=配置间接照明类型以在相互接触的表面上产生柔和的阴影.\noption.indirect_RTGI.comment=配置全局光照模式以使用光线追踪计算反弹光. 仅在开启 RTAO 时生效.\n\noption.AO_Strength.comment=配置由 SSAO, GTAO, RTAO 渲染的环境光遮蔽强度.\noption.GI_Strength.comment=配置由 (高质量) SSGI 渲染的全局光照强度.\noption.RAY_COUNT.comment=配置光线追踪使用的光线数量, 更高的光线数量有助于提升光照准确度, 降低暗部噪点水平.\noption.RT_ITERATION.comment=配置光线追踪使用的光线迭代次数.\noption.AO_in_sunlight.comment=配置由太阳产生的环境光遮蔽效果.\noption.UseQuarterResDepth.comment=开启此选项以使用1/4的分辨率深度作为光线追踪的采样, 有助于提高性能. §a性能开销很低.\noption.Hand_Held_lights.comment=开启此选项以使用手持光源. §a性能开销较低.\noption.HANDHELD_LIGHT_RANGE.comment=配置手持光源的照明距离.\n\noption.FLASHLIGHT.comment=开启此选项以使用手持光源. §a手持光源无法与手电筒同时使用.\noption.FLASHLIGHT_RANGE.comment=配置手电筒的照明距离.\noption.FLASHLIGHT_BRIGHTNESS_MULT.comment=配置手电筒的照明亮度.\noption.FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT.comment=配置手电筒的照明亮度梯度淡出的容易程度/速度.\noption.FLASHLIGHT_SPECULAR.comment=开启此选项以使手电筒照明能够产生高光反射.\noption.FLASHLIGHT_SIZE.comment=配置手电筒照明光斑的尺寸.\noption.FLASHLIGHT_BOUNCED_INDIRECT.comment=开启此选项以允许手电筒光线反弹.\noption.FLASHLIGHT_FOG_ILLUMINATION.comment=开启此选项以允许手电筒照明能够点亮雾气.\n\noption.TRANSLUCENT_COLORED_SHADOWS.comment=开启此选项以使像染色玻璃等半透明方块对穿过的光线染色. §a性能开销中等.\noption.SCREENSPACE_CONTACT_SHADOWS.comment=开启此选项以为远处物体补充小范围的阴影, 并为近处部分阴影区域添加细节. §a性能开销中等.\noption.RENDER_ENTITY_SHADOWS.comment=开启此选项以为所有类型实体渲染阴影, 例如怪物, 箱子, 或者告示牌. §a性能开销中等.\noption.RENDER_PLAYER_SHADOWS.comment=开启此选项以为所有玩家渲染阴影. §a性能开销较低.\noption.shadowMapResolution.comment=配置来自直接光照所产生的阴影质量.\noption.shadowDistance.comment=配置阴影可渲染的最大距离.\n\noption.BASIC_SHADOW_FILTER.comment=开启此选项以启用基础阴影过滤器.\noption.SHADOW_FILTER_SAMPLE_COUNT.comment=配置基础阴影过滤器质量. 过滤器仅用于软化阴影.\noption.Min_Shadow_Filter_Radius.comment=配置基础阴影过滤器的最小作用半径.\noption.Variable_Penumbra_Shadows.comment=开启此选项使阴影离投射它的地方距离越远越柔和. 用于渲染更高质量的阴影和次表面散射. §a性能开销中等.\noption.VPS_Search_Samples.comment=配置可变半阴影过滤器质量.\noption.Max_Shadow_Filter_Radius.comment=配置基础阴影过滤器的最大作用半径.\noption.Max_Filter_Depth.comment=配置阴影过滤器的作用深度. 用于调整阴影的柔和程度.\n\noption.LPV_ENABLED.comment=开启此选项以启用 LPV 的所有功能. §a性能开销较高.\noption.LPV_SIZE.comment=配置由方块产生的彩色光照的体积规模.\noption.LPV_BLOCKLIGHT_SCALE.comment=配置由方块产生的彩色光照的照明范围.\noption.LPV_SATURATION.comment=配置彩色光照的强度.\noption.LPV_TINT_SATURATION.comment=配置彩色光照穿过半透明方块后映射的色调强度.\noption.LPV_NORMAL_STRENGTH.comment=配置影响光照方向的表面法线规模.\noption.LPV_ENTITY_LIGHTS.comment=开启此选项以允许实体产生彩色光照. §a性能开销中等.\noption.LPV_REDSTONE_LIGHTS.comment=开启此选项以允许红石方块产生彩色光照. §a性能开销中等.\noption.LPV_COLORED_CANDLES.comment=开启此选项以允许彩色蜡烛产生对应的彩色光照. §a性能开销中等.\noption.LPV_NOSHADOW_HACK.comment=开启此选项以允许 Floodfill 在下界及末地中生效, 但禁止了实体及掉落物的彩色光照效果. §a仅在Iris版本低于 1.7.0 时开启! \noption.LPV_VL_FOG_ILLUMINATION.comment=开启此选项以允许彩色光照点亮光源周围的空气. §a性能开销较高.\noption.LPV_VL_FOG_ILLUMINATION_BRIGHTNESS.comment=配置泛光雾亮度.\noption.VANILLA_LIGHTMAP_MASK.comment=开启此选项以使用原版风格的 LPV 光照, 将会禁用部分 LPV 特效.\n\noption.LPV_SHADOWS.comment=开启此选项以允许使用LPV计算阴影. 用于生成更精确的阴影. §a性能开销很高.\noption.LPV_SHADOWS_LIGHT_COUNT.comment=配置LPV计算阴影使用的光线数量.\noption.LPV_COLOR_SHADOWS.comment=开启此选项以允许光源的颜色作用于阴影. §a性能开销中等.\noption.LPV_SHADOWS_LIGHT_MULT.comment=配置LPV阴影的亮度.\noption.LPV_HAND_SHADOWS.comment=开启此选项以允许LPV计算第一人称下手部的阴影. §a性能开销中等.\n\noption.VL_RENDER_RESOLUTION.comment=配置体积雾渲染分辨率.\noption.VL_SAMPLES.comment=配置体积雾采样质量.\noption.BLOOMY_FOG.comment=配置作用于雾气的泛化强度.\noption.Haze_amount.comment=配置远距离的蓝色大气雾霾密度.\noption.BorderFog.comment=配置区块边界的雾气. 用于隐藏区块边界.\noption.FOG_START_HEIGHT.comment=配置雾气生成的高度.\n\noption.TOD_Fog_mult.comment=配置一天中特定时段的总体雾气量. \n\noption.CAVE_FOG.comment=配置仅出现在洞穴等黑暗区域的雾气, 由于着色器的局限性, 可能在一些非洞穴区域启用.\noption.CaveFogFallOff.comment=配置雾气衰减的容易程度/速度.\n\noption.NETHER_PLUME_DENSITY.comment=配置下界柱状烟雾的密度.\n\noption.END_STORM_DENSITY.comment=配置末地总体雾气的密度.\n\noption.VOLUMETRIC_CLOUDS.comment=体积云所有功能的总开关.\noption.CLOUDS_QUALITY.comment=配置体积云渲染分辨率. §a性能开销高.\noption.CLOUDS_SHADOWS.comment=开启此选项以允许云层或雾气向地面投射阴影. §a性能开销中等.\noption.CLOUD_SHADOW_STRENGTH.comment=配置云雾阴影的强度.\noption.HQ_CLOUDS.comment=开启此选项以应用更精细的云层密度. §a性能开销较低.\noption.ERODE_AMOUNT.comment=配置云层边缘不规则侵蚀的强度.\noption.Cloud_Speed.comment=配置体积云移动的速度.\n\noption.CloudLayer0.comment=配置在较低位置出现的团状小型积云.\noption.CloudLayer0_coverage.comment=配置小型积云覆盖天空的程度.\noption.CloudLayer0_density.comment=配置小型积云的密度.\noption.CloudLayer0_height.comment=配置小型积云的高度位置.\noption.CloudLayer0_tallness.comment=配置小型积云厚度. 建议保持默认.\noption.CloudLayer0_scale.comment=配置小型积云的尺寸缩放. 数值与尺寸成反比关系.\noption.CloudLayer1.comment=配置在中间位置出现的絮状大型积云.\noption.CloudLayer1_coverage.comment=配置大型积云覆盖天空的程度.\noption.CloudLayer1_density.comment=配置大型积云的密度.\noption.CloudLayer1_height.comment=配置大型积云的高度位置. 不得低于小型积云高度.\noption.CloudLayer1_tallness.comment=配置大型积云厚度. 建议保持默认.\noption.CloudLayer1_scale.comment=配置大型积云的尺寸缩放. 数值与尺寸成反比关系.\noption.CloudLayer2.comment=配置在较高位置出现的卷云.\noption.CloudLayer2_coverage.comment=配置高层云覆盖天空的程度.\noption.CloudLayer2_density.comment=配置高层云的密度.\noption.CloudLayer2_height.comment=配置高层云的高度位置.\noption.CloudLayer2_scale.comment=配置高层云的尺寸缩放. 数值与尺寸成反比关系.\n\noption.rayMarchSampleCount.comment=配置水体对环境光吸收的采样次数.\noption.FAKE_REFRACTION_EFFECT.comment=开启此选项以使穿过水体或其他半透明方块的光线折射. §a性能开销较低.\noption.FAKE_DISPERSION_EFFECT.comment=开启此选项以使穿过水体或其他半透明方块的光线散射. §a性能开销较低.\noption.REFRACTION_SMUDGE.comment=开启此选项以使穿过水体或其他半透明方块的光线扭曲. §a性能开销中等.\noption.Dirt_Amount.comment=配置水体的浑浊程度.\noption.WATER_WAVE_STRENGTH.comment=配置水波法线的高度.\noption.SNELLS_WINDOW.comment=开启此选项以应用在水下看到的黑色反射圆圈. 这是对现实水下会发生的情况的模拟, 称为 \"全内反射\". §a性能开销较低.\noption.MINIMUM_WATER_ABSORBANCE.comment=配置水体随深度变化时对颜色的吸收程度.\noption.WATER_DISTORTION_AMOUNT.comment=配置水下视觉失真效果的强度. 将数值调整为 0 以关闭水下失真效果.\noption.WATER_WAVE_SPEED.comment=配置水波运动的速度.\noption.Vanilla_like_water.comment=开启此选项以应用原版水面贴图. §a性能开销很低.\n\noption.PLANET_CURVATURE.comment=开启此选项以弯曲画面. 用以增强沉浸感. §a性能开销较低.\noption.CURVATURE_AMOUNT.comment=配置地表弯曲的程度. 弯曲的地表可能会影响可视距离.\n\noption.SHARPENING.comment=配置自适应对比度锐化作用于图像的强度. 用以降低因抗锯齿和升分辨率产生的细节损失.\noption.BLOOM_STRENGTH.comment=配置作用于图像的泛光强度.\n\noption.SCREENSHOT_MODE.comment=开启此选项将启用多帧画面积累. 用以输出含有更少噪点的高质量图像. §a性能开销较高.\noption.TAA.comment=配置与时间性抗锯齿相关的功能.\noption.RESPONSIVE_TAA.comment=开启此选项以使用近似时间性抗锯齿. 用以以损失图像质量为代价大幅提升性能. §a性能开销很低.\noption.BLEND_FACTOR.comment=配置历史帧使用比重. 更高的数值意味着依赖更少的历史帧, 将为图像带来更多噪点与潜在的闪烁. 反之则依赖更多的历史帧, 将会造成图像的涂抹感.\noption.TAA_UPSCALING.comment=开启此选项以使用时间性升分辨率. 相比常规升分辨率有更好的性能. §a性能开销很低.\noption.SCALE_FACTOR.comment=配置原始分辨率使用比重. 更高的数值意味着依赖更高的原始分辨率, 相比更低的数值会保留更多的细节.\n\noption.LUMINANCE_CURVE.comment=开启此选项以启用色调曲线. 独立于颜色分级且首先应用. §a性能开销很低.\noption.LOWER_CURVE.comment=配置下部曲线的补偿数值.\noption.UPPER_CURVE.comment=配置上部曲线的补偿数值.\noption.COLOR_GRADING_ENABLED.comment=开启此选项以启用后处理的颜色分级. §a性能开销较低.\noption.CAMERA_GRIDLINES.comment=开启此选项以启用相机网格线效果. §a性能开销很低.\noption.MOTION_BLUR.comment=开启此选项以启用动态模糊效果. §a性能开销很低.\noption.MOTION_BLUR_STRENGTH.comment=配置动态模糊效果的强度.\noption.FISHEYE_EFFECT.comment=开启此选项以启用鱼眼镜头效果.\noption.FISHEYE_STRENGTH.comment=配置鱼眼镜头畸变效果的强度.\noption.CHROMATIC_ABERRATION.comment=开启此选项以启用应用于图像两侧的红蓝色差效果. 用以创造一些独特的图像效果. §a性能开销很低.\noption.CHROMATIC_ABERRATION_STRENGTH.comment=配置色差效果的强度.\noption.VIGNETTE.comment=开启此选项以启用相机暗角效果. §a性能开销很低.\noption.VIGNETTE_STRENGTH.comment=配置相机暗角效果强度.\noption.LENS_FLARE.comment=开启此选项以启用镜头光晕效果. §a性能开销较低.\noption.LENS_FLARE_STRENGTH.comment=配置镜头光晕效果的强度.\n\noption.DEFERRED_SPECULAR.comment=WIP选项\noption.FORWARD_SPECULAR.comment=WIP选项\noption.DEFERRED_ENVIRONMENT_REFLECTION.comment=WIP选项\noption.FORWARD_ENVIRONMENT_REFLECTION.comment=WIP选项\noption.DEFERRED_BACKGROUND_REFLECTION.comment=WIP选项\noption.FORWARD_BACKGROUND_REFLECTION.comment=WIP选项\noption.DEFERRED_ROUGH_REFLECTION.comment=WIP选项\noption.FORWARD_ROUGH_REFLECTION.comment=WIP选项\noption.ROUGHNESS_THRESHOLD.comment=配置反射的粗糙度阈值. 粗糙度达到阈值后不渲染除了太阳反射外的所有反射. 有助于提升性能.\noption.SUN_SPECULAR_MULT.comment=配置材质反射太阳光的强度.\noption.MATERIAL_WETNESS_TYPE.comment=配置材质在雨天的反射模式. 使用自适应模式以令材质根据其粗糙度自动调整潮湿反射率.\n\noption.Emissive_Brightness.comment=配置方块发光量或自发光强度.\noption.Emissive_Curve.comment=配置自发光纹理达到最高亮度的容易程度/速度.\noption.EMISSIVE_TYPE.comment=配置自发光纹理如何在世界应用. 硬编码: 由着色器控制. LabPBR: 由资源包控制.\n\noption.LabSSS_Curve.comment=配置 LabSSS 的透光曲线补偿.\noption.sss_density_multiplier.comment=配置次表面散射的强度.\noption.sss_absorbance_multiplier.comment=配置次表面散射吸光部分的吸收倍率.\noption.MISC_BLOCK_SSS.comment=开启此选项以启用草与沙子等特定方块的次表面散射.\noption.MOB_SSS.comment=开启此选项以启用生物与玩家的次表面散射.\noption.Ambient_SSS.comment=开启此选项以启用来自天空光的次表面散射. 使用 SSAO 时, 本选项的性能开销会很小, 反之如果关闭了则会变大.\noption.ambientsss_brightness.comment=配置天空光次表面散射的亮度. \noption.SSS_TYPE.comment=配置次表面散射如何在世界应用.  硬编码: 由着色器控制. LabSSS: 由资源包控制.\n\noption.POM.comment=开启此选项以启用资源包提供的视差信息. 用以在实际没有的区域模拟 3D 几何图形.\noption.MAX_ITERATIONS.comment=配置视差效果的质量. 提高本数值以在近距离渲染完整的视差层.\noption.POM_DEPTH.comment=配置视差效果的凹陷深度.\noption.MAX_DIST.comment=配置视差效果的最大可见距离.\noption.Adaptive_Step_length.comment=开启此选项以使视差质量随距离而降低. 用以提升性能.\n\noption.Porosity.comment=开启此选项以启用由着色器控制的材质孔隙率.\noption.Puddles.comment=开启此选项以启用雨天水坑.\noption.Puddle_Size.comment=配置水坑尺寸的缩放倍率.\n\noption.MATERIAL_AO.comment=开启此选项以使材质法线作用与环境光遮蔽效果.\noption.MATERIAL_NORMAL_STRENGTH.comment=配置材质法线的强度水平.\n\noption.RESOURCEPACK_SKY.comment=使用此选项以循环资源包天空支持类型. 配置设置来使用完整的资源包天空, 或保持着色器的日月.\n\noption.ISOLATE_RESOURCEPACK_SKY.comment=开启此选项以使资源包天空不受着色器的影响, 并阻止其产生对地表的光照.\n\noption.DOF_QUALITY.comment=配置景深的相关功能.\noption.MANUAL_FOCUS.comment=配置手动对焦的距离.\noption.DOF_ANAMORPHIC_RATIO.comment=配置景深变形镜头的比重.\noption.DOF_DISPERSION_MULT.comment=配置景深散射效果的强度.\noption.focal.comment=配置镜头的焦距.\noption.aperture.comment=配置镜头的光圈大小.\noption.DoF_Adaptation_Speed.comment=配置景深虚化随距离变化的反应速度.\noption.FAR_BLUR_ONLY.comment=开启此选项以仅虚化远处物体.\noption.REMOVE_HAND_BLUR.comment=开启此选项以在启用景深时不虚化手部.\n\noption.JITTER_STRENGTH.comment=配置抖动景深效果的强度.\noption.FOCUS_LASER_COLOR.comment=配置聚焦点颜色.\n\noption.EMISSIVE_ORE.comment=开启此选项以应用着色器的矿物发光特效.\noption.EMISSIVE_ORE_RANGE.comment=配置矿物发光的光照距离.\n\noption.MOTION_AMOUNT.comment=配置屏幕特效滤镜的效果强度. §aIRIS限定功能.\noption.DAMAGE_TAKEN_EFFECT.comment=开启此选项以启用受击效果.\noption.LOW_HEALTH_EFFECT.comment=开启此选项以启用低生命值效果.\noption.LOW_HEALTH_EFFECT_START.comment=配置低生命值的阈值.\noption.CRITICALLY_LOW_HEALTH_EFFECT_START.comment=配置危险生命值的阈值.\n\noption.DISTORT_EFFECT_AMOUNT.comment=配置失真扭曲滤镜的效果强度.\noption.WATER_ON_CAMERA_EFFECT.comment=开启此选项以在进出水体时启用相机覆水效果.\noption.ON_FIRE_DISTORT_EFFECT.comment=开启此选项以在着火时启用扭曲效果.\n\noption.RAIN_ON_CAMERA_EFFECT.comment=开启此选项以在下雨时启用相机覆雨效果.\n\noption.AEROCHROME_MODE.comment=开启此选项以启用受Chrome浏览器启发而开发的 Aerochrome 红外胶片效果.\noption.AEROCHROME_PINKNESS.comment=配置 Aerochrome 模式的颜色. 数值越高越接近粉色, 反之越接近红色.\noption.AEROCHROME_WOOL_ENABLED.comment=开启此选项以使羊毛方块也受 Aerochrome 模式影响.\n\noption.FANCY_END_PORTAL.comment=开启此选项以启用特殊的末地传送门效果.\n\noption.TONEMAP.comment=配置使用的色调映射方案.\noption.USE_ACES_COLORSPACE_APPROXIMATION.comment=开启此选项以启用 ACES 色彩空间的近似值拟合.\noption.AGX_LOOK.comment=配置AGX预设方案. 仅在使用 Tonemap_AGX_Minimal 与 Tonemap_AGX 时生效.\noption.SATURATION.comment=配置图像的整体饱和度.\noption.CROSSTALK.comment=配置图像的光照干扰. 用以减少光照对图像色彩的影响.\n\noption.AUTO_EXPOSURE.comment=开启此选项以启用自动调节的曝光值.\noption.EXPOSURE_MULTIPLIER.comment=配置曝光的强度.\noption.Exposure_Speed.comment=配置曝光的速度.\noption.Manual_exposure_value.comment=配置手动曝光值. 仅在关闭自动曝光时生效.\noption.EXPOSURE_DARKENING.comment=配置曝光的暗化水平. 用以调节画面质量.\noption.EXPOSURE_BRIGHTENING.comment=配置曝光的亮化水平. 用以调节画面质量.\n\noption.Purkinje_strength.comment=配置在暗处时淡化色彩并强化明暗的效果强度.\noption.Purkinje_Multiplier.comment=配置在暗处时淡化色彩并强化明暗的效果倍率.\n\noption.CLOUDS_INTERSECT_TERRAIN.comment=WIP选项. 用以使云层能自然过渡到地平线而非维持在固定高度.\noption.BLOOMY_PARTICLES.comment=WIP选项. 用以控制雨雪等粒子的泛光效果.\noption.BIOME_TINT_WATER.comment=开启此选项将在特定群系应用特殊颜色的水体.\noption.HYPER_DETAILED_WAVES.comment=开启此选项以启用超细节水波.\noption.OLD_BLOOM.comment=开启此选项以替换为旧版的泛光系统.\noption.OLD_INDIRECT_SSS.comment=开启此选项以替换为旧版的 SSS.\noption.PLANET_GROUND_BRIGHTNESS.comment=配置从极高空看向地面时地表的亮度水平.\noption.WATER_CAUSTICS_BRIGHTNESS.comment=配置水体底部焦散线的亮度.\noption.WATER_CAUSTICS_STRENGTH.comment=配置水体底部焦散线的强度.\noption.OLD_CAVE_DETECTION.comment=开启此选项以替换为旧版洞穴检测机制.\noption.FORCE_TRANSLUCENT_GLASS.comment=开启此选项以强制玻璃透光. 用以避免一些潜在的 BUG.\noption.LARGE_WAVE_DISPLACEMENT.comment=WIP选项. 开启此选项以应用大型波浪法线.\noption.OLD_LIGHTLEAK_FIX.comment=配置漏光修复模式. 不存在完美的漏光修复, 当你遇到有问题的场景时请尝试切换模式.\noption.LIGHTNING_FLASH.comment=开启此选项以启用全局覆盖的闪电闪烁. 用以在使用 Optifine 时避免在使用一些改变天空盒颜色资源包时影响闪电闪烁的BUG.\noption.Texture_MipMap_Bias.comment=配置纹理 Mipmap 的级别. 使用较低的值可以得到更精细的纹理, 而较高的值则会以损失纹理细节而获得更高的性能.\n\noption.DEBUG_VIEW.comment=配置 DEBUG 视图模式. 正常游玩请勿使用.\n\noption.SELECT_BOX.comment=开启此选项以启用可自定义色彩的选择框.\n\noption.USE_CUSTOM_DIFFUSE_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的散射光.\noption.USE_CUSTOM_CLOUD_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的云层.\noption.USE_CUSTOM_FOG_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的雾气.\noption.USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS.comment = 开启此选项以启用自定义色彩的地表大气.\n\noption.DH_OVERDRAW_PREVENTION.comment=开启此选项以防止着色器的一些元素过度绘制导致视觉问题.\noption.OVERDRAW_MAX_DISTANCE.comment=配置防止过度绘制的最大距离. 建议保持默认.\n\noption.DH_AMBIENT_OCCLUSION.comment=WIP选项. 开启此选项以在 LOD 区块内使用 AO.\noption.DH_SUBSURFACE_SCATTERING.comment=WIP选项. 开启此选项以在 LOD 区块内使用 SSS.\noption.DH_SCREENSPACE_REFLECTIONS.comment=WIP选项. 开启此选项以在 LOD 区块内使用 SSR.\noption.DH_TAA_JITTER.comment=开启此选项以在 DH 区块内使用特殊的噪声贴图.\noption.DH_NOISE_TEXTURE.comment=开启此选项以在 DH 区块内使用特殊的噪声贴图. 用以使普通区块与 DH 区块之间的过渡更自然.\noption.NOISE_RESOLUTION.comment=配置 DH 区块内的噪声分辨率.\noption.NOISE_INTENSITY.comment=配置 DH 区块内的噪声强度.\noption.NOISE_DROPOFF.comment=配置 DH 区块内的噪声衰减速度/容易程度.\n\noption.DH_KNOWN_ISSUES.comment=点击以循环已知问题.\n\noption.DISTANT_HORIZONS_SHADOWMAP.comment=§c 如果不知道本选项作用，请勿使用本选项.\noption.TOGGLE_VL_FOG.comment=配置 DH 区块的体积雾密度."
  },
  {
    "path": "shaders/lib/DistantHorizons_projections.glsl",
    "content": "/////// ALL OF THIS IS BASED OFF OF THE DISTANT HORIZONS EXAMPLE PACK BY NULL\n\nuniform mat4 dhPreviousProjection;\nuniform mat4 dhProjectionInverse;\nuniform mat4 dhProjection;\nuniform float dhFarPlane;\nuniform float dhNearPlane;\n\nvec3 DH_toScreenSpace(vec3 p) {\n\tvec4 iProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw);\n\tvec3 feetPlayerPos = p * 2. - 1.;\n\tvec4 viewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3];\n\treturn viewPos.xyz / viewPos.w;\n}\n\nvec3 DH_toClipSpace3(vec3 viewSpacePosition) {\n\treturn projMAD(dhProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n}\n\nvec3 toScreenSpace_DH(vec2 texcoord, float depth, float DHdepth) {\n\tvec4 viewPos = vec4(0.0);\n\tvec3 feetPlayerPos = vec3(0.0);\n\tvec4 iProjDiag = vec4(0.0);\n\n\t#ifdef DISTANT_HORIZONS\n    \t\tif (depth < 1.0) {\n\t#endif\n\t\t\tiProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);\n\n\t\t\tfeetPlayerPos = vec3(texcoord, depth) * 2.0 - 1.0;\n\t\t\tviewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3];\n\t\t\tviewPos.xyz /= viewPos.w;\n\t\n\t#ifdef DISTANT_HORIZONS\n\t\t} else {\n\t\t\t\tiProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw);\n\n\t\t\t\tfeetPlayerPos = vec3(texcoord, DHdepth) * 2.0 - 1.0;\n\t\t\t\tviewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3];\n\t\t\t\tviewPos.xyz /= viewPos.w;\n\t\t}\n\t#endif\n\n\treturn viewPos.xyz;\n}\n\nvec3 toScreenSpace_DH_special(vec3 POS, bool depthCheck) {\n\n\tvec4 viewPos = vec4(0.0);\n\tvec3 feetPlayerPos = vec3(0.0);\n\tvec4 iProjDiag = vec4(0.0);\n\n\t#ifdef DISTANT_HORIZONS\n    \t\tif(depthCheck) {\n\t\t\tiProjDiag = vec4(dhProjectionInverse[0].x, dhProjectionInverse[1].y, dhProjectionInverse[2].zw);\n\n\t\t\tfeetPlayerPos = POS * 2.0 - 1.0;\n\t\t\tviewPos = iProjDiag * feetPlayerPos.xyzz + dhProjectionInverse[3];\n\t\t\tviewPos.xyz /= viewPos.w;\n\n\t\t} else {\n\t#endif\n\t\tiProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);\n\n\t\tfeetPlayerPos = POS * 2.0 - 1.0;\n\t\tviewPos = iProjDiag * feetPlayerPos.xyzz + gbufferProjectionInverse[3];\n\t\tviewPos.xyz /= viewPos.w;\n\t\t\t\n\t#ifdef DISTANT_HORIZONS\n\t\t}\n\t#endif\n\n\treturn viewPos.xyz;\n}\n\nvec3 toClipSpace3_DH(vec3 viewSpacePosition, bool depthCheck) {\n\n\t#ifdef DISTANT_HORIZONS\n\t\tmat4 projectionMatrix = depthCheck ? dhProjection : gbufferProjection;\n\t\treturn projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n\t#else\n\t\treturn projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n\t#endif\n}\n\nvec3 toClipSpace3Prev_DH(vec3 viewSpacePosition, bool depthCheck) {\n\n\t#ifdef DISTANT_HORIZONS\n\t\tmat4 projectionMatrix = depthCheck ? dhPreviousProjection : gbufferPreviousProjection;\n   \t\treturn projMAD(projectionMatrix, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n\t#else\n\t\treturn projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n\t#endif\n}\n\nmat4 DH_shadowProjectionTweak(in mat4 projection) {\n\n\t#ifdef DH_SHADOWPROJECTIONTWEAK\n\t\t\n\t\tfloat _far = (3.0 * far);\n\n\t\t#ifdef DISTANT_HORIZONS\n\t\t    _far = 2.0 * dhFarPlane;\n\t\t#endif\n\t\t\n\t\tmat4 newProjection = projection;\n\t\tnewProjection[2][2] = -2.0 / _far;\n\t\tnewProjection[3][2] = 0.0;\n\n\t\treturn newProjection;\n\t#else\n\t\treturn projection;\n\t#endif\n}\n\nfloat DH_ld(float dist) {\n\treturn (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - dist * (dhFarPlane - dhNearPlane));\n}\n\nfloat DH_inv_ld (float lindepth) {\n\treturn - ((2.0 * dhNearPlane / lindepth) - dhFarPlane - dhNearPlane) / (dhFarPlane - dhNearPlane);\n}"
  },
  {
    "path": "shaders/lib/PhotonGTAO.glsl",
    "content": "\n// Common constants\n\nconst float e = exp(1.0);\nconst float hand_depth = 0.56;\n\n#if defined TAA && defined TAA_UPSCALING\n\tconst float taau_render_scale = RENDER_SCALE.x;\n#else\n\tconst float taau_render_scale = 1.0;\n#endif\n\n// Helper functions\n\nfloat max_of(vec2 v) { return max(v.x, v.y); }\n\nfloat length_squared(vec2 v) { return dot(v, v); }\nfloat length_squared(vec3 v) { return dot(v, v); }\n\nfloat rcp_length(vec2 v) { return inversesqrt(dot(v, v)); }\nfloat rcp_length(vec3 v) { return inversesqrt(dot(v, v)); }\n\nfloat fast_acos(float x) {\n\tconst float C0 = 1.57018;\n\tconst float C1 = -0.201877;\n\tconst float C2 = 0.0464619;\n\n\tfloat res = (C2 * abs(x) + C1) * abs(x) + C0; // p(x)\n\tres *= sqrt(1.0 - abs(x));\n\n\treturn x >= 0 ? res : PI - res; // Undo range reduction\n}\n\nvec2 fast_acos(vec2 v) { return vec2(fast_acos(v.x), fast_acos(v.y)); }\n\nfloat linear_step(float edge0, float edge1, float x) {\n\treturn clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\n\nvec2 linear_step(vec2 edge0, vec2 edge1, vec2 x) {\n\treturn clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\n\nvec4 project(mat4 m, vec3 pos) {\n\treturn vec4(m[0].x, m[1].y, m[2].zw) * pos.xyzz + m[3];\n}\n\nvec3 project_and_divide(mat4 m, vec3 pos) {\n\tvec4 homogenous = project(m, pos);\n\treturn homogenous.xyz / homogenous.w;\n}\n\nvec3 screen_to_view_space(vec3 screen_pos, bool handle_jitter) {\n\tvec3 ndc_pos = 2.0 * screen_pos - 1.0;\n\treturn project_and_divide(gbufferProjectionInverse, ndc_pos);\n}\n\nvec3 view_to_screen_space(vec3 view_pos, bool handle_jitter) {\n\tvec3 ndc_pos = project_and_divide(gbufferProjection, view_pos);\n\treturn ndc_pos * 0.5 + 0.5;\n}\n\n// ---------------------\n//   ambient occlusion\n// ---------------------\n\n#define GTAO_SLICES        2\n#define GTAO_HORIZON_STEPS 3\n#define GTAO_RADIUS        2.0\n#define GTAO_FALLOFF_START 0.75\n\nfloat integrate_arc(vec2 h, float n, float cos_n) {\n\tvec2 tmp = cos_n + 2.0 * h * sin(n) - cos(2.0 * h - n);\n\treturn 0.25 * (tmp.x + tmp.y);\n}\n\nfloat calculate_maximum_horizon_angle(\n\tvec3 view_slice_dir,\n\tvec3 viewer_dir,\n\tvec3 screen_pos,\n\tvec3 view_pos,\n\tfloat radius,\n\tfloat dither\n) {\n\tconst float step_size = GTAO_RADIUS / float(GTAO_HORIZON_STEPS);\n\n\tfloat max_cos_theta = -1.0;\n\n\tvec2 ray_step = (view_to_screen_space(view_pos + view_slice_dir * step_size, true) - screen_pos).xy;\n\tvec2 ray_pos = screen_pos.xy + ray_step * (dither + max_of(texelSize) * rcp_length(ray_step));\n\n\n\tfor (int i = 0; i < GTAO_HORIZON_STEPS; ++i, ray_pos += ray_step) {\n\t\tfloat depth = texelFetch2D(depthtex1, ivec2(clamp(ray_pos,0.0,1.0) * viewSize * taau_render_scale - 0.5), 0).x;\n\n\t\tif (depth == 1.0 || depth < hand_depth || depth == screen_pos.z) continue;\n\n\t\tvec3 offset = screen_to_view_space(vec3(ray_pos, depth), true) - view_pos;\n\n\t\tfloat len_sq = length_squared(offset);\n\t\tfloat norm = inversesqrt(len_sq);\n\n\t\tfloat distance_falloff = linear_step(GTAO_FALLOFF_START * GTAO_RADIUS, GTAO_RADIUS, len_sq * norm);\n\n\t\tfloat cos_theta = dot(viewer_dir, offset) * norm;\n\t\t\tcos_theta = mix(cos_theta, -1.0, distance_falloff);\n\n\t\tmax_cos_theta = max(cos_theta, max_cos_theta);\n\t}\n\n\treturn fast_acos(clamp(max_cos_theta, -1.0, 1.0));\n}\n\nfloat ambient_occlusion(vec3 screen_pos, vec3 view_pos, vec3 view_normal, vec2 dither) {\n\tfloat ao = 0.0;\n\n\t// Construct local working space\n\tvec3 viewer_dir = normalize(-view_pos);\n\tvec3 viewer_right = normalize(cross(vec3(0.0, 1.0, 0.0), viewer_dir));\n\tvec3 viewer_up = cross(viewer_dir, viewer_right);\n\tmat3 local_to_view = mat3(viewer_right, viewer_up, viewer_dir);\n\n\t// Reduce AO radius very close up, makes some screen-space artifacts less obvious\n\tfloat ao_radius = max(0.25 + 0.75 * smoothstep(0.0, 81.0, length_squared(view_pos)), 0.5);\n\n\tfor (int i = 0; i < GTAO_SLICES; ++i) {\n\t\tfloat slice_angle = (i + dither.x) * (PI / float(GTAO_SLICES));\n\n\t\tvec3 slice_dir = vec3(cos(slice_angle), sin(slice_angle), 0.0);\n\t\tvec3 view_slice_dir = local_to_view * slice_dir;\n\n\t\tvec3 ortho_dir = slice_dir - dot(slice_dir, viewer_dir) * viewer_dir;\n\t\tvec3 axis = cross(slice_dir, viewer_dir);\n\n\t\tvec3 projected_normal = view_normal - axis * dot(view_normal, axis);\n\n\t\tfloat len_sq = dot(projected_normal, projected_normal);\n\t\tfloat norm = inversesqrt(len_sq);\n\n\t\tfloat sgn_gamma = sign(dot(ortho_dir, projected_normal));\n\t\tfloat cos_gamma = clamp(dot(projected_normal, viewer_dir) * norm, 0.0, 1.0);\n\t\tfloat gamma = sgn_gamma * fast_acos(cos_gamma);\n\n\t\tvec2 max_horizon_angles;\n\t\tmax_horizon_angles.x = calculate_maximum_horizon_angle(-view_slice_dir, viewer_dir, screen_pos, view_pos, ao_radius, dither.y);\n\t\tmax_horizon_angles.y = calculate_maximum_horizon_angle( view_slice_dir, viewer_dir, screen_pos, view_pos, ao_radius, dither.y);\n\n\t\tmax_horizon_angles = gamma + clamp(vec2(-1.0, 1.0) * max_horizon_angles - gamma, -hPI, hPI) ;\n\n\n\t\tao += integrate_arc(max_horizon_angles, gamma, cos_gamma) * len_sq * norm  ;\n\t}\n\tconst float albedo = 0.2;\n\tao /= float(GTAO_SLICES);\n\tao /= albedo * ao + (1.0 - albedo);\n\n\treturn ao;\n}\n"
  },
  {
    "path": "shaders/lib/Shadow_Params.glsl",
    "content": "uniform float far;\nuniform int dhRenderDistance;\n\nconst float k = 1.8;\nconst float d0 = 0.04 + (1.0-clamp(shadowDistance - 64.0, 0.0, 1.0)) * 0.1;\nconst float d1 = 0.61;\nfloat a = exp(d0);\nfloat b = (exp(d1)-a)*150./128.0;\n\n// thank you Espen\n// #ifdef DISTANT_HORIZONS_SHADOWMAP\n//   float b = (exp(d1)-a)*min(dhRenderDistance, shadowDistance)/shadowDistance;\n// #else\n//   float b = (exp(d1)-a)*min(far+16.0*3.5, shadowDistance)/shadowDistance;\n// #endif\n\nvec4 BiasShadowProjection(in vec4 projectedShadowSpacePosition) {\n  \n\tfloat distortFactor = log(length(projectedShadowSpacePosition.xy)*b+a)*k;\n\tprojectedShadowSpacePosition.xy /= distortFactor;\n\treturn projectedShadowSpacePosition;\n}\n\nfloat calcDistort(vec2 worldpos) {\n\treturn 1.0/(log(length(worldpos)*b+a)*k);\n}"
  },
  {
    "path": "shaders/lib/Shadows.glsl",
    "content": "// Emin's and Gri's combined ideas to stop peter panning and light leaking, also has little shadowacne so thats nice\n// https://www.complementary.dev/reimagined\n// https://github.com/gri573\nvoid GriAndEminShadowFix(\n\tinout vec3 WorldPos,\n\tvec3 FlatNormal,\n\tfloat transition\n) {\n\ttransition = 1.0-transition; \n\ttransition *= transition*transition*transition*transition*transition*transition;\n\tfloat zoomLevel = mix(0.0, 0.5, transition);\n\n\tif(zoomLevel > 0.001 && isEyeInWater != 1) WorldPos = WorldPos - (fract(WorldPos+cameraPosition - WorldPos*0.0001)*zoomLevel - zoomLevel*0.5);\n}\n\nvoid applyShadowBias(inout vec3 projectedShadowPosition, in vec3 playerPos, in vec3 geoNormals) {\n\t// Calculate the bias size according to the 1:1 ratio of one shadow texel to one full block\n\tconst float biasSize = (shadowDistance / shadowMapResolution * 2.0) * 2.0;\n\tfloat biasDistanceFactor = length(projectedShadowPosition.xy);\n\tbiasDistanceFactor = 1.0 + biasDistanceFactor * ((16.0*8.0) / shadowDistance) * 0.1;\n\tprojectedShadowPosition += (mat3(shadowModelView) * geoNormals) * biasSize * 0.15 * biasDistanceFactor;\n}"
  },
  {
    "path": "shaders/lib/TAA_jitter.glsl",
    "content": "// swap out jitter pattern to be a 4 frame pattern instead of an 8 frame halton sequence\n#if defined RESPONSIVE_TAA || defined DH_TAA_OVERRIDE\n\tconst vec2[4] offsets = vec2[4](\n\t\tvec2(-0.125, -0.875),\n\t\tvec2(0.875, -0.125),\n\t\tvec2(0.125, 0.875),\n\t\tvec2(-0.875, 0.125)\n\t);\n#else\n\tconst vec2[8] offsets = vec2[8](\n\t\tvec2(1.0,\t-3.0) / 8.0,\n\t\tvec2(-1.0, 3.0) / 8.0,\n\t\tvec2(5.0, 1.0) / 8.0,\n\t\tvec2(-3.0, -5.0) / 8.0,\n\t\tvec2(-5.0, 5.0) / 8.0,\n\t\tvec2(-7.0, -1.0) / 8.0,\n\t\tvec2(3.0, 7.0) / 8.0,\n\t\tvec2(7.0, 7.0) / 8.0\n\t);\n#endif"
  },
  {
    "path": "shaders/lib/atmosphere.glsl",
    "content": "//Original atmosphere code : https://www.shadertoy.com/view/WcdSW4, heavily customized.\n\nuniform int moonPhase;\n\nconst float sunAngularSize = 0.533333;\nconst float moonAngularSize = 0.516667;\n\nconst float INFINITY = 1.0 / 0.0;\n\nconst float EARTH_RADIUS = 6731e3;\nconst float ATMOSPHERE_HEIGHT = 110e3;\nconst float ATMOSPHERE_RADIUS = EARTH_RADIUS + ATMOSPHERE_HEIGHT;\n\nconst float RAYLEIGH_SCALE_HEIGHT = 32.4e4; \nconst vec3 RAYLEIGH_SCATTERING_COEFFICIENTS = vec3(6.184e-6, 12.30e-6, 28.04e-6);\nconst vec3 RAYLEIGH_EXTINCTION_COEFFICIENTS = RAYLEIGH_SCATTERING_COEFFICIENTS * skyRL;\n\nconst float MIE_SCALE_HEIGHT = 14.0e4;\nconst vec3 MIE_SCATTERING_COEFFICIENTS = vec3(1.252e-5, 1.689e-5, 2.530e-5);\nconst vec3 MIE_EXTINCTION_COEFFICIENTS = MIE_SCATTERING_COEFFICIENTS * skyMie * 1.1;\n\nconst float OZONE_SCALE_HEIGHT = 45.5e4;\nconst vec3 OZONE_EXTINCTION_COEFFICIENTS = vec3(1.224e-6, 2.883e-6, 5.441e-8);\n\n#ifdef MOONPHASE_BASED_MOONLIGHT\n\tfloat moonlightbrightness = abs(4-moonPhase)/4.0;\n#else\n\tfloat moonlightbrightness = 1.0;\n#endif\n\n#if colortype == 1\n\t#define sunColorBase vec3(sunColorR, sunColorG, sunColorB) * sun_illuminance\n\t#define moonColorBase vec3(moonColorR, moonColorG, moonColorB) * moon_illuminance * moonlightbrightness\n#else\n\t#define sunColorBase blackbody(Sun_temp) * sun_illuminance\n\t#define moonColorBase blackbody(Moon_temp) * moon_illuminance * moonlightbrightness\n#endif\n\nfloat erfcx(float x) {\n\tfloat t = abs(x);\n\tfloat t2 = t * t;\n\tfloat A = 0.56418958354775629 / (t + 2.06955023132914151);\n\tfloat B = (t2 + 2.71078540045147805 * t + 5.80755613130301624) / (t2 + 3.47954057099518960 * t + 12.06166887286239555);\n\tfloat C = (t2 + 3.47469513777439592 * t + 12.07402036406381411) / (t2 + 3.72068443960225092 * t + 8.44319781003968454);\n\tfloat D = (t2 + 4.00561509202259545 * t + 9.30596659485887898) / (t2 + 3.90225704029924078 * t + 6.36161630953880464);\n\tfloat E = (t2 + 5.16722705817812584 * t + 9.1266167673673262) / (t2 + 4.03296893109262491 * t + 5.13578530585681539);\n\tfloat F = (t2 + 5.95908795446633271 * t + 9.19435612886969243) / (t2 + 4.11240942957450885 * t + 4.48640329523408675);\n\tfloat y = A * B * C * D * E * F;\n\n\treturn (x < 0.0) ? 2.0 * exp(t2) - y : y;\n}\n\nfloat air_mass(float r, float z, float t, float H) {\n\tfloat a = 0.5 * sqrt(PI) * H * exp(-(r * r - EARTH_RADIUS * EARTH_RADIUS) / (H * H));\n\tfloat b = r * z / H;\n\n\tif (isinf(t))\n\treturn a * erfcx(b);\n\n\tfloat c = t / H + b;\n\tfloat d = exp(b * b - c * c);\n\n\treturn (z >= 0.0 || t + r * z >= 0.0) \n\t\t? a * (erfcx(b) - d * erfcx(c))\n\t\t: a * (d * erfcx(-c) - erfcx(-b));\n}\n\nfloat rayleighPhase(float mu) {\n\treturn 3.0 * rPI / 16.0 * (1.0 + mu * mu);\n}\n\nfloat miePhase(float mu) {\n\tfloat g = 0.77;\n\tfloat g2 = g * g;\n\treturn rPI / 4.0 * (1.0 - g2) / pow(1.0 + g2 - 2.0 * g * mu, 1.5);\n}\n\nfloat calculateDistance(vec3 origin, vec3 direction, float radius) {\n\tfloat r = length(origin);\n\tfloat z = dot(normalize(origin), direction);\n\tfloat d = radius * radius - r * r * (1.0 - z * z);\n\n\tif (d < 0.0) return INFINITY;\n\n\tfloat t1 = sqrt(d) - r * z;\n\tfloat t2 = -sqrt(d) - r * z;\n\n\treturn (t1 > 0.0) ? ((t2 > 0.0) ? min(t1, t2) : t1) : ((t2 > 0.0) ? t2 : INFINITY);\n}\n\nvec3 skyTransmittance(vec3 origin, vec3 direction, float t) {\n\tfloat r = length(origin);\n\tfloat z = dot(normalize(origin), direction);\n\n\tvec3 tau_r = RAYLEIGH_EXTINCTION_COEFFICIENTS * air_mass(r, z, t, RAYLEIGH_SCALE_HEIGHT);\n\tvec3 tau_m = MIE_EXTINCTION_COEFFICIENTS * air_mass(r, z, t, MIE_SCALE_HEIGHT);\n\tvec3 tau_o = OZONE_EXTINCTION_COEFFICIENTS * air_mass(r, z, t, OZONE_SCALE_HEIGHT);\n\n\treturn exp(-(tau_r + tau_m + tau_o));\n}\n\nvec3 calculateScattering(vec3 origin, vec3 direction, vec3 light_dir, float t, vec3 light_color) {\n\tfloat r = length(origin);\n\tfloat z = dot(normalize(origin), direction);\n\tfloat z_light = dot(normalize(origin), light_dir);\n\tfloat mu = dot(light_dir, direction);\n\n\tvec3 scattering_r = RAYLEIGH_SCATTERING_COEFFICIENTS * air_mass(r, z, t, RAYLEIGH_SCALE_HEIGHT);\n\tvec3 scattering_m = MIE_SCATTERING_COEFFICIENTS * air_mass(r, z, t, MIE_SCALE_HEIGHT);\n\n\tvec3 trans_light = skyTransmittance(origin + direction * t * 0.15, light_dir, INFINITY);\n\n\tfloat phase_r = rayleighPhase(mu);\n\tfloat phase_m = miePhase(mu);\n\n\tvec3 scattering = (scattering_r * phase_r + scattering_m * phase_m) * trans_light * light_color;\n\n\treturn scattering;\n}\n\nvec3 colorCorrection(vec3 color) {\n\tfloat luminance = dot(color, vec3(0.299, 0.587, 0.114));\n\tvec3 gray = vec3(luminance);\n\n\tfloat saturation = mix(0.8, 1.15, smoothstep(0.1, 0.5, luminance));\n\n\tcolor = mix(gray, color, saturation);   \n\treturn color;\n}\n\nvec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 sunVector, vec3 moonVector, out vec2 pid, out vec3 transmittance, float noise) {\n\tvec3 origin = (EARTH_RADIUS + eyeAltitude) * upVector;\n\n\tfloat t = 100000.0;\n\ttransmittance = skyTransmittance(origin, viewVector, t);\n\n\tfloat t_ground = calculateDistance(origin, viewVector, EARTH_RADIUS);\n\tpid = vec2(-1.0, t_ground);\n\n\t#ifdef SKY_GROUND\n\t\tfloat planetGround = exp(-40.0 * pow(max(-viewVector.y * 2.5 + 0.05, 0.0), 1.8));\n\t#else\n\t\tfloat planetGround = pow(max(viewVector.y + 1.0, 0.0), 1.5);\n\t#endif\n\n\tvec3 sunScattering = calculateScattering(origin, viewVector, sunVector, t, sunColorBase);\n\tvec3 moonScattering = calculateScattering(origin, viewVector, moonVector, t, moonColorBase);\n\n\tvec3 ambientSky = mix(vec3(0.45, 0.2, 0.37), vec3(0.6, 0.75, 0.85), smoothstep(0.1, 0.3, sunVector.y)) * background;\n\n\tvec3 color = ambientSky + (sunScattering + moonScattering * 0.5) * planetGround;\n\treturn colorCorrection(color);\n}"
  },
  {
    "path": "shaders/lib/aurora.glsl",
    "content": "//Original aurora code : https://www.shadertoy.com/view/XtGGRt\r\n\r\nfloat speed = AURORA_SPEED;\r\n\r\nmat2 mm2(float a) {\r\n\tfloat c = cos(a), s = sin(a);\r\n\treturn mat2(c,s,-s,c);\r\n}\r\n\r\nconst mat2 m2 = mat2(0.95534, 0.29552, -0.29552, 0.95534);\r\nfloat tri(float x) {\r\n\treturn clamp(abs(fract(x) - 0.5), 0.01, 0.49);\r\n}\r\n\r\nvec2 tri2(vec2 p) {\r\n\treturn vec2(tri(p.x)+tri(p.y),tri(p.y+tri(p.x)));\r\n}\r\n\r\nfloat triNoise2d(vec2 pos, float speed) {\r\n\tfloat z = 1.8;\r\n\tfloat z2 = 2.5;\r\n\tfloat rz = 0.0;\r\n\tpos *= mm2(pos.x * 0.06);\r\n\tvec2 bp = pos;\r\n\tfloat sp = worldTime * speed / 60.0;\r\n\tmat2 rot = mm2(sp);\r\n\tfor (float i = 0.0; i < 5.0; i++ ) {\r\n\t\tvec2 dg = tri2(bp * 1.85) * 0.75;\r\n\t\tdg *= rot;\r\n\t\tpos -= dg / z2;\r\n\r\n\t\tbp *= 1.3;\r\n\t\tz2 *= 0.45;\r\n\t\tz *= 0.42;\r\n\t\tpos *= 1.21 + (rz - 1.0) * 0.02;\r\n\r\n\t\trz += tri(pos.x + tri(pos.y)) * z;\r\n\t\tpos *= -m2;\r\n\t}\r\n\treturn clamp(1.0 / pow(rz * 29.0, 1.3), 0.0, 0.55);\r\n}\r\n\r\nvec3 upperColor = vec3(AURORA_UPPER_R, AURORA_UPPER_G, AURORA_UPPER_B);\r\nvec3 lowerColor = vec3(AURORA_LOWER_R, AURORA_LOWER_G, AURORA_LOWER_B);\r\n\r\nvec4 aurora(vec3 dir, float dither) {\r\n\tvec4 outerColor = vec4(0.0);\r\n\tvec4 avgColor = vec4(0.0);\r\n\r\n\tconst int aurStep = 24;\r\n\tfor (int i = 0; i < aurStep; ++i) {\r\n\t\tfloat amp = float(i) / float(aurStep - 1);\r\n\t\tfloat jitter = 0.012 * dither * clamp(smoothstep(0.0, 15.0, float(i)), 0.0, 1.0);\r\n\t\tfloat pt = ((0.8 + pow(amp * 24, 1.4) * 0.004)) / (dir.y * 2.0 + 0.4) - jitter;\r\n\r\n\t\tvec2 aurPos = (pt * dir).zx;\r\n\t\tfloat rzt = triNoise2d(aurPos, speed);\r\n\t\tif (rzt < 0.01) continue;\r\n\r\n\t\tvec4 innerColor;\r\n\t\tinnerColor.rgb = rzt * mix(lowerColor, upperColor, smoothstep(0.0, 1.0, amp));\r\n\t\tinnerColor.a = rzt;\r\n\r\n\t\tavgColor =  mix(avgColor, innerColor, 0.5);\r\n\t\touterColor += avgColor * exp2(-(amp * 24) * 0.065 - 2.5) * smoothstep(0.0, 5.0, (amp * 24)) * 24 / aurStep;\r\n\t}\r\n\r\n\touterColor *= clamp(dir.y * 15.0 + 0.4, 0.0, 1.0);\r\n\r\n\treturn outerColor;\r\n}\r\n\r\nvec3 drawAurora(vec3 rayDir, float dither) {\r\n\tvec3 color = vec3(0.0);\r\n\tfloat fade = smoothstep(0.0, 0.1, abs(rayDir.y)) * 0.1+0.9;\r\n\r\n\tif (rayDir.y > 0.0) {\r\n\t\tvec4 aur = smoothstep(0.0, 1.5, aurora(rayDir, dither)) * fade;\r\n\t\tcolor = color * (1.0 - aur.a) + aur.rgb;\r\n\t}\r\n\treturn color;\r\n}\r\n\r\n#ifdef AURORA_SNOWY\r\n\tfloat applyAurora = Night * smoothBiome_Snowy;\r\n#else\r\n\tfloat applyAurora = Night;\r\n#endif\r\n\r\nfloat aurEnv = AUR_ENV_OFFSET * applyAurora;\r\nfloat fakeLighting1 = max(sin(frameTimeCounter * AURORA_SPEED), 0.6);\r\nfloat fakeLighting2 = max(cos(frameTimeCounter * AURORA_SPEED / 1.8), 0.75);\r\n\r\n// Aurora emission\r\nvec3 aurEmit = (lowerColor * fakeLighting1 * 0.6 + upperColor * fakeLighting2 * 0.4) * aurEnv;"
  },
  {
    "path": "shaders/lib/blocks.glsl",
    "content": "#define BLOCK_WATER 8\n#define BLOCK_BAMBOO 11\n#define BLOCK_GRASS_SHORT 12\n#define BLOCK_GRASS_TALL_LOWER 13\n#define BLOCK_GRASS_TALL_UPPER 14\n#define BLOCK_SAPLING 15\n#define BLOCK_VINE 16\n\n#define BLOCK_LPV_IGNORE 50\n#define BLOCK_LPV_MIN 51\n#define BLOCK_LPV_MED 52\n#define BLOCK_LPV_MAX 53\n#define BLOCK_GROUND_WAVING 54\n#define BLOCK_GROUND_WAVING_VERTICAL 55\n#define BLOCK_AIR_WAVING 56\n#define BLOCK_SSS_STRONG 80\n#define BLOCK_SSS_WEAK 81\n#define BLOCK_SSS_WEAK_2 82\n#define BLOCK_SSS_WEAK_3 83\n#define BLOCK_SSS_WEIRD 84\n#define BLOCK_GRASS 85\n#define BLOCK_FIREFLY_BUSH 99\n#define BLOCK_AMETHYST_BUD_SMALL 100\n#define BLOCK_AMETHYST_BUD_MEDIUM 101\n#define BLOCK_AMETHYST_BUD_LARGE 102\n#define BLOCK_AMETHYST_CLUSTER 103\n#define BLOCK_BEACON 104\n#define BLOCK_BREWING_STAND 105\n#define BLOCK_CANDLES_PLAIN_LIT_1 106\n#define BLOCK_CANDLES_PLAIN_LIT_2 107\n#define BLOCK_CANDLES_PLAIN_LIT_3 108\n#define BLOCK_CANDLES_PLAIN_LIT_4 109\n#define BLOCK_CANDLES_BLACK_LIT_1 110\n#define BLOCK_CANDLES_BLACK_LIT_2 111\n#define BLOCK_CANDLES_BLACK_LIT_3 112\n#define BLOCK_CANDLES_BLACK_LIT_4 113\n#define BLOCK_CANDLES_BLUE_LIT_1 114\n#define BLOCK_CANDLES_BLUE_LIT_2 115\n#define BLOCK_CANDLES_BLUE_LIT_3 116\n#define BLOCK_CANDLES_BLUE_LIT_4 117\n#define BLOCK_CANDLES_BROWN_LIT_1 118\n#define BLOCK_CANDLES_BROWN_LIT_2 119\n#define BLOCK_CANDLES_BROWN_LIT_3 120\n#define BLOCK_CANDLES_BROWN_LIT_4 121\n#define BLOCK_CANDLES_CYAN_LIT_1 122\n#define BLOCK_CANDLES_CYAN_LIT_2 123\n#define BLOCK_CANDLES_CYAN_LIT_3 124\n#define BLOCK_CANDLES_CYAN_LIT_4 125\n#define BLOCK_CANDLES_GRAY_LIT_1 126\n#define BLOCK_CANDLES_GRAY_LIT_2 127\n#define BLOCK_CANDLES_GRAY_LIT_3 128\n#define BLOCK_CANDLES_GRAY_LIT_4 129\n#define BLOCK_CANDLES_GREEN_LIT_1 130\n#define BLOCK_CANDLES_GREEN_LIT_2 131\n#define BLOCK_CANDLES_GREEN_LIT_3 132\n#define BLOCK_CANDLES_GREEN_LIT_4 133\n#define BLOCK_CANDLES_LIGHT_BLUE_LIT_1 134\n#define BLOCK_CANDLES_LIGHT_BLUE_LIT_2 135\n#define BLOCK_CANDLES_LIGHT_BLUE_LIT_3 136\n#define BLOCK_CANDLES_LIGHT_BLUE_LIT_4 137\n#define BLOCK_CANDLES_LIGHT_GRAY_LIT_1 138\n#define BLOCK_CANDLES_LIGHT_GRAY_LIT_2 139\n#define BLOCK_CANDLES_LIGHT_GRAY_LIT_3 140\n#define BLOCK_CANDLES_LIGHT_GRAY_LIT_4 141\n#define BLOCK_CANDLES_LIME_LIT_1 142\n#define BLOCK_CANDLES_LIME_LIT_2 143\n#define BLOCK_CANDLES_LIME_LIT_3 144\n#define BLOCK_CANDLES_LIME_LIT_4 145\n#define BLOCK_CANDLES_MAGENTA_LIT_1 146\n#define BLOCK_CANDLES_MAGENTA_LIT_2 147\n#define BLOCK_CANDLES_MAGENTA_LIT_3 148\n#define BLOCK_CANDLES_MAGENTA_LIT_4 149\n#define BLOCK_CANDLES_ORANGE_LIT_1 150\n#define BLOCK_CANDLES_ORANGE_LIT_2 151\n#define BLOCK_CANDLES_ORANGE_LIT_3 152\n#define BLOCK_CANDLES_ORANGE_LIT_4 153\n#define BLOCK_CANDLES_PINK_LIT_1 154\n#define BLOCK_CANDLES_PINK_LIT_2 155\n#define BLOCK_CANDLES_PINK_LIT_3 156\n#define BLOCK_CANDLES_PINK_LIT_4 157\n#define BLOCK_CANDLES_PURPLE_LIT_1 158\n#define BLOCK_CANDLES_PURPLE_LIT_2 159\n#define BLOCK_CANDLES_PURPLE_LIT_3 160\n#define BLOCK_CANDLES_PURPLE_LIT_4 161\n#define BLOCK_CANDLES_RED_LIT_1 162\n#define BLOCK_CANDLES_RED_LIT_2 163\n#define BLOCK_CANDLES_RED_LIT_3 164\n#define BLOCK_CANDLES_RED_LIT_4 165\n#define BLOCK_CANDLES_WHITE_LIT_1 166\n#define BLOCK_CANDLES_WHITE_LIT_2 167\n#define BLOCK_CANDLES_WHITE_LIT_3 168\n#define BLOCK_CANDLES_WHITE_LIT_4 169\n#define BLOCK_CANDLES_YELLOW_LIT_1 170\n#define BLOCK_CANDLES_YELLOW_LIT_2 171\n#define BLOCK_CANDLES_YELLOW_LIT_3 172\n#define BLOCK_CANDLES_YELLOW_LIT_4 173\n#define BLOCK_CANDLES_LIT_1 174\n#define BLOCK_CANDLES_LIT_2 175\n#define BLOCK_CANDLES_LIT_3 176\n#define BLOCK_CANDLES_LIT_4 177\n#define BLOCK_CAVE_VINE_BERRIES 178\n#define BLOCK_COMPARATOR_LIT 179\n#define BLOCK_COPPER_BULB_LIT 180\n#define BLOCK_COPPER_BULB_EXPOSED_LIT 181\n#define BLOCK_COPPER_BULB_OXIDIZED_LIT 182\n#define BLOCK_COPPER_BULB_WEATHERED_LIT 183\n#define BLOCK_CONDUIT 184\n#define BLOCK_CRYING_OBSIDIAN 185\n#define BLOCK_DEEPSLATE_REDSTONE_ORE_LIT 186\n#define BLOCK_END_GATEWAY 187\n#define BLOCK_END_ROD 188\n#define BLOCK_FIRE 189\n#define BLOCK_FIRE_FLIES 190\n#define BLOCK_FROGLIGHT_OCHRE 191\n#define BLOCK_FROGLIGHT_PEARLESCENT 192\n#define BLOCK_FROGLIGHT_VERDANT 193\n#define BLOCK_FURNACE_LIT 194\n#define BLOCK_GLOW_LICHEN 195\n#define BLOCK_GLOWSTONE 196\n#define BLOCK_JACK_O_LANTERN 197\n#define BLOCK_LANTERN 198\n#define BLOCK_LAVA 199\n#define BLOCK_LIGHT_1 200\n#define BLOCK_LIGHT_2 201\n#define BLOCK_LIGHT_3 202\n#define BLOCK_LIGHT_4 203\n#define BLOCK_LIGHT_5 204\n#define BLOCK_LIGHT_6 205\n#define BLOCK_LIGHT_7 206\n#define BLOCK_LIGHT_8 207\n#define BLOCK_LIGHT_9 208\n#define BLOCK_LIGHT_10 209\n#define BLOCK_LIGHT_11 210\n#define BLOCK_LIGHT_12 211\n#define BLOCK_LIGHT_13 212\n#define BLOCK_LIGHT_14 213\n#define BLOCK_LIGHT_15 214\n#define BLOCK_MAGMA 215\n#define BLOCK_RAIL_POWERED_ON 216\n#define BLOCK_REDSTONE_LAMP_LIT 217\n#define BLOCK_REDSTONE_ORE_LIT 218\n#define BLOCK_REDSTONE_TORCH_LIT 219\n#define BLOCK_REDSTONE_WIRE_1 220\n#define BLOCK_REDSTONE_WIRE_2 221\n#define BLOCK_REDSTONE_WIRE_3 222\n#define BLOCK_REDSTONE_WIRE_4 223\n#define BLOCK_REDSTONE_WIRE_5 224\n#define BLOCK_REDSTONE_WIRE_6 225\n#define BLOCK_REDSTONE_WIRE_7 226\n#define BLOCK_REDSTONE_WIRE_8 227\n#define BLOCK_REDSTONE_WIRE_9 228\n#define BLOCK_REDSTONE_WIRE_10 229\n#define BLOCK_REDSTONE_WIRE_11 230\n#define BLOCK_REDSTONE_WIRE_12 231\n#define BLOCK_REDSTONE_WIRE_13 232\n#define BLOCK_REDSTONE_WIRE_14 233\n#define BLOCK_REDSTONE_WIRE_15 234\n#define BLOCK_REPEATER_LIT 235\n#define BLOCK_RESPAWN_ANCHOR_4 236\n#define BLOCK_SCULK_SENSOR_ACTIVE 237\n#define BLOCK_SEA_PICKLE_WET_1 238\n#define BLOCK_SEA_PICKLE_WET_2 239\n#define BLOCK_SEA_PICKLE_WET_3 240\n#define BLOCK_SEA_PICKLE_WET_4 241\n#define BLOCK_SEA_LANTERN 242\n#define BLOCK_SHROOMLIGHT 243\n#define BLOCK_SOUL_FIRE 244\n#define BLOCK_SOUL_LANTERN 245\n#define BLOCK_SOUL_TORCH 246\n#define BLOCK_TORCH 247\n#define BLOCK_LAMP_LIT_BLACK 250\n#define BLOCK_LAMP_LIT_BLUE 251\n#define BLOCK_LAMP_LIT_BROWN 252\n#define BLOCK_LAMP_LIT_CYAN 253\n#define BLOCK_LAMP_LIT_GRAY 254\n#define BLOCK_LAMP_LIT_GREEN 255\n#define BLOCK_LAMP_LIT_LIGHT_BLUE 256\n#define BLOCK_LAMP_LIT_LIGHT_GRAY 257\n#define BLOCK_LAMP_LIT_LIME 258\n#define BLOCK_LAMP_LIT_MAGENTA 259\n#define BLOCK_LAMP_LIT_ORANGE 260\n#define BLOCK_LAMP_LIT_PINK 261\n#define BLOCK_LAMP_LIT_PURPLE 262\n#define BLOCK_LAMP_LIT_RED 263\n#define BLOCK_LAMP_LIT_WHITE 264\n#define BLOCK_LAMP_LIT_YELLOW 265\n#define BLOCK_GLASS 301\n#define BLOCK_GLASS_BLACK 302\n#define BLOCK_GLASS_BLUE 303\n#define BLOCK_GLASS_BROWN 304\n#define BLOCK_GLASS_CYAN 305\n#define BLOCK_GLASS_GRAY 306\n#define BLOCK_GLASS_GREEN 307\n#define BLOCK_GLASS_LIGHT_BLUE 308\n#define BLOCK_GLASS_LIGHT_GRAY 309\n#define BLOCK_GLASS_LIME 310\n#define BLOCK_GLASS_MAGENTA 311\n#define BLOCK_GLASS_ORANGE 312\n#define BLOCK_GLASS_PINK 313\n#define BLOCK_GLASS_PURPLE 314\n#define BLOCK_GLASS_RED 315\n#define BLOCK_GLASS_WHITE 316\n#define BLOCK_GLASS_YELLOW 317\n#define BLOCK_SLIME 318\n#define BLOCK_HONEY 319\n#define BLOCK_ICE 320\n#define BLOCK_NETHER_PORTAL 321\n\n#define BLOCK_CARPET 401\n#define BLOCK_DOOR_N 402\n#define BLOCK_DOOR_E 403\n#define BLOCK_DOOR_S 404\n#define BLOCK_DOOR_W 405\n#define BLOCK_PRESSURE_PLATE 406\n#define BLOCK_SLAB_TOP 407\n#define BLOCK_SLAB_BOTTOM 408\n#define BLOCK_SNOW_LAYERS 409\n#define BLOCK_TRAPDOOR_BOTTOM 410\n#define BLOCK_TRAPDOOR_TOP 411\n#define BLOCK_TRAPDOOR_N 412\n#define BLOCK_TRAPDOOR_E 413\n#define BLOCK_TRAPDOOR_S 414\n#define BLOCK_TRAPDOOR_W 415\n#define BLOCK_STAIRS_BOTTOM_N 416\n#define BLOCK_STAIRS_BOTTOM_E 417\n#define BLOCK_STAIRS_BOTTOM_S 418\n#define BLOCK_STAIRS_BOTTOM_W 419\n#define BLOCK_STAIRS_BOTTOM_INNER_S_E 420\n#define BLOCK_STAIRS_BOTTOM_INNER_S_W 421\n#define BLOCK_STAIRS_BOTTOM_INNER_N_W 422\n#define BLOCK_STAIRS_BOTTOM_INNER_N_E 423\n#define BLOCK_STAIRS_BOTTOM_OUTER_N_W 424\n#define BLOCK_STAIRS_BOTTOM_OUTER_N_E 425\n#define BLOCK_STAIRS_BOTTOM_OUTER_S_E 426\n#define BLOCK_STAIRS_BOTTOM_OUTER_S_W 427\n#define BLOCK_STAIRS_TOP_N 428\n#define BLOCK_STAIRS_TOP_E 429\n#define BLOCK_STAIRS_TOP_S 430\n#define BLOCK_STAIRS_TOP_W 431\n#define BLOCK_STAIRS_TOP_INNER_S_E 432\n#define BLOCK_STAIRS_TOP_INNER_S_W 433\n#define BLOCK_STAIRS_TOP_INNER_N_W 434\n#define BLOCK_STAIRS_TOP_INNER_N_E 435\n#define BLOCK_STAIRS_TOP_OUTER_N_W 436\n#define BLOCK_STAIRS_TOP_OUTER_N_E 437\n#define BLOCK_STAIRS_TOP_OUTER_S_E 438\n#define BLOCK_STAIRS_TOP_OUTER_S_W 439\n#define BLOCK_WALL_POST 440\n#define BLOCK_WALL_MIN 440\n#define BLOCK_WALL_POST_LOW_N 441\n#define BLOCK_WALL_POST_LOW_E 442\n#define BLOCK_WALL_POST_LOW_S 443\n#define BLOCK_WALL_POST_LOW_W 444\n#define BLOCK_WALL_POST_LOW_N_S 445\n#define BLOCK_WALL_POST_LOW_W_E 446\n#define BLOCK_WALL_POST_LOW_N_W 447\n#define BLOCK_WALL_POST_LOW_N_E 448\n#define BLOCK_WALL_POST_LOW_S_W 449\n#define BLOCK_WALL_POST_LOW_S_E 450\n#define BLOCK_WALL_POST_LOW_N_W_S 451\n#define BLOCK_WALL_POST_LOW_N_E_S 452\n#define BLOCK_WALL_POST_LOW_W_N_E 453\n#define BLOCK_WALL_POST_LOW_W_S_E 454\n#define BLOCK_WALL_POST_LOW_ALL 455\n#define BLOCK_WALL_POST_TALL_N 456\n#define BLOCK_WALL_POST_TALL_E 457\n#define BLOCK_WALL_POST_TALL_S 458\n#define BLOCK_WALL_POST_TALL_W 459\n#define BLOCK_WALL_POST_TALL_N_S 460\n#define BLOCK_WALL_POST_TALL_W_E 461\n#define BLOCK_WALL_POST_TALL_N_W 462\n#define BLOCK_WALL_POST_TALL_N_E 463\n#define BLOCK_WALL_POST_TALL_S_W 464\n#define BLOCK_WALL_POST_TALL_S_E 465\n#define BLOCK_WALL_POST_TALL_N_W_S 466\n#define BLOCK_WALL_POST_TALL_N_E_S 467\n#define BLOCK_WALL_POST_TALL_W_N_E 468\n#define BLOCK_WALL_POST_TALL_W_S_E 469\n#define BLOCK_WALL_POST_TALL_ALL 470\n#define BLOCK_WALL_POST_TALL_N_LOW_S 471\n#define BLOCK_WALL_POST_TALL_E_LOW_W 472\n#define BLOCK_WALL_POST_TALL_S_LOW_N 473\n#define BLOCK_WALL_POST_TALL_W_LOW_E 474\n#define BLOCK_WALL_POST_TALL_N_S_LOW_W_E 475\n#define BLOCK_WALL_POST_TALL_W_E_LOW_N_S 476\n#define BLOCK_WALL_POST_TALL_N_W_LOW_S_E 477\n#define BLOCK_WALL_POST_TALL_N_E_LOW_S_W 478\n#define BLOCK_WALL_POST_TALL_S_W_LOW_N_E 479\n#define BLOCK_WALL_POST_TALL_S_E_LOW_N_W 480\n#define BLOCK_WALL_LOW_N_S 481\n#define BLOCK_WALL_LOW_W_E 482\n#define BLOCK_WALL_LOW_N_W 483\n#define BLOCK_WALL_LOW_N_E 484\n#define BLOCK_WALL_LOW_S_W 485\n#define BLOCK_WALL_LOW_S_E 486\n#define BLOCK_WALL_LOW_ALL 487\n#define BLOCK_WALL_TALL_N_S 488\n#define BLOCK_WALL_TALL_W_E 489\n#define BLOCK_WALL_TALL_N_W 490\n#define BLOCK_WALL_TALL_N_E 491\n#define BLOCK_WALL_TALL_S_W 492\n#define BLOCK_WALL_TALL_S_E 493\n#define BLOCK_WALL_TALL_ALL 494\n#define BLOCK_WALL_TALL_N_S_LOW_W_E 495\n#define BLOCK_WALL_TALL_W_E_LOW_N_S 496\n#define BLOCK_WALL_MAX 496\n#define BLOCK_END_PORTAL 500\n#define BLOCK_SIGN 501\n"
  },
  {
    "path": "shaders/lib/bokeh.glsl",
    "content": "#if DOF_QUALITY == 0 // Original choc hex bokeh\n\t#define BOKEH_SAMPLES 60\n\t#define HEXAGONAL_BOKEH\n\tconst vec2 bokeh_offsets[60] = vec2[60] (\n\t\tvec2(  0.2165,  0.1250 ),\n\t\tvec2(  0.0000,  0.2500 ),\n\t\tvec2( -0.2165,  0.1250 ),\n\t\tvec2( -0.2165, -0.1250 ),\n\t\tvec2( -0.0000, -0.2500 ),\n\t\tvec2(  0.2165, -0.1250 ),\n\t\tvec2(  0.4330,  0.2500 ),\n\t\tvec2(  0.0000,  0.5000 ),\n\t\tvec2( -0.4330,  0.2500 ),\n\t\tvec2( -0.4330, -0.2500 ),\n\t\tvec2( -0.0000, -0.5000 ),\n\t\tvec2(  0.4330, -0.2500 ),\n\t\tvec2(  0.6495,  0.3750 ),\n\t\tvec2(  0.0000,  0.7500 ),\n\t\tvec2( -0.6495,  0.3750 ),\n\t\tvec2( -0.6495, -0.3750 ),\n\t\tvec2( -0.0000, -0.7500 ),\n\t\tvec2(  0.6495, -0.3750 ),\n\t\tvec2(  0.8660,  0.5000 ),\n\t\tvec2(  0.0000,  1.0000 ),\n\t\tvec2( -0.8660,  0.5000 ),\n\t\tvec2( -0.8660, -0.5000 ),\n\t\tvec2( -0.0000, -1.0000 ),\n\t\tvec2(  0.8660, -0.5000 ),\n\t\tvec2(  0.2163,  0.3754 ),\n\t\tvec2( -0.2170,  0.3750 ),\n\t\tvec2( -0.4333, -0.0004 ),\n\t\tvec2( -0.2163, -0.3754 ),\n\t\tvec2(  0.2170, -0.3750 ),\n\t\tvec2(  0.4333,  0.0004 ),\n\t\tvec2(  0.4328,  0.5004 ),\n\t\tvec2( -0.2170,  0.6250 ),\n\t\tvec2( -0.6498,  0.1246 ),\n\t\tvec2( -0.4328, -0.5004 ),\n\t\tvec2(  0.2170, -0.6250 ),\n\t\tvec2(  0.6498, -0.1246 ),\n\t\tvec2(  0.6493,  0.6254 ),\n\t\tvec2( -0.2170,  0.8750 ),\n\t\tvec2( -0.8663,  0.2496 ),\n\t\tvec2( -0.6493, -0.6254 ),\n\t\tvec2(  0.2170, -0.8750 ),\n\t\tvec2(  0.8663, -0.2496 ),\n\t\tvec2(  0.2160,  0.6259 ),\n\t\tvec2( -0.4340,  0.5000 ),\n\t\tvec2( -0.6500, -0.1259 ),\n\t\tvec2( -0.2160, -0.6259 ),\n\t\tvec2(  0.4340, -0.5000 ),\n\t\tvec2(  0.6500,  0.1259 ),\n\t\tvec2(  0.4325,  0.7509 ),\n\t\tvec2( -0.4340,  0.7500 ),\n\t\tvec2( -0.8665, -0.0009 ),\n\t\tvec2( -0.4325, -0.7509 ),\n\t\tvec2(  0.4340, -0.7500 ),\n\t\tvec2(  0.8665,  0.0009 ),\n\t\tvec2(  0.2158,  0.8763 ),\n\t\tvec2( -0.6510,  0.6250 ),\n\t\tvec2( -0.8668, -0.2513 ),\n\t\tvec2( -0.2158, -0.8763 ),\n\t\tvec2(  0.6510, -0.6250 ),\n\t\tvec2(  0.8668,  0.2513 ));\n\t\n#elif DOF_QUALITY == 1 // Low quality bokeh\n\t#define BOKEH_SAMPLES 32\n\tconst vec2 bokeh_offsets[32] = vec2[32](\n\t\tvec2(0.12064426510477419, 0.015554431411765697),\n\t\tvec2(-0.16400077998918963, 0.16180237012184204),\n\t\tvec2(0.020080498035937415, -0.2628838391620438),\n\t\tvec2(0.19686650437195816, 0.27801320993574674),\n\t\tvec2(-0.37362329188851157, -0.049763799980476156),\n\t\tvec2(0.34544673107582735, -0.20696126421568928),\n\t\tvec2(-0.12135781397691386, 0.4507963336805642),\n\t\tvec2(-0.22749138875333694, -0.41407969197383454),\n\t\tvec2(0.4797593802468298, 0.19235249500691445),\n\t\tvec2(-0.5079968434096749, 0.22345015963708734),\n\t\tvec2(0.23843255951864029, -0.5032700515259672),\n\t\tvec2(0.17505863904522073, 0.587555727235086),\n\t\tvec2(-0.5451127409909945, -0.29782530685850084),\n\t\tvec2(0.6300137885218894, -0.12390992876509886),\n\t\tvec2(-0.391501580064061, 0.5662295575692019),\n\t\tvec2(-0.09379538975841809, -0.6746452122696498),\n\t\tvec2(0.5447160222309757, 0.47831268960533435),\n\t\tvec2(-0.7432342062047558, 0.04610937594275518),\n\t\tvec2(0.5345993903170301, -0.520777903066999),\n\t\tvec2(-0.0404139208253129, 0.7953459466435174),\n\t\tvec2(-0.517173266802963, -0.5989723613060595),\n\t\tvec2(0.8080038585189984, 0.12485626574164435),\n\t\tvec2(-0.6926663754026566, 0.494463047083117),\n\t\tvec2(0.183730322451809, -0.8205069509230769),\n\t\tvec2(0.43067753069940745, 0.7747454863024757),\n\t\tvec2(-0.8548041452377114, -0.25576180722119723),\n\t\tvec2(0.8217466662308877, -0.3661258311820314),\n\t\tvec2(-0.36224393661662146, 0.87070999332353),\n\t\tvec2(-0.32376306917956177, -0.8724793262829371),\n\t\tvec2(0.8455529005007657, 0.46224259051084376),\n\t\tvec2(-0.9483903811252437, 0.2643989345002705),\n\t\tvec2(0.5322400733549763, -0.818975339518135)\n\t);\n#elif DOF_QUALITY == 2 // Medium quality bokeh\n\t#define BOKEH_SAMPLES 64\n\tconst vec2 bokeh_offsets[64] = vec2[64](\n\t\tvec2(0.07966914016126773, -0.0005732549414365655),\n\t\tvec2(-0.12160530145582471, 0.10283965425501301),\n\t\tvec2(0.008559818525228833, -0.197458844206032),\n\t\tvec2(0.13356640242431705, 0.18501312713480866),\n\t\tvec2(-0.269830801109193, -0.04676021929400281),\n\t\tvec2(0.23862848827685754, -0.15791561224005177),\n\t\tvec2(-0.09145217101863704, 0.3071892456093635),\n\t\tvec2(-0.16649994145461533, -0.30437045701653237),\n\t\tvec2(0.33360187330480306, 0.12444185472734362),\n\t\tvec2(-0.3648472506019276, 0.14643122426640393),\n\t\tvec2(0.16295804188571, -0.36743756507231173),\n\t\tvec2(0.11814591296857804, 0.40389274018272564),\n\t\tvec2(-0.39109215347150406, -0.22216619295880746),\n\t\tvec2(0.43984778429926974, -0.0991894497563406),\n\t\tvec2(-0.2824726599141313, 0.38881286099524415),\n\t\tvec2(-0.07196259394779835, -0.48861810336110434),\n\t\tvec2(0.3795331553348995, 0.3266462474773111),\n\t\tvec2(-0.5311851850227693, 0.021032353535204915),\n\t\tvec2(0.3723796163057802, -0.3798174856209827),\n\t\tvec2(-0.03421619527550065, 0.5508226133906681),\n\t\tvec2(-0.37133596181036055, -0.43510931729303065),\n\t\tvec2(0.5657057697780938, 0.07671481330934922),\n\t\tvec2(-0.49542832895271105, 0.33806627476843804),\n\t\tvec2(0.12427771910967947, -0.5917579278786026),\n\t\tvec2(0.2988957646566429, 0.536255888187953),\n\t\tvec2(-0.6100770454895419, -0.19242280712483223),\n\t\tvec2(0.5754234023037136, -0.27046195686657265),\n\t\tvec2(-0.2617843818309086, 0.6041130418557645),\n\t\tvec2(-0.2345742995202231, -0.6285079469299325),\n\t\tvec2(0.59225695199046, 0.315282971433257),\n\t\tvec2(-0.6762525075113398, 0.17538638065344198),\n\t\tvec2(0.37071132728294354, -0.5906749150680255),\n\t\tvec2(0.1119798859418661, 0.7017402283731283),\n\t\tvec2(-0.5807270152810202, -0.4435682524557845),\n\t\tvec2(0.7229827225912143, -0.06119326417718071),\n\t\tvec2(-0.5144794788954391, 0.5461387788248901),\n\t\tvec2(-0.005035179534685496, -0.7557546423829214),\n\t\tvec2(0.5055857377426614, 0.5663728829872585),\n\t\tvec2(-0.7810140733390272, -0.07214936952359105),\n\t\tvec2(0.6170681003447506, -0.47552351060683423),\n\t\tvec2(-0.15109977600025168, 0.7820762666899624),\n\t\tvec2(-0.43760314844428994, -0.6821127366950525),\n\t\tvec2(0.7772009255491943, 0.21481487028437787),\n\t\tvec2(-0.742204728724318, 0.3758394044302885),\n\t\tvec2(0.28114246867378123, -0.7824253564882913),\n\t\tvec2(0.3091922614465049, 0.7803683548608),\n\t\tvec2(-0.7789831306606206, -0.36561570268862775),\n\t\tvec2(0.8145440939773348, -0.2543941296975529),\n\t\tvec2(-0.4488757377357506, 0.7504758305912105),\n\t\tvec2(-0.1933624476019976, -0.8604246222601459),\n\t\tvec2(0.7154581485450054, 0.513848417434855),\n\t\tvec2(-0.8988765686147268, 0.11036534262592021),\n\t\tvec2(0.5783350546530844, -0.6902686901177914),\n\t\tvec2(0.024600692161986272, 0.9131155784626814),\n\t\tvec2(-0.6564461645240188, -0.657849672537283),\n\t\tvec2(0.9212949234450745, 0.04697899281368057),\n\t\tvec2(-0.7330423210662792, 0.5978985715758123),\n\t\tvec2(0.12225611512756368, -0.9393399804201348),\n\t\tvec2(0.5334856827883492, 0.7868760176859764),\n\t\tvec2(-0.948368229388031, -0.21678429915641398),\n\t\tvec2(0.8372175428305082, -0.4798472000523386),\n\t\tvec2(-0.31121110469716806, 0.9318623471900049),\n\t\tvec2(-0.41881630178513873, -0.899674402337137),\n\t\tvec2(0.9082566602526256, 0.38845471061254216)\n\t);\n#elif DOF_QUALITY == 3 // High quality bokeh\n\t#define BOKEH_SAMPLES 96\n\tconst vec2 bokeh_offsets[96] = vec2[96](\n\t\tvec2(0.07121012932580298, -0.005700790092752472),\n\t\tvec2(-0.09312976408269022, 0.07873549668993801),\n\t\tvec2(0.013149611337887245, -0.16645720056123525),\n\t\tvec2(0.1152170596849477, 0.14582985633924836),\n\t\tvec2(-0.21415537775596927, -0.043412288570053574),\n\t\tvec2(0.20099989356868228, -0.13417028686218047),\n\t\tvec2(-0.06850983617645874, 0.24558623934474322),\n\t\tvec2(-0.1297860841436839, -0.25375016688247776),\n\t\tvec2(0.2785453377231323, 0.09637361951611127),\n\t\tvec2(-0.29173598389867905, 0.1143278645615103),\n\t\tvec2(0.1392152328130355, -0.30524424497902103),\n\t\tvec2(0.10262628276810476, 0.3245443120276563),\n\t\tvec2(-0.3131648573584685, -0.1866306663416654),\n\t\tvec2(0.3652947607876658, -0.08622057598322416),\n\t\tvec2(-0.22447741224677245, 0.3122316422302745),\n\t\tvec2(-0.052596663134391534, -0.4041877401668016),\n\t\tvec2(0.3160480724583331, 0.2614728148450268),\n\t\tvec2(-0.42755033863187675, 0.011940115357288394),\n\t\tvec2(0.3102072322995241, -0.31535240777916773),\n\t\tvec2(-0.021776857676125607, 0.4445120511380856),\n\t\tvec2(-0.29703399441499195, -0.36049799929262627),\n\t\tvec2(0.4680573756135771, 0.05740465338052286),\n\t\tvec2(-0.3983549879059493, 0.27079722808233325),\n\t\tvec2(0.1076328815172257, -0.4884010542428246),\n\t\tvec2(0.25020791867460324, 0.432618369814755),\n\t\tvec2(-0.4919652729660237, -0.1623452935030104),\n\t\tvec2(0.47599178934545766, -0.22606399244564834),\n\t\tvec2(-0.20758550392653913, 0.4880235037760105),\n\t\tvec2(-0.1853685647531024, -0.5184073191472642),\n\t\tvec2(0.48973632510956305, 0.2521947388069187),\n\t\tvec2(-0.5459973114481342, 0.13796965075175446),\n\t\tvec2(0.3088450800163787, -0.48751677798588744),\n\t\tvec2(0.0975917427828865, 0.5677357677730314),\n\t\tvec2(-0.46800107365064036, -0.3674046909313041),\n\t\tvec2(0.5964734698442213, -0.05519682036954475),\n\t\tvec2(-0.4139101866969282, 0.4406877162294968),\n\t\tvec2(0.002049341904248123, -0.6223038109189813),\n\t\tvec2(0.41896957501138105, 0.45720879309620605),\n\t\tvec2(-0.6315347717590759, -0.06414244292517278),\n\t\tvec2(0.5099945429097319, -0.39349604995429904),\n\t\tvec2(-0.11721190170447472, 0.6333298683840053),\n\t\tvec2(-0.3511409257292949, -0.5621754467118343),\n\t\tvec2(0.6407424471834575, 0.17016287772655794),\n\t\tvec2(-0.59984707457312, 0.3016388593021738),\n\t\tvec2(0.23571241320439879, -0.6440803577969166),\n\t\tvec2(0.25861497309905895, 0.6319353642149682),\n\t\tvec2(-0.6298765140060968, -0.3037567005718222),\n\t\tvec2(0.6712330165260425, -0.21294466649920604),\n\t\tvec2(-0.36034495634397506, 0.6075282203535491),\n\t\tvec2(-0.15171922856817155, -0.707766491614509),\n\t\tvec2(0.5903296808625542, 0.4143227465576124),\n\t\tvec2(-0.7277690961712949, 0.08488019551391128),\n\t\tvec2(0.4783691435335692, -0.5688347547957064),\n\t\tvec2(0.02624692981739339, 0.7403230184135525),\n\t\tvec2(-0.529825500118305, -0.5423647377841855),\n\t\tvec2(0.7583947037976506, 0.033125457614728814),\n\t\tvec2(-0.5923660000472654, 0.48294941004015257),\n\t\tvec2(0.1059822487778383, -0.772200611734827),\n\t\tvec2(0.44174978474925664, 0.6372488486615551),\n\t\tvec2(-0.7681788679771326, -0.18223636845309496),\n\t\tvec2(0.6897458099924982, -0.3970263276035467),\n\t\tvec2(-0.2479422541533022, 0.755629690982855),\n\t\tvec2(-0.33580152966568444, -0.7398138028495373),\n\t\tvec2(0.7477490064797803, 0.31193921366734034),\n\t\tvec2(-0.7736080489368817, 0.26795577022080547),\n\t\tvec2(0.3868886663966537, -0.7349923110069412),\n\t\tvec2(0.2072555967697858, 0.8001249720762448),\n\t\tvec2(-0.7040443194892538, -0.4626423043345493),\n\t\tvec2(0.8322384822401724, -0.1447122942561253),\n\t\tvec2(-0.5252166762643815, 0.664457295558192),\n\t\tvec2(-0.06754632697534207, -0.8600666846898691),\n\t\tvec2(0.6296824993369153, 0.5834370562363421),\n\t\tvec2(-0.869944526760866, -0.014179400625216068),\n\t\tvec2(0.6499749876116837, -0.590431834076035),\n\t\tvec2(-0.08653298327805949, 0.8710652567467342),\n\t\tvec2(-0.5336452473653825, -0.7147165352819029),\n\t\tvec2(0.8765151038515352, 0.15835652829089225),\n\t\tvec2(-0.7637367481190092, 0.46912680629507475),\n\t\tvec2(0.24230314452308632, -0.8766382336302021),\n\t\tvec2(0.41057390183400766, 0.8059431929582904),\n\t\tvec2(-0.8580075067207172, -0.32820494707410347),\n\t\tvec2(0.8541129534247509, -0.3489366841323772),\n\t\tvec2(-0.4020475845121665, 0.8300639316319863),\n\t\tvec2(-0.271383304434805, -0.8982601300128057),\n\t\tvec2(0.806149237823113, 0.4726141519370287),\n\t\tvec2(-0.9246093490373926, 0.18793390244305297),\n\t\tvec2(0.5525228823894455, -0.7768686415915086),\n\t\tvec2(0.11248781322457736, 0.9422381490453825),\n\t\tvec2(-0.7290593513744651, -0.6315956494365766),\n\t\tvec2(0.9641126469581356, -0.03618111342429133),\n\t\tvec2(-0.6958327822205611, 0.6724277225888768),\n\t\tvec2(0.05364990040181975, -0.9804535309203316),\n\t\tvec2(0.6205795080163646, 0.7540570525272473),\n\t\tvec2(-0.9777078995622647, -0.14683634641243257),\n\t\tvec2(0.8189512244871316, -0.564380296276503),\n\t\tvec2(-0.22935101607289898, 0.965189829782074)\n\t);\n#elif DOF_QUALITY == 4 // Ultra quality bokeh\n\t#define BOKEH_SAMPLES 128\n\tconst vec2 bokeh_offsets[128] = vec2[128](\n\t\tvec2(0.0663717288408725, -0.0013834293391071473),\n\t\tvec2(-0.07595079370610941, 0.07174054001593103),\n\t\tvec2(0.016089845306454117, -0.1406025646260119),\n\t\tvec2(0.10448284847446448, 0.12984595992288336),\n\t\tvec2(-0.18076204965577036, -0.03404254503522808),\n\t\tvec2(0.1787729618263991, -0.11264127715283463),\n\t\tvec2(-0.05462931069997152, 0.2162375217952921),\n\t\tvec2(-0.10769609808818306, -0.21620049103190728),\n\t\tvec2(0.24592928641190032, 0.08701560245846723),\n\t\tvec2(-0.24794882541635205, 0.10256443477355368),\n\t\tvec2(0.12526587604780554, -0.26079567080797356),\n\t\tvec2(0.09357891581109577, 0.284617218572553),\n\t\tvec2(-0.26650677420701185, -0.15807329847424043),\n\t\tvec2(0.3210564905494301, -0.07111560942753943),\n\t\tvec2(-0.18970119374354508, 0.27395413373961097),\n\t\tvec2(-0.040848098590723636, -0.3464832511798149),\n\t\tvec2(0.27840760740397325, 0.22999569975767717),\n\t\tvec2(-0.3655675068138925, 0.013894042926387594),\n\t\tvec2(0.27334929144700043, -0.2695495965784895),\n\t\tvec2(-0.014157364124171042, 0.38851232827676874),\n\t\tvec2(-0.25253703711299613, -0.3086468256980197),\n\t\tvec2(0.4100515255479846, 0.053267487825832176),\n\t\tvec2(-0.3402835914128429, 0.2380708784965685),\n\t\tvec2(0.09791475751438991, -0.41941412050652843),\n\t\tvec2(0.22138836163818915, 0.3782120981062479),\n\t\tvec2(-0.4213524763303703, -0.13704154865558862),\n\t\tvec2(0.4169229294039292, -0.1922235606360057),\n\t\tvec2(-0.1750723720198253, 0.42619435161677505),\n\t\tvec2(-0.15583193830129546, -0.44540030818645854),\n\t\tvec2(0.42882604653886824, 0.22196065021043188),\n\t\tvec2(-0.46814559427413643, 0.12303882220514525),\n\t\tvec2(0.2721696329659735, -0.41864831480405745),\n\t\tvec2(0.08921887628752824, 0.4952271972313669),\n\t\tvec2(-0.4005988709418946, -0.3146281961132203),\n\t\tvec2(0.5212631254064987, -0.04424824894529297),\n\t\tvec2(-0.35375478872674765, 0.3852003570933512),\n\t\tvec2(0.006476729988070734, -0.5353773094248466),\n\t\tvec2(0.36754024321057777, 0.3995080293577968),\n\t\tvec2(-0.542223207878615, -0.0519953853311339),\n\t\tvec2(0.44637017778921256, -0.33722397584639424),\n\t\tvec2(-0.09680653666400772, 0.5520333546988624),\n\t\tvec2(-0.29939501415200226, -0.4833046185334542),\n\t\tvec2(0.5596011843818348, 0.1509189745951235),\n\t\tvec2(-0.5147808571281486, 0.26478051462710167),\n\t\tvec2(0.20883488566029573, -0.5542363522278412),\n\t\tvec2(0.22866908434076613, 0.5508256786627931),\n\t\tvec2(-0.5407871145385126, -0.2595074195620819),\n\t\tvec2(0.5860067920083645, -0.18086189108585835),\n\t\tvec2(-0.30736593848152494, 0.5296884720449828),\n\t\tvec2(-0.1266907583446624, -0.6093901619826914),\n\t\tvec2(0.5159424480728841, 0.3623676235874931),\n\t\tvec2(-0.6255645775356298, 0.07706200529609625),\n\t\tvec2(0.41898177852462715, -0.4890717485057145),\n\t\tvec2(0.027432455831161814, 0.6446921406553703),\n\t\tvec2(-0.4541403948372952, -0.46614804133513105),\n\t\tvec2(0.6614910274222918, 0.032241087509198955),\n\t\tvec2(-0.5083020565411538, 0.42180005754033856),\n\t\tvec2(0.0964852676297621, -0.6651917468773848),\n\t\tvec2(0.3872684835471157, 0.5554272911761509),\n\t\tvec2(-0.6605604664806174, -0.15426772487094212),\n\t\tvec2(0.6020393414453297, -0.34028128597305507),\n\t\tvec2(-0.21002234293038552, 0.6579481079477967),\n\t\tvec2(-0.2861107074822046, -0.6371439476352124),\n\t\tvec2(0.6522715831040163, 0.2737008831753178),\n\t\tvec2(-0.6652622751135028, 0.2356101038047024),\n\t\tvec2(0.3397573613737368, -0.6329684132153847),\n\t\tvec2(0.1841905597170904, 0.6964821517232016),\n\t\tvec2(-0.6050183182298694, -0.39710638871623194),\n\t\tvec2(0.7254416154649453, -0.12177092336287425),\n\t\tvec2(-0.45014903629822983, 0.5789904973861583),\n\t\tvec2(-0.05379488725502444, -0.7412859981872281),\n\t\tvec2(0.5500229885821982, 0.5088249119127414),\n\t\tvec2(-0.7486921122201893, -0.008726121449014926),\n\t\tvec2(0.5675967989341455, -0.5077753678100256),\n\t\tvec2(-0.07023781394610165, 0.7579182403995453),\n\t\tvec2(-0.45744839298930007, -0.6154090763560658),\n\t\tvec2(0.7637862945741366, 0.14069437605788096),\n\t\tvec2(-0.656713477836827, 0.4098293315506553),\n\t\tvec2(0.21454262641179686, -0.7556373805496136),\n\t\tvec2(0.36026937695710076, 0.7015208788118822),\n\t\tvec2(-0.7383543496199366, -0.28068022211104154),\n\t\tvec2(0.7443854632051411, -0.29863443306808585),\n\t\tvec2(-0.34348147387975525, 0.7224100512613486),\n\t\tvec2(-0.23032288796555528, -0.7743624920949431),\n\t\tvec2(0.7028476670342306, 0.4128494614683644),\n\t\tvec2(-0.7960332370050228, 0.16630913345088935),\n\t\tvec2(0.48320080015941314, -0.6692343793188953),\n\t\tvec2(0.10211925170659499, 0.8195557731909884),\n\t\tvec2(-0.6266819713189401, -0.5434242776289469),\n\t\tvec2(0.839647992213555, -0.027780163659783332),\n\t\tvec2(-0.5979069183510588, 0.5858930896737415),\n\t\tvec2(0.05116412449643274, -0.8455440653042995),\n\t\tvec2(0.5421395668481722, 0.656586163094272),\n\t\tvec2(-0.8420179306636936, -0.12361040648919945),\n\t\tvec2(0.7139345127041803, -0.4852140742679803),\n\t\tvec2(-0.19392185846495172, 0.8394325117685132),\n\t\tvec2(-0.4204487200571126, -0.7589178553865392),\n\t\tvec2(0.8327210388300782, 0.27198001249322223),\n\t\tvec2(-0.7960210362439597, 0.35875934008010707),\n\t\tvec2(0.3521694740750743, -0.8113417187989848),\n\t\tvec2(0.2956218966152538, 0.8352993597773058),\n\t\tvec2(-0.7802993418734316, -0.4233366042943169),\n\t\tvec2(0.8713623792816834, -0.22102227243790618),\n\t\tvec2(-0.4898157243847507, 0.7501925472112333),\n\t\tvec2(-0.1404730904953662, -0.8933311986231547),\n\t\tvec2(0.7161931362879647, 0.5614815300362244),\n\t\tvec2(-0.9058628529093994, 0.06505632357778653),\n\t\tvec2(0.6327340635903044, -0.6679986961411009),\n\t\tvec2(-0.009601876744475778, 0.9192004679524599),\n\t\tvec2(-0.6108521377052276, -0.6924574614793783),\n\t\tvec2(0.9281555629938579, 0.09338283007560376),\n\t\tvec2(-0.7450460329935668, 0.555586889447176),\n\t\tvec2(0.18065981280216364, -0.9220637339884982),\n\t\tvec2(0.4976041523666884, 0.8004563576254236),\n\t\tvec2(-0.9058072969449353, -0.26025660300795816),\n\t\tvec2(0.8531917506909307, -0.4268234961929668),\n\t\tvec2(-0.33647364470405444, 0.8898636052739477),\n\t\tvec2(-0.3487004193922513, -0.8922603177419213),\n\t\tvec2(0.8692854206244577, 0.4191405201257309),\n\t\tvec2(-0.922200158608347, 0.27426963027794127),\n\t\tvec2(0.5026010788472942, -0.8336545903450451),\n\t\tvec2(0.19912047190109702, 0.953130414632473),\n\t\tvec2(-0.7881026276127884, -0.575672440830542),\n\t\tvec2(0.9797345166178452, -0.1133457865497118),\n\t\tvec2(-0.6426714284056454, 0.743356925293099),\n\t\tvec2(-0.022557857722768027, -0.9912168632834627),\n\t\tvec2(0.694719000547024, 0.7134671125059463),\n\t\tvec2(-0.992326501717018, -0.062069798758671524)\n\t);\n#endif\n#if DOF_QUALITY == 5 || defined(DOF_JITTER_SHADOW) // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE)\n\tconst vec2 jitter_offsets[64] = vec2[](\n\t\tvec2(0.08838834764831845, 0),\n\t\tvec2(-0.1846432401149469, -0.8598513673187094),\n\t\tvec2(0.017279026012279545, -0.19688558926459543),\n\t\tvec2(-0.3024918972101173, 0.9324356021314415),\n\t\tvec2(-0.9396490219009803, -0.21621104421497742),\n\t\tvec2(0.24734769576390825, -0.1573423572986152),\n\t\tvec2(-0.41009709429808805, -0.8991011473957005),\n\t\tvec2(0.5744249772651445, 0.07728806825078578),\n\t\tvec2(0.3423210807918538, 0.12501510966878018),\n\t\tvec2(-0.44015653024869994, 0.751049085532647),\n\t\tvec2(0.17167724937276072, -0.36686431013087517),\n\t\tvec2(0.12686512045562875, 0.4044659951241622),\n\t\tvec2(-0.42888394095723925, -0.6815394817536159),\n\t\tvec2(0.4485669917863205, -0.09861619481490404),\n\t\tvec2(-0.27375345242708055, 0.3893861159366807),\n\t\tvec2(-0.06324338646074763, -0.4880448484196678),\n\t\tvec2(0.3882523628219502, 0.32721950241874764),\n\t\tvec2(-0.14238056851320097, 0.782649521631399),\n\t\tvec2(0.3810988237928309, -0.37924423067954616),\n\t\tvec2(-0.025496987788449936, 0.5513958683321046),\n\t\tvec2(-0.3626167543233098, -0.4345360623515941),\n\t\tvec2(0.9169758677396763, 0.3890279655539787),\n\t\tvec2(-0.48670912146566037, 0.3386395297098746),\n\t\tvec2(0.13299692659673018, -0.591184672937166),\n\t\tvec2(-0.2530651743438579, 0.6046862967972011),\n\t\tvec2(-0.6013578380024912, -0.19184955218339567),\n\t\tvec2(0.9300141309321251, 0.047552247755117134),\n\t\tvec2(-0.35612804311487684, 0.1470044792078405),\n\t\tvec2(-0.2258550920331724, -0.6279346919884959),\n\t\tvec2(0.6257873078318013, -0.47495025566539767),\n\t\tvec2(-0.6675333000242891, 0.17595963559487854),\n\t\tvec2(0.3794305347699942, -0.5901016601265889),\n\t\tvec2(0.12069909342891681, 0.7023134833145649),\n\t\tvec2(-0.5720078077939695, -0.44299499751434795),\n\t\tvec2(0.731701930078265, -0.06062000923574415),\n\t\tvec2(-0.5057602714083884, 0.5467120337663267),\n\t\tvec2(0.2898616761608319, -0.7818521015468547),\n\t\tvec2(0.514304945229712, 0.5669461379286951),\n\t\tvec2(-0.7722948658519765, -0.07157611458215449),\n\t\tvec2(0.6009761594775107, 0.31585622637469357),\n\t\tvec2(-0.5224659775357187, 0.02160560847664148),\n\t\tvec2(-0.3823729459844533, -0.2215929380173709),\n\t\tvec2(0.785920133036245, 0.21538812522581444),\n\t\tvec2(-0.7334855212372673, 0.3764126593717251),\n\t\tvec2(0.1309753226146144, -0.9387667254786982),\n\t\tvec2(0.31791146893355565, 0.7809416098022366),\n\t\tvec2(0.3076149721436936, 0.5368291431293896),\n\t\tvec2(0.8232633014643855, -0.2538208747561163),\n\t\tvec2(-0.77026392317357, -0.3650424477471912),\n\t\tvec2(-0.112886093968774, 0.10341290919644958),\n\t\tvec2(0.7241773560320561, 0.5144216723762915),\n\t\tvec2(-0.8901573611276761, 0.11093859756735677),\n\t\tvec2(0.5870542621401351, -0.6896954351763548),\n\t\tvec2(0.033319899649036984, 0.913688833404118),\n\t\tvec2(-0.6477269570369681, -0.6572764175958464),\n\t\tvec2(0.5841426097907643, -0.2698887019251361),\n\t\tvec2(-0.7243231135792285, 0.5984718265172488),\n\t\tvec2(0.003684027952365215, -0.7551813874414849),\n\t\tvec2(0.5422048902753999, 0.7874492726274129),\n\t\tvec2(-0.15778073396756462, -0.3037972020750958),\n\t\tvec2(0.8459367503175589, -0.47927394511090204),\n\t\tvec2(0.14228560991136777, 0.18558638207624523),\n\t\tvec2(-0.08273296353158632, 0.30776250055080007),\n\t\tvec2(-0.26111159362214226, -0.046186964352566244)\n\t);\n#endif\n\nmat2 rotate(float angle){\n\treturn mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n}"
  },
  {
    "path": "shaders/lib/climate_settings.glsl",
    "content": "// this file contains all things for seasons, weather, and biome specific settings.\n\nuniform float Summer;\nuniform float Autumn;\nuniform float Winter;\nuniform float Spring;\n\nuniform float smoothSwamps;\nuniform float smoothJungles;\nuniform float smoothDarkForests;\nuniform float smoothBiome_Snowy;\nuniform float smoothBiome_Dry;\n\nuniform float snowStorm;\nuniform float sandStorm;\nuniform float sandStorm_red;\n\n///////////////////////////////////////////////////////////////////////////////\n///////////////////////////////// SEASONS //////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////\n\n#ifdef Seasons\n\t#ifdef SEASONS_VSH\n\n\t\tvoid YearCycleColor(\n\t\t\tinout vec3 FinalColor,\n\t\t\tvec3 glcolor,\n\n\t\t\tbool isLeaves,\n\t\t\tbool isPlants\n\t\t){\n\t\t\t// colors for things that arent leaves and using the tint index.\n\t\t\tvec3 SummerCol = vec3(Summer_R, Summer_G, Summer_B);\n\t\t\tvec3 AutumnCol = vec3(Fall_R, Fall_G, Fall_B);\n\t\t\tvec3 WinterCol = vec3(Winter_R, Winter_G, Winter_B) ;\n\t\t\tvec3 SpringCol = vec3(Spring_R, Spring_G, Spring_B);\n\n\t\t\t// decide if you want to replace biome colors or tint them.\n\t\t\tSummerCol *= glcolor;\n\t\t\tAutumnCol *= glcolor;\n\t\t\tWinterCol *= glcolor;\n\t\t\tSpringCol *= glcolor;\n\n\t\t\t// do leaf colors different because thats cool and i like it\n\t\t\tif(isLeaves) {\n\t\t\t\tSummerCol = vec3(Summer_Leaf_R, Summer_Leaf_G, Summer_Leaf_B);\n\t\t\t\tAutumnCol = vec3(Fall_Leaf_R, Fall_Leaf_G, Fall_Leaf_B);\n\t\t\t\tWinterCol = vec3(Winter_Leaf_R, Winter_Leaf_G, Winter_Leaf_B);\n\t\t\t\tSpringCol = vec3(Spring_Leaf_R, Spring_Leaf_G, Spring_Leaf_B);\n\n\t\t\t\tSummerCol *= glcolor;\n\t\t\t\tAutumnCol *= glcolor;\n\t\t\t\tWinterCol *= glcolor;\n\t\t\t\tSpringCol *= glcolor;\n\t\t\t}\n\n\t\t\t// lerp all season colors together\n\t\t\tvec3 SummerToFall = mix(SummerCol, AutumnCol, Summer);\n\t\t\tvec3 FallToWinter = mix(SummerToFall, WinterCol, Autumn);\n\t\t\tvec3 WinterToSpring = mix(FallToWinter, SpringCol, Winter);\n\t\t\tvec3 SpringToSummer = mix(WinterToSpring, SummerCol, Spring);\n\n\t\t\t// make it so that you only have access to parts of the texture that use the tint index\n\t\t\t#ifdef DH_SEASONS\n\t\t\t\tbool IsTintIndex = isPlants || isLeaves;\n\t\t\t#else\n\t\t\t\tbool IsTintIndex = floor(dot(glcolor,vec3(0.5))) < 1.0;  \n\t\t\t#endif\n\n\t\t\t// multiply final color by the final lerped color, because it contains all the other colors.\n\t\t\tif(IsTintIndex) FinalColor = SpringToSummer;\n\t\t}\n\t#endif\n#endif\n\n///////////////////////////////////////////////////////////////////////////////\n///////////////////////////// BIOME SPECIFICS /////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////\n\n#ifdef PER_BIOME_ENVIRONMENT\n\n\t// these range 0.0-1.0. they will never overlap.\n\tfloat Inbiome = smoothJungles + smoothSwamps + smoothDarkForests + smoothBiome_Snowy + smoothBiome_Dry;\n\n\tvoid BiomeFogColor(inout vec3 FinalFogColor){\t\t\n\n\t\tvec3 BiomeColors = vec3(0.0);\n\t\tBiomeColors.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;\n\t\tBiomeColors.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;\n\t\tBiomeColors.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;\n\n\t\t// insure the biome colors are locked to the fog shape and lighting, but not its orignal color.\n\t\tBiomeColors *= max(dot(FinalFogColor,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025);\n\n\t\t// interpoloate between normal fog colors and biome colors. the transition speeds are conrolled by the biome uniforms.\n\t\tFinalFogColor = mix(FinalFogColor, BiomeColors, Inbiome);\n\t}\n\n\tvoid BiomeFogDensity(\n\t\tinout vec4 UniformDensity,\n\t\tinout vec4 CloudyDensity,\n\t\tfloat maxDistance\n\t){\n\n\t\tvec2 BiomeFogDensity = vec2(0.0); // x = uniform  ||  y = cloudy\n\n\t\tBiomeFogDensity.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;\n\t\tBiomeFogDensity.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;\n\n\t\tUniformDensity = UniformDensity + vec4(BiomeFogDensity.x) * Inbiome * maxDistance;\n\t\tCloudyDensity  = CloudyDensity + vec4(BiomeFogDensity.y) * Inbiome * maxDistance;\n\t}\n\n\tfloat BiomeVLFogColors(inout vec3 DirectLightCol, inout vec3 IndirectLightCol){\n\n\t\tvec3 BiomeColors = vec3(0.0);\n\t\tBiomeColors.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;\n\t\tBiomeColors.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;\n\t\tBiomeColors.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;\n\n\t\tDirectLightCol = BiomeColors * max(dot(DirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025);\n\t\tIndirectLightCol = BiomeColors * max(dot(IndirectLightCol,vec3(0.33333)), MIN_LIGHT_AMOUNT*0.025);\n\n\t\treturn Inbiome;\n\t}\n#endif"
  },
  {
    "path": "shaders/lib/color_dither.glsl",
    "content": "//using white noise for color dithering : gives a somewhat more \"filmic\" look when noise is visible\nfloat nrand(vec2 n){\n\treturn fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453);\n}\n\nfloat triangWhiteNoise( vec2 n ){\n\n\tfloat t = fract( frameTimeCounter );\n\tfloat rnd = nrand( n + 0.07*t );\n\n\tfloat center = rnd*2.0-1.0;\n\trnd = center*inversesqrt(abs(center));\n\trnd = max(-1.0,rnd); \n\treturn rnd-sign(center);\n}\n\nvec3 fp10Dither(vec3 color,vec2 tc01){\n\tfloat dither = triangWhiteNoise(tc01);\n\tconst vec3 mantissaBits = vec3(6.,6.,5.);\n\tvec3 exponent = floor(log2(color));\n\treturn color + dither*exp2(-mantissaBits)*exp2(exponent);\n}\n\nvec3 fp16Dither(vec3 color,vec2 tc01){\n\tfloat dither = triangWhiteNoise(tc01);\n\tconst vec3 mantissaBits = vec3(10.);\n\tvec3 exponent = floor(log2(color));\n\treturn color + dither*exp2(-mantissaBits)*exp2(exponent);\n}\n\nvec3 int8Dither(vec3 color,vec2 tc01){\n\tfloat dither = triangWhiteNoise(tc01);\n\treturn color + dither*exp2(-8.0);\n}\n\nvec3 int10Dither(vec3 color,vec2 tc01){\n\tfloat dither = triangWhiteNoise(tc01);\n\treturn color + dither*exp2(-10.0);\n}\n\nvec3 int16Dither(vec3 color,vec2 tc01){\n\tfloat dither = triangWhiteNoise(tc01);\n\treturn color + dither*exp2(-16.0);\n}"
  },
  {
    "path": "shaders/lib/cube/cubeData.glsl",
    "content": "#if !defined HAND\r\n\tconst mat4 cubeProjection = mat4(1.0, 0.0, 0.0, 0.0,\r\n\t\t0.0, 1.0, 0.0, 0.0,\r\n\t\t0.0, 0.0, (1000.0+0.01)/(0.01-1000.0), -1.0,\r\n\t\t0.0, 0.0, (2.0*1000.0*0.01)/(0.01-1000.0), 0.0);\r\n#else\r\n\tconst mat4 cubeProjection = mat4(1.0, 0.0, 0.0, 0.0,\r\n\t\t0.0, 1.0, 0.0, 0.0,\r\n\t\t0.0, 0.0, (1000.0+0.1)/(0.1-1000.0), -1.0,\r\n\t\t0.0, 0.0, (2.0*1000.0*0.1)/(0.1-1000.0), 0.0);\r\n#endif\r\n\r\nconst mat4 cubeProjectionInverse = mat4(1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 1.0,  0.0, 0.0,\r\n\t0.0, 0.0,  0.0, 1.0/((2*1000.0*0.01)/(0.01-1000.0)),\r\n\t0.0, 0.0, -1.0, ((1000.0+0.01) / (0.01-1000.0)) / ((2.0*1000.0*0.01) / (0.01-1000.0)));\r\n\r\n// LookAt matrix based on https://stackoverflow.com/a/21830596\r\n// eye at 0, because worldspace\r\n// left = -x\r\n// up = +y\r\n// forward = -z\r\nconst mat4 cubeForward = mat4(-1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 1.0, 0.0, 0.0,\r\n\t0.0, 0.0, -1.0, 0.0,\r\n\t0.0, 0.0, 0.0, 1.0);\r\n// left = -z\r\n// up = +y\r\n// forward = +x\r\nconst mat4 cubeRight = mat4(0.0, 0.0, 1.0, 0.0,\r\n\t0.0, 1.0, 0.0, 0.0,\r\n\t-1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 0.0, 0.0, 1.0);\r\n// left = +x\r\n// up = +y\r\n// forward = +z\r\nconst mat4 cubeBack = mat4(1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 1.0, 0.0, 0.0,\r\n\t0.0, 0.0, 1.0, 0.0,\r\n\t0.0, 0.0, 0.0, 1.0);\r\n// left = +z\r\n// up = +y\r\n// forward = -x\r\nconst mat4 cubeLeft = mat4(0.0, 0.0, -1.0, 0.0,\r\n\t0.0, 1.0, 0.0, 0.0,\r\n\t1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 0.0, 0.0, 1.0);\r\n// left = -x\r\n// up = -z\r\n// forward = -y\r\nconst mat4 cubeTop = mat4(-1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 0.0, -1.0, 0.0,\r\n\t0.0, -1.0, 0.0, 0.0,\r\n\t0.0, 0.0, 0.0, 1.0);\r\n// left = -x\r\n// up = z\r\n// forward = +y\r\nconst mat4 cubeDown = mat4(-1.0, 0.0, 0.0, 0.0,\r\n\t0.0, 0.0, 1.0, 0.0,\r\n\t0.0, 1.0, 0.0, 0.0,\r\n\t0.0, 0.0, 0.0, 1.0);\r\n\r\nconst mat4 directionMatices[6] = mat4[](\r\n\tcubeBack,\r\n\tcubeTop,\r\n\tcubeDown,\r\n\tcubeLeft,\r\n\tcubeForward,\r\n\tcubeRight);\r\n\r\nconst mat4 directionMaticesInverse[6] = mat4[](\r\n\ttranspose(cubeBack),\r\n\ttranspose(cubeTop),\r\n\ttranspose(cubeDown),\r\n\ttranspose(cubeLeft),\r\n\ttranspose(cubeForward),\r\n\ttranspose(cubeRight));\r\n\r\nconst vec2 faceOffsets[6] = vec2[](\r\n\tvec2(0.0, 0.0),\r\n\tvec2(2.0, 0.0),\r\n\tvec2(1.0, 1.0),\r\n\tvec2(2.0, 1.0),\r\n\tvec2(1.0, 0.0),\r\n\tvec2(0.0, 1.0)\r\n\t);\r\n\r\nconst vec2 screenRes = vec2(shadowMapResolution);\r\nconst vec2 cubeTileResolution = floor(screenRes/(vec2(3.0,2.0)*5.0));\r\nconst vec2 cubeTileRelativeResolution = cubeTileResolution/screenRes;\r\n\r\nconst ivec2 minBounds[6] = ivec2[](\r\n\tivec2(0, cubeTileResolution.y),\r\n\tivec2(cubeTileResolution.xy),\r\n\tivec2(cubeTileResolution.x*2,cubeTileResolution.y),\r\n\tivec2(0, 0),\r\n\tivec2(cubeTileResolution.x, 0),\r\n\tivec2(cubeTileResolution.x*2, 0));\r\n\r\nconst ivec2 maxBounds[6] = ivec2[](\r\n\tivec2(cubeTileResolution.x, cubeTileResolution.y*2),\r\n\tivec2(cubeTileResolution.x*2, cubeTileResolution.y*2),\r\n\tivec2(cubeTileResolution.x*3, cubeTileResolution.y*2),\r\n\tivec2(cubeTileResolution.x, cubeTileResolution.y),\r\n\tivec2(cubeTileResolution.x*2, cubeTileResolution.y),\r\n\tivec2(cubeTileResolution.x*3, cubeTileResolution.y));\r\n\r\nconst vec2 cubeFaceOffsets[6] = vec2[](\r\n\tvec2(0.0, cubeTileRelativeResolution.y),\r\n\tvec2(cubeTileRelativeResolution.xy),\r\n\tvec2(cubeTileRelativeResolution.x*2.0, cubeTileRelativeResolution.y),\r\n\tvec2(0.0, 0.0),\r\n\tvec2(cubeTileRelativeResolution.x, 0.0),\r\n\tvec2(cubeTileRelativeResolution.x*2.0, 0.0));\r\n\r\nconst vec2 renderOffsets[9] = vec2[](\r\n\tvec2(0.0, cubeTileRelativeResolution.y*8.0),\r\n\tvec2(cubeTileRelativeResolution.x*3.0, cubeTileRelativeResolution.y*8.0),\r\n\tvec2(cubeTileRelativeResolution.x*6.0, cubeTileRelativeResolution.y*8.0),\r\n\tvec2(cubeTileRelativeResolution.x*9.0, cubeTileRelativeResolution.y*8.0),\r\n\tvec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*8.0),\r\n\tvec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*6.0),\r\n\tvec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*4.0),\r\n\tvec2(cubeTileRelativeResolution.x*12.0, cubeTileRelativeResolution.y*2.0),\r\n\tvec2(cubeTileRelativeResolution.x*12.0, 0.0));\r\nconst vec2 renderBounds[9] = vec2[](\r\n\tvec2(0.0, cubeTileResolution.y*8.0),\r\n\tvec2(cubeTileResolution.x*3.0, cubeTileResolution.y*8.0),\r\n\tvec2(cubeTileResolution.x*6.0, cubeTileResolution.y*8.0),\r\n\tvec2(cubeTileResolution.x*9.0, cubeTileResolution.y*8.0),\r\n\tvec2(cubeTileResolution.x*12.0, cubeTileResolution.y*8.0),\r\n\tvec2(cubeTileResolution.x*12.0, cubeTileResolution.y*6.0),\r\n\tvec2(cubeTileResolution.x*12.0, cubeTileResolution.y*4.0),\r\n\tvec2(cubeTileResolution.x*12.0, cubeTileResolution.y*2.0),\r\n\tvec2(cubeTileResolution.x*12.0, 0.0));\r\n\r\nconst vec2 cornerOffset = vec2(-1.0 + cubeTileRelativeResolution);"
  },
  {
    "path": "shaders/lib/cube/emit.glsl",
    "content": "#include \"/lib/cube/cubeData.glsl\"\r\n\r\nvoid emitCubemap(mat4 directionMatrix, vec2 offset, vec3 lightPosition) {\r\n\tvec4[] positions = vec4[3](\r\n\t\tcubeProjection*directionMatrix*vec4(worldPos[0] - lightPosition, 1.0),\r\n\t\tcubeProjection*directionMatrix*vec4(worldPos[1] - lightPosition, 1.0),\r\n\t\tcubeProjection*directionMatrix*vec4(worldPos[2] - lightPosition, 1.0));\r\n\r\n\tif ((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)) {\r\n\t\tfor (int i = 0; i < 3; i++) {\r\n\t\t\t#if defined OVERWORLD_SHADER && defined TRANSLUCENT_COLORED_SHADOWS\r\n\t\t\t\tFcolor = color[i].rgb;\r\n\t\t\t#endif\r\n\t\t\t// move vertex to cube face\r\n\t\t\tpositions[i].xy = positions[i].xy*cubeTileRelativeResolution + (cornerOffset + offset) *positions[i].w;\r\n\t\t\tgl_Position = positions[i];\r\n\t\t\tFtexcoord = texcoord[i];\r\n\t\t\tEmitVertex();\r\n\t\t}\r\n\t\tEndPrimitive();\r\n\t}\r\n}"
  },
  {
    "path": "shaders/lib/cube/lightData.glsl",
    "content": "bool getLightData(in uint data, out float dist, out ivec3 pos, out uint id) {\r\n\tif (data == 4294967295u) {\r\n\t\treturn false;\r\n\t} else {\r\n\t\tdist = float((data & 0xFC000000u) >> 26) * 0.25;\r\n\t\tpos = ivec3((data & 0x03E00000u) >> 21,\r\n\t\t\t(data & 0x001F0000u) >> 16,\r\n\t\t\t(data & 0x0000F800u) >> 11);\r\n\t\tid =   (data & 0x000007FFu);\r\n\t\treturn true;\r\n\t}\r\n}"
  },
  {
    "path": "shaders/lib/diffuse_lighting.glsl",
    "content": "#ifdef IS_LPV_ENABLED\n\tvec3 GetHandLight(const in int itemId, const in vec3 playerPos, const in vec3 normal) {\n\t\tvec3 lightFinal = vec3(0.0);\n\t\tvec3 lightColor = vec3(0.0);\n\t\tfloat lightRange = 0.0;\n\n\t\tuvec2 blockData = texelFetch(texBlockData, itemId, 0).rg;\n\t\tvec4 lightColorRange = unpackUnorm4x8(blockData.r);\n\t\tlightColor = srgbToLinear(lightColorRange.rgb);\n\t\t#if defined LPV_SHADOWS && defined LPV_HAND_SHADOWS\n\t\t\tlightColor *= LPV_SHADOWS_LIGHT_MULT;\n\t\t#endif\n\t\tlightRange = lightColorRange.a * 255.0;\n\n\t\tif (lightRange > 0.0) {\n\t\t\tfloat lightDist = length(playerPos);\n\t\t\tvec3 lightDir = playerPos / lightDist;\n\t\t\tfloat NoL = 1.0;//max(dot(normal, lightDir), 0.0);\n\t\t\tfloat falloff = pow(1.0 - lightDist / lightRange, 3.0);\n\t\t\tlightFinal = lightColor * NoL * max(falloff, 0.0);\n\t\t}\n\t\treturn lightFinal;\n\t}\n\n\t#ifdef LPV_SHADOWS\n\t\t#include \"/lib/cube/cubeData.glsl\"\n\t\t#include \"/lib/cube/lightData.glsl\"\n\n\t\tuniform usampler1D texCloseLights;\n\t\t#ifdef LPV_HAND_SHADOWS\n\t\t\tuniform vec3 relativeEyePosition;\n\t\t\tuniform vec3 playerLookVector;\n\t\t#endif\n\t\t#if !defined TRANSLUCENT_COLORED_SHADOWS || defined DAMAGE_BLOCK_EFFECT || !defined OVERWORLD_SHADER\n\t\t\tuniform sampler2DShadow shadowtex0;\n\t\t\t#ifdef LPV_COLOR_SHADOWS\n\t\t\t\tuniform sampler2DShadow shadowtex1;\n\t\t\t\tuniform sampler2D shadowcolor0;\n\t\t\t#endif\n\t\t#endif\n\n\t\tvec3 worldToCube(vec3 worldPos, out int faceIndex) {\n\t\t\tvec3 worldPosAbs = abs(worldPos);\n\t\t\t/*\n\t\t\tcubeBack, 0\n\t\t\tcubeTop, 1\n\t\t\tcubeDown, 2\n\t\t\tcubeLeft, 3\n\t\t\tcubeForward, 4\n\t\t\tcubeRight 5\n\t\t\t*/\n\t\t\tif (worldPosAbs.z >= worldPosAbs.x && worldPosAbs.z >= worldPosAbs.y) {\n\t\t\t\t// looking in z direction (forward | back)\n\t\t\t\tfaceIndex = worldPos.z <= 0.0 ? 0 : 4;\n\t\t\t}\n\t\t\telse if (worldPosAbs.y >= worldPosAbs.x) {\n\t\t\t\t// looking in y direction (up | down)\n\t\t\t\tfaceIndex = worldPos.y <= 0.0 ? 2 : 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// looking in x direction (left | right)\n\t\t\t\tfaceIndex = worldPos.x <= 0.0 ? 5 : 3;\n\t\t\t}\n\t\t\tvec4 coord = cubeProjection * directionMatices[faceIndex] * vec4(worldPos, 1.0);\n\t\t\tcoord.xyz /= coord.w;\n\t\t\treturn coord.xyz * 0.5 + 0.5;\n\t\t}\n\n\t\tvec2 cubeOffset(vec2 relativeCoord, int faceIndex, int cube) {\n\t\t\treturn relativeCoord*cubeTileRelativeResolution + cubeFaceOffsets[faceIndex] + renderOffsets[cube];\n\t\t}\n\n\t\tvec3 getCubeShadow(vec3 cubeShadowPos, int faceIndex, int cube) {\n\t\t\tvec3 pos = vec3(cubeOffset(cubeShadowPos.xy, faceIndex, cube), cubeShadowPos.z);\n\t\t\tfloat solid = texture(shadowtex0, pos);\n\t\t\t#ifdef LPV_COLOR_SHADOWS\n\t\t\t\tfloat noTrans = texture(shadowtex1, pos);\n\t\t\t\treturn noTrans > solid ? texture(shadowcolor0, pos.xy).rgb : vec3(solid);\n\t\t\t#else\n\t\t\t\treturn vec3(solid);\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif\n\nvec3 doBlockLightLighting(\n\tvec3 lightColor, float lightmap,\n\tvec3 playerPos, vec3 lpvPos, vec3 normalWorld\n){\n\tlightmap = clamp(lightmap,0.0,1.0);\n\n\tfloat lightmapBrightspot = min(max(lightmap-0.7,0.0)*3.3333,1.0);\n\tlightmapBrightspot *= lightmapBrightspot*lightmapBrightspot;\n\n\tfloat lightmapLight = 1.0-sqrt(1.0-lightmap);\n\tlightmapLight *= lightmapLight;\n\n\tfloat lightmapCurve = mix(lightmapLight, 2.5, lightmapBrightspot);\n\tvec3 blockLight = lightmapCurve * lightColor;\n    \n    \n\t#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store\n\t\tvec4 lpvSample = SampleLpvLinear(lpvPos);\n\t\t#ifdef VANILLA_LIGHTMAP_MASK\n\t\t\tlpvSample.rgb *= lightmapCurve;\n\t\t#endif\n\t\tvec3 lpvBlockLight = GetLpvBlockLight(lpvSample);\n\n\t\t// create a smooth falloff at the edges of the voxel volume.\n\t\tfloat fadeLength = 10.0; // in meters\n\t\tvec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0);\n\t\tfloat voxelRangeFalloff = cubicRadius.x*cubicRadius.y*cubicRadius.z;\n\t\tvoxelRangeFalloff = 1.0 - pow(1.0-pow(voxelRangeFalloff,1.5),3.0);\n        \n\t\t// outside the voxel volume, lerp to vanilla lighting as a fallback\n\t\tblockLight = mix(blockLight, lpvSample.rgb + lightColor * 2.5 * min(max(lightmap-0.999,0.0)/(1.0-0.999), 1.0), voxelRangeFalloff);\n\n\t\t#ifdef Hand_Held_lights\n\t\t\t// create handheld lightsources\n\t\t\tconst vec3 normal = vec3(0.0); // TODO\n\n\t\t        if (heldItemId > 0)\n\t\t\t\tblockLight += GetHandLight(heldItemId, playerPos, normal);\n\n\t\t\tif (heldItemId2 > 0)\n\t\t\t\tblockLight += GetHandLight(heldItemId2, playerPos, normal);\n\t\t#endif\n\n\t\t#ifdef LPV_SHADOWS\n\t\t\tfor(int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++){\n\t\t\t\tuint data = texelFetch(texCloseLights, i, 0).r;\n\t\t\t\tfloat dist;\n\t\t\t\tivec3 pos;\n\t\t\t\tuint blockId;\n\t\t\t\tif (getLightData(data, dist, pos, blockId)) {\n\t\t\t\t\tvec3 lightPos = -fract(previousCameraPosition) - cameraPosition + previousCameraPosition + vec3(pos) - 14.5;\n\t\t\t\t\t#ifdef LPV_HAND_SHADOWS\n\t\t\t\t\t\tif (dist < 0.0001) {\n\t\t\t\t\t\t\tvec2 viewDir = normalize(playerLookVector.xz) * 0.25;\n\t\t\t\t\t\t\tlightPos = -relativeEyePosition + vec3(viewDir.x, 0, viewDir.y);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t\tint face = 0;\n\t\t\t\t\tvec3 dir = playerPos - lightPos;\n\t\t\t\t\tfloat d = dot(-normalWorld, normalize(dir));\n\t\t\t\t\tif (d > 0) {\n\t\t\t\t\t\tuint blockData = texelFetch(texBlockData, int(blockId), 0).r;\n\t\t\t\t\t\tvec4 lightColorRange = unpackUnorm4x8(blockData);\n\t\t\t\t\t\tlightColorRange.a *= 255.0;\n\t\t\t\t\t\tfloat dist = length(dir);\n\t\t\t\t\t\tif (dist < lightColorRange.a) {\n\t\t\t\t\t\t\tconst float bias = (3072.0 / shadowMapResolution) * 0.05;\n\t\t\t\t\t\t\tvec3 pos = worldToCube(dir + normalWorld * (0.05 + bias - bias * d), face);\n\t\t\t\t\t\t\tfloat blend = (1.0 - dist / lightColorRange.a) / (1.0 + dist * -0.3 + dist * dist * 0.4);\n\t\t\t\t\t\t\tblockLight += d * srgbToLinear(lightColorRange.rgb) * getCubeShadow(pos, face, i) * blend;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// since lights are sorted, if one light is invalid all followings are aswell\n \t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t#endif\n\t#endif\n\n\treturn blockLight * TORCH_AMOUNT;\n}\n\nvec3 doIndirectLighting(vec3 lightColor, vec3 minimumLightColor, float lightmap){\n\tfloat lightmapCurve = pow(lightmap, 15.0) + pow(lightmap, 2.5) / 3.0; //make sure its 0.0-1.0;\n\n\tvec3 indirectLight = lightColor * lightmapCurve * ambient_brightness; \n\n\tindirectLight += minimumLightColor * ((MIN_LIGHT_AMOUNT * 0.2 + nightVision) * 0.02);\n\n\treturn indirectLight;\n}\n\nuniform float centerDepthSmooth;\n\n#ifdef VIVECRAFT\n \tuniform bool vivecraftIsVR;\n \tuniform vec3 vivecraftRelativeMainHandPos;\n \tuniform vec3 vivecraftRelativeOffHandPos;\n \tuniform mat4 vivecraftRelativeMainHandRot;\n \tuniform mat4 vivecraftRelativeOffHandRot;\n #endif\n\nvec3 calculateFlashlight(in vec2 texcoord, in vec3 viewPos, in vec3 albedo, in vec3 normal, out vec4 flashLightSpecularData, bool hand) {\n \tvec3 shiftedViewPos;\n\tvec3 shiftedPlayerPos;\n \tfloat forwardOffset;\n \n\t#ifdef VIVECRAFT\n\t\tif (vivecraftIsVR) {\n\t\t\tforwardOffset = 0.0;\n\t\t\tshiftedPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + vivecraftRelativeMainHandPos;\n\t\t\tshiftedViewPos = shiftedPlayerPos * mat3(vivecraftRelativeMainHandRot);\n\t\t} else\n\t#endif\n\t{\n\t\tforwardOffset = 0.5;\n\t\tshiftedViewPos = viewPos + vec3(-0.25, 0.2, 0.0);\n\t\tshiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition) * 3.0;\n\t\tshiftedViewPos = mat3(gbufferPreviousModelView) * shiftedPlayerPos + gbufferPreviousModelView[3].xyz;\n\t}\n\n\tvec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - forwardOffset, 1e-7);\n\n\tfloat linearDistance = length(shiftedPlayerPos);\n\tfloat shiftedLinearDistance = length(scaledViewPos);\n\n\tfloat lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0);\n\tlightFalloff = max(exp(-10.0 * FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT * lightFalloff),0.0);\n\n\t#if defined FLASHLIGHT_SPECULAR && (defined DEFERRED_SPECULAR || defined FORWARD_SPECULAR)\n\t\tfloat flashLightSpecular = lightFalloff * exp2(-7.0*shiftedLinearDistance*shiftedLinearDistance) * FLASHLIGHT_BRIGHTNESS_MULT;\n\t\tflashLightSpecularData = vec4(normalize(shiftedPlayerPos), flashLightSpecular);\t\n\t#endif\n\n\tfloat projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0);\n\tfloat lenseDirt = texture2D(noisetex, scaledViewPos * 0.2 + 0.1).b;\n\tfloat lenseShape = (pow(abs(pow(abs(projectedCircle-1.0),2.0)*2.0 - 0.5),2.0) + lenseDirt*0.2) * 10.0;\n\t\n\tfloat offsetNdotL = clamp(dot(-normal, normalize(shiftedPlayerPos)),0,1);\n\tvec3 flashlightDiffuse = vec3(1.0) * lightFalloff * offsetNdotL * pow(1.0-pow(1.0-projectedCircle,2),2) * lenseShape * FLASHLIGHT_BRIGHTNESS_MULT;\n\t\n\tif(hand){\n\t\tflashlightDiffuse = vec3(0.0);\n\t\tflashLightSpecularData = vec4(0.0);\n\t}\n\n\t#ifdef FLASHLIGHT_BOUNCED_INDIRECT\n\t\tfloat lightWidth = 1.0+linearDistance*3.0;\n\t\tvec3 pointPos = mat3(gbufferModelViewInverse) *  (toScreenSpace(vec3(texcoord, centerDepthSmooth)) + vec3(-0.25, 0.2, 0.0));\n\t\tfloat flashLightHitPoint = distance(pointPos, shiftedPlayerPos);\n\n\t\tfloat indirectFlashLight = exp(-10.0 * (1.0 - clamp(1.0-length(shiftedViewPos.xy)/lightWidth,0.0,1.0)) );\n\t\tindirectFlashLight *= pow(clamp(1.0-flashLightHitPoint/lightWidth,0,1),2.0);\n\n\t\tflashlightDiffuse += albedo/150.0 * indirectFlashLight * lightFalloff;\n\t#endif\n\n\treturn flashlightDiffuse * vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B);\n}"
  },
  {
    "path": "shaders/lib/dither.glsl",
    "content": "uniform sampler2D noisetex;\r\nuniform int frameCounter;\r\n\r\nfloat interleaved_gradientNoise_temporal(){\r\n\tvec2 coord = gl_FragCoord.xy;\r\n\t\r\n\t#ifdef TAA\r\n\t\tcoord += (frameCounter*9)%40000;\r\n\t#endif\r\n\r\n\treturn fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y));\r\n}\r\n\r\nfloat R2_dither(){\r\n\tvec2 coord = gl_FragCoord.xy ;\r\n\r\n\t#ifdef TAA\r\n\t\tcoord += (frameCounter*2)%40000;\r\n\t#endif\r\n\t\r\n\tvec2 alpha = vec2(0.75487765, 0.56984026);\r\n\treturn fract(alpha.x * coord.x + alpha.y * coord.y);\r\n}\r\n\r\nfloat blueNoise(){\r\n\t#ifdef TAA\r\n  \t\treturn fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter);\r\n\t#else\r\n\t\treturn fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887);\r\n\t#endif\r\n}\r\n\r\nvec2 randNoise(vec2 p){\r\n\tvec2 co = floor(p);\r\n\tvec2 mu = fract(p);\r\n\tmu = 3.*mu*mu-2.*mu*mu*mu;\r\n\tvec2 a = simpleRand22((co+vec2(0.,0.)));\r\n\tvec2 b = simpleRand22((co+vec2(1.,0.)));\r\n\tvec2 c = simpleRand22((co+vec2(0.,1.)));\r\n\tvec2 d = simpleRand22((co+vec2(1.,1.)));\r\n\treturn mix(mix(a, b, mu.x), mix(c, d, mu.x), mu.y);\r\n}"
  },
  {
    "path": "shaders/lib/end_fog.glsl",
    "content": "// Hash without Sine\n// MIT License...\n/* Copyright (c)2014 David Hoskins.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.*/\n//----------------------------------------------------------------------------------------\n// Integer Hash - II\n// - Inigo Quilez, Integer Hash - II, 2017\n//   https://www.shadertoy.com/view/XlXcW4\n//----------------------------------------------------------------------------------------\n\nuvec3 iqint2(uvec3 x){\n\tconst uint k = 1103515245u;\n\n\tx = ((x>>8U)^x.yzx)*k;\n\tx = ((x>>8U)^x.yzx)*k;\n\tx = ((x>>8U)^x.yzx)*k;\n\n\treturn x;\n}\n\nuvec3 hash(vec2 s){\t\n\tuvec4 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.\n\n\treturn iqint2(u.xyz);\n}\n\n//----------------------------------------------------------------------------------------\n\nfloat vortexBoundRange = 300.0;\n\nvec3 LightSourcePosition(vec3 worldPos, vec3 cameraPos, float vortexBounds){\n\n\t// this is static so it can just sit in one place\n\tvec3 vortexPos = worldPos - vec3(0.0,200.0,0.0);\n\n\tvec3 lightningPos = worldPos - cameraPos;\n\n\t// snap-to coordinates in worldspace.\n\tfloat cellSize = 200.0;\n\tlightningPos += fract(cameraPos/cellSize)*cellSize - cellSize*0.5;\n\n\t// make the position offset to random places (RNG.xyz from non-clearing buffer).\n\tvec3 randomOffset = (texelFetch2D(colortex4,ivec2(2,1),0).xyz / 150.0) * 2.0 - 1.0;\n\tlightningPos -= randomOffset * 2.5;\n\n\treturn mix(lightningPos, vortexPos, vortexBounds);\n}\n\nfloat densityAtPosFog(in vec3 pos){\n\tpos /= 16.0;\n\tpos.xz *= 0.5;\n\n\tvec3 p = floor(pos);\n\tvec3 f = fract(pos);\n\n\tf = (f*f) * (3.-2.*f);\n\tvec2 uv =  p.xz + f.xz + p.y * vec2(0.0,192.0);\n\tvec2 coord =  uv * 0.002;\n\tvec2 xy = texture2D(noisetex, coord).yx;\n\treturn mix(xy.r,xy.g, f.y);\n}\n\n// Create a rising swirl centered around some origin.\nvoid SwirlAroundOrigin(inout vec3 alteredOrigin, vec3 origin){\n\tfloat radiance = 2.39996 + alteredOrigin.y/1.5 + frameTimeCounter/50;\n\tmat2 rotationMatrix  = mat2(vec2(cos(radiance),  -sin(radiance)),  vec2(sin(radiance),  cos(radiance)));\n\n\t// make the swirl only happen within a radius\n\tfloat SwirlBounds = clamp(sqrt(length(vec3(origin.x, origin.y-100,origin.z)) / 200.0 - 1.0),0.0,1.0);\n\n\talteredOrigin.xz = mix(alteredOrigin.xz * rotationMatrix, alteredOrigin.xz, SwirlBounds);\n}\n\n// control where the fog volume should and should not be using a sphere.\nvoid VolumeBounds(inout float Volume, vec3 Origin){\n\tvec3 Origin2 = (Origin - vec3(0,100,0));\n\tOrigin2.y *= 0.8;\n\tfloat Center1 = length(Origin2);\n\n\tfloat Bounds = max(1.0 - Center1 / 75.0, 0.0) * 5.0;\n\n\tfloat radius = 175.0;\n\tfloat thickness = 7500.0;\n\tfloat Torus = (thickness - clamp(pow(length(vec2(length(Origin.xz) - radius, Origin2.y)),2.0) - radius, 0.0, thickness)) / thickness;\n\n\tOrigin2.xz *= 0.5;\n\tOrigin2.y -= 100;\n\n\tfloat orb = clamp((1.0 - length(Origin2) / 15.0) * 1.0, 0.0, 1.0);\n\tVolume = max(Volume - Bounds - Torus, 0);\n}\n\n// create the volume shape\nfloat fogShape(in vec3 pos){\n\tfloat vortexBounds = clamp(vortexBoundRange - length(pos), 0.0,1.0);\n\tvec3 samplePos = pos*vec3(1.0,1.0/48.0,1.0);\n\tfloat fogYstart = -60;\n\n\t// this is below down where you fall to your death.\n\tfloat voidZone = max(exp2(-1.0 * sqrt(max(pos.y + 60.0, 0.0))), 0.0) ;\n\n\t// swirly swirly :DDDDDDDDDDD\n\tSwirlAroundOrigin(samplePos, pos);\n\n\tfloat noise = densityAtPosFog(samplePos * 12.0);\n\tfloat erosion = 1.0 - densityAtPosFog((samplePos - frameTimeCounter/20) * (96.0 + (1 - noise) * 6.0));\n\n\tfloat clumpyFog = max(exp(noise * -mix(10,4,vortexBounds)) * mix(2,1,vortexBounds) - erosion * 0.3, 0.0);\n\n\t// apply limts\n\tVolumeBounds(clumpyFog, pos);\n\n\treturn clumpyFog + voidZone;\n}\n\nfloat endFogPhase(vec3 LightPos){\n\tfloat mie = exp(length(LightPos) / -50.0);\n\n\treturn (mie * 10.0) * (mie * 10.0);\n}\n\nvec3 LightSourceColors(float vortexBounds, float lightningflash){\n\tvec3 vortexColor = vec3(END_VORTEX_R, END_VORTEX_G, END_VORTEX_B);\n\tvec3 lightningColor = vec3(END_LIGHTNING_R, END_LIGHTNING_G, END_LIGHTNING_B) * lightningflash;\n\n\treturn mix(lightningColor, vortexColor, vortexBounds);\n}\n\nvec3 LightSourceLighting(vec3 startPos, vec3 lightPos, float noise, float density, vec3 lightColor, float vortexBound){\n\tfloat phase = endFogPhase(lightPos);\n\tfloat shadow = 0.0;\n\n\tfor (int i = 0; i < 3; i++){\n\t\tvec3 shadowSamplePos = startPos - lightPos * (0.05 + i * 0.25);\n\t\tshadow += fogShape(shadowSamplePos);\n\t}\n\n\tvec3 finalLighting = lightColor * phase * exp(-32.0 * shadow);\n\tfinalLighting += lightColor * phase * phase * (1.0 - exp(-shadow * vec3(END_VORTEX_R, END_VORTEX_G, END_VORTEX_B))) * (1.0 - exp(-density * density));\n\n\treturn finalLighting;\n}\n\n//Mie phase function\nfloat phaseEND(float x, float g){\n\tfloat gg = g * g;\n\treturn (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14;\n}\n\nvec4 GetVolumetricFog(\n\tvec3 viewPosition,\n\tfloat dither,\n\tfloat dither2\n){\n\t#ifndef TOGGLE_VL_FOG\n\t\treturn vec4(0.0,0.0,0.0,1.0);\n\t#endif\n\n\t/// -------------  RAYMARCHING STUFF ------------- \\\\\\\n\n\tvec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz;\n\tvec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz);\n\tvec3 progressW = vec3(0.0);\n\n\tfloat maxLength = min(length(dVWorld), 480.0) / length(dVWorld);\n\n\tdVWorld *= maxLength;\n\n\tfloat dL = length(dVWorld);\n\tfloat expFactor = 11.0;\n\n\t/// -------------  COLOR/LIGHTING STUFF ------------- \\\\\\\n\n\tint SAMPLECOUNT = 16;\n\n\tvec3 color = vec3(0.0);\n\tfloat absorbance = 1.0;\n\n\tfloat CenterdotV = dot(normalize(vec3(0,100,0)-cameraPosition), normalize(wpos + cameraPosition));\n\n\tfloat skyPhase = (0.5 + pow(clamp(normalize(wpos).y * 0.5 + 0.5, 0.0, 1.0), 4.0) * 5.0) * 0.1;\n\n\tfloat lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0;\n\n\t#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT\n\t\tfloat TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0;\n\t#endif\n\n\tfor (int i = 0; i < SAMPLECOUNT; i++) {\n\t\tfloat d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\n\t\tfloat dd = pow(expFactor, float(i+dither2)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);\n\n\t\tvec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition + d*dVWorld;\n\n\t\t//------ END STORM EFFECT\n\n\t\t\t// determine where the vortex area ends and chaotic lightning area begins.\n\t\t\tfloat vortexBounds = clamp(vortexBoundRange - length(progressW), 0.0, 1.0);\n\t\t\tvec3 lightPosition = LightSourcePosition(progressW, cameraPosition, vortexBounds);\n\t\t\tvec3 lightColors = LightSourceColors(vortexBounds, lightningflash) * 0.5;\n\n\t\t\tfloat volumeDensity = fogShape(progressW);\n\n\t\t\tfloat clearArea = 1.0-min(max(1.0 - length(progressW - cameraPosition) / 20.0,0.0),1.0);\n\t\t\tfloat stormDensity = min(volumeDensity, clearArea * clearArea * END_STORM_DENSITY);\n\n\t\t\tfloat volumeCoeff = exp(-stormDensity * dd * dL);\n\n\t\t\tvec3 lightsources = LightSourceLighting(progressW, lightPosition, dither, volumeDensity, lightColors, vortexBounds);\n\t\t\tvec3 indirect = vec3(END_FOG_R, END_FOG_G, END_FOG_B) * (exp((volumeDensity * volumeDensity) * -100.0) * 0.8 + 0.2) * 0.05;\n\n\t\t\tvec3 stormLighting = indirect + lightsources;\n\n\t\t\tcolor += (stormLighting - stormLighting*volumeCoeff) * absorbance;\n\t\t\tabsorbance *= volumeCoeff;\n\n\t\t//------ HAZE EFFECT\n\t\t\t// dont make haze contrube to absorbance.\n\t\t\tfloat hazeDensity = 0.001;\n\t\t\tvec3 hazeLighting = vec3(END_FOG_R, END_FOG_G, END_FOG_B) * skyPhase * 0.5;\n\t\t\tcolor += (hazeLighting - hazeLighting * exp(-hazeDensity * dd * dL)) * absorbance;\n\n\t\t#if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION\n\t\t\tvec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0);\n\t\t\tvec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos;\n\t\t\tvec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - 0.5, 1e-7);\n\t\t\tfloat linearDistance = length(shiftedPlayerPos);\n\t\t\tfloat shiftedLinearDistance = length(scaledViewPos);\n\n\t\t\tfloat lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0);\n\t\t\tlightFalloff = max(exp(-30.0 * lightFalloff),0.0);\n\t\t\tfloat projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0);\n\n\t\t\tvec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5;\n\n\t\t\tcolor += (flashlightGlow - flashlightGlow * exp(-max(stormDensity,0.005)*dd*dL)) * absorbance;\n\t\t#endif\n\n\t\t//------ LPV FOG EFFECT\n\t\t\t#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT\n\t\t\t\tcolor += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * absorbance;\n\t\t\t#endif\n\t}\n\treturn vec4(color, absorbance);\n}\n\nfloat GetEndFogShadow(vec3 WorldPos, vec3 LightPos){\n\tfloat Shadow = 0.0;\n\n\tfor (int i=0; i < 3; i++){\n\t\tvec3 shadowSamplePos = WorldPos - LightPos * (0.01 + pow(i, 0.75) * 0.25); \n\t\tShadow += fogShape(shadowSamplePos) * END_STORM_DENSITY;\n\t}\n\treturn clamp(exp2(Shadow * -2.0),0.0,1.0);\n}"
  },
  {
    "path": "shaders/lib/entities.glsl",
    "content": "#define ENTITY_PLAYER 1601\n#define ENTITY_LIGHTNING 1602\n#define ENTITY_BLAZE 1603\n#define ENTITY_DRAGON_WITHER 1604\n#define ENTITY_END_CRYSTAL 1605\n#define ENTITY_GLOW_SQUID 1606\n#define ENTITY_ITEM_FRAME 1607\n#define ENTITY_MAGMA_CUBE 1608\n#define ENTITY_TNT 1609\n#define ENTITY_FIREBALL_SMALL 1610\n#define ENTITY_SPECTRAL_ARROW 1611\n#define ENTITY_SSS_MEDIUM 1801\n#define ENTITY_SSS_WEAK 1802\n#define ENTITY_SLIME 1803\n"
  },
  {
    "path": "shaders/lib/gameplay_effects.glsl",
    "content": "#ifdef IS_IRIS\n\tuniform float currentPlayerHealth;\n\tuniform float maxPlayerHealth;\n\tuniform float oneHeart;\n\tuniform float threeHeart;\n\n\tuniform float CriticalDamageTaken;\n\tuniform float MinorDamageTaken;\n#else\n\tuniform bool isDead;\n#endif\n\nuniform float exitWater;\nuniform float enterWater;\nuniform float onFire;\n// uniform float exitPowderSnow;\nuniform int isEyeInWater;\nuniform float rainyAreas;\nuniform float smoothBiome_Dry;\n\nuniform ivec2 eyeBrightness;\n\n// uniform float currentPlayerHunger;\n// uniform float maxPlayerHunger;\n\n// uniform float currentPlayerArmor;\n// uniform float maxPlayerArmor;\n\n// uniform float currentPlayerAir;\n// uniform float maxPlayerAir;\n\n// uniform bool is_sneaking;\n// uniform bool is_sprinting;\n// uniform bool is_hurt;\n// uniform bool is_invisible;\n// uniform bool is_burning;\n\n// uniform bool is_on_ground;\n// uniform bool isSpectator;\n\nfloat rainExposed = rainStrength * rainyAreas * clamp((eyeBrightness.y/240.0 - 0.9) * 10.0, 0.0, 1.0);\n\nvec3 distortedRain(){\n\tvec2 uv = texcoord;\n\n\tfor (float r = 4.0; r > 0.0; r--) {\n\t\tvec2 gridSize = viewSize * r * 0.015;\n\t\tvec2 p = TAU * uv * gridSize + randNoise(uv * 100.0);\n\t\tvec2 s = sin(p);\n\n\t\tvec2 gridCoord = round(uv * gridSize - 0.25) / gridSize;\n\t\tvec4 dropData = vec4(randNoise(gridCoord * 200.0), randNoise(gridCoord));\n\n\t\tfloat timeFactor = max(0.0, 1.0 - fract(frameTimeCounter * (dropData.b + 0.1) + dropData.g) * 5.0);\n\t\tfloat dropShape = (s.x + s.y) * timeFactor * rainExposed * (1.0 -exitWater) * (1.0 -exitWater);\n\n\t\tif (dropData.r < (5.0 - r) * 0.08 && dropShape > 0.5) {\n\t\t\tvec3 normal = normalize(-vec3(cos(p), mix(0.2, 2.0, dropShape - 0.5)));\n\t\t\tvec2 refractedUV = uv - normal.xy * 0.6;\n\t\t\treturn texture2D(colortex7, refractedUV).rgb * 0.5;\n\t\t}\n\t}\n\treturn vec3(0.0);\n}\n\nfloat distortionBase(float c, float t){\n\tvec2 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));\n\tvec2 UV = zoomin * vec2(aspectRatio, 1.0);\n\treturn texture2D(noisetex, UV * 0.5 - vec2(0.0, t)).b * clamp(-texcoord.y * 0.3 + 0.3, 0.0, 1.0) * c;\n}\n\nvoid applyGameplayEffects(inout vec3 color, in vec2 texcoord, float noise){\n\n\t// detect when health is zero\n\t#ifdef IS_IRIS\n\t\tbool isDead = currentPlayerHealth * maxPlayerHealth <= 0.0 && currentPlayerHealth > -1;\n\t#else\n\t\tfloat oneHeart = 0.0;\n\t\tfloat threeHeart = 0.0;\n\t#endif\n\n\tfloat distortmask = 0.0;\n\tfloat vignette = sqrt(clamp(dot(texcoord*2.0 - 1.0, texcoord*2.0 - 1.0) * 0.5, 0.0, 1.0));\n\n//////////////////////// DAMAGE DISTORTION /////////////////////\n\t#if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT   \n\t\tfloat heartBeat = pow(sin(frameTimeCounter * 15) * 0.5 + 0.5,2.0) * 0.2 + 0.1;\n        \n\t\t// apply low health distortion effects\n\t\tfloat damageDistortion = vignette * noise * heartBeat * threeHeart;\n        \n\t\t// apply critical hit distortion effect\n\t\tdamageDistortion = mix(damageDistortion, vignette * (0.5 + noise), CriticalDamageTaken) * MOTION_AMOUNT;\n        \n\t\t// apply death distortion effect\n\t\tdistortmask = isDead ? vignette * (0.7 + noise*0.3) : damageDistortion;\n\t#endif\n\n//////////////////////// WATER DISTORTION /////////////////////\n\t#ifdef WATER_ON_CAMERA_EFFECT\n\t\tif(exitWater > 0.0){\n\t\t\tvec3 scale = vec3(1.0,1.0,0.0);\n\n\t\t\tscale.xy = (isEyeInWater == 1 ? vec2(0.3) : vec2(0.5 * aspectRatio, 0.25 + (exitWater * exitWater) * 0.25));\n\t\t\tscale.z = isEyeInWater == 1 ? 0.0 : exitWater;\n\n\t\t\tfloat waterDrops = texture2D(noisetex, (texcoord - vec2(0.0, scale.z)) * scale.xy).r ;\n\t\t\twaterDrops = isEyeInWater == 0 ? sqrt(min(max(waterDrops - (1.0 - sqrt(exitWater)) * 0.7,0.0) * (1.0 + exitWater),1.0)) * 0.3 : 0.0;\n\n\t\t\t// apply distortion effects for exiting water and under water\n\t\t\tdistortmask = max(distortmask, waterDrops);\n\n\t\t\tfloat waterDistort = isEyeInWater == 1 ? distortionBase(isEyeInWater, frameTimeCounter * 0.05) * WATER_DISTORTION_AMOUNT : 0.0;\n\t\t\tdistortmask = max(distortmask, waterDistort);\n\t\t}\n    \n\t\tif(enterWater > 0.0){\n\t\t\tvec2 zoomTC = 0.5 + (texcoord - 0.5) * (1.0 - (1.0-sqrt(1.0-enterWater)));\n\t\t\tfloat waterSplash = texture2D(noisetex, zoomTC * vec2(aspectRatio,1.0)).r * DISTORT_EFFECT_AMOUNT * (1.0-enterWater);\n \n\t\t\tdistortmask = max(distortmask, waterSplash);\n\t\t}\n\t#endif\n\n//////////////////////// HEAT DISTORTION /////////////////////\n\t#ifdef ON_FIRE_DISTORT_EFFECT\n\t\tfloat flameDistort = distortionBase(onFire, frameTimeCounter * 0.3) * DISTORT_EFFECT_AMOUNT;\n \n\t\tdistortmask = max(distortmask, flameDistort);\n\t#endif\n\n//////////////////////// APPLY DISTORTION /////////////////////\n\t// all of the distortion will be based around zooming the UV in the center\n\tvec2 zoomUV = 0.5 + (texcoord - 0.5) * (1.0 - distortmask);\n\tvec3 distortedColor = texture2D(colortex7, zoomUV).rgb;\n\n\t#if defined WATER_ON_CAMERA_EFFECT || defined ON_FIRE_DISTORT_EFFECT\n\t\t// apply the distorted water color to the scene, but revert back to before when it ends\n\t\tif(exitWater > 0.01 || onFire > 0.01) color = distortedColor;\n\t#endif\n\n\t#ifdef RAIN_ON_CAMERA_EFFECT\n\t\tif(isEyeInWater == 0) color += distortedRain();\n\t#endif\n\n//////////////////////// APPLY COLOR EFFECTS /////////////////////\n\t#if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT\n\t\tvec3 distortedColorLuma =  vec3(1.0, 0.0, 0.0) * dot(distortedColor, vec3(0.21, 0.72, 0.07));\n   \n\t\t#ifdef LOW_HEALTH_EFFECT\n\t\t\tfloat colorLuma = dot(color, vec3(0.21, 0.72, 0.07));\n\n\t\t\tvec3 LumaRedEdges = mix(vec3(colorLuma), vec3(1.0, 0.3, 0.3) * distortedColorLuma.r, vignette);\n\n\t\t\t// apply color effects for when you are at low health\n\t\t\tcolor = mix(color, LumaRedEdges, mix(vignette * threeHeart, oneHeart, oneHeart));\n\t\t#endif\n\n\t\t#ifdef DAMAGE_TAKEN_EFFECT\n\t\t\tcolor = mix(color, distortedColorLuma, vignette * sqrt(min(MinorDamageTaken,1.0)));\n\t\t\tcolor = mix(color, distortedColorLuma, sqrt(CriticalDamageTaken));\n\t\t#endif\n\n\t\tif(isDead) color = distortedColorLuma * 0.35;\n\t#endif\n}"
  },
  {
    "path": "shaders/lib/hsv.glsl",
    "content": "vec3 RgbToHsv(const in vec3 c) {\n\tconst vec4 K = vec4(0.0, -1.0, 2.0, -3.0) / 3.0;\n\tconst float e = 1.0e-10;\n\n\tvec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n\tvec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n\n\tfloat d = q.x - min(q.w, q.y);\n\treturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n\nvec3 HsvToRgb(const in vec3 c) {\n\tconst vec4 K = vec4(3.0, 2.0, 1.0, 9.0) / 3.0;\n\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n"
  },
  {
    "path": "shaders/lib/indirect_lighting_effects.glsl",
    "content": "uniform float viewWidth;\nuniform float viewHeight;\n\nvec3 cosineHemisphereSample(vec2 Xi){\n\tfloat theta = TAU * Xi.y;\n\n\tfloat r = sqrt(Xi.x);\n\treturn vec3(r * cos(theta), r * sin(theta), sqrt(1.0 - Xi.x));\n}\n\nvec3 TangentToWorld(vec3 N, vec3 H){\n\tvec3 T = normalize(cross(abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0), N));\n\tvec3 B = cross(N, T);\n\n\treturn vec3((T * H.x) + (B * H.y) + (N * H.z));\n}\n\n////////////////////////////////////////////////////////////////\n/////////////////////////////\tSSAO ///////////////////////////\n////////////////////////////////////////////////////////////////\n\nvec4 BilateralUpscale_SSAO(sampler2D tex, sampler2D depth, vec2 coord, float referenceDepth){\n\tivec2 scaling = ivec2(1.0);\n\tivec2 posDepth = ivec2(coord) * scaling;\n\tivec2 posColor = ivec2(coord);\n  \tivec2 pos = ivec2(gl_FragCoord.xy*texelSize + 1);\n\n\tivec2 getRadius[4] = ivec2[](\n   \t \tivec2(-2,-2),\n\t  \tivec2(-2, 0),\n\t\tivec2( 0, 0),\n\t\tivec2( 0,-2)\n  \t);\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat diffThreshold = 0.0005 ;\n\t#else\n\t\tfloat diffThreshold = 0.005;\n\t#endif\n\n\tvec4 RESULT = vec4(0.0);\n\tfloat SUM = 0.0;\n\n\tfor (int i = 0; i < 4; i++) {\n\t\t\n\t\tivec2 radius = getRadius[i];\n\t\t#ifdef DISTANT_HORIZONS\n\t\t\tfloat offsetDepth = sqrt(texelFetch2D(depth, posDepth + radius * scaling + pos * scaling,0).a/65000.0);\n\t\t#else\n\t\t\tfloat offsetDepth = ld(texelFetch2D(depth, posDepth + radius * scaling + pos * scaling, 0).r);\n\t\t#endif\n\n\t\tfloat EDGES = abs(offsetDepth - referenceDepth) < diffThreshold ? 1.0 : 1e-5;\n\t\t\n\t\tRESULT += texelFetch2D(tex, posColor + radius + pos, 0) * EDGES;\n\t\t\n\t\tSUM += EDGES;\n\t}\n\n\t// return vec4(1,1,1,1) * SUM/4;\n\n\treturn RESULT / SUM;\n}\n\n////////////////////////////////////////////////////////////////////\n/////////////////////////////\tRTAO/SSGI ///////////////////////////\n////////////////////////////////////////////////////////////////////\n\nvec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){\n\tfloat biasAmount = 0.0001;\n\tquality *= 5.0;\n\n\tvec3 clipPosition = toClipSpace3(position);\n\tfloat rayLength = ((position.z + dir.z * far * sqrt(3.0)) > -near)\n\t\t? (-near - position.z)/dir.z\n\t\t: far * sqrt(3.0);\n\tvec3 direction = toClipSpace3(position + dir * rayLength) - clipPosition; //convert to clip space\n\n\t//get at which length the ray intersects with the edge of the screen\n\tvec3 maxLengths = (step(0.0, direction) - clipPosition) / direction;\n\tfloat mult = min(min(maxLengths.x, maxLengths.y), maxLengths.z);\n\tvec3 stepv = direction * mult / quality;\n\n\tclipPosition.xy *= RENDER_SCALE;\n\tstepv.xy *= RENDER_SCALE;\n\n\tvec3 spos = clipPosition + stepv * dither;\n\t// spos += stepv*0.3;\n\n\t#if defined DEFERRED_SPECULAR && defined TAA\n\t\tspos.xy += TAA_Offset * texelSize * 0.5/RENDER_SCALE;\n\t#endif\n\n\tfloat minZ = spos.z - biasAmount / linZ(spos.z);\n\tfloat maxZ = spos.z;\n\n\tint maxIterations = int(quality * clamp(1.0 - position.z/far, 0.1, 1.0));\n\tfor(int i = 0; i < maxIterations; i++){\n\t\t#ifdef UseQuarterResDepth\n\t\t\tfloat sampleDepth = sqrt(texelFetch2D(colortex4, ivec2(spos.xy * viewSize/4.0), 0).a/65000.0);\n\t\t#else\n\t\t\tfloat sampleDepth = linZ(texelFetch2D(depthtex1, ivec2(spos.xy * viewSize), 0).r);\n\t\t#endif\n\t\tfloat sp = invLinZ(sampleDepth);\n\n\t\tif((sp < max(minZ, maxZ) && sp > min(minZ, maxZ))) return vec3(spos.xy/RENDER_SCALE,sp);\n\t\tminZ = maxZ - biasAmount / linZ(spos.z);\n\t\tmaxZ += stepv.z;\n\n\t\tspos += stepv;\n\t}\n\treturn vec3(1.1);\n}\n\nvec3 RT_alternate(vec3 dir, vec3 position, float dither, float quality, bool isLOD, inout float CURVE){\n\n\tvec3 worldpos = mat3(gbufferModelViewInverse) * position;\n\n\tfloat biasamount = 0.00005;\n  \tvec2 screenEdges = 2.0/vec2(viewWidth, viewHeight);\n\n\tfloat dist = 1.0 + 2.0 * length(worldpos)/far; // step length as distance increases\n\tfloat stepSize = dist/10.0;\n\n\tvec3 clipPosition = toClipSpace3(position);\n\tfloat rayLength = ((position.z + dir.z * far * sqrt(3.0)) > -sqrt(3.0) * near)\n\t\t? (-sqrt(3.0) * near - position.z)/dir.z\n\t\t: sqrt(3.0) * far;\n\tvec3 end = toClipSpace3(position + dir * rayLength) ;\n\tvec3 direction = end - clipPosition ; //convert to clip space\n\n\tfloat len = max(abs(direction.x) * viewSize.x, abs(direction.y) * viewSize.y) * stepSize;\n\n\t//get at which length the ray intersects with the edge of the screen\n\tvec3 maxLengths = (step(0.0,direction)-clipPosition)/direction;\n\tfloat mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z) * 2000.0;\n\n\tvec3 stepv = direction/len;\n\n\tint iterations = int(min(min(len, mult * len) - 2.0, quality));\n\n\tclipPosition.xy *= RENDER_SCALE;\n\tstepv.xy *= RENDER_SCALE;\n\n\tvec3 spos = clipPosition + stepv * dither;\n\tspos += stepv * 0.3;\n\tspos.xy += TAA_Offset * texelSize * 0.5 * RENDER_SCALE;\n\n\tfloat minZ = spos.z - biasamount / linZ(spos.z);\n\tfloat maxZ = spos.z;\n\tCURVE = 0.0; \n\n  \tfor(int i = 0; i < iterations; i++) {\n\t\tspos.xy = clamp(spos.xy,screenEdges,1.0-screenEdges);\n\t\tif (any(lessThan(spos, vec3(0.0))) || any(greaterThan(spos, vec3(1.0)))) return vec3(1.1);\n\n\t\t#ifdef UseQuarterResDepth\n\t\t\tfloat sp = invLinZ(sqrt(texelFetch2D(colortex4, ivec2(spos.xy * viewSize/4),0).w/65000.0));\n\t\t#else\n\t\t\tfloat sp = texelFetch2D(depthtex1, ivec2(spos.xy * viewSize),0).r;\n\t\t#endif\n\n\t\tfloat currZ = linZ(spos.z);\n\t\tfloat nextZ = linZ(sp);\n\n\t\tif(nextZ < currZ && (sp <= max(minZ, maxZ) && sp >= min(minZ, maxZ))) return vec3(spos.xy/RENDER_SCALE, sp);\n\t\t\n\t\tminZ = maxZ - biasamount/currZ;\n\t\tmaxZ += stepv.z;\n\n\t\tspos += stepv;\n\n\t\tCURVE += 1.0/float(iterations);\n\t}\n\treturn vec3(1.1);\n}\n\nvec3 ApplySSRT(\n\tin vec3 unchangedIndirect,\n\tin vec3 blockLightColor,\n\tin vec3 minimumLightColor,\n\n\tvec3 viewPos,\n\tvec3 normal,\n\tvec3 noise,\n\n\tfloat lightmap, \n\n\tbool isGrass,\n\tbool isLOD\n\t){\n\tint nrays = RAY_COUNT;\n\n\tvec3 radiance = vec3(0.0);\n\tvec3 occlusion = vec3(0.0);\n\tvec3 skycontribution = vec3(0.0);\n\n\tfloat CURVE = 1.0;\n\tvec3 bouncedLight = vec3(0.0);\n\n\tfor (int i = 0; i < nrays; i++) {\n\t\tint seed = (frameCounter%40000)*nrays+i;\n\t\tvec2 ij = fract(R2_samples(seed) + noise.xy);\n\t\tlowp vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij)));\n\n\t\t#if indirect_RTGI == 0 || indirect_RTGI == 1\n\t\t\tvec3 rayHit = RT_alternate(mat3(gbufferModelView) * rayDir, viewPos, noise.z, RT_ITERATION, isLOD, CURVE); // choc sspt \n\n\t\t\tCURVE = 1.0 - pow(1.0-pow(1.0 - CURVE, 2.0), 5.0);\n\t\t\tCURVE = mix(CURVE, 1.0, clamp(length(viewPos.z)/far, 0.0, 1.0));\n\t\t#elif indirect_RTGI == 2\n\t\t\tvec3 rayHit = rayTrace_GI(mat3(gbufferModelView) * rayDir, viewPos, noise.z, RT_ITERATION); // ssr rt\n\t\t#endif\n\n\t\t#ifdef OVERWORLD_SHADER\n\t\t\t#if indirect_RTGI == 0\n\t\t\t\tskycontribution = unchangedIndirect * (max(rayDir.y, pow(1.0-lightmap, 2.0)) * 0.95 + 0.05);\n\t\t\t#else\n\t\t\t\tskycontribution = doIndirectLighting(skyCloudsFromTex(rayDir, colortex4).rgb/1200.0, minimumLightColor, lightmap);\n\t\t\t\tskycontribution = mix(skycontribution, vec3(luma(skycontribution)), 0.25) + blockLightColor;\n\t\t\t#endif\n\t\t#else\n\t\t\tskycontribution = volumetricsFromTex(rayDir, colortex4, 6).rgb/1200.0 + blockLightColor;\n\t\t#endif\n\n\t\tradiance += skycontribution;\n\n\t\tif (rayHit.z < 1.0){\n\t\t\t#if indirect_RTGI == 1 || indirect_RTGI == 2\n\t\t\t\tvec3 previousPosition = toPreviousPos(toScreenSpace(rayHit));\n\t\t\t\tpreviousPosition = toClipSpace3Prev(previousPosition);\n\n\t\t\t\tpreviousPosition.xy = clamp(previousPosition.xy, 0.0, 1.0);\n\t\t\t\tbouncedLight = texture2D(colortex5, previousPosition.xy).rgb;\n\t\t\t#endif\n\n\t\t\tradiance += bouncedLight * GI_Strength;\n\n\t\t\tocclusion += skycontribution * CURVE;\n\t\t}\n\t}\n\treturn max((radiance - occlusion)/nrays,0.0);\n}"
  },
  {
    "path": "shaders/lib/items.glsl",
    "content": "#define ITEM_AMETHYST_BUD_SMALL 1000\n#define ITEM_AMETHYST_BUD_MEDIUM 1001\n#define ITEM_AMETHYST_BUD_LARGE 1002\n#define ITEM_AMETHYST_CLUSTER 1003\n#define ITEM_BEACON 1004\n#define ITEM_BLAZE_ROD 1005\n#define ITEM_END_ROD 1006\n#define ITEM_FROGLIGHT_OCHRE 1007\n#define ITEM_FROGLIGHT_PEARLESCENT 1008\n#define ITEM_FROGLIGHT_VERDANT 1009\n#define ITEM_GLOW_BERRIES 1010\n#define ITEM_GLOW_LICHEN 1011\n#define ITEM_GLOWSTONE 1012\n#define ITEM_GLOWSTONE_DUST 1013\n#define ITEM_JACK_O_LANTERN 1014\n#define ITEM_LANTERN 1015\n#define ITEM_LAVA_BUCKET 1016\n#define ITEM_MAGMA 1017\n#define ITEM_REDSTONE_TORCH 1018\n#define ITEM_SCULK_CATALYST 1019\n#define ITEM_SEA_LANTERN 1020\n#define ITEM_SHROOMLIGHT 1021\n#define ITEM_SOUL_LANTERN 1022\n#define ITEM_SOUL_TORCH 1023\n#define ITEM_TORCH 1024\n#define ITEM_FIREFLY_BUSH 1025"
  },
  {
    "path": "shaders/lib/lensflare.glsl",
    "content": "//Original lens flare code : https://www.shadertoy.com/view/XdfXRX , simplified\r\n\r\nvec3 lensflare(vec2 uv, vec2 pos) {\r\n\tuv -= 0.5;\r\n\tpos -= 0.5;\r\n\tuv.x *= aspectRatio;\r\n\tpos.x *= aspectRatio;\r\n\r\n\tvec2 main = uv - pos;\r\n\r\n\tfloat ang = atan(main.y, main.x);\r\n\tfloat dist = length(main); \r\n\tdist = pow(dist, 0.1);\r\n\tfloat n = texture2D(colortex6, vec2((ang - frameTimeCounter / 9.0) * 0.05, dist * 0.1)).x;\r\n\r\n\tfloat f0 = 1.0 / (length(main) * 16.0 + 1.0) * 0.2;\r\n\tf0 += f0 * (sin((ang + frameTimeCounter / 20.0 + n * 0.4) * 16.0) * 0.1 + dist * 0.1 + 2.0);\r\n\r\n\tvec2 uvd = uv * length(uv) * 4.0;\r\n\tfloat f1r = max(1.0/(1.0 + 16.0 * pow(length(uvd + 0.8 * pos),1.6)), 0.0) * 0.5;\r\n\tfloat f1g = max(1.0/(1.0 + 16.0 * pow(length(uvd + 0.85 * pos),1.6)), 0.0) * 0.46;\r\n\tfloat f1b = max(1.0/(1.0 + 16.0 * pow(length(uvd + 0.9 * pos),1.6)), 0.0) * 0.42;\r\n\r\n\tvec2 uvx = mix(uv,uvd,-0.5);\r\n\tfloat f2r = max(0.02 - pow(length(uvx + 0.4 * pos),1.2), 0.0) * 3.0;\r\n\tfloat f2g = max(0.02 - pow(length(uvx + 0.45 * pos),1.2), 0.0) * 2.5;\r\n\tfloat f2b = max(0.02 - pow(length(uvx + 0.5 * pos),1.2), 0.0) * 1.5;\r\n\r\n\tuvx = mix(uv,uvd,-0.25);\r\n\tfloat f3r = max(0.01 - pow(length(uvx - 0.3 * pos),1.2), 0.0) * 3.0;\r\n\tfloat f3g = max(0.01 - pow(length(uvx - 0.325 * pos),1.2), 0.0) * 2.5;\r\n\tfloat f3b = max(0.01 - pow(length(uvx - 0.35 * pos),1.2), 0.0) * 1.5;\r\n\r\n\tvec3 c = vec3(0.0);\r\n\tc.r += f1r + f2r + f3r;\r\n\tc.g += f1g + f2g + f3g;\r\n\tc.b += f1b + f2b + f3b;\r\n\tc += vec3(f0);\r\n\r\n\t#if colortype == 1\r\n\t\tvec3 sunCol = vec3(sunColorR, sunColorG, sunColorB);\r\n\t#else\r\n\t\tvec3 sunCol = blackbody(Sun_temp);\r\n\t#endif\r\n\treturn c * sunCol;\r\n}\r\n"
  },
  {
    "path": "shaders/lib/lightning_stuff.glsl",
    "content": "uniform vec3 lightningEffect;\n#ifdef IS_IRIS\n\tuniform vec4 lightningBoltPosition;\n#else\n\tvec4 lightningBoltPosition = vec4(0.0, 100.0, 0.0, lightningEffect.x);\n#endif\n\nvec3 Iris_Lightningflash(vec3 feetPlayerPos, vec3 lightningBoltPos, vec3 WorldSpace_normal, inout float Phase){\n\tif(lightningBoltPosition.w > 0.0){\n\t\tvec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y+16, lightningBoltPosition.y+116.0),lightningBoltPosition.z);\n\n\t\t// point light, max distance is ~500 blocks (the maximim entity render distance)\n\t\tfloat lightDistance = 300.0 ;\n\t\tfloat lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0);\n\n\t\t// the light above ^^^ is a linear curve. me no likey. here's an exponential one instead.\n\t\tlightningLight = exp((1.0 - lightningLight) * -10.0);\n\n\t\t// a phase for subsurface scattering.\n\t\tvec3 PhasePos = normalize(feetPlayerPos) + vec3(lightningBoltPosition.x, lightningBoltPosition.y + 60, lightningBoltPosition.z);\n\t\tfloat PhaseOrigin = 1.0 - clamp(dot(normalize(feetPlayerPos), normalize(PhasePos)),0.0,1.0);\n\t\tPhase = exp(sqrt(PhaseOrigin) * -2.0) * 5.0 * lightningLight;\n\n\t\t// good old NdotL. only normals facing towards the lightning bolt origin rise to 1.0\n\t\tfloat NdotL = clamp(dot(LightningPos, -WorldSpace_normal), 0.0, 1.0);\n\n\t\treturn lightningEffect * lightningLight * NdotL;\n\t}else return vec3(0.0);\n}\n\nvec3 Iris_Lightningflash_VLcloud(vec3 feetPlayerPos, vec3 lightningBoltPos){\n\tif(lightningBoltPosition.w > 0.0){\n\t\tvec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y, lightningBoltPosition.y+116.0),lightningBoltPosition.z);\n\n\t\tfloat lightDistance = 400.0;\n\t\tfloat lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0);\n\n\t\tlightningLight = exp((1.0 - lightningLight) * -10.0);\n\n\t\treturn lightningEffect * lightningLight;\n\t}else return vec3(0.0);\n}\n\nvec3 Iris_Lightningflash_VLfog(vec3 feetPlayerPos, vec3 lightningBoltPos){\n\tif(lightningBoltPosition.w > 0.0){\n\t\tif(lightningBoltPosition.w < 1.0) return vec3(0.0);\n\n\t\tvec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y, lightningBoltPosition.y+116.0),lightningBoltPosition.z);\n\n\t\t#ifdef TEST\n\t\t\tfloat lightningLight = max(1.0 - length(LightningPos) / 50, 0.0);\n\t\t\tlightningLight = exp((1.0 - lightningLight) * -15.0) ;\n\t\t#else\n\t\t\tfloat lightDistance = 300.0;\n\t\t\tfloat lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0) ;\n\n\t\t\tlightningLight = exp((1.0 - lightningLight) * -15.0) ;\n\t\t#endif\n\n\t\treturn lightningEffect * lightningLight;\n\t}else return vec3(0.0);\n}\n"
  },
  {
    "path": "shaders/lib/lpv_blocks.glsl",
    "content": "/*\n\tlightColor  3*8=24\n\tlightRange  8=8\n\ttintColor   3*8=24\n\tlightMask   6=8\n*/\n\n#ifdef RENDER_SETUP\n\tlayout(rg32ui) uniform writeonly uimage1D imgBlockData;\n#else\n\tlayout(rg32ui) uniform readonly uimage1D imgBlockData;\n#endif\n"
  },
  {
    "path": "shaders/lib/lpv_buffer.glsl",
    "content": "#ifdef RENDER_SHADOWCOMP\n\tlayout(rgba8) uniform restrict image3D imgLpv1;\n\tlayout(rgba8) uniform restrict image3D imgLpv2;\n#else\n\tlayout(rgba8) uniform readonly image3D imgLpv1;\n\tlayout(rgba8) uniform readonly image3D imgLpv2;\n#endif\n"
  },
  {
    "path": "shaders/lib/lpv_common.glsl",
    "content": "// How far light propagates (block, sky)\nconst vec2 LpvBlockSkyRange = vec2(LPV_BLOCKLIGHT_SCALE, 24.0);\n\nconst uint LpvSize = uint(exp2(LPV_SIZE));\nconst uvec3 LpvSize3 = uvec3(LpvSize);\n\nvec3 GetLpvPosition(const in vec3 playerPos) {\n\tvec3 cameraOffset = fract(cameraPosition);\n\treturn playerPos + cameraOffset + LpvSize3/2u;\n}\n"
  },
  {
    "path": "shaders/lib/lpv_render.glsl",
    "content": "float lpvCurve(float values) {\n\t#ifdef VANILLA_LIGHTMAP_MASK\n\t\treturn sqrt(values);\n\t#else\n\t\treturn values*values;\n\t#endif\n}\n\nvec4 SampleLpvLinear(const in vec3 lpvPos) {\n\tvec3 texcoord = lpvPos / LpvSize3;\n\n\tvec4 lpvSample = (frameCounter % 2) == 0\n\t\t? textureLod(texLpv1, texcoord, 0)\n\t\t: textureLod(texLpv2, texcoord, 0);\n\n\tvec3 hsv = RgbToHsv(lpvSample.rgb);\n\thsv.z = lpvCurve(hsv.b) * LpvBlockSkyRange.x;\n\tlpvSample.rgb = HsvToRgb(hsv);\n    \n\tlpvSample.rgb = clamp(lpvSample.rgb/15.0,0.0,1.0);\n\n\treturn lpvSample;\n}\n\nvec3 GetLpvBlockLight(const in vec4 lpvSample) {\n\treturn lpvSample.rgb * (LPV_BLOCKLIGHT_SCALE/15.0);\n}\n\nfloat GetLpvSkyLight(const in vec4 lpvSample) {\n\tfloat skyLight = clamp(lpvSample.a, 0.0, 1.0);\n\treturn skyLight*skyLight;\n}\n\nvec3 LPV_FOG_ILLUMINATION(in vec3 playerPos, float dd, float dL){\n\tvec3 color = vec3(0.0);\n\n\tvec3 lpvPos = GetLpvPosition(playerPos);\n\n        float fadeLength = 10.0; // in blocks\n        vec3 cubicRadius = clamp(\tmin(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0);\n        float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z;\n\n\tif(LpvFadeF > 0.0){\n\t\tvec3 lighting = SampleLpvLinear(lpvPos).rgb * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0);\n\t\tfloat density = exp(-5.0 * (1.0-length(lighting.xyz)))  * LpvFadeF;\n\n\t\tcolor = lighting - lighting * exp(-density*dd*dL);\n\t}\n\treturn color;\n}"
  },
  {
    "path": "shaders/lib/nether_fog.glsl",
    "content": "float densityAtPosFog(in vec3 pos){\n\tpos /= 16.0;\n\tpos.xz *= 0.5;\n\n\tvec3 p = floor(pos);\n\tvec3 f = fract(pos);\n\n\tf = (f*f) * (3.-2.*f);\n\tvec2 uv =  p.xz + f.xz + p.y * vec2(0.0,192.0);\n\tvec2 coord =  uv * 0.002;\n\tvec2 xy = texture2D(noisetex, coord).yx;\n\treturn mix(xy.r,xy.g, f.y);\n}\n\nfloat cloudVol(in vec3 pos){\n\tvec3 samplePos = pos*vec3(1.0,1./48.,1.0);\n\n\tfloat Wind = pow(max(pos.y-30,0.0) / 15.0,2.1);\n\n\tfloat Plumes = texture2D(noisetex, (samplePos.xz + Wind)/256.0).b;\n\tfloat floorPlumes = clamp(0.3 - exp(Plumes * -6),0,1);\n\tPlumes *= Plumes;\n\n\tfloat Erosion = densityAtPosFog(samplePos * 400\t- frameTimeCounter*10 - Wind*10) *0.7+0.3 ;\n\n\tfloat RoofToFloorDensityFalloff = exp(max(100-pos.y,0.0) / -15);\n\tfloat FloorDensityFalloff = pow(exp(max(pos.y-31,0.0) / -3.0),2);\n\tfloat RoofDensityFalloff = exp(max(120-pos.y,0.0) / -10);\n\n\tfloat Output = max((RoofToFloorDensityFalloff - Plumes * (1.0-Erosion)) * 2.0,\tclamp((FloorDensityFalloff - floorPlumes*0.5) * Erosion ,0.0,1.0));\n\n\treturn Output;\n}\n\nvec4 GetVolumetricFog(\n\tvec3 viewPosition,\n\tfloat dither,\n\tfloat dither2\n){\n\t#ifndef TOGGLE_VL_FOG\n\t\treturn vec4(0.0,0.0,0.0,1.0);\n\t#endif\n\n\t/// -------------  RAYMARCHING STUFF ------------- \\\\\\\n\n\tint SAMPLECOUNT = 16;\n\n\tvec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz;\n\tvec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz);\n\tvec3 progressW = vec3(0.0);\n\n\tfloat maxLength = min(length(dVWorld), far)/length(dVWorld);\n\n\tdVWorld *= maxLength;\n\n\tfloat dL = length(dVWorld);\n\n\tfloat expFactor = 11.0;\n\t\n\t/// -------------  COLOR/LIGHTING STUFF ------------- \\\\\\\n\n\tvec3 color = vec3(0.0);\n\tfloat absorbance = 1.0;\n\n\tvec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.25;\n\n\t#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT\n    \tfloat TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0;\n\t#endif\n\n\tfor (int i = 0; i < SAMPLECOUNT; i++) {\n\t\tfloat d = (pow(expFactor, float(i+dither2)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\n\t\tfloat dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);\n\n\t\tprogressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld;\n\n\t\tfloat densityVol = cloudVol(progressW);\n\n\t\t//------ PLUME EFFECT\n\t\t\tfloat 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);\n\t\t\tfloat plumeVolumeCoeff = exp(-plumeDensity*dd*dL);\n\n\t\t\tvec3 lighting = vec3(NETHER_PLUME_R, NETHER_PLUME_G, NETHER_PLUME_B) * exp(-15.0*densityVol);\n\n\t\t\tcolor += (lighting - lighting * plumeVolumeCoeff) * absorbance;\n\t\t\tabsorbance *= plumeVolumeCoeff;\n\n\t\t//------ HAZE EFFECT\n\t\t\t// dont make haze contrube to absorbance.\n\t\t\tfloat hazeDensity = 0.001;\n\t\t\tfloat hazeVolumeCoeff = exp(-hazeDensity*dd*dL);\n\t\t\t\n\t\t\tvec3 hazeLighting = hazeColor;\n\t\t\t\n\t\t\tcolor += (hazeLighting - hazeLighting*hazeVolumeCoeff) * absorbance;\n\n\t\t//------ CEILING SMOKE EFFECT\n\t\t\tfloat ceilingSmokeDensity = 0.001 * pow(min(max(progressW.y-40.0,0.0)/50.0,1.0),3.0);\n\t\t\tfloat ceilingSmokeVolumeCoeff = exp(-ceilingSmokeDensity*dd*dL);\n\t\t\t\n\t\t\tvec3 ceilingSmoke = vec3(0.1);\n\n\t\t\tcolor += (ceilingSmoke - ceilingSmoke*ceilingSmokeVolumeCoeff) * (absorbance*0.5+0.5);\n\t\t\tabsorbance *= ceilingSmokeVolumeCoeff;\n\n\t\t\t#if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION\n\t\t\t\tvec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0);\n\t\t\t\tvec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos;\n\t\t\t\tvec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - 0.5, 1e-7);\n\t\t\t\tfloat linearDistance = length(shiftedPlayerPos);\n\t\t\t\tfloat shiftedLinearDistance = length(scaledViewPos);\n\n\t\t\t\tfloat lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0);\n\t\t\t\tlightFalloff = max(exp(-30.0 * lightFalloff),0.0);\n\t\t\t\tfloat projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0);\n\n\t\t\t\tvec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5;\n\n\t\t\t\tcolor += (flashlightGlow - flashlightGlow * exp(-max(plumeDensity,0.005)*dd*dL)) * absorbance;\n\t\t\t#endif\n\n\t\t//------ LPV FOG EFFECT\n\t\t\t#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT\n\t\t\t\tcolor += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * absorbance;\n\t\t\t#endif\n\t}\n\treturn vec4(color, absorbance);\n}"
  },
  {
    "path": "shaders/lib/oceans.glsl",
    "content": "// THIS FILE IS PUBLIC DOMAIN SO USE IT HOWEVER YOU WANT!\r\n// to make it compatible with your shaderpack use:\r\n#define PHYSICS_OCEAN_SUPPORT\r\n// at the top of your file. When used my mod no longer injects code into\r\n// your shaderpack. It replaces this define statement (before compilation) with\r\n#define PHYSICS_OCEAN\r\n// so you can use\r\n#ifdef PHYSICS_OCEAN\r\n#endif\r\n\r\n// #ifdef PhysicsMod_support\r\n// to customize the water for the physics ocean \r\n// just some basic consts for the wave function based on afl_ext's shader https://www.shadertoy.com/view/Xdlczl\r\n// the overall shape must stay consistent because it is also computed on the CPU side\r\n// to offset entities (though a custom CPU integration of your shader is possible by\r\n// contacting me on my discord server https://discord.gg/VsNs9xP)\r\nconst int PHYSICS_ITERATIONS_OFFSET = 13;\r\nconst float PHYSICS_DRAG_MULT = 0.048;\r\nconst float PHYSICS_XZ_SCALE = 0.035;\r\nconst float PHYSICS_TIME_MULTIPLICATOR = 0.45;\r\nconst float PHYSICS_W_DETAIL = 0.75;\r\nconst float PHYSICS_FREQUENCY = 6.0;\r\nconst float PHYSICS_SPEED = 2.0;\r\nconst float PHYSICS_WEIGHT = 0.8;\r\nconst float PHYSICS_FREQUENCY_MULT = 1.18;\r\nconst float PHYSICS_SPEED_MULT = 1.07;\r\nconst float PHYSICS_ITER_INC = 12.0;\r\nconst float PHYSICS_NORMAL_STRENGTH = 0.6;\r\n\r\n// this is the surface detail from the physics options, ranges from 13 to 48 (yeah I know weird)\r\nuniform int physics_iterationsNormal;\r\n// used to offset the 0 point of wave meshes to keep the wave function consistent even\r\n// though the mesh totally changes\r\nuniform vec2 physics_waveOffset;\r\n// used for offsetting the local position to fetch the right pixel of the waviness texture\r\nuniform ivec2 physics_textureOffset;\r\n// time in seconds that can go faster dependent on weather conditions (affected by weather strength)\r\n// multiplier in ocean settings\r\nuniform float physics_gameTime;\r\n// base value is 13 and gets multiplied by wave height in ocean settings\r\nuniform float physics_oceanHeight;\r\n// basic texture to determine how shallow/far away from the shore the water is\r\nuniform sampler2D physics_waviness;\r\n// basic scale for the horizontal size of the waves\r\nuniform float physics_oceanWaveHorizontalScale;\r\n// used to offset the model to know the ripple position\r\nuniform vec3 physics_modelOffset;\r\n// used for offsetting the ripple texture\r\nuniform float physics_rippleRange;\r\n// controlling how much foam generates on the ocean\r\nuniform float physics_foamAmount;\r\n// controlling the opacity of the foam\r\nuniform float physics_foamOpacity;\r\n// texture containing the ripples (basic bump map)\r\nuniform sampler2D physics_ripples;\r\n// foam noise\r\nuniform sampler3D physics_foam;\r\n// just the generic minecraft lightmap, you can remove this and use the one supplied by Optifine/Iris\r\nuniform sampler2D physics_lightmap;\r\n\r\n#if defined PHYSICSMOD_VERTEX\r\n\t// for the vertex shader stage\r\n\tout vec3 physics_localPosition;\r\n\tout float physics_localWaviness;\r\n#endif\r\n\r\n#if defined PHYSICSMOD_FRAGMENT\r\n\t// for the fragment shader stage\r\n\tin vec3 physics_localPosition;\r\n\tin float physics_localWaviness;\r\n#endif\r\n\r\nfloat physics_waveHeight(vec2 position, int iterations, float factor, float time) {\r\n\tposition = (position - physics_waveOffset) * PHYSICS_XZ_SCALE * physics_oceanWaveHorizontalScale;\r\n\tfloat iter = 0.0;\r\n\tfloat frequency = PHYSICS_FREQUENCY;\r\n\tfloat speed = PHYSICS_SPEED;\r\n\tfloat weight = 1.0;\r\n\tfloat height = 0.0;\r\n\tfloat waveSum = 0.0;\r\n\tfloat modifiedTime = time * PHYSICS_TIME_MULTIPLICATOR;\r\n  \r\n\tfor (int i = 0; i < iterations; i++) {\r\n\t\tvec2 direction = vec2(sin(iter), cos(iter));\r\n\t\tfloat x = dot(direction, position) * frequency + modifiedTime * speed;\r\n\t\tfloat wave = exp(sin(x) - 1.0);\r\n\t\tfloat result = wave * cos(x);\r\n\t\tvec2 force = result * weight * direction;\r\n   \r\n\t\tposition -= force * PHYSICS_DRAG_MULT;\r\n\t\theight += wave * weight;\r\n\t\titer += PHYSICS_ITER_INC;\r\n\t\twaveSum += weight;\r\n\t\tweight *= PHYSICS_WEIGHT;\r\n\t\tfrequency *= PHYSICS_FREQUENCY_MULT;\r\n\t\tspeed *= PHYSICS_SPEED_MULT;\r\n\t}\r\n\treturn height / waveSum * physics_oceanHeight * factor - physics_oceanHeight * factor * 0.5;\r\n}\r\n\r\nvec2 physics_waveDirection(vec2 position, int iterations, float time) {\r\n\tposition = (position - physics_waveOffset) * PHYSICS_XZ_SCALE * physics_oceanWaveHorizontalScale;\r\n\tfloat iter = 0.0;\r\n\tfloat frequency = PHYSICS_FREQUENCY;\r\n\tfloat speed = PHYSICS_SPEED;\r\n\tfloat weight = 1.0;\r\n\tfloat waveSum = 0.0;\r\n\tfloat modifiedTime = time * PHYSICS_TIME_MULTIPLICATOR;\r\n\tvec2 dx = vec2(0.0);\r\n\r\n\tfor (int i = 0; i < iterations; i++) {\r\n\t\tvec2 direction = vec2(sin(iter), cos(iter));\r\n\t\tfloat x = dot(direction, position) * frequency + modifiedTime * speed;\r\n\t\tfloat wave = exp(sin(x) - 1.0);\r\n\t\tfloat result = wave * cos(x);\r\n\t\tvec2 force = result * weight * direction;\r\n\r\n\t\tdx += force / pow(weight, PHYSICS_W_DETAIL); \r\n\t\tposition -= force * PHYSICS_DRAG_MULT;\r\n\t\titer += PHYSICS_ITER_INC;\r\n\t\twaveSum += weight;\r\n\t\tweight *= PHYSICS_WEIGHT;\r\n\t\tfrequency *= PHYSICS_FREQUENCY_MULT;\r\n\t\tspeed *= PHYSICS_SPEED_MULT;\r\n\t}\r\n\treturn vec2(dx / pow(waveSum, 1.0 - PHYSICS_W_DETAIL));\r\n}\r\n\r\nvec3 physics_waveNormal(const in vec2 position, const in vec2 direction, const in float factor, const in float time) {\r\n\tfloat oceanHeightFactor = physics_oceanHeight / 13.0;\r\n\tfloat totalFactor = oceanHeightFactor * factor;\r\n\tvec3 waveNormal = normalize(vec3(direction.x * totalFactor, PHYSICS_NORMAL_STRENGTH, direction.y * totalFactor));\r\n\r\n\tvec2 eyePosition = position + physics_modelOffset.xz;\r\n\tvec2 rippleFetch = (eyePosition + vec2(physics_rippleRange)) / (physics_rippleRange * 2.0);\r\n\tvec2 rippleTexelSize = vec2(2.0 / textureSize(physics_ripples, 0).x, 0.0);\r\n\tfloat left = texture(physics_ripples, rippleFetch - rippleTexelSize.xy).r;\r\n\tfloat right = texture(physics_ripples, rippleFetch + rippleTexelSize.xy).r;\r\n\tfloat top = texture(physics_ripples, rippleFetch - rippleTexelSize.yx).r;\r\n\tfloat bottom = texture(physics_ripples, rippleFetch + rippleTexelSize.yx).r;\r\n\tfloat totalEffect = left + right + top + bottom;\r\n\r\n\tfloat normalx = left - right;\r\n\tfloat normalz = top - bottom;\r\n\tvec3 rippleNormal = normalize(vec3(normalx, 1.0, normalz));\r\n\treturn normalize(mix(waveNormal, rippleNormal, pow(totalEffect, 0.5)));\r\n}\r\n\r\nstruct WavePixelData {\r\n\tvec2 direction;\r\n\tvec2 worldPos;\r\n\tvec3 normal;\r\n\tfloat foam;\r\n\tfloat height;\r\n};\r\n\r\nWavePixelData physics_wavePixel(const in vec2 position, const in float factor, const in float iterations, const in float time) {\r\n\tvec2 wavePos = (position.xy - physics_waveOffset) * PHYSICS_XZ_SCALE * physics_oceanWaveHorizontalScale;\r\n\tfloat iter = 0.0;\r\n\tfloat frequency = PHYSICS_FREQUENCY;\r\n\tfloat speed = PHYSICS_SPEED;\r\n\tfloat weight = 1.0;\r\n\tfloat height = 0.0;\r\n\tfloat waveSum = 0.0;\r\n\tfloat modifiedTime = time * PHYSICS_TIME_MULTIPLICATOR;\r\n\tvec2 dx = vec2(0.0);\r\n\r\n\tfor (int i = 0; i < iterations; i++) {\r\n\t\tvec2 direction = vec2(sin(iter), cos(iter));\r\n\t\tfloat x = dot(direction, wavePos) * frequency + modifiedTime * speed;\r\n\t\tfloat wave = exp(sin(x) - 1.0);\r\n\t\tfloat result = wave * cos(x);\r\n\t\tvec2 force = result * weight * direction;\r\n\r\n\t\tdx += force / pow(weight, PHYSICS_W_DETAIL); \r\n\t\twavePos -= force * PHYSICS_DRAG_MULT;\r\n\t\theight += wave * weight;\r\n\t\titer += PHYSICS_ITER_INC;\r\n\t\twaveSum += weight;\r\n\t\tweight *= PHYSICS_WEIGHT;\r\n\t\tfrequency *= PHYSICS_FREQUENCY_MULT;\r\n\t\tspeed *= PHYSICS_SPEED_MULT;\r\n\t}\r\n\r\n\tWavePixelData data;\r\n\tdata.direction = -vec2(dx / pow(waveSum, 1.0 - PHYSICS_W_DETAIL));\r\n\tdata.worldPos = wavePos / physics_oceanWaveHorizontalScale / PHYSICS_XZ_SCALE;\r\n\tdata.height = height / waveSum * physics_oceanHeight * factor - physics_oceanHeight * factor * 0.5;\r\n\r\n\tdata.normal = physics_waveNormal(position, data.direction, factor, time);\r\n\r\n\tfloat waveAmplitude = data.height * pow(max(data.normal.y, 0.0), 4.0);\r\n\tvec2 waterUV = mix(position - physics_waveOffset, data.worldPos, clamp(factor * 2.0, 0.2, 1.0));\r\n\tvec2 s1 = textureLod(physics_foam, vec3(waterUV * 0.26, time / 360.0), 0).rg;\r\n\tvec2 s2 = textureLod(physics_foam, vec3(waterUV * 0.02, time / 360.0 + 0.5), 0).rg;\r\n\tvec2 s3 = textureLod(physics_foam, vec3(waterUV * 0.1, time / 360.0 + 1.0), 0).rg;\r\n\r\n\tfloat waterSurfaceNoise = s1.r * s2.r * s3.r * 2.8 * physics_foamAmount;\r\n\twaveAmplitude = clamp(waveAmplitude * 1.2, 0.0, 1.0);\r\n\twaterSurfaceNoise = (1.0 - waveAmplitude) * waterSurfaceNoise + waveAmplitude * physics_foamAmount;\r\n\r\n\tfloat worleyNoise = 0.2 + 0.8 * s1.g * (1.0 - s2.g);\r\n\tfloat waterFoamMinSmooth = 0.45;\r\n\tfloat waterFoamMaxSmooth = 2.0;\r\n\twaterSurfaceNoise = smoothstep(waterFoamMinSmooth, 1.0, waterSurfaceNoise) * worleyNoise;\r\n\r\n\tdata.foam = clamp(waterFoamMaxSmooth * waterSurfaceNoise * physics_foamOpacity, 0.0, 1.0);\r\n\r\n\treturn data;\r\n}\r\n/*\r\n// VERTEX STAGE\r\nvoid main() {\r\n\t// basic texture to determine how shallow/far away from the shore the water is\r\n\tphysics_localWaviness = texelFetch(physics_waviness, ivec2(gl_Vertex.xz) - physics_textureOffset, 0).r;\r\n\t// transform gl_Vertex (since it is the raw mesh, i.e. not transformed yet)\r\n\tvec4 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);\r\n\t// pass this to the fragment shader to fetch the texture there for per fragment normals\r\n\tphysics_localPosition = finalPosition.xyz;\r\n\r\n\t// now use finalPosition instead of gl_Vertex\r\n}\r\n\r\n// FRAGMENT STAGE\r\nvoid main() {\r\n\tWavePixelData wave = physics_wavePixel(physics_localPosition.xz, physics_localWaviness, physics_iterationsNormal, physics_gameTime);\r\n\r\n\t// access the wave struct data however you want, wave.normal is in world space, wave.foam is the final foam amount\r\n}\r\n*/"
  },
  {
    "path": "shaders/lib/overworld_fog.glsl",
    "content": "uniform float rainyAreas;\n\nfloat densityAtPosFog(in vec3 pos){\n\tpos /= 16.0;\n\tpos.xz *= 0.5;\n\tvec3 p = floor(pos);\n\tvec3 f = fract(pos);\n\tf = (f * f) * (3.0 - 2.0 * f);\n\tvec2 uv = p.xz + f.xz + p.y * vec2(0.0,192.0);\n\tvec2 coord = uv * 0.002;\n\tvec2 xy = texture2D(noisetex, coord).yx;\n\treturn mix(xy.r, xy.g, f.y);\n}\n\nfloat cloudVol(in vec3 pos, float maxDistance){\n\tfloat fogYstart = FOG_START_HEIGHT+3;\n\tvec3 samplePos = pos*vec3(1.0,1.0/24.0,1.0);\n\tvec3 samplePos2 = pos*vec3(1.0,1.0/48.0,1.0);\n\t\n\tfloat uniformFog = 0.0;\n\n\tfloat low_gradientFog = exp2(-0.3 * max(pos.y - fogYstart,0.0));\n\tfloat medium_gradientFog = exp2(-0.15 * max(pos.y - fogYstart,0.0));\n\tfloat high_gradientFog = exp2(-0.06 * max(pos.y - fogYstart,0.0));\n\t\n\tfloat fog_shape = 0.0;\n\tfloat fog_erosion = 0.0;\n\tif(sandStorm < 1.0 && sandStorm_red < 1.0 && snowStorm < 1.0){\n\t\tfog_shape = 1.0 - densityAtPosFog(samplePos * 24.0);\n\t\tfog_erosion = 1.0 - densityAtPosFog(samplePos2 * 200.0 - vec3(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0)*200.0));\n\t}\n\t\n\tfloat 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));\n\tfloat rainyFog = (low_gradientFog * 0.5 + exp2(-0.06 * max(pos.y - fogYstart,0.0))) * rainStrength * rainyAreas * RainFog_amount;\n\t\n\tif(sandStorm > 0.0 || sandStorm_red > 0.0 || snowStorm > 0.0){\n\t\tfloat IntenseFogs = pow(1.0 - densityAtPosFog((samplePos2 - vec3(frameTimeCounter,0,frameTimeCounter)*15.0) * 100.0),2.0) * mix(1.0, high_gradientFog, snowStorm);\n\t\tcloudyFog = mix(cloudyFog, IntenseFogs, sandStorm+sandStorm_red+snowStorm);\n\n\t\tmedium_gradientFog = 1.0;\n\t}\n\n\t// set densities.\n\tvec4 UniformDensity = TOD_Fog_mult * vec4(Morning_Uniform_Fog, Noon_Uniform_Fog, Evening_Uniform_Fog, Night_Uniform_Fog);\n\tvec4 CloudyDensity = TOD_Fog_mult * vec4(Morning_Cloudy_Fog, Noon_Cloudy_Fog, Evening_Cloudy_Fog, Night_Cloudy_Fog);\n\n\t#ifdef PER_BIOME_ENVIRONMENT\n\t\tBiomeFogDensity(UniformDensity, CloudyDensity, maxDistance);\n\t#endif\n\n\tuniformFog = (Morning * UniformDensity.r + Noon * UniformDensity.g + Evening * UniformDensity.b + Night * UniformDensity.a) * medium_gradientFog;\n\tcloudyFog *= Morning * CloudyDensity.r + Noon * CloudyDensity.g + Evening * CloudyDensity.b + Night * CloudyDensity.a;\n\n\treturn uniformFog + cloudyFog + rainyFog;\n}\n\nfloat phaseRayleigh(float cosTheta) {\n\tconst vec2 mul_add = vec2(0.1, 0.28) / acos(-1.0);\n\treturn cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation\n}\n\nfloat fogPhase(float lightPoint){\n\tfloat linear = clamp(-lightPoint*0.5+0.5,0.0,1.0);\n\tfloat linear2 = 1.0 - clamp(lightPoint,0.0,1.0);\n\n\tfloat exponential = exp2(pow(linear,0.3) * -15.0 ) * 1.5;\n\texponential += sqrt(exp2(sqrt(linear) * -12.5));\n\n\t// float exponential = 1.0 / (linear * 10.0 + 0.05);\n\n\treturn exponential;\n}\n\nfloat phaseCloudFog(float x, float g){\n\tfloat gg = g * g;\n\treturn (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14;\n}\n\nuniform ivec2 eyeBrightness;\nvec4 GetVolumetricFog(\n\tin vec3 viewPosition,\n\tin vec3 sunVector,\n\tin vec2 dither,\n\tin vec3 LightColor,\n\tin vec3 AmbientColor,\n\tin vec3 AveragedAmbientColor,\n\tinout float atmosphereAlpha,\n\tinout vec3 sceneColor,\n\tin float cloudPlaneDistance\n){\n\t#ifndef TOGGLE_VL_FOG\n\t\treturn vec4(0.0,0.0,0.0,1.0);\n\t#endif\n\t\n\t/// -------------  RAYMARCHING STUFF ------------- \\\\\\\n\n\tint SAMPLECOUNT = VL_SAMPLES;\n\n\t//project pixel position into projected shadowmap space\n\tvec3 wpos = toWorldSpace(viewPosition);\n\tvec3 fragposition = toShadowSpaceProjected(wpos);\n\n\t//project view origin into projected shadowmap space\n\tvec3 start = toShadowSpaceProjected(toWorldSpace(vec3(0.0)));\n\n\t//rayvector into projected shadow map space\n\t//we can use a projected vector because its orthographic projection\n\t//however we still have to send it to curved shadow map space every step\n\tvec3 dV = fragposition - start;\n\tvec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat maxLength = min(length(dVWorld), dhRenderDistance)/length(dVWorld);\n\t#else\n\t\tfloat maxLength = min(length(dVWorld), far)/length(dVWorld);\n\t#endif\n\t\n\tdV *= maxLength;\n\tdVWorld *= maxLength;\n\n\tfloat dL = length(dVWorld)/8.0;\n\n\tvec3 progress = start.xyz;\n\tvec3 progressW = vec3(0.0);\n\tfloat expFactor = 11.0;\n\n\t/// -------------  COLOR/LIGHTING STUFF ------------- \\\\\\\n\t\n\tvec3 color = vec3(0.0);\n\tvec3 finalAbsorbance = vec3(1.0);\n\n\t// float totalAbsorbance = 1.0;\n\tvec3 totalAbsorbance = vec3(1.0);\n\n\tfloat fogAbsorbance = 1.0;\n\n\tfloat SdotV = dot(mat3(gbufferModelView) * sunVector, normalize(viewPosition));\n\n\t///// ----- fog lighting\n\t//Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx)\n\tfloat sunPhase = fogPhase(SdotV)*5.0;\n\tfloat sunPhase2 = (phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5)) * 5.0;\n\tfloat 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 ;\n\tfloat rayL = phaseRayleigh(SdotV);\n\n\t#if defined EXCLUDE_WRITE_TO_LUT && defined USE_CUSTOM_FOG_LIGHTING_COLORS\n\t\tLightColor = luma(LightColor) * vec3(DIRECTLIGHT_FOG_R,DIRECTLIGHT_FOG_G,DIRECTLIGHT_FOG_B);\n\t\tAmbientColor = luma(AmbientColor) * vec3(INDIRECTLIGHT_FOG_R,INDIRECTLIGHT_FOG_G,INDIRECTLIGHT_FOG_B);\n\t#endif\n\n\tvec3 skyLightPhased = mix(AmbientColor, luma(AmbientColor) * vec3(RAINFOG_R, RAINFOG_G, RAINFOG_B), rainStrength * rainyAreas);\n\tvec3 LightSourcePhased = LightColor;\n\n\tskyLightPhased *= skyPhase;\n\tLightSourcePhased *= sunPhase;\n\n\t#ifdef ambientLight_only\n\t\tLightSourcePhased = vec3(0.0);\n\t#endif\n\n\t#ifdef PER_BIOME_ENVIRONMENT\n\t\tvec3 biomeDirect = LightSourcePhased; \n\t\tvec3 biomeIndirect = skyLightPhased;\n\t\tfloat inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect);\n\t#endif\n\n\t#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT\n    \tfloat TorchBrightness_autoAdjust = mix(1.0, 30.0,  clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0;\n\t#endif\n\n\tfloat inACave = 1.0 - caveDetection;\n\tfloat lightLevelZero = pow(clamp(eyeBrightnessSmooth.y/240.0 ,0.0,1.0),3.0);\n\n\t// SkyLightColor *= lightLevelZero*0.9 + 0.1;\n\tvec3 finalsceneColor = vec3(0.0);\n\n\tfor (int i = 0; i < SAMPLECOUNT; i++) {\n\t\tfloat d = (pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);\n\t\tfloat dd = pow(expFactor, float(i+dither.y)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);\n\n\t\t#ifdef VOLUMETRIC_CLOUDS\n\t\t\t// check if the fog intersects clouds\n \t\t\tif(length(d*dVWorld) > cloudPlaneDistance) break;\n \t\t#endif\n\n\t\tprogress = start.xyz + d*dV;\n\t\tprogressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld;\n\n\t\t//------------------------------------\n\t\t//------ SAMPLE SHADOWS FOR FOG EFFECTS\n\t\t//------------------------------------\n\t\tfloat distortFactor = 1.0;\n\t\t#ifdef DISTORT_SHADOWMAP\n\t\t\tdistortFactor = calcDistort(progress.xy);\n\t\t#endif\n\t\tvec3 shadowPos = vec3(progress.xy*distortFactor, progress.z);\n\n\t\tvec3 sh = vec3(1.0);\n\t\tif (abs(shadowPos.x) < 1.0-0.5/2048. && abs(shadowPos.y) < 1.0-0.5/2048){\n\t\t\tshadowPos = shadowPos*vec3(0.5,0.5,0.5/6.0)+0.5;\n\n\t\t\t#ifdef LPV_SHADOWS\n\t\t\t\tshadowPos.xy *= 0.8;\n\t\t\t#endif\n\n\t\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\t\t\tsh = vec3(shadow2D(shadowtex0, shadowPos).x);\n\n\t\t\t\tif(shadow2D(shadowtex1, shadowPos).x > shadowPos.z && sh.x < 1.0){\n\t\t\t\t\tvec4 translucentShadow = texture2D(shadowcolor0, shadowPos.xy);\n\t\t\t\t\tif(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001);\n\t\t\t\t}\n\t\t\t#else\n\t\t\t\tsh = vec3(shadow2D(shadow, shadowPos).x);\n\t\t\t#endif\n\t\t}\n\n\t\tsh *= getCloudShadow(progressW, sunVector);\n\n\t\t#ifdef PER_BIOME_ENVIRONMENT\n\t\t\tfloat maxDistance = inBiome * min(max(1.0 - length(d*dVWorld.xz)/(32*8),0.0)*2.0,1.0);\n\t\t\tfloat densityVol = cloudVol(progressW, maxDistance) * inACave;\n\t\t#else\n\t\t\tfloat densityVol = cloudVol(progressW, 0.0) * inACave;\n\t\t#endif\n\n\t\t//------------------------------------\n\t\t//------ MAIN FOG EFFECT\n\t\t//------------------------------------\n\t\tfloat fogDensity = densityVol;\n\t\tfloat fogVolumeCoeff = exp(-fogDensity*dd*dL); // this is like beer-lambert law or something\n\n\t\t#ifdef PER_BIOME_ENVIRONMENT\n\t\t\tvec3 indirectLight = mix(skyLightPhased, biomeIndirect, maxDistance);\n\t\t\tvec3 DirectLight = mix(LightSourcePhased, biomeDirect, maxDistance) * sh;\n\t\t#else\n\t\t\tvec3 indirectLight = skyLightPhased;\n\t\t\tvec3 DirectLight = LightSourcePhased * sh;\n\t\t#endif\n\n\t\tvec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz);\n\t\tvec3 lighting = DirectLight + indirectLight;\n\n\t\tcolor += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance;\n\n\t\t#if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION && !defined VL_CLOUDS_DEFERRED\n\t\t\t// vec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0);\n\t\t\t// vec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos;\n\t\t\tvec3 shiftedViewPos;\n\t\t\tvec3 shiftedPlayerPos;\n\t\t\tfloat forwardOffset;\n \n\t\t\t#ifdef VIVECRAFT\n\t\t\t\tif (vivecraftIsVR) {\n\t\t\t\t\tforwardOffset = 0.0;\n\t\t\t\t\tshiftedPlayerPos = (progressW - cameraPosition) + ( vivecraftRelativeMainHandPos);\n\t\t\t\t\tshiftedViewPos = shiftedPlayerPos * mat3(vivecraftRelativeMainHandRot);\n     \t\t\t\t} else\n\t\t\t#endif\n\t\t\t{\n\t\t\t\tforwardOffset = 0.5;\n\t\t\t\tshiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0);\n\t\t\t\tshiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos;\n\t\t\t}\n \n\t\t\tvec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - forwardOffset, 1e-7);\n\t\t\tfloat linearDistance = length(shiftedPlayerPos);\n\t\t\tfloat shiftedLinearDistance = length(scaledViewPos);\n\n\t\t\tfloat lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0);\n\t\t\tlightFalloff = max(exp(-30.0 * lightFalloff),0.0);\n\t\t\tfloat projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0);\n\n\t\t\tvec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5;\n\n\t\t\tcolor += (flashlightGlow - flashlightGlow * exp(-max(fogDensity,0.005)*dd*dL)) * totalAbsorbance;\n\t\t#endif\n\n\t\t// kill fog absorbance when in caves.\n\t\ttotalAbsorbance *= mix(1.0, fogVolumeCoeff, lightLevelZero);\n\n\t\t//------------------------------------\n\t\t//------ ATMOSPHERE HAZE EFFECT\n\t\t//------------------------------------\n\n\t\t// maximum range for atmosphere haze, basically.\n\t\tfloat planetVolume = 1.0 - exp(clamp(1.0 - length(progressW-cameraPosition) / (16 * 150), 0.0, 1.0) * -10);\n\n\t\t// just air\n\t\tvec2 airCoef = (exp2(-max(progressW.y-SEA_LEVEL,0.0) / vec2(8.0e3, 1.2e3) * vec2(6.0, 7.0)) * 192.0 * Haze_amount) * planetVolume;\n\n\t\t// Pbr for air, yolo mix between mie and rayleigh for water droplets\n\t\tvec3 rL = skyRL*(1e-5)*airCoef.x;\n\t\tvec3 m =  mC*(airCoef.y+densityVol*300.0);\n\n\t\t// calculate the atmosphere haze seperately and purely additive to color, do not contribute to absorbtion.\n\t\tvec3 atmosphereVolumeCoeff = exp(-(rL+m)*dd*dL);\n\n\t\tvec3 Atmosphere = (LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m) * (lightLevelZero*0.99 + 0.01)) * inACave;\n\t\tcolor += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6);\n\n\t\t//------------------------------------\n\t\t//------ LPV FOG EFFECT\n\t\t//------------------------------------\n\t\t#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT \n\t\t\tcolor += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * totalAbsorbance;\n\t\t#endif\n\t}\n\treturn vec4(color, totalAbsorbance);\n}"
  },
  {
    "path": "shaders/lib/projections.glsl",
    "content": "uniform mat4 gbufferProjection;\nuniform mat4 gbufferProjectionInverse;\nuniform mat4 gbufferPreviousProjection;\nuniform mat4 gbufferModelView;\nuniform mat4 gbufferModelViewInverse;\nuniform mat4 gbufferPreviousModelView;\nuniform mat4 shadowModelView;\nuniform mat4 shadowModelViewInverse;\nuniform mat4 shadowProjection;\nuniform vec3 cameraPosition;\nuniform vec3 previousCameraPosition;\n\n#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)\n#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz)\n\nvec3 toClipSpace3(vec3 viewSpacePosition) {\n\treturn projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n}\n\nvec3 toClipSpace3Prev(vec3 viewSpacePosition) {\n\treturn projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;\n}\n\nvec4 toClipSpace4(vec3 viewSpacePosition) {\n\treturn vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),1.0);\n}\n\nvec4 toClipSpace4alt(vec3 viewSpacePosition) {\n\treturn vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z);\n}\n\nvec3 toNDC3(vec3 worldPos) {\n\tvec4 pos = vec4(worldPos, 1.0);\n\tpos = gbufferProjection * gbufferModelView * pos;\n\treturn pos.xyz/pos.w;\n}\n\nvec3 toScreenSpace(vec3 p) {\n\tvec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);\n\tvec3 p3 = p * 2. - 1.;\n\tvec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3];\n\treturn fragposition.xyz / fragposition.w;\n}\n\nvec3 toScreenSpaceVector(vec3 p) {\n\tvec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);\n\tvec3 p3 = p * 2. - 1.;\n\tvec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3];\n\treturn normalize(fragposition.xyz);\n}\n\nvec3 toWorldSpace(vec3 p3) {\n\tp3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz;\n\treturn p3;\n}\n\nvec3 toWorldSpaceCamera(vec3 p3) {\n\tp3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz;\n\treturn p3 + cameraPosition;\n}\n\nvec3 toShadowSpace(vec3 p3) {\n\tp3 = mat3(shadowModelViewInverse) * p3 + shadowModelViewInverse[3].xyz;\n\treturn p3;\n}\n\nvec3 toShadowSpaceProjected(vec3 p3) {\n\tp3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz;\n\tp3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz;\n\treturn p3;\n}\n\nvec3 viewToWorld(vec3 viewPos) {\n\tvec4 pos;\n\tpos.xyz = viewPos;\n\tpos.w = 0.0;\n\tpos = gbufferModelViewInverse * pos;\n\treturn pos.xyz;\n}\n\nvec3 worldToView(vec3 worldPos) {\n\tvec4 pos = vec4(worldPos, 0.0);\n\tpos = gbufferModelView * pos;\n\treturn pos.xyz;\n}\n\nvec3 toPreviousPos(vec3 currentPos) {\n\tvec3 pos = mat3(gbufferModelViewInverse) * currentPos + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition;\n\treturn mat3(gbufferPreviousModelView) * pos + gbufferPreviousModelView[3].xyz;\n}"
  },
  {
    "path": "shaders/lib/rainbow.glsl",
    "content": "// Hue generate thanks to Builderb0y.\r\nvec3 smoothHue(float h) {\r\n\tvec3 phaseShift = vec3(0.0, 1.0, 2.0) * (TAU / 3.0);\r\n\tvec3 cosine = cos(h * TAU - phaseShift);\r\n\treturn sqrt(normalize((cosine * 0.5 + 0.5) * (cosine * 0.5 + 0.5)));\r\n}\r\n\r\nvec3 drawRainbow(vec3 playerPos) {\r\n\tfloat rainbowAmount = RAINBOW == 1 ? wetness * (1.0 - rainStrength) : 1.0;\r\n\r\n\t#ifdef DISTANT_HORIZONS\r\n\t\tfloat maxDist = dhFarPlane;\r\n\t#else\r\n\t\tfloat maxDist = 4.0 * far;\r\n\t#endif\r\n\r\n\tfloat rainbowDist = min(maxDist, RAINBOW_DISTANCE);\r\n\tfloat RdotV = dot(-WsunVec, normalize(playerPos));\r\n\r\n\tif (isEyeInWater == 0 && rainbowAmount > 0.0) {\t\t\r\n\t\tvec3 colorBand = vec3(0.0);\r\n\r\n\t\tfloat mainCoord = (RdotV - cos(0.75 - RAINBOW_WIDTH)) / (cos(0.75 + RAINBOW_WIDTH) - cos(0.75 - RAINBOW_WIDTH));\r\n\t\tmainCoord = clamp(mainCoord, 0.0, 1.0);\r\n\r\n\t\tfloat mainFactor = pow(mainCoord, 3.0) * pow(1.0 - mainCoord, 0.5);\r\n\t\tvec3 mainColor = smoothHue(-mainCoord) * mainFactor;\r\n\t\tcolorBand += mainColor;\r\n\r\n\t\tfloat subCoord = (RdotV - cos(1.0 - RAINBOW_WIDTH * 1.5)) / (cos(1.0 + RAINBOW_WIDTH * 1.5) - cos(1.0 - RAINBOW_WIDTH * 1.5));\r\n\t\tsubCoord = clamp(subCoord, 0.0, 1.0);\r\n\r\n\t\tfloat subFactor = pow(subCoord * (1.0 - subCoord), 2.0);\r\n\t\tvec3 subColor = smoothHue(subCoord) * subFactor * 0.2;\r\n\t\tcolorBand += subColor;\r\n\t\tcolorBand *= RAINBOW_STRENGTH;\r\n\r\n\t\tfloat lengthFactor = smoothstep(rainbowDist * 0.9, rainbowDist * 1.1, length(playerPos));\r\n\t\tfloat elevationFade = smoothstep(0.075, 0.1, WsunVec.y);\r\n\t\trainbowAmount *= lengthFactor * elevationFade;\r\n\r\n\t\treturn colorBand * rainbowAmount;\r\n\t}\r\n\treturn vec3(0.0);\r\n}"
  },
  {
    "path": "shaders/lib/res_params.glsl",
    "content": "#ifndef TAA\n\t#undef TAA_UPSCALING\n#endif\n\n#ifdef TAA_UPSCALING\n\t#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]\n\n\t#define RENDER_SCALE vec2(SCALE_FACTOR, SCALE_FACTOR)\n\t#define UPSCALING_SHARPNENING 2.0 - SCALE_FACTOR - SCALE_FACTOR\n#else\n\t#define RENDER_SCALE vec2(1.0, 1.0)\n\t#define UPSCALING_SHARPNENING 0.0\n#endif\n\n#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]"
  },
  {
    "path": "shaders/lib/ripples.glsl",
    "content": "//Original ripple code : https://www.shadertoy.com/view/ldfyzl , optimised\r\n\r\n// Maximum number of cells a ripple can cross.\r\n#define MAX_RADIUS 2\r\n\r\nvec3 drawRipples(vec2 uv, float time) {\r\n\tvec2 p0 = floor(uv);\r\n\tvec2 circles = vec2(0.0);\r\n\tfor (int j = -MAX_RADIUS; j < MAX_RADIUS; ++j) {\r\n\t\tfor (int i = -MAX_RADIUS; i < MAX_RADIUS; ++i) {\r\n\t\t\tvec2 pi = p0 + vec2(i, j);\r\n\t\t\tvec2 rand = simpleRand22(pi);\r\n\t\t\tvec2 p = pi + rand;\r\n\r\n\t\t\tfloat t = fract(0.6 * time + rand.x);\r\n\t\t\tvec2 v = p - uv;\r\n\t\t\tfloat d = length(v) - (float(MAX_RADIUS) + 1.0) * t;\r\n\r\n\t\t\tfloat carrier = cos(6.0 * PI * d);\r\n\t\t\tfloat x = clamp(3.0 * d + 1.0, - 1.0, 1.0); \r\n\t\t\tfloat energy = 1.0 - x * x * (3.0 - 2.0 * abs(x));\r\n\t\t\tfloat decay = (1.0 - t) * (1.0 - t);\r\n\t\t\tif (decay < 0.04) continue;\r\n\r\n\t\t\tcircles += 20.0 * normalize(v) * carrier * energy * decay;\r\n\t\t}\r\n\t}\r\n\tcircles /= float((MAX_RADIUS * 2) * (MAX_RADIUS * 2));\r\n\r\n\tvec3 n = vec3(circles, sqrt(1.0 - dot(circles, circles)));\r\n\treturn n.xzy;\r\n}"
  },
  {
    "path": "shaders/lib/scene_controller.glsl",
    "content": "//=============== DECLARE UNIFORMS BELOW HERE ===============\r\nuniform float Morning;\r\nuniform float Noon;\r\nuniform float Evening;\r\nuniform float Night;\r\n//=============== DECLARE UNIFORMS ABOVE HERE ===============\r\n\r\nvoid applySceneControllerParameters(\r\n\tout float smallCumulusCoverage, out float smallCumulusDensity,\r\n\tout float largeCumulusCoverage, out float largeCumulusDensity,\r\n\tout float altostratusCoverage, out float altostratusDensity,\r\n\tout float fogA, out float fogB\r\n){\r\n\t// these are the default parameters if no \"trigger\" or custom uniform is being used.\r\n\t// do not remove them\r\n\tsmallCumulusCoverage = CloudLayer0_coverage;\r\n\tsmallCumulusDensity = CloudLayer0_density;\r\n\r\n\tlargeCumulusCoverage = CloudLayer1_coverage;\r\n\tlargeCumulusDensity = CloudLayer1_density;\r\n\r\n\taltostratusCoverage = CloudLayer2_coverage;\r\n\taltostratusDensity = CloudLayer2_density;\r\n\r\n\tfogA = 1.0;\r\n\tfogB = 1.0;\r\n\r\n//=============== CONFIGURE CUSTOM SCENE PARAMETERS BELOW HERE ===============\r\n\r\n\t// cloud & fog controlled by daily weather\r\n\t#ifdef Daily_Weather\r\n\t\t#ifdef CHOOSE_RANDOM_WEATHER_PROFILE\r\n\t\t\tint dayCounter = int(clamp(hash11(float(mod(worldDay, 1000))) * 10.0, 0,10));\r\n\t\t#else\r\n\t\t\tint dayCounter = int(mod(worldDay, 10));\r\n\t\t#endif\r\n\r\n\t\t//----------- cloud coverage\r\n\t\tvec3 weatherProfile_cloudCoverage[10] = vec3[](\r\n\t\t\tvec3(DAY0_l0_coverage, DAY0_l1_coverage, DAY0_l2_coverage),\r\n\t\t\tvec3(DAY1_l0_coverage, DAY1_l1_coverage, DAY1_l2_coverage),\r\n\t\t\tvec3(DAY2_l0_coverage, DAY2_l1_coverage, DAY2_l2_coverage),\r\n\t\t\tvec3(DAY3_l0_coverage, DAY3_l1_coverage, DAY3_l2_coverage),\r\n\t\t\tvec3(DAY4_l0_coverage, DAY4_l1_coverage, DAY4_l2_coverage),\r\n\t\t\tvec3(DAY5_l0_coverage, DAY5_l1_coverage, DAY5_l2_coverage),\r\n\t\t\tvec3(DAY6_l0_coverage, DAY6_l1_coverage, DAY6_l2_coverage),\r\n\t\t\tvec3(DAY7_l0_coverage, DAY7_l1_coverage, DAY7_l2_coverage),\r\n\t\t\tvec3(DAY8_l0_coverage, DAY8_l1_coverage, DAY8_l2_coverage),\r\n\t\t\tvec3(DAY9_l0_coverage, DAY9_l1_coverage, DAY9_l2_coverage)\r\n\t\t);\r\n\r\n\t\t//----------- cloud density\r\n\t\tvec3 weatherProfile_cloudDensity[10] = vec3[](\r\n\t\t\tvec3(DAY0_l0_density, DAY0_l1_density, DAY0_l2_density),\r\n\t\t\tvec3(DAY1_l0_density, DAY1_l1_density, DAY1_l2_density),\r\n\t\t\tvec3(DAY2_l0_density, DAY2_l1_density, DAY2_l2_density),\r\n\t\t\tvec3(DAY3_l0_density, DAY3_l1_density, DAY3_l2_density),\r\n\t\t\tvec3(DAY4_l0_density, DAY4_l1_density, DAY4_l2_density),\r\n\t\t\tvec3(DAY5_l0_density, DAY5_l1_density, DAY5_l2_density),\r\n\t\t\tvec3(DAY6_l0_density, DAY6_l1_density, DAY6_l2_density),\r\n\t\t\tvec3(DAY7_l0_density, DAY7_l1_density, DAY7_l2_density),\r\n\t\t\tvec3(DAY8_l0_density, DAY8_l1_density, DAY8_l2_density),\r\n\t\t\tvec3(DAY9_l0_density, DAY9_l1_density, DAY9_l2_density)\r\n\t\t);\r\n\r\n\t\tfor (int i = 0; i < 10; i++) {\r\n\t\t\tweatherProfile_cloudCoverage[i] *= vec3(CloudLayer0_coverage, CloudLayer1_coverage, CloudLayer2_coverage);\r\n\t\t\tweatherProfile_cloudDensity[i] *= vec3(CloudLayer0_density, CloudLayer1_density, CloudLayer2_density);\r\n\t\t}\r\n\r\n\t\tsmallCumulusCoverage = weatherProfile_cloudCoverage[dayCounter].x;\r\n\t\tsmallCumulusDensity = weatherProfile_cloudDensity[dayCounter].x;\r\n\r\n\t\tlargeCumulusCoverage = weatherProfile_cloudCoverage[dayCounter].y;\r\n\t\tlargeCumulusDensity = weatherProfile_cloudDensity[dayCounter].y;\r\n\r\n\t\taltostratusCoverage = weatherProfile_cloudCoverage[dayCounter].z;\r\n\t\taltostratusDensity = weatherProfile_cloudDensity[dayCounter].z;\r\n\r\n\t\t//----------- fog density\r\n\t\tvec2 weatherProfile_fogDensity[10] = vec2[](\r\n\t\t\tvec2(DAY0_ufog_density, DAY0_cfog_density),\r\n\t\t\tvec2(DAY1_ufog_density, DAY1_cfog_density),\r\n\t\t\tvec2(DAY2_ufog_density, DAY2_cfog_density),\r\n\t\t\tvec2(DAY3_ufog_density, DAY3_cfog_density),\r\n\t\t\tvec2(DAY4_ufog_density, DAY4_cfog_density),\r\n\t\t\tvec2(DAY5_ufog_density, DAY5_cfog_density),\r\n\t\t\tvec2(DAY6_ufog_density, DAY6_cfog_density),\r\n\t\t\tvec2(DAY7_ufog_density, DAY7_cfog_density),\r\n\t\t\tvec2(DAY8_ufog_density, DAY8_cfog_density),\r\n\t\t\tvec2(DAY9_ufog_density, DAY9_cfog_density)\r\n\t\t);\r\n\r\n\t\tfogA = weatherProfile_fogDensity[dayCounter].x;\r\n\t\tfogB = weatherProfile_fogDensity[dayCounter].y;\r\n\t#endif\r\n\r\n\t// apply rain scene\r\n\tsmallCumulusCoverage *= 1 + rainStrength * Rain_coverage * 0.5;\r\n\tsmallCumulusDensity *= 1 + rainStrength * 0.5;\r\n\r\n\tlargeCumulusCoverage *=  1 + rainStrength * Rain_coverage * 0.5;\r\n\tlargeCumulusDensity *= 1 + rainStrength * 0.5;\r\n\r\n\taltostratusCoverage *=  1 + rainStrength * Rain_coverage;\r\n\taltostratusDensity *= 1 + rainStrength;\r\n\r\n//=============== CONFIGURE CUSTOM SCENE PARAMETERS ABOVE HERE ===============\r\n}\r\n\r\n// write various parameters within singular pixels of a texture, which is a non-clearing buffer reprojecting the previous frame of itself, onto itself.\r\n// this allows smooth interpolation over time from any old parameter value, to any new parameter value.\r\n\r\n// read in vertex stage of post processing passes (deferred, composite), so it only runs on 4 vertices\r\n// pass to fragment stage for use.\r\n\r\n// the parameters are stored as such:\r\n// smallCumulus = (coverage, density)\r\n// largeCumulus = (coverage, density)\r\n// altostratus = (coverage, density)\r\n// fog = (uniform fog density, cloudy fog density)\r\n// ... and more, eventually\r\n\r\nflat varying struct sceneController {\r\n\tvec2 smallCumulus;\r\n\tvec2 largeCumulus;\r\n\tvec2 altostratus;\r\n\tvec2 fog;\r\n} parameters;\r\n \r\nvec3 writeSceneControllerParameters(\r\n\tvec2 uv,\r\n\tvec2 smallCumulus,\r\n\tvec2 largeCumulus,\r\n\tvec2 altostratus,\r\n\tvec2 fog\r\n){\r\n\t// in colortex4, data is written in a 3x3 pixel area from (1,1) to (3,3)\r\n\t// avoiding use of any variation of (0,0) to avoid weird textture wrapping issues\r\n\t// 4th compnent/alpha is storing 1/4 res depth so i cant store there lol\r\n \r\n\t/* (1,3) */ bool topLeft = uv.x > 1 && uv.x < 2 && uv.y > 3 && uv.y < 4;\r\n\t/* (2,3) */ bool topMiddle = uv.x > 2 && uv.x < 3 && uv.y > 3 && uv.y < 4;\r\n\t// /* (3,3) */ bool topRight = uv.x > 3 && uv.x < 5 && uv.y > 3 && uv.y < 4;\r\n\t// /* (1,2) */ bool middleLeft = uv.x > 1 && uv.x < 2 && uv.y > 2 && uv.y < 3;\r\n\t// /* (2,2) */ bool middleMiddle = uv.x > 2 && uv.x < 3 && uv.y > 2 && uv.y < 3;\r\n\t// /* (3,2) */ bool middleRight = uv.x > 3 && uv.x < 5 && uv.y > 2 && uv.y < 3;\r\n\t// /* (1,1) */ bool bottomLeft = uv.x > 1 && uv.x < 2 && uv.y > 1 && uv.y < 2;\r\n\t// /* (2,1) */ bool bottomMiddle = uv.x > 2 && uv.x < 3 && uv.y > 1 && uv.y < 2;\r\n\t// /* (3,1) */ bool bottomRight = uv.x > 3 && uv.x < 5 && uv.y > 1 && uv.y < 2;\r\n\r\n\tvec3 data = vec3(0.0,0.0,0.0);\r\n\r\n\tif(topLeft) data = vec3(smallCumulus.xy, largeCumulus.x);\r\n\tif(topMiddle) data = vec3(largeCumulus.y, altostratus.xy);\r\n\r\n\t// if(topRight) data = vec4(groundSunColor,fogSunColor.r);\r\n\t// if(middleLeft) data = vec4(groundAmbientColor,fogSunColor.g);\r\n\t// if(middleMiddle) data = vec4(fogAmbientColor,fogSunColor.b);\r\n\t// if(middleRight) data = vec4(cloudSunColor,cloudAmbientColor.r);\r\n\t// if(bottomLeft) data = vec4(cloudAmbientColor.gb,0.0,0.0);\r\n\t// if(bottomMiddle) data = vec4(0.0);\r\n\t// if(bottomRight) data = vec4(0.0);\r\n\r\n\treturn data;\r\n}\r\n \r\nvoid readSceneControllerParameters(\r\n\tsampler2D colortex,\r\n\tout vec2 smallCumulus,\r\n\tout vec2 largeCumulus,\r\n\tout vec2 altostratus,\r\n\tout vec2 fog\r\n){ \r\n\t// in colortex4, read the data stored within the 3 components of the sampled pixels, and pass it to the fragment stage\r\n\t// 4th compnent/alpha is storing 1/4 res depth so i cant store there lol\r\n\tvec3 data1 = texelFetch2D(colortex,ivec2(1,3),0).rgb/150.0;\r\n\tvec3 data2 = texelFetch2D(colortex,ivec2(2,3),0).rgb/150.0;\r\n\r\n\tsmallCumulus = vec2(data1.x,data1.y);\r\n\tlargeCumulus = vec2(data1.z,data2.x);\r\n\taltostratus = vec2(data2.y,data2.z);\r\n\tfog = vec2(0.0);\r\n}"
  },
  {
    "path": "shaders/lib/settings.glsl",
    "content": "#define SHADER_VERSION_LABEL 1.9 // [1.9]\n\n////////////////////////////////////////\n// ----- WATER RELATED SETTINGS ----- //\n////////////////////////////////////////\n\n// #define Vanilla_like_water\n#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]\n#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]\n#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]\n\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#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]\n#define rayMarchSampleCount 2 // [1 2 3 4 6 8 12 16 32 64]\n\n#define FAKE_REFRACTION_AMOUNT 4 // [0 1 2 3 4 5 6 7 8]\n#define FAKE_DISPERSION_AMOUNT 4 // [0 1 2 3 4 5 6 7 8]\n#define REFRACTION_SMUDGE_AMOUNT 0 // [0 1 2 3 4 5 6 7 8]\n\n#define SSR_STEPS 30 // [10 15 20 25 30 35 40 50 100 200 400]\n#define USE_QUARTER_RES_DEPTH\n#define SNELLS_WINDOW\n#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]\n\n#define WATER_SUN_SPECULAR\n#ifndef OVERWORLD_SHADER\n\t#undef WATER_SUN_SPECULAR\n#endif\n\n////////////////////////////////////////\n// ----- PLANT RELATED SETTINGS ----- //\n////////////////////////////////////////\n\n#define WAVY_PLANTS\n// #define RP_MODEL_FIX\n#define WAVY_STRENGTH 1.0 // [0 0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0]\n#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]\n\n#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]\n#define WATER_RIPPLES\n// #define GROUND_RIPPLES\n\n// #define Seasons\n#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]\n#define Start_Season 0 // [0 1 2 3]\n\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n/////////////////////////////////////////////////\n// ----- INDIRECT LIGHT RELATED SETTINGS ----- //\n/////////////////////////////////////////////////\n\n#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]\n#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]\n\n#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]\n#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]\n#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]\n\n#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]\n#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]\n#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]\n#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]\n\n#define Hand_Held_lights\n#define HANDHELD_LIGHT_RANGE 16 // [1 2 4 6 8 12 16 24 32 48 64]\n\n#define indirect_effect 1 // [0 1 2 3]\n#define indirect_RTGI 0 // [0 1 2]\n\n#define AO_in_sunlight\n#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]\n\n#define UseQuarterResDepth\n#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]\n#define RAY_COUNT 4 // [1 2 4 6 8 12 16 24 32 48 64]\n#define RT_ITERATION 8 // [1 2 4 6 8 12 16 24 32 48 64]\n\nconst 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]\n\n// #define EMISSIVE_ORE\n#define EMISSIVE_ORE_RANGE 5 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]\n#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]\n#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]\n#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]\n\n#define FANCY_END_PORTAL\n\n/////////////////////////////////////////\n// ----- SHADOW RELATED SETTINGS ----- //\n/////////////////////////////////////////\n\nconst 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]\n\nconst int shadowMapResolution = 2048; // [512 768 1024 1536 2048 3172 4096 8192]\nconst float shadowDistance = 128; // [16 32 48 64 80 96 128 160 192 256 512 1024 2048 4096 8192]\n\n#define RENDER_ENTITY_SHADOWS\n#define RENDER_PLAYER_SHADOWS\n\n#define SCREENSPACE_CONTACT_SHADOWS\n#define Variable_Penumbra_Shadows\n#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]\n#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]\n#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]\n#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]\n\n#define BASIC_SHADOW_FILTER\n#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]\n#define Stochastic_Transparent_Shadows\n\n#define Glass_Tint\n// #define TRANSLUCENT_COLORED_SHADOWS\n#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t#undef Stochastic_Transparent_Shadows\n#endif\n\n//////////////////////////////////////\n// ----- FOG RELATED SETTINGS ----- //\n//////////////////////////////////////\n\n#define TOGGLE_VL_FOG\n#define VL_SAMPLES 8 // [1 2 4 6 8 12 16 24 32 48 64]\n#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]\n\n#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]\n\n#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]\n#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]\n\n#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]\n#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]\n\n#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]\n#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]\n\n#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]\n#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]\n\n#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]\n#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]\n#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]\n#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]\n\nconst vec3 mC = vec3(fog_coefficientMieR, fog_coefficientMieG, fog_coefficientMieB) * 1e-6;\n\n#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]\n\n#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]\n#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]\n#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]\n\n#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]\n#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]\n\n#define CAVE_FOG\n#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]\n#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]\n#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]\n#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]\n\n#define BorderFog\n#ifndef OVERWORLD_SHADER\n\t#undef BorderFog\n#endif\n\n#define DISTANT_HORIZONS_SUPPORT\n#ifndef DISTANT_HORIZONS_SUPPORT\n\t#undef DISTANT_HORIZONS\n#endif\n\n#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]\n\n//////////////////////////////////////////////////////\n// ----- BIOME SPECIFIC ENVIRONMENTS SETTINGS ----- //\n//////////////////////////////////////////////////////\n\n#define PER_BIOME_ENVIRONMENT\n\n#define SWAMP_ENV\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define JUNGLE_ENV\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define DARKFOREST_ENV\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define SNOWY_ENV\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define DRY_ENV\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define AURORA_SNOWY\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n///////////////////////////////////////////////////\n// ----- LABPBR MATERIALS RELATED SETTINGS ----- //\n///////////////////////////////////////////////////\n\n#define EMISSIVE_TYPE 1 // [0 1 2 3]\n#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]\n#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]\n\n// #define POM\n#define Adaptive_Step_length\n#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]\n#define MAX_ITERATIONS 35 // [5 10 15 20 25 30 35 40 45 50 60 70 80 90 100]\n#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]\n\n#define SUN_SPECULAR_MULT 1 // [0 1 2 3 4 5 6 7 8 9 10]\n#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]\n\n#define MATERIAL_WETNESS_TYPE 0 // [0 1]\n\n#define SSS_TYPE 1 // [0 1 2 3]\n#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]\n// #define MOB_SSS\n// #define MISC_BLOCK_SSS\n#define Ambient_SSS\n#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]\n#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]\n#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]\n#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]\n\n#define Porosity\n#define Puddles\n#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]\n\n#define MATERIAL_AO\n#define MATERIAL_NORMAL_STRENGTH 1 // [1 2 3 4 5 6 7 8 9 10]\n#define RESOURCEPACK_SKY 0 // [0 1 2 3]\n\n//////////////////////////////////////\n// ----- SKY RELATED SETTINGS ----- //\n//////////////////////////////////////\n\n#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]\n\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\nconst vec3 skyRL = vec3(sky_coefficientRayleighR, sky_coefficientRayleighG, sky_coefficientRayleighB);\nconst vec3 skyMie = vec3(sky_coefficientMieR, sky_coefficientMieG, sky_coefficientMieB);\n\n#define colortype 1 // 1 = RGB sliders for sun/moon color. 2 = blackbody. [1 2]\n\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define MOONPHASE_BASED_MOONLIGHT\n\n#define SKY_GROUND\n\n#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]\n#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]\n\n#define SHOOTING_STARS\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#define RAINBOW 1 // [0 1 2]\n#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]\n#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]\n#define RAINBOW_DISTANCE 250 // [50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000]\n\n////////////////////////////////////////\n// ----- CLOUD RELATED SETTINGS ----- //\n////////////////////////////////////////\n\n#define VOLUMETRIC_CLOUDS\n#ifdef VOLUMETRIC_CLOUDS\n\t#ifndef ambientLight_only\n\t\t#define CLOUDS_SHADOWS\n\t#endif\n\t#ifdef CLOUDS_SHADOWS\n\t\t#define VL_CLOUDS_SHADOWS\n\t#endif\n#endif\n\n#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]\n#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]\n#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]\n#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]\n\n#define CloudLayer0\n#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]\n#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]\n#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]\n #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]\n#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]\n\n#define CloudLayer1\n#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]\n#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]\n#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]\n #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]\n#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]\n\n#define CloudLayer2\n#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]\n#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]\n#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]\n#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]\n\n#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]\n\n// #define Daily_Weather\n// #define CHOOSE_RANDOM_WEATHER_PROFILE\n\n#ifdef Daily_Weather\n// DAY 0 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 1 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 2 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 3 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 4 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 5 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 6 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 7 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 8 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n// DAY 9 WEATHER PARAMETERS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#endif\n\n//////////////////////////////////////\n// ----- TAA RELATED SETTINGS ----- //\n//////////////////////////////////////\n\n#define TAA\n// #define RESPONSIVE_TAA\n// #define TAA_UPSCALING\n// #define SCREENSHOT_MODE\n\n#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]\n#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]\n\n/////////////////////////////////////////////////\n// ----- DEPTH OF FIELD RELATED SETTINGS ----- //\n/////////////////////////////////////////////////\n\n#define DOF_QUALITY -1 // [-1 0 1 2 3 4 5]\n#define DOF_ANAMORPHIC_RATIO 1.0 // [0.3 0.6 1.0]\n#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]\n\n#define REMOVE_HAND_BLUR\n//#define FAR_BLUR_ONLY\n#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 ]\n#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 ]\n#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]\n#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]\n\n// #define DOF_JITTER_SHADOW\n#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]\n#define FOCUS_LASER_COLOR 1 // Red, Green, Blue, Pink, Yellow, White [0 1 2 3 4 5]\n\n////////////////////////////////////////////////////////\n// ----- COLOR/POST PROCESSING RELATED SETTINGS ----- //\n////////////////////////////////////////////////////////\n\n#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]\n#define USE_ACES_COLORSPACE_APPROXIMATION\n#define AGX_LOOK 1 // [0 1 2 3]\n\n#define CONTRAST_ADAPTATIVE_SHARPENING\n#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]\n\n#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]\n\n#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]\n\n// #define LUMINANCE_CURVE\n#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]\n#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]\n\n// #define COLOR_GRADING_ENABLED\n#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]\n#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]\n#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]\n#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]\nconst 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));\n\n#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]\n#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]\n#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]\n#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]\nconst 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));\n\n#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]\n#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]\n#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]\n#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]\nconst 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));\n\n#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]\n#define AUTO_EXPOSURE\n#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]\n#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]\n\n#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]\n#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]\n\n#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]\n#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]\n#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]\n#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]\n#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]\n\n// #define AEROCHROME_MODE // Infra-red film colors ^~^\n// #define AEROCHROME_WOOL_ENABLED // Technically wool things should be affected but it affects a lot of builds and stuff\n#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]\nconst vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631), AEROCHROME_PINKNESS);\n// #define CAMERA_GRIDLINES\n\n// #define MOTION_BLUR\n#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]\n\n// #define FISHEYE_EFFECT\n#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]\n\n// #define CHROMATIC_ABERRATION\n#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]\n\n#define VIGNETTE\n#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]\n\n#define LENS_FLARE\n#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]\n\n///////////////////////////////////////////////////////\n// ----- GAMEPLAY POST EFFECT RELATED SETTINGS ----- //\n///////////////////////////////////////////////////////\n\n#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]\n\n#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]\n#define WATER_ON_CAMERA_EFFECT\n#define ON_FIRE_DISTORT_EFFECT\n// #define RAIN_ON_CAMERA_EFFECT\n\n// #define FLASHLIGHT\n#define FLASHLIGHT_SPECULAR\n#define FLASHLIGHT_BOUNCED_INDIRECT\n// #define FLASHLIGHT_FOG_ILLUMINATION\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n#ifdef FLASHLIGHT\n\t#undef Hand_Held_lights\n#else\n\t#undef FLASHLIGHT_SPECULAR\n#endif\n\n/////////////////////////////////////////\n// ----- NETHER RELATED SETTINGS ----- //\n/////////////////////////////////////////\n\n#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]\n#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]\n#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]\n#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]\n\n//////////////////////////////////////\n// ----- END RELATED SETTINGS ----- //\n//////////////////////////////////////\n\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n///////////////////////////////\n// ----- MISC SETTINGS ----- //\n///////////////////////////////\n\n// #define CLOUDS_INTERSECT_TERRAIN\n\n// #define ambientLight_only // THIS IS A DEBUG VIEW. turn the sunlight off. DOES NOT increase performance, the shadows are still working in the background\n// #define WhiteWorld // THIS IS A DEBUG VIEW. uses to see AO easier. used to see fake GI better (green light)\n// #define Compositing_Sky // make the sky some color to make compositing a sky in some photoediting software easier.\n// #define display_LUT\n// #define SSS_view\n// #define BIOME_TINT_WATER\n\n#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]\n\n#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 ]\n\n#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.]\n\n#define LIGHTNING_FLASH // FOR OPTIFINE USERS. some mods change the sky color, which can trigger the lightning flash detection.\n\n#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]\n#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]\n\n#define DENOISE_SSS_AND_SSAO\n\n// #define HYPER_DETAILED_WAVES\n\n// #define DISABLE_ENCHANT_GLINT\n// #define DISABLE_VANILLA_EMISSIVES\n#define PARTICLE_RENDERING_FIX\n\n#define LIGHTING_EFFECTS_BLUR_FILTER\n\n// #define OLD_BLOOM\n// #define BLOOMY_PARTICLES\n// #define LARGE_WAVE_DISPLACEMENT\n\n#define SELECT_BOX\n#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]\n#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]\n#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]\n\n// #define OLD_CAVE_DETECTION\n#define LIGHTLEAKFIX_MODE 1 // [1 2]\n#define FORCE_TRANSLUCENT_GLASS\n\n// #define PLANET_CURVATURE\n#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]\n\n// #define OLD_INDIRECT_SSS\n\n// #define USE_CUSTOM_DIFFUSE_LIGHTING_COLORS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n// #define USE_CUSTOM_CLOUD_LIGHTING_COLORS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n// #define USE_CUSTOM_FOG_LIGHTING_COLORS\n#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]\n#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]\n#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]\n#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]\n#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]\n#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]\n\n// #define USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS\n#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]\n#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]\n#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]\n\n///////////////////////////////////////////\n// ----- DISTANT HORIZONS SETTINGS ----- //\n///////////////////////////////////////////\n\n#define DISTORT_SHADOWMAP\n// #define DISTANT_HORIZONS_SHADOWMAP\n#ifdef DISTANT_HORIZONS_SHADOWMAP\n\t#undef DISTORT_SHADOWMAP\n\t\n\tconst float shadowNearPlane = -1.0;\n\tconst float shadowFarPlane = -1.0;\n#endif\n\n// #define DH_SHADOWPROJECTIONTWEAK\n#define DH_OVERDRAW_PREVENTION\n#define OVERDRAW_MAX_DISTANCE 128 // [0 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256]\n\n#define DH_AMBIENT_OCCLUSION\n#define DH_SUBSURFACE_SCATTERING\n#define DH_SCREENSPACE_REFLECTIONS\n#define DH_TAA_JITTER\n#define DH_NOISE_TEXTURE\n#define NOISE_RESOLUTION 16 // [1 2 3 4 5 6 7 8 12 14 16 24 32 48 64]\n#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]\n#define NOISE_DROPOFF 1024 // [128 256 512 768 1024 1536 2048 3072 4096 8192]\n\n///////////////////////////////////////////\n// ----- FLOODFILL [LPV] SETTINGS ----- //\n///////////////////////////////////////////\n\n// #define LPV_ENABLED\n#define LPV_SIZE 7 // [6 7 8]\n#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]\n#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]\n#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]\n#define LPV_NORMAL_OFFSET\n#define LPV_ENTITY_LIGHTS\n#define LPV_REDSTONE_LIGHTS\n// #define LPV_COLORED_CANDLES\n// #define LPV_VL_FOG_ILLUMINATION\n#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]\n#define LPV_BLOCKLIGHT_SCALE 12 // [1 2 4 6 8 12 16 24 32 48 64 96 128]\n\n// Fix for making nether/end work until next Iris release to fix shadow matrices\n// #define LPV_NOSHADOW_HACK\n\n#define LPV_COLOR_SHADOWS\n#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]\n#define LPV_SHADOWS_LIGHT_COUNT 9 // [1 2 3 4 5 6 7 8 9]\n#define LPV_HAND_SHADOWS\n\n// ruining parts of the effect to make it more like vanilla floodfill\n// #define VANILLA_LIGHTMAP_MASK\n\n////////////////////////////////\n// ----- DEBUG SETTINGS ----- //\n////////////////////////////////\n\n#define debug_OFF 0\n#define debug_SHADOWMAP 1\n#define debug_NORMALS 2\n#define debug_SPECULAR 3\n#define debug_INDIRECT 4\n#define debug_DIRECT 5\n#define debug_VIEW_POSITION 6\n#define debug_DH_WATER_BLENDING 7\n#define debug_FILTERED_STUFF 8\n#define debug_DEPTHTEX0 9\n#define debug_DEPTHTEX1 10\n#define debug_LIGHTS 10\n\n#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]\n// #define ISOLATE_RESOURCEPACK_SKY\n\n#if DEBUG_VIEW == debug_DEPTHTEX0 || DEBUG_VIEW == debug_DEPTHTEX1\n\t#undef TAA\n#endif\n\n//////////////////////////////////////\n// ----- IRIS EXCLUSIVE SETTINGS ----- //\n//////////////////////////////////////\n\n#ifdef IS_IRIS\n\t#define DAMAGE_TAKEN_EFFECT\n\t#define LOW_HEALTH_EFFECT\n\t#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]\n\t#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]\n\t#define TRANSLUCENT_ENTITIES\n#endif\n\n#ifdef LPV_ENABLED\n\t#ifdef IRIS_FEATURE_CUSTOM_IMAGES\n\t\t#define IS_LPV_ENABLED\n\t\t//#define LPV_SHADOWS\n\t#endif\n\tconst float voxelDistance = 64.0;\n#endif\n\n// ----- FIX SETTINGS ----- //\n\n#ifdef CAVE_FOG\n#endif\n#ifdef SWAMP_ENV\n#endif\n#ifdef JUNGLE_ENV\n#endif\n#ifdef DARKFOREST_ENV\n#endif\n#ifdef SNOWY_ENV\n#endif\n#ifdef DRY_ENV\n#endif\n#ifdef RESPONSIVE_TAA\n#endif\n#ifdef DH_TAA_JITTER\n#endif\n#ifdef DH_SCREENSPACE_REFLECTIONS\n#endif\n#ifdef DH_SUBSURFACE_SCATTERING\n#endif\n#ifdef TRANSLUCENT_ENTITIES\n#endif\n#ifdef RENDER_ENTITY_SHADOWS\n#endif\n#if RESOURCEPACK_SKY == 0\n#endif\n#ifdef VANILLA_SUN_AND_MOON\n#endif\n#ifdef LIGHTNING_FLASH\n#endif\n#if SHADER_VERSION_LABEL > 0\n#endif\n#if DH_KNOWN_ISSUES == 0\n#endif\n#ifdef PARTICLE_RENDERING_FIX\n#endif\n#ifdef RENDER_PLAYER_SHADOWS\n#endif\n#ifdef LPV_VL_FOG_ILLUMINATION\n#endif\n#ifdef OLD_CAVE_DETECTION\n#endif\n#ifdef FORCE_TRANSLUCENT_GLASS\n#endif\n#ifdef LOW_HEALTH_EFFECT\n#endif\n#ifdef DAMAGE_TAKEN_EFFECT\n#endif\n#ifdef WATER_ON_CAMERA_EFFECT\n#endif\n#ifdef DEFERRED_SPECULAR\n#endif\n#ifdef if DEFERRED_SSR_QUALITY > -1\n#endif\n#ifdef DEFERRED_BACKGROUND_REFLECTION\n#endif\n#ifdef DEFERRED_ROUGH_REFLECTION\n#endif\n#ifdef FORWARD_SPECULAR\n#endif\n#ifdef if FORWARD_SSR_QUALITY > -1\n#endif\n#ifdef FORWARD_BACKGROUND_REFLECTION\n#endif\n#ifdef FORWARD_ROUGH_REFLECTION\n#endif\n#ifdef FLASHLIGHT\n#endif\n#ifdef FLASHLIGHT_SPECULAR\n#endif\n#ifdef FLASHLIGHT_BOUNCED_INDIRECT\n#endif\n#ifdef FLASHLIGHT_FOG_ILLUMINATION\n#endif\n#ifdef SELECT_BOX\n#endif\n#ifdef USE_CUSTOM_CLOUD_LIGHTING_COLORS\n#endif\n#ifdef USE_CUSTOM_FOG_LIGHTING_COLORS\n#endif\n#ifdef CLOUDS_INTERSECT_TERRAIN\n#endif\n"
  },
  {
    "path": "shaders/lib/sky_gradient.glsl",
    "content": "vec3 drawSun(float cosY, float sunInt,vec3 nsunlight, vec3 inColor){\n\n\t// return nsunlight * min(max(cosY-0.9994,0.0)/(1.0-0.9994),1.0) * 100.0;\n\n\treturn (inColor+nsunlight/0.0008821203*pow(smoothstep(cos(0.0093084168595*3.2),cos(0.0093084168595*1.8),cosY),3.)*0.62);\n}\n\nvec3 drawMoon(vec3 PlayerPos, vec3 WorldSunVec, vec3 Color, inout vec3 occludeStars){\n\n\tfloat Shape = min(max(dot(WorldSunVec,PlayerPos)-0.9994,0.0)/(1.0-0.9994),1.0);//  * clamp(-dot(WorldSunVec,PlayerPos),0,1);\n\t\n\toccludeStars *= max(1.0-Shape*5,0.0);\n\n\treturn Shape * Color * 40.0;\n\t/*\n\tfloat shape2 = pow(exp(Shape * -10),0.15) * 255.0;\n\n\tvec3 sunNormal = vec3(dot(WorldSunVec+PlayerPos, vec3(shape2,0,0)), dot(PlayerPos+WorldSunVec, vec3(0,shape2,0)), -dot(WorldSunVec, PlayerPos) * 15.0);\n\n\t// even has a little tilt approximation haha.... yeah....\n\tvec3[8] phase = vec3[8](\n\t\tvec3(-1.0, -0.5, 1.0),\n\t\tvec3(-1.0, -0.5, 0.35),\n\t\tvec3(-1.0, -0.5, 0.2),\n\t\tvec3(-1.0, -0.5, 0.1),\n\t\tvec3( 1.0,  0.25, -1.0),\n\t\tvec3( 1.0,  0.25, 0.1),\n\t\tvec3( 1.0,  0.25, 0.2),\n\t\tvec3( 1.0,  0.25, 0.35)\n\t);\n\n\tvec3 LightDir = phase[moonPhase];\n\n\treturn 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;\n\t*/\n}\n\nfloat w0(float a){\n\treturn (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0);\n}\n\nfloat w1(float a){\n\treturn (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0);\n}\n\nfloat w2(float a){\n\treturn (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0);\n}\n\nfloat w3(float a){\n\treturn (1.0/6.0)*(a*a*a);\n}\n\nfloat g0(float a){\n\treturn w0(a) + w1(a);\n}\n\nfloat g1(float a){\n\treturn w2(a) + w3(a);\n}\n\nfloat h0(float a){\n\treturn -1.0 + w1(a) / (w0(a) + w1(a));\n}\n\nfloat h1(float a){\n\treturn 1.0 + w3(a) / (w2(a) + w3(a));\n}\n\nvec4 texture2D_bicubic(sampler2D tex, vec2 uv){\n\tvec4 texelSize = vec4(texelSize,1.0/texelSize);\n\tuv = uv*texelSize.zw;\n\tvec2 iuv = floor( uv );\n\tvec2 fuv = fract( uv );\n\n\tfloat g0x = g0(fuv.x);\n\tfloat g1x = g1(fuv.x);\n\tfloat h0x = h0(fuv.x);\n\tfloat h1x = h1(fuv.x);\n\tfloat h0y = h0(fuv.y);\n\tfloat h1y = h1(fuv.y);\n\n\tvec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy;\n\tvec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy;\n\tvec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy;\n\tvec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy;\n\n\treturn g0(fuv.y) * (g0x * texture2D(tex, p0)\n\t\t+ g1x * texture2D(tex, p1))\n\t\t+ g1(fuv.y) * (g0x * texture2D(tex, p2)\n\t\t+ g1x * texture2D(tex, p3));\n}\n\nvec4 texture2D_bicubic_offset(sampler2D tex, vec2 uv, float noise, float scale){\n\tfloat offsets = noise * TAU;\n\tvec2 circleOffsets = vec2(sin(offsets), cos(offsets)) * scale;\n\t\n\t#ifdef SCREENSHOT_MODE\n\t\tcircleOffsets = vec2(0.0);\n\t#endif\n\t\n\tvec4 texelSize = vec4(texelSize,1.0/texelSize);\n\tuv = (uv + texelSize.xy)*texelSize.zw;\n\t\n\tvec2 iuv = floor( uv + circleOffsets );\n\tvec2 fuv = fract( uv + circleOffsets );\n\n\tfloat g0x = g0(fuv.x);\n\tfloat g1x = g1(fuv.x);\n\tfloat h0x = h0(fuv.x);\n\tfloat h1x = h1(fuv.x);\n\tfloat h0y = h0(fuv.y);\n\tfloat h1y = h1(fuv.y);\n\n\tvec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * (texelSize.xy);\n\tvec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * (texelSize.xy);\n\tvec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * (texelSize.xy);\n\tvec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * (texelSize.xy);\n\n\treturn (g0(fuv.y) * (g0x * texture2D(tex, p0)\n\t\t+ g1x * texture2D(tex, p1))\n\t\t+ g1(fuv.y) * (g0x * texture2D(tex, p2)\n\t\t+ g1x * texture2D(tex, p3)));\n}\n\nvec2 sphereToCarte(vec3 dir) {\n\tfloat lonlat = clamp(atan(-dir.x, -dir.z), -PI, PI);\n\treturn vec2(lonlat * (0.5/PI) +0.5, asin(dir.y)*(1.0/PI)+0.5);\n}\n\nvec3 skyFromTex(vec3 pos,sampler2D sampler){\n\n\tvec2 p = sphereToCarte(pos);\n\n\tvec2 clampUV = vec2(1.0);\n\tp = clamp(p*2.0-1.0, -clampUV, clampUV)*0.5+0.5;\n\n\treturn texture2D(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize).rgb;\n}\n\nvec3 skyFromTexLOD(vec3 pos,sampler2D sampler, float LOD){\n\tvec2 p = sphereToCarte(pos);\n\n\treturn texture2DLod(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize,LOD).rgb;\n}\n\nvec4 skyCloudsFromTex(vec3 pos,sampler2D sampler){\n\n\tvec2 p = sphereToCarte(pos);\n\n\tvec2 uv = clamp(p, 0.0, 1.0) * texelSize*256. + vec2(18.5+257.,1.5)*texelSize;\n\n\treturn texture2D(sampler, uv);\n}\n\nvec4 skyCloudsFromTexBLUR(vec3 pos,sampler2D sampler, float scaler){\n\n\tvec2 p = sphereToCarte(pos);\n\tvec2 scaleA = texelSize*256.;\n\tvec2 scaleB = vec2(18.5+257.,1.5)*texelSize;\n\tvec2 posi = p;\n\t\n\tvec2 uv = clamp(posi, 0.0, 1.0)*scaleA + scaleB;\n\n\n\tvec4 color = texture2D(sampler, uv);\n\n\treturn color;\n}\n\nvec4 skyCloudsFromTexLOD(vec3 pos,sampler2D sampler, float roughness){\n\tvec2 p = sphereToCarte(pos);\n\n\troughness = (1-pow(1-roughness,3));\n\n\tfloat Y = min(max(p.y-0.5,0)*50.0,1);\n\tp = mix(p, ((p-0.5) - (p-0.5)*roughness) + 0.5, Y);\n\n\t// p = ((p-0.5) - (p-0.5)*roughness) + 0.5;\n\n\tvec2 clampUV = vec2(1.0);\n\tp = clamp(p*2.0-1.0, -clampUV, clampUV)*0.5+0.5;\n\n\tvec2 uv = p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize;\n\n\treturn texture2D(sampler, uv);\n}\n\nvec4 volumetricsFromTex(vec3 pos,sampler2D sampler, float LOD){\n\tvec2 p = sphereToCarte(pos);\n\n\tp = clamp(p, 0.0, 1.0);\n\n\tvec2 uv = p*texelSize*256. + vec2(256.0 - 256.0*0.12,1.5)*texelSize;\n\n\treturn texture2DLod(sampler, uv, LOD);\n}"
  },
  {
    "path": "shaders/lib/specular.glsl",
    "content": "float invLinZ (float lindepth){\n\treturn -((2.0*near/lindepth)-far-near)/(far-near);\n}\n\nfloat linZ(float depth) {\n\treturn (2.0 * near) / (far + near - depth * (far - near));\n\t// l = (2*n)/(f+n-d(f-n))\n\t// f+n-d(f-n) = 2n/l\n\t// -d(f-n) = ((2n/l)-f-n)\n\t// d = -((2n/l)-f-n)/(f-n)\n}\n\nvoid frisvad(in vec3 n, out vec3 f, out vec3 r) {\n\tif(n.z < -0.9) {\n\t\tf = vec3(0.,-1,0);\n\t\tr = vec3(-1, 0, 0);\n\t} else {\n\t\tfloat a = 1./(1.+n.z);\n\t\tfloat b = -n.x*n.y*a;\n\t\tf = vec3(1. - n.x*n.x*a, b, -n.x) ;\n\t\tr = vec3(b, 1. - n.y*n.y*a , -n.y);\n\t}\n}\n\nmat3 CoordBase(vec3 n){\n\tvec3 x,y;\n\tfrisvad(n,x,y);\n\treturn mat3(x,y,n);\n}\n\nfloat fma(float a,float b,float c){\n\treturn a * b + c;\n}\n\nvec3 SampleVNDFGGX(\n\tvec3 viewerDirection, // Direction pointing towards the viewer, oriented such that +Z corresponds to the surface normal\n\tfloat alpha, // Roughness parameter along X and Y of the distribution\n\tvec2 xy // Pair of uniformly distributed numbers in [0, 1]\n){\n\t// Transform viewer direction to the hemisphere configuration\n\tviewerDirection = normalize(vec3(alpha * 0.5 * viewerDirection.xy, viewerDirection.z));\n\n\t// Sample a reflection direction off the hemisphere\n\tfloat phi = TAU * xy.x;\n\n\tfloat cosTheta = fma(1.0 - xy.y, 1.0 + viewerDirection.z, -viewerDirection.z);\n\tfloat sinTheta = sqrt(1.0 - cosTheta * cosTheta);\n\n\tsinTheta = clamp(sinTheta,0.0,1.0);\n\tcosTheta = clamp(cosTheta,sinTheta*0.5,1.0);\n\n\tvec3 reflected = vec3(vec2(cos(phi), sin(phi)) * sinTheta, cosTheta);\n\n\t// Evaluate halfway direction\n\t// This gives the normal on the hemisphere\n\tvec3 halfway = reflected + viewerDirection;\n\n\t// Transform the halfway direction back to hemiellispoid configuation\n\t// This gives the final sampled normal\n\treturn normalize(vec3(alpha * halfway.xy, halfway.z));\n}\n\nvec3 GGX(vec3 n, vec3 v, vec3 l, float r, vec3 f0, vec3 metalAlbedoTint) {\n\tfloat r2 = max(r * r, 0.0001);\n\n\tvec3 h = normalize(l + v);\n\tfloat HdotL = clamp(dot(h, l), 0.0, 1.0);\n\tfloat NdotH = clamp(dot(n, h), 0.0, 1.0);\n\tfloat NdotL = clamp(dot(n, l), 0.0, 1.0);\n\n\tfloat denom = NdotH * (r2 - 1.0) + 1.0;\n\tdenom *= PI * denom;\n\tfloat D = r2 / denom;\n\n\tvec3 F = (f0 + (1.0 - f0) * exp2((-5.55473 * HdotL-6.98316) * HdotL)) * metalAlbedoTint;\n\tfloat k2 = 0.25 * r2;\n\n\treturn NdotL * D * F / (HdotL * HdotL * (1.0-k2) + k2);\n}\n\nfloat shlickFresnelRoughness(float XdotN, float roughness){\n\n\tfloat shlickFresnel = clamp(1.0 + XdotN,0.0,1.0);\n\n\tfloat curves = exp(-4.0*pow(1.0-(roughness),2.5));\n\tfloat brightness = exp(-3.0*pow(1.0-sqrt(roughness),3.5));\n\n\tshlickFresnel = pow(1.0-pow(1.0-shlickFresnel, mix(1.0, 1.9, curves)),mix(5.0, 2.6, curves));\n\tshlickFresnel = mix(0.0, mix(1.0,0.065,  brightness) , clamp(shlickFresnel,0.0,1.0));\n\n\treturn shlickFresnel;\n}\n\nvec3 rayTraceSpeculars(vec3 dir, vec3 position, float dither, float quality, bool hand, inout float reflectionLength){\n\n\tfloat biasAmount = 0.0001;\n\n\tvec3 clipPosition = toClipSpace3(position);\n\tfloat rayLength = ((position.z + dir.z * far * sqrt(3.0)) > -near)\n\t\t\t\t\t? (-near - position.z) / dir.z\n\t\t\t\t\t: far * sqrt(3.0);\n\tvec3 direction = toClipSpace3(position + dir * rayLength) - clipPosition; //convert to clip space\n\tvec3 reflectedTC = vec3((direction.xy + clipPosition.xy) * RENDER_SCALE, 0.999999);\n\n\t#if FORWARD_SSR_QUALITY == 1\n\t\treturn reflectedTC;\n\t#endif\n\n\t//get at which length the ray intersects with the edge of the screen\n\tvec3 maxLengths = (step(0.0, direction) - clipPosition) / direction;\n\tfloat mult = min(min(maxLengths.x, maxLengths.y), maxLengths.z);\n\n\tvec3 stepv = direction * mult / quality;\n\tclipPosition.xy *= RENDER_SCALE;\n\tstepv.xy *= RENDER_SCALE;\n\n\tvec3 spos = clipPosition + stepv * dither;\n\n\tspos += stepv*0.5 + vec3(0.5*texelSize,0.0); // small offsets to reduce artifacts from precision differences.\n\n\t#if defined DEFERRED_SPECULAR && defined TAA\n\t\tspos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE;\n\t#endif\n\n\tfloat minZ = spos.z - 0.00025 / linZ(spos.z);\n\tfloat maxZ = spos.z;\n\n\tvec3 hitPos = vec3(1.1);\n\n  \tfor (int i = 0; i <= int(quality); i++) {\n\t\t#if DEFERRED_SSR_QUALITY != 1\n\t\t\tif(!hand && (spos.x < 0 || spos.x > 1 || spos.y < 0 || spos.y > 1)) return vec3(1.1);\n\t\t#endif\n\n\t\tfloat sampleDepth = sqrt(texelFetch2D(colortex4, ivec2(spos.xy/texelSize/4.0),0).a/65000.0);\n\t\tfloat sp = invLinZ(sampleDepth);\n\t\n\t\tif(sp < max(minZ, maxZ) && sp > min(minZ, maxZ)) {\n\t\t\thitPos = vec3(spos.xy/RENDER_SCALE, sp);\n\t\t\tbreak;\n\t\t}\n\n\t\tminZ = maxZ - biasAmount / linZ(spos.z);\n\t\tmaxZ += stepv.z;\n\n\t\tspos += stepv;\n\n\t\treflectionLength += 1.0 / quality;\n  \t}\n\n\t#if DEFERRED_SSR_QUALITY == 1\n\t\treturn reflectedTC;\n\t#endif\n\n\tif(hand) return reflectedTC;\n\treturn hitPos;\n}\n\nvec4 screenSpaceReflections(\n\tvec3 reflectedVector,\n\tvec3 viewPos,\n\tfloat noise,\n\n\tbool isHand,\n\tfloat roughness,\n\tinout float backgroundReflectMask\n){\n\tvec4 reflection = vec4(0.0);\n\tfloat reflectionLength = 0.0;\n\n\tfloat quality = 1.0f;\n\t#ifdef FORWARD_SPECULAR\n\t\tquality = float(FORWARD_SSR_QUALITY);\n\t#endif\n\t#ifdef DEFERRED_SPECULAR\n\t\tquality = float(DEFERRED_SSR_QUALITY);\n\t#endif\n\n\tvec3 raytracePos = rayTraceSpeculars(reflectedVector, viewPos, noise, quality, isHand, reflectionLength);\n\tif (raytracePos.z > 1.0) return reflection;\n\n\t// use higher LOD as the reflection goes on, to blur it. this helps denoise a little.\n\n\treflectionLength = min(max(reflectionLength - 0.1, 0.0)/0.9, 1.0);\n\n\tfloat LOD = mix(0.0, 6.0*(1.0-exp(-15.0*sqrt(roughness))), 1.0-pow(1.0-reflectionLength,5.0));\n\n\tvec3 previousPosition = toPreviousPos(toScreenSpace(raytracePos));\n\tpreviousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5;\n\n\tpreviousPosition.xy = clamp(previousPosition.xy, 0.0, 1.0);\n\n\tif(raytracePos.z > 0.99999999) backgroundReflectMask = 1.0;\n\n\t#ifdef OVERWORLD_SHADER \n\t\treflection.a = raytracePos.z > 0.99999999 ? (isHand || isEyeInWater == 1 ? 1.0 : 0.0) : 1.0;\n\t#else\n\t\treflection.a = 1.0;\n\t#endif\n\n\t#ifdef FORWARD_SPECULAR\n\t\t// vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\t\t// vec2 resScale = vec2(1920.,1080.)/clampedRes;\n\t\t// vec2 bloomTileUV = (((previousPosition.xy/texelSize)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.);\n\t\t// reflection.rgb = texture2D(colortex6, bloomTileUV / 4.0).rgb;\n\t\treflection.rgb = texture2D(colortex5, previousPosition.xy).rgb;\n\t#else\n\t\treflection.rgb = texture2DLod(colortex5, previousPosition.xy, LOD).rgb;\n\t#endif\n\n\t// reflection.rgb = vec3(LOD/6);\n\n\t// vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));\n\t// vec2 resScale = vec2(1920.,1080.)/clampedRes;\n\t// vec2 bloomTileUV = (((previousPosition.xy/texelSize)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.);\n\n\t// vec2 bloomTileoffsetUV[6] = vec2[](\n\t// bloomTileUV / 4.,\n\t// bloomTileUV / 8.   + vec2(0.25*resScale.x+2.5*texelSize.x, \t\t.0),\n\t// bloomTileUV / 16.  + vec2(0.375*resScale.x+4.5*texelSize.x, \t.0),\n\t// bloomTileUV / 32.  + vec2(0.4375*resScale.x+6.5*texelSize.x, \t.0),\n\t// bloomTileUV / 64.  + vec2(0.46875*resScale.x+8.5*texelSize.x,  \t.0),\n\t// bloomTileUV / 128. + vec2(0.484375*resScale.x+10.5*texelSize.x,\t.0)\n\t// );\n\t// reflectLength = pow(1-pow(1-reflectLength,2),5) * 6;\n\t// reflectLength = (exp(-4*(1-reflectLength))) * 6;\n\t// Reflections.rgb = texture2D(colortex6, bloomTileoffsetUV[0]).rgb;\n\n\treturn reflection;\n}\n\nfloat getReflectionVisibility(float f0, float roughness){\n\n\t// the goal is to determine if the reflection is even visible. \n\t// if it reaches a point in smoothness or reflectance where it is not visible, allow it to interpolate to diffuse lighting.\n\tfloat thresholdValue = ROUGHNESS_THRESHOLD;\n\n\tif(thresholdValue < 0.01) return 0.0;\n\n\t// the visibility gradient should only happen for dialectric materials. because metal is always shiny i guess or something\n\tfloat dialectrics = max(f0*255.0 - 26.0,0.0)/229.0;\n\tfloat value = 0.35; // so to a value you think is good enough.\n\tfloat thresholdA = min(max( (1.0-dialectrics) - value, 0.0)/value, 1.0);\n\n\t// use perceptual smoothness instead of linear roughness. it just works better i guess\n\tfloat smoothness = 1.0-sqrt(roughness);\n\tvalue = thresholdValue; // this one is typically want you want to scale.\n\tfloat thresholdB = min(max(smoothness - value, 0.0)/value, 1.0);\n\n\t// preserve super smooth reflections. if thresholdB's value is really high, then fully smooth, low f0 materials would be removed (like water).\n\tvalue = 0.1; // super low so only the smoothest of materials are includes.\n\tfloat thresholdC = 1.0-min(max(value - (1.0-smoothness), 0.0)/value, 1.0);\n\n\tfloat visibilityGradient = max(thresholdA*thresholdC - thresholdB,0.0);\n\n\t// a curve to make the gradient look smooth/nonlinear. just preference\n\tvisibilityGradient = 1.0-visibilityGradient;\n\tvisibilityGradient *=visibilityGradient;\n\tvisibilityGradient = 1.0-visibilityGradient;\n\tvisibilityGradient *=visibilityGradient;\n\n\treturn visibilityGradient;\n}\n\n// derived from N and K from labPBR wiki https://shaderlabs.org/wiki/LabPBR_Material_Standard\n// using ((1.0 - N)^2 + K^2) / ((1.0 + N)^2 + K^2)\nvec3 HCM_F0 [8] = vec3[](\n\tvec3(0.531228825312, 0.51235724246, 0.495828545714), // iron\t\n\tvec3(0.944229966045, 0.77610211732, 0.373402004593), // gold\t\t\n\tvec3(0.912298031535, 0.91385063144, 0.919680580954), // Aluminum\n\tvec3(0.55559681715,  0.55453707574, 0.554779427513), // Chrome\n\tvec3(0.925952196272, 0.72090163805, 0.504154241735), // Copper\n\tvec3(0.632483812932, 0.62593707362, 0.641478899539), // Lead\n\tvec3(0.678849234658, 0.64240055565, 0.588409633571), // Platinum\n\tvec3(0.961999998804, 0.94946811207, 0.922115710997) // Silver\n);\n\nvec3 specularReflections(\n\tin vec3 viewPos, // toScreenspace(vec3(screenUV, depth))\n\tin vec3 playerPos, // normalized\n\tin vec3 lightPos, // should be in world space\n\tin vec3 noise, // x = bluenoise y = interleaved gradient noise\n\n\tin vec3 normal, // normals in world space\n\tin float roughness, // red channel of specular texture _S\n\tin float f0, // green channel of specular texture _S\n\tin vec3 albedo, \n\tin vec3 diffuseLighting, \n\tin vec3 lightColor, // should contain the light's color and shadows.\n\n\tin float lightmap, // in anything other than world0, this should be 1.0;\n\tin bool isHand // mask for the hand\n\n\t#ifdef FORWARD_SPECULAR\n\t, bool isWater\n\t, inout float reflectanceForAlpha\n\t#endif\n\n\t,in vec4 flashLight_stuff\n){\n\t#ifdef FORWARD_SPECULAR\n\t\tlightmap = pow(min(max(lightmap-0.6,0.0)*2.5,1.0),2.0);\n\t#else\n\t\tlightmap = clamp((lightmap-0.8)*7.0, 0.0,1.0);\n\t#endif\n\n\troughness = 1.0 - roughness; \n\troughness *= roughness;\n\n\tf0 = f0 == 0.0 ? 0.02 : f0;\n\n\tbool isMetal = f0 > 229.5/255.0;\n\n\t// get reflected vector\n\tmat3 basis = CoordBase(normal);\n\tvec3 viewDir = -playerPos*basis;\n\n\t#if defined FORWARD_ROUGH_REFLECTION || defined DEFERRED_ROUGH_REFLECTION\n\t\tvec3 samplePoints = SampleVNDFGGX(viewDir, roughness, noise.xy);\n\t\tvec3 reflectedVector_L = basis * reflect(-normalize(viewDir), samplePoints);\n\n\t\treflectedVector_L = isHand ? reflect(playerPos, normal) : reflectedVector_L;\n\t#else\n\t\tvec3 reflectedVector_L = reflect(playerPos, normal);\n\t#endif\n\n\tfloat VdotN = dot(-normalize(viewDir), vec3(0.0,0.0,1.0));\n\tfloat shlickFresnel = shlickFresnelRoughness(VdotN, roughness);\n\n\t// F0 <  230 dialectrics\n\t// F0 >= 230 hardcoded metal f0\n\t// F0 == 255 use albedo for f0\n\talbedo = f0 == 1.0 ? sqrt(albedo) : albedo;\n\tvec3 metalAlbedoTint = isMetal ? albedo : vec3(1.0);\n\t// get F0 values for hardcoded metals.\n\tvec3 hardCodedMetalsF0 = f0 == 1.0 ? albedo : HCM_F0[int(clamp(f0*255.0 - 229.5,0.0,7.0))];\n\tvec3 reflectance = isMetal ? hardCodedMetalsF0 : vec3(f0);\n\tvec3 F0 = (reflectance + (1.0-reflectance) * shlickFresnel) * metalAlbedoTint;\n\n\t#ifdef FORWARD_SPECULAR\n\t\treflectanceForAlpha = clamp(dot(F0, vec3(0.3333333)), 0.0,1.0);\n\n\t\t#ifdef SNELLS_WINDOW\n\t\t\tif(isEyeInWater == 1 && isWater){\n\t\t\t\t// emulate how mojang did snells window in vibrant visuals because it works nicely tbh\n\t\t\t\tfloat snellsWindow = min(max(0.54 - clamp(1.0 + VdotN,0,1),0)/0.1,1);\n\t\t\t\tsnellsWindow = 1.0-snellsWindow*snellsWindow;\n\t\t\t\tsnellsWindow *= snellsWindow*snellsWindow;\n\t\t\t\treflectanceForAlpha = f0 + (1.0-f0) * snellsWindow;\n\t\t\t}\n\t\t#endif\n\t#endif\n\n\tvec3 specularReflections = diffuseLighting;\n\n\tfloat reflectionVisibilty = getReflectionVisibility(f0, roughness);\n\n\t#if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION || DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0\n\t\tif(reflectionVisibilty < 1.0){\n\t\t\tfloat backgroundReflectMask = lightmap;\n\n\t\t\t#if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION\n\t\t\t\t#ifndef OVERWORLD_SHADER\n\t\t\t\t\tvec3 backgroundReflection = volumetricsFromTex(reflectedVector_L, colortex4, roughness).rgb / 1200.0;\n\t\t\t\t#else\n\t\t\t\t\tvec3 backgroundReflection = skyCloudsFromTex(reflectedVector_L, colortex4).rgb / 1200.0;\n\n\t\t\t\t\t#ifdef SNELLS_WINDOW\n\t\t\t\t\t\tif(isEyeInWater == 1) backgroundReflection *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * 15.0)*2;\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t#endif\n\n\t\t\t#if DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0\n\t\t\t\tvec4 environmentReflection = screenSpaceReflections(mat3(gbufferModelView) * reflectedVector_L, viewPos, noise.z, isHand, roughness, backgroundReflectMask);\n\t\t\t\t// darkening for metals.\n\t\t\t\tvec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-environmentReflection.a) * (1.0-lightmap) : diffuseLighting;\n\t\t\t#else\n\t\t\t\t// darkening for metals.\n\t\t\t\tvec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-lightmap) : diffuseLighting;\n\t\t\t#endif\n\n\t\t\t// composite all the different reflections together\n\t\t\t#if defined DEFERRED_BACKGROUND_REFLECTION || defined FORWARD_BACKGROUND_REFLECTION\n\t\t\t\tspecularReflections = mix(DarkenedDiffuseLighting, backgroundReflection, backgroundReflectMask);\n\t\t\t#endif\n\n\t\t\t#if DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0\n\t\t\t\tspecularReflections = mix(specularReflections, environmentReflection.rgb, environmentReflection.a);\n\t\t\t#endif\n\n\t\t\tspecularReflections = mix(DarkenedDiffuseLighting, specularReflections, F0);\n\n\t\t\t// lerp back to diffuse lighting if the reflection has not been deemed visible enough\n\t\t\tspecularReflections = mix(specularReflections, diffuseLighting, reflectionVisibilty);\n\t\t}\n\t#endif\n\n\t#if defined OVERWORLD_SHADER || SUN_SPECULAR_MULT > 0\n\t\tvec3 lightSourceReflection = SUN_SPECULAR_MULT * lightColor * GGX(normal, -playerPos, lightPos, roughness, reflectance, metalAlbedoTint);\n\t\tspecularReflections += lightSourceReflection;\n\t#endif\n\n\t#if defined FLASHLIGHT_SPECULAR && (defined DEFERRED_SPECULAR || defined FORWARD_SPECULAR)\n\t\tvec3 flashLightReflection = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * flashLight_stuff.a * GGX(normal, -flashLight_stuff.xyz, -flashLight_stuff.xyz, roughness, reflectance, metalAlbedoTint);\n\t\tspecularReflections += flashLightReflection;\n\t#endif\n\n\treturn specularReflections;\n}"
  },
  {
    "path": "shaders/lib/stars.glsl",
    "content": "//Original star code : https://www.shadertoy.com/view/Md2SR3 , optimised\n//Original shooting star code : https://www.shadertoy.com/view/ttVXDy\n\n///////////////////////////// STAR FIELD /////////////////////////////////\n\n// Convert Noise2d() into a \"star field\" by stomping everthing below fThreshhold to zero.\nfloat NoisyStarField(in vec3 vSamplePos, float fThreshhold){\n\tfloat StarVal = hash13(vSamplePos);\n\tStarVal = clamp(StarVal/(1.0 - fThreshhold) - fThreshhold/(1.0 - fThreshhold), 0.0, 1.0);\n\n\treturn StarVal;\n}\n\n// Stabilize NoisyStarField() by only sampling at integer values.\nfloat StableStarField( in vec3 vSamplePos, float fThreshhold ){\n\t// Linear interpolation between four samples.\n\t// Note: This approach has some visual artifacts.\n\t// There must be a better way to \"anti alias\" the star field.\n\tfloat fractX = fract(vSamplePos.x);\n\tfloat fractY = fract(vSamplePos.y);\n\tvec3 floorSample = floor(vSamplePos.xyz);\n\n\tfloat v1 = NoisyStarField(floorSample, fThreshhold);\n\tfloat v2 = NoisyStarField(floorSample + vec3(0.0, 1.0, 0.0), fThreshhold);\n\tfloat v3 = NoisyStarField(floorSample + vec3(1.0, 0.0, 0.0), fThreshhold);\n\tfloat v4 = NoisyStarField(floorSample + vec3(1.0, 1.0, 0.0), fThreshhold);\n\n\tfloat StarVal = v1 * (1.0 - fractX) * (1.0 - fractY)\n\t\t\t\t+ v2 * (1.0 - fractX ) * fractY\n\t\t\t\t+ v3 * fractX * (1.0 - fractY)\n\t\t\t\t+ v4 * fractX * fractY;\n\n\treturn StarVal;\n}\n\nfloat drawStars(vec3 viewPos){\n\tfloat stars = max(1.0 - StableStarField(viewPos * 300.0 , 1 - 0.1 * STAR_DENSITY), 0.0);\n\treturn exp(stars * -20.0);\n}\n\n///////////////////////////// SHOOTING STAR /////////////////////////////////\n\nfloat distLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 pa = p-a;\n\tvec2 ba = b-a;\n\tfloat t = clamp(dot(pa, ba)/ dot(ba, ba), 0.0, 1.0);\n\treturn length(pa - ba*t);\n}\n\nfloat drawLine(vec2 p, vec2 a, vec2 b) {\n\tfloat d = distLine(p, a, b);\n\tfloat m = smoothstep(SHOOTING_STARS_TRAIL_WIDTH * 0.01, 0.00001, d);\n\tfloat d2 = length(a - b);\n\tm *= smoothstep(1.0, 0.5, d2) + smoothstep(0.04, 0.03, abs(d2 - 0.75));\n\treturn m;\n}\n\nfloat shootingStar(vec2 uv) {\n\tvec2 gv = fract(uv) - 0.5;\n\tvec2 id = floor(uv);\n\n\tfloat h = hash21(id);\n  \n\tif (h > SHOOTING_STARS_FREQUENCY * 0.01) return 0.0;\n\n\tfloat line = drawLine(gv, vec2(0.0, h), vec2(SHOOTING_STARS_TRAIL_LENGTH, h));\n\tfloat trail = smoothstep(SHOOTING_STARS_TRAIL_LENGTH * 1.2, 0.0, gv.x);\n\n\treturn line * trail;\n}\n\nvec3 drawShootingStars(vec3 viewPos) {\n\tvec2 uv = viewPos.xz / viewPos.y;\n\tfloat t = frameTimeCounter * SHOOTING_STARS_SPEED;\n\tuv += vec2(t, 0.0);\n\n\tfloat stars = shootingStar(uv) * SHOOTING_STARS_TRAIL_VISIBILITY;\n\n\treturn vec3(clamp(stars, 0.0, 1.0));\n}"
  },
  {
    "path": "shaders/lib/text.glsl",
    "content": "/*\r\n--------------------------------------------------------------------------------\r\n  GLSL Debug Text Renderer by SixthSurge (updated 2023-04-08)\r\n  Character set based on Monocraft by IdreesInc\r\n  https://github.com/IdreesInc/Monocraft\r\n  With additional characters added by WoMspace\r\n  Usage:\r\n  // Call beginText to initialize the text renderer. You can scale the fragment position to adjust the size of the text\r\n  beginText(ivec2(gl_FragCoord.xy), ivec2(0, viewHeight));\r\n            ^ fragment position     ^ text box position (upper left corner)\r\n  // You can print various data types\r\n  printBool(false);\r\n  printFloat(sqrt(-1.0)); // Prints \"NaN\"\r\n  printInt(42);\r\n  printVec3(skyColor);\r\n  // ...or arbitrarily long strings\r\n  printString((_H, _e, _l, _l, _o, _comma, _space, _w, _o, _r, _l, _d));\r\n  // To start a new line, use\r\n  printLine();\r\n  // You can also configure the text color on the fly\r\n  text.fgCol = vec4(1.0, 0.0, 0.0, 1.0);\r\n  text.bgCol = vec4(0.0, 0.0, 0.0, 1.0);\r\n  // ...as well as the number base and number of decimal places to print\r\n  text.base = 16;\r\n  text.fpPrecision = 4;\r\n  // Finally, call endText to blend the current fragment color with the text\r\n  endText(fragColor);\r\n  Important: any variables you display must be the same for all fragments, or\r\n  at least all of the fragments that the text covers. Otherwise, different\r\n  fragments will try to print different values, resulting in, well, a mess\r\n--------------------------------------------------------------------------------\r\n*/\r\n\r\n#if !defined UTILITY_TEXTRENDERING_INCLUDED\r\n#define UTILITY_TEXTRENDERING_INCLUDED\r\n\r\n// Characters\r\n\r\nconst uint _A     = 0x747f18c4u;\r\nconst uint _B     = 0xf47d18f8u;\r\nconst uint _C     = 0x746108b8u;\r\nconst uint _D     = 0xf46318f8u;\r\nconst uint _E     = 0xfc39087cu;\r\nconst uint _F     = 0xfc390840u;\r\nconst uint _G     = 0x7c2718b8u;\r\nconst uint _H     = 0x8c7f18c4u;\r\nconst uint _I     = 0x71084238u;\r\nconst uint _J     = 0x084218b8u;\r\nconst uint _K     = 0x8cb928c4u;\r\nconst uint _L     = 0x8421087cu;\r\nconst uint _M     = 0x8eeb18c4u;\r\nconst uint _N     = 0x8e6b38c4u;\r\nconst uint _O     = 0x746318b8u;\r\nconst uint _P     = 0xf47d0840u;\r\nconst uint _Q     = 0x74631934u;\r\nconst uint _R     = 0xf47d18c4u;\r\nconst uint _S     = 0x7c1c18b8u;\r\nconst uint _T     = 0xf9084210u;\r\nconst uint _U     = 0x8c6318b8u;\r\nconst uint _V     = 0x8c62a510u;\r\nconst uint _W     = 0x8c635dc4u;\r\nconst uint _X     = 0x8a88a8c4u;\r\nconst uint _Y     = 0x8a884210u;\r\nconst uint _Z     = 0xf844447cu;\r\nconst uint _a     = 0x0382f8bcu;\r\nconst uint _b     = 0x85b318f8u;\r\nconst uint _c     = 0x03a308b8u;\r\nconst uint _d     = 0x0b6718bcu;\r\nconst uint _e     = 0x03a3f83cu;\r\nconst uint _f     = 0x323c8420u;\r\nconst uint _g     = 0x03e2f0f8u;\r\nconst uint _h     = 0x842d98c4u;\r\nconst uint _i     = 0x40308418u;\r\nconst uint _j     = 0x080218b8u;\r\nconst uint _k     = 0x4254c524u;\r\nconst uint _l     = 0x6108420cu;\r\nconst uint _m     = 0x06ab5ac4u;\r\nconst uint _n     = 0x07a318c4u;\r\nconst uint _o     = 0x03a318b8u;\r\nconst uint _p     = 0x05b31f40u;\r\nconst uint _q     = 0x03671784u;\r\nconst uint _r     = 0x05b30840u;\r\nconst uint _s     = 0x03e0e0f8u;\r\nconst uint _t     = 0x211c420cu;\r\nconst uint _u     = 0x046318bcu;\r\nconst uint _v     = 0x04631510u;\r\nconst uint _w     = 0x04635abcu;\r\nconst uint _x     = 0x04544544u;\r\nconst uint _y     = 0x0462f0f8u;\r\nconst uint _z     = 0x07c4447cu;\r\nconst uint _0     = 0x746b58b8u;\r\nconst uint _1     = 0x23084238u;\r\nconst uint _2     = 0x744c88fcu;\r\nconst uint _3     = 0x744c18b8u;\r\nconst uint _4     = 0x19531f84u;\r\nconst uint _5     = 0xfc3c18b8u;\r\nconst uint _6     = 0x3221e8b8u;\r\nconst uint _7     = 0xfc422210u;\r\nconst uint _8     = 0x745d18b8u;\r\nconst uint _9     = 0x745e1130u;\r\nconst uint _space = 0x0000000u;\r\nconst uint _dot   = 0x000010u;\r\nconst uint _minus = 0x0000e000u;\r\nconst uint _comma = 0x00000220u;\r\nconst uint _colon = 0x02000020u;\r\n\r\n// Additional characters added by WoMspace <3\r\nconst uint _under = 0x000007Cu;  // _\r\nconst uint _quote = 0x52800000u; // \"\r\nconst uint _exclm = 0x21084010u; // !\r\nconst uint _gt    = 0x02082220u; // >\r\nconst uint _lt    = 0x00888208u; // <\r\nconst uint _opsqr = 0x3908421Cu; // [\r\nconst uint _clsqr = 0xE1084270u; // ]\r\nconst uint _opprn = 0x11084208u; // (\r\nconst uint _clprn = 0x41084220u; // )\r\nconst uint _block = 0xFFFFFFFCu; // █\r\nconst uint _copyr = 0x03AB9AB8u; // ©️\r\n\r\nconst int charWidth   = 5;\r\nconst int charHeight  = 6;\r\nconst int charSpacing = 1;\r\nconst int lineSpacing = 1;\r\n\r\nconst ivec2 charSize  = ivec2(charWidth, charHeight);\r\nconst ivec2 spaceSize = charSize + ivec2(charSpacing, lineSpacing);\r\n\r\n// Text renderer\r\n\r\nstruct Text {\r\n\tvec4 result;     // Output color from the text renderer\r\n\tvec4 fgCol;      // Text foreground color\r\n\tvec4 bgCol;      // Text background color\r\n\tivec2 fragPos;   // The position of the fragment (can be scaled to adjust the size of the text)\r\n\tivec2 textPos;   // The position of the top-left corner of the text\r\n\tivec2 charPos;   // The position of the next character in the text\r\n\tint base;        // Number base\r\n\tint fpPrecision; // Number of decimal places to print\r\n} text;\r\n\r\n// Fills the global text object with default values\r\nvoid beginText(ivec2 fragPos, ivec2 textPos) {\r\n\ttext.result      = vec4(0.0);\r\n\ttext.fgCol       = vec4(1.0);\r\n\ttext.bgCol       = vec4(0.0, 0.0, 0.0, 0.6);\r\n\ttext.fragPos     = fragPos;\r\n\ttext.textPos     = textPos;\r\n\ttext.charPos     = ivec2(0);\r\n\ttext.base        = 10;\r\n\ttext.fpPrecision = 2;\r\n}\r\n\r\n// Applies the rendered text to the fragment\r\nvoid endText(inout vec3 fragColor) {\r\n\tfragColor = mix(fragColor.rgb, text.result.rgb, text.result.a);\r\n}\r\n\r\nvoid printChar(uint character) {\r\n\tivec2 pos = text.fragPos - text.textPos - spaceSize * text.charPos * ivec2(1, -1) + ivec2(0, spaceSize.y);\r\n\r\n\tuint index = uint(charWidth - pos.x + pos.y * charWidth + 1);\r\n\r\n\t// Draw background\r\n\tif (clamp(pos, ivec2(0), spaceSize - 1) == pos)\r\n\t\ttext.result = mix(text.result, text.bgCol, text.bgCol.a);\r\n\r\n\t// Draw character\r\n\tif (clamp(pos, ivec2(0), charSize - 1) == pos)\r\n\t\ttext.result = mix(text.result, text.fgCol, text.fgCol.a * float(character >> index & 1u));\r\n\r\n\t// Advance to next character\r\n\ttext.charPos.x++;\r\n}\r\n\r\n#define printString(string) {                                               \\\r\n\tuint[] characters = uint[] string;                                     \\\r\n\tfor (int i = 0; i < characters.length(); ++i) printChar(characters[i]); \\\r\n}\r\n\r\nvoid printUnsignedInt(uint value, int len) {\r\n\tconst uint[36] digits = uint[](\r\n\t\t_0, _1, _2, _3, _4, _5, _6, _7, _8, _9,\r\n\t\t_a, _b, _c, _d, _e, _f, _g, _h, _i, _j,\r\n\t\t_k, _l, _m, _n, _o, _p, _q, _r, _s, _t,\r\n\t\t_u, _v, _w, _x, _y, _z\r\n\t);\r\n\r\n\t// Advance to end of the number\r\n\ttext.charPos.x += len - 1;\r\n\r\n\t// Write number backwards\r\n\tfor (int i = 0; i < len; ++i) {\r\n\t\tprintChar(digits[int(value) % text.base]);\r\n\t\tvalue /= uint(text.base);\r\n\t\ttext.charPos.x -= 2;\r\n\t}\r\n\r\n\t// Return to end of the number\r\n\ttext.charPos.x += len + 1;\r\n}\r\n\r\nvoid printUnsignedInt(uint value) {\r\n\tfloat logValue = log(float(value)) + 1e-6;\r\n\tfloat logBase  = log(float(text.base));\r\n\r\n\tint len = int(ceil(logValue / logBase));\r\n\t    len = max(len, 1);\r\n\r\n\tprintUnsignedInt(value, len);\r\n}\r\n\r\nvoid printInt(int value) {\r\n\tif (value < 0) printChar(_minus);\r\n\tprintUnsignedInt(uint(abs(value)));\r\n}\r\n\r\nvoid printFloat(float value) {\r\n\tif (value < 0.0) printChar(_minus);\r\n\r\n\tif (isnan(value)) {\r\n\t\tprintString((_N, _a, _N));\r\n\t} else if (isinf(value)) {\r\n\t\tprintString((_i, _n, _f));\r\n\t} else {\r\n\t\tfloat i, f = modf(abs(value), i);\r\n\r\n\t\tuint integralPart   = uint(i);\r\n\t\tuint fractionalPart = uint(f * pow(float(text.base), float(text.fpPrecision)) + 0.5);\r\n\r\n\t\tprintUnsignedInt(integralPart);\r\n\t\tprintChar(_dot);\r\n\t\tprintUnsignedInt(fractionalPart, text.fpPrecision);\r\n\t}\r\n}\r\n\r\nvoid printBool(bool value) {\r\n\tif (value) {\r\n\t\tprintString((_t, _r, _u, _e));\r\n\t} else {\r\n\t\tprintString((_f, _a, _l, _s, _e));\r\n\t}\r\n}\r\n\r\nvoid printVec2(vec2 value) {\r\n\tprintFloat(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintFloat(value.y);\r\n}\r\nvoid printVec3(vec3 value) {\r\n\tprintFloat(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintFloat(value.y);\r\n\tprintString((_comma, _space));\r\n\tprintFloat(value.z);\r\n}\r\nvoid printVec4(vec4 value) {\r\n\tprintFloat(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintFloat(value.y);\r\n\tprintString((_comma, _space));\r\n\tprintFloat(value.z);\r\n\tprintString((_comma, _space));\r\n\tprintFloat(value.w);\r\n}\r\n\r\nvoid printIvec2(ivec2 value) {\r\n\tprintInt(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintInt(value.y);\r\n}\r\nvoid printIvec3(ivec3 value) {\r\n\tprintInt(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintInt(value.y);\r\n\tprintString((_comma, _space));\r\n\tprintInt(value.z);\r\n}\r\nvoid printIvec4(ivec4 value) {\r\n\tprintInt(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintInt(value.y);\r\n\tprintString((_comma, _space));\r\n\tprintInt(value.z);\r\n\tprintString((_comma, _space));\r\n\tprintInt(value.w);\r\n}\r\n\r\nvoid printUvec2(uvec2 value) {\r\n\tprintUnsignedInt(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintUnsignedInt(value.y);\r\n}\r\nvoid printUvec3(uvec3 value) {\r\n\tprintUnsignedInt(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintUnsignedInt(value.y);\r\n\tprintString((_comma, _space));\r\n\tprintUnsignedInt(value.z);\r\n}\r\nvoid printUvec4(uvec4 value) {\r\n\tprintUnsignedInt(value.x);\r\n\tprintString((_comma, _space));\r\n\tprintUnsignedInt(value.y);\r\n\tprintString((_comma, _space));\r\n\tprintUnsignedInt(value.z);\r\n\tprintString((_comma, _space));\r\n\tprintUnsignedInt(value.w);\r\n}\r\n\r\nvoid printLine() {\r\n\ttext.charPos.x = 0;\r\n\t++text.charPos.y;\r\n}\r\n\r\n#endif // UTILITY_TEXTRENDERING_INCLUDED"
  },
  {
    "path": "shaders/lib/tonemaps.glsl",
    "content": "vec3 tonemap(vec3 col){\n\treturn col/(1+luma(col));\n}\n\nvec3 invTonemap(vec3 col){\n\treturn col/(1-luma(col));\n}\n\nvec3 ToneMap_Hejl2015(in vec3 hdr){\n    vec4 vh = vec4(hdr*0.85, 3.0); //0\n    vec4 va = (1.75 * vh) + 0.05; //0.05\n    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\n    return vf.xyz / vf.www;\n}\n\nvec3 HableTonemap(vec3 linearColor){\n\t// A = shoulder strength\n\tconst float A = 0.6;\n\t// B = linear strength\n\tconst float B = 0.5;\n\t// C = linear angle\n\tconst float C = 0.1;\n\t// D = toe strength\n\tconst float D = 0.5;\n\t// E = toe numerator\n\tconst float E = 0.01;\n\t// F = toe denominator\n\tconst float F = 0.3;\n\t// Note: E / F = toe angle\n\t// linearWhite = linear white point value\n\n\tvec3 x = linearColor*2.0;\n\tvec3 color = ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F;\n\n\tconst float W = 11.0;\n\tconst float white = ((W * (A * W + C * B) + D * E) / (W * (A * W + B) + D * F)) - E / F;\n\n\treturn color / white;\n}\n\nvec3 reinhard(vec3 x){\n\tx *= 1.66;\n\treturn x/(1.0+x);\n}\n\n// from Jodie's shadertoy: https://www.shadertoy.com/view/4dBcD1\n// i edited it a little tiny bit\n// from https://github.com/64/64.github.io/blob/src/code/tonemapping\n// https://64.github.io/tonemapping/#reinhard-jodie\n// Copyright (c) 2022 @64\n// 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:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// 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.\nvec3 reinhard_jodie(vec3 color){\n\t// i edited it to add whitepoint control\n\t// float whitePoint = 10.0;\n\t// color *= (1.0 + color / (whitePoint*whitePoint));\n\n\tcolor *= 1.5;\n\tvec3 tonemapLuminance = color / (1.0 + dot(color, vec3(0.21, 0.72, 0.07)));\n\tvec3 tonemapRGB = color / (1.0 + color);\n\n\t// small weight because i dont want bright colors to be *too* colorful\n\treturn mix(tonemapLuminance, tonemapRGB, tonemapRGB*0.8+0.2);\n}\n\nvec3 ACESFilm(vec3 x){\n\tx*=0.9;\n\t// slower rate to bright color\n\tfloat a = 2.51f;\n\tfloat b = 0.03f;\n\tfloat c = 2.43f;\n\tfloat d = 0.95f;\n\tfloat e = 0.12f;\n\treturn (x*(a*x+b))/(x*(c*x+d)+e);\n}\n\n// From https://www.shadertoy.com/view/WdjSW3\nvec3 Tonemap_Lottes(vec3 x){\n\t// Lottes 2016, \"Advanced Techniques and Optimization of HDR Color Pipelines\"\n\tconst float a = 1.6;\n\tconst float d = 0.977;\n\tconst float hdrMax = 8.0;\n\tconst float midIn = 0.23;\n\tconst float midOut = 0.267;\n\n\t// Can be precomputed\n\tconst float b = (-pow(midIn, a) + pow(hdrMax, a) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut);\n\tconst 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);\n\n\treturn pow(x,vec3(a)) / (pow(x, vec3(a * d)) * b + c);\n}\n\nvec3 curve(vec3 x){\n\treturn 1.0 - x/(1.0+x);\n}\n\nvec3 Tonemap_Uchimura_Modified(vec3 x, float P, float a, float m, float l, float c, float b){\n\t// Uchimura 2017, \"HDR theory and practice\"\n\t// Math: https://www.desmos.com/calculator/gslcdxvipg\n\t// Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp\n\tfloat l0 = ((P - m) * l) / a;\n\tfloat L0 = m - m / a;\n\tfloat L1 = m + (1.0 - m) / a;\n\tfloat S0 = m + l0;\n\tfloat S1 = m + a * l0;\n\tfloat C2 = (a * P) / (P - S1);\n\tfloat CP = C2 / P;\n\n\tvec3 w0 = 1.0 - smoothstep(x, vec3(0.0), vec3(m));\n\tvec3 w2 = step(m + l0, x);\n\tvec3 w1 = 1.0 - w0 - w2;\n\n\tvec3 T = m * pow(x / m, vec3(c)) + b;\n\tvec3 S = P - (P - S1) * curve(CP * (x - S0));\n\tvec3 L = m + a * (x - m);\n\n\treturn clamp(T * w0 + L * w1 + S * w2,0.0,1.0);\n}\n\n// From https://www.shadertoy.com/view/WdjSW3\nvec3 Tonemap_Uchimura(vec3 x, float P, float a, float m, float l, float c, float b){\n\t// Uchimura 2017, \"HDR theory and practice\"\n\t// Math: https://www.desmos.com/calculator/gslcdxvipg\n\t// Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp\n\tfloat l0 = ((P - m) * l) / a;\n\tfloat L0 = m - m / a;\n\tfloat L1 = m + (1.0 - m) / a;\n\tfloat S0 = m + l0;\n\tfloat S1 = m + a * l0;\n\tfloat C2 = (a * P) / (P - S1);\n\tfloat CP = -C2 / P;\n\n\tvec3 w0 = 1.0 - smoothstep(x, vec3(0.0), vec3(m));\n\tvec3 w2 = step(m + l0, x);\n\tvec3 w1 = 1.0 - w0 - w2;\n\n\tvec3 T = m * pow(x / m, vec3(c)) + b;\n\tvec3 S = P - (P - S1) * exp(CP * (x - S0));\n\tvec3 L = m + a * (x - m);\n\n\treturn clamp(T * w0 + L * w1 + S * w2,0.0,1.0);\n}\n\nvec3 Tonemap_Uchimura(vec3 x){\n\tconst float P = 1.0;  // max display brightness 1.0\n\tconst float a = 1.0;  // contrast 1.0\n\tconst float m = 0.12; // linear section start 0.22\n\tconst float l = 0.22;  // linear section length 0.4\n\tconst float c = 1.0; // black 1.33\n\tconst float b = 0.0;  // pedestal 0.0\n\treturn Tonemap_Uchimura_Modified(x, P, a, m, l, c, b);\n}\n\nvec3 Tonemap_Xonk(vec3 Color){\n\tColor = pow(Color,vec3(1.3));\n\n\treturn Color / (0.333 + Color);\n\t// return pow(Color / (0.333 + Color), vec3(1.1));\n}\n\nvec3 Tonemap_Full_Reinhard(vec3 C){\n\n\tfloat whitepoint = 10.0;\n\tfloat lighten = 0.5;\n\n\treturn (C * (1.0 + C / (whitepoint*whitepoint))) / (lighten + C);\n}\n\nvec3 Full_Reinhard_Edit(vec3 C){\n\n\tC = pow(C,vec3(1.2));\n\tfloat whitepoint = 10.0;\n\tfloat lighten = 0.333;\n\n\treturn (C * (1.0 + C / (whitepoint*whitepoint))) / (lighten + C);\n}\n\nvec3 Tonemap_Ozius(vec3 C){\n\tconst vec3 a = vec3(0.46, 0.46, 0.46);\n\tconst vec3 b = vec3(0.60, 0.60, 0.60);\n\n\tC *= 1.6;\n\n\tvec3 cr = mix(vec3(dot(C, vec3(0.2722, 0.6741, 0.0537))), C, 0.5) + 1.0;\n\n\tC = pow(C / (1.0 + C), a);\n\treturn pow(C * C * (-2.0 * C + 3.0), cr / b);\n}\n\n// from https://iolite-engine.com/blog_posts/minimal_agx_implementation\n// MIT License\n//\n// Copyright (c) 2024 Missing Deadlines (Benjamin Wrensch)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// All values used to derive this implementation are sourced from Troy’s initial AgX implementation/OCIO config file available here:\n// https://github.com/sobotka/AgX\n\n// AND\n\n/// from https://github.com/donmccurdy/three.js/blob/dev/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js\n// AgX Tone Mapping implementation based on Filament, which in turn is based\n// on Blender's implementation using rec 2020 primaries\n// https://github.com/google/filament/pull/7236\n\n// Inputs and outputs are encoded as Linear-sRGB.\n// https://iolite-engine.com/blog_posts/minimal_agx_implementation\n// Mean error^2: 3.6705141e-06\nvec3 agxDefaultContrastApprox(vec3 x){\n\treturn x*(+0.1241\n\t\t+x*(+0.2079\n\t\t+x*(-5.9293\n\t\t+x*(+30.3768\n\t\t+x*(-38.9015\n\t\t+x*(+15.1221))))));\n}\n\n#if AGX_LOOK == 0\n\tvec3 slope = vec3(1.0);\n\tvec3 power = vec3(1.0);\n\tfloat sat = 1.25;\n#elif AGX_LOOK == 1\n\tvec3 slope = vec3(1.0);\n\tvec3 power = vec3(1.175);\n\tfloat sat = 0.98;\n#elif AGX_LOOK == 2\n\tvec3 slope = vec3(1.0, 0.9, 0.5);\n\tvec3 power = vec3(0.8);\n\tfloat sat = 0.8;\n#elif AGX_LOOK == 3\n\tvec3 slope = vec3(1.0);\n\tvec3 power = vec3(1.35);\n\tfloat sat = 1.4;\n#endif\n\nvec3 ToneMap_AgX(vec3 color){\n\tmat3 i = mat3(0.8566, 0.1373, 0.1119, 0.0951, 0.7612, 0.0768, 0.0483, 0.1014, 0.8113);\n\n\t// Log2 encoding\n\tcolor = (clamp(log2(i * color), -12.4739, 4.0261) +12.4739) / 16.5;\n\n\t// Apply sigmoid\n\tcolor = agxDefaultContrastApprox(color);\n\n\t// Apply AgX look\n\tcolor = mix(vec3(dot(color, vec3(0.2126,0.7152,0.0722))), pow(color, power) * slope, sat);\n\n  \t// Eotf\n  \tmat3 o = mat3(1.1271, -0.1413, -0.1413, -0.1106, 1.1578, -0.1106, -0.0165, -0.0165, 1.2519);\n\n\t// Linearize\n\tcolor = pow(max(vec3(0.0), o * color), vec3(2.2));\n\n\t// Gamut mapping. Simple clamp for now.  \n\treturn clamp(color, 0.0, 1.0);\n}\n\nvec3 ToneMap_AgX_minimal(vec3 color) {\n\tmat3 i = mat3(0.8425, 0.0423, 0.0424, 0.0784, 0.8785, 0.0784, 0.0792, 0.0792, 0.8791);\n\n\tcolor = (clamp(log2(i * color), -12.4739, 4.0261) +12.4739) / 16.5;\n\n\tcolor = agxDefaultContrastApprox(color);\n\n\tcolor = mix(vec3(dot(color, vec3(0.2126,0.7152,0.0722))), pow(color, power) * slope, sat);\n\n  \tmat3 o = mat3(1.1969, -0.0529, -0.0530, -0.0980, 1.1519, -0.0980, -0.0990, -0.0990, 1.1511);\n  \n\tcolor = pow(o * color, vec3(2.2));\n\n\treturn clamp(color, 0.0, 1.0);\n}"
  },
  {
    "path": "shaders/lib/util.glsl",
    "content": "const float PI \t\t= acos(-1.0);\nconst float TAU \t= PI * 2.0;\nconst float hPI \t= PI * 0.5;\nconst float rPI \t= 1.0 / PI;\nconst float rTAU \t= 1.0 / TAU;\n\nconst float PHI\t= sqrt(5.0) * 0.5 + 0.5;\nconst float rLOG2\t= 1.0 / log(2.0);\n\nconst float goldenAngle = TAU / PHI / PHI;\n\n#define clamp01(x) clamp(x, 0.0, 1.0)\n#define max0(x) max(x, 0.0)\n#define min0(x) min(x, 0.0)\n#define min1(x) min(x, 1.0)\n#define max3(a) max(max(a.x, a.y), a.z)\n#define min3(a) min(min(a.x, a.y), a.z)\n#define max4(a, b, c, d) max(max(a, b), max(c, d))\n#define min4(a, b, c, d) min(min(a, b), min(c, d))\n\n#define fsign(x) (clamp01(x * 1e35) * 2.0 - 1.0)\n#define fstep(x,y) clamp01((y - x) * 1e35)\n\n#define diagonal2(m) vec2((m)[0].x, (m)[1].y)\n#define diagonal3(m) vec3(diagonal2(m), m[2].z)\n#define diagonal4(m) vec4(diagonal3(m), m[2].w)\n\n#define transMAD(mat, v) (mat3(mat) * (v) + (mat)[3].xyz)\n#define projMAD(mat, v) (diagonal3(mat) * (v) + (mat)[3].xyz)\n\n#define encodeColor(x) (x * 0.00005)\n#define decodeColor(x) (x * 20000.0)\n\n#define cubeSmooth(x) (x * x * (3.0 - 2.0 * x))\n\n#define lumCoeff vec3(0.2125, 0.7154, 0.0721)\n\nfloat facos(const float sx) {\n\tfloat x = clamp(abs( sx ),0.,1.);\n\tfloat a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 );\n\treturn mix(PI - a, a, step(0.0, sx));\n\t//float c = clamp(-sx * 1e35, 0., 1.);\n\t//return c * pi + a * -(c * 2. - 1.); //no conditional version\n}\n\nvec2 sincos(float x) {\n\treturn vec2(sin(x), cos(x));\n}\n\nvec2 circlemap(float i, float n) {\n\treturn sincos(i * n * goldenAngle) * sqrt(i);\n}\n\nvec3 circlemapL(float i, float n) {\n\treturn vec3(sincos(i * n * goldenAngle), sqrt(i));\n}\n\nvec3 calculateRoughSpecular(const float i, const float alpha2, const int steps) {\n\n\tfloat x = (alpha2 * i) / (1.0 - i);\n\tfloat y = i * float(steps) * 64.0 * 64.0 * goldenAngle;\n\n\tfloat c = inversesqrt(x + 1.0);\n\tfloat s = sqrt(x) * c;\n\n\treturn vec3(cos(y) * s, sin(y) * s, c);\n}\n\nvec3 clampNormal(vec3 n, vec3 v) {\n\tfloat NoV = clamp( dot(n, -v), 0., 1. );\n\treturn normalize( NoV * v + n );\n}\n\n//faster and actually more precise than pow 2.2\nvec3 toLinear(vec3 sRGB){\n\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n}\n\nvec3 srgbToLinear(vec3 srgb) {\n\treturn mix(\n\t\tsrgb / 12.92,\n\t\tpow(.947867 * srgb + .0521327, vec3(2.4)),\n\t\tstep( .04045, srgb )\n\t);\n}\n\nvec3 linearToSRGB(vec3 linear) {\n\treturn mix(\n\t\tlinear * 12.92,\n\t\tpow(linear, vec3(1./2.4)) * 1.055 - .055,\n\t\tstep( .0031308, linear)\n\t);\n}\n\nvec3 blackbody(float Temp) {\n\tfloat t = pow(Temp, -1.5);\n\tfloat lt = log(Temp);\n\n\tvec3 col = vec3(0.0);\n\tcol.x = 220000.0 * t + 0.58039215686;\n\tcol.y = mix(0.39231372549 * lt - 2.44549019608, 138039.215686 * t + 0.72156862745, step(6500.0, Temp));\n\tcol.z = 0.76078431372 * lt - 5.68078431373;\n\tcol = clamp01(col);\n\tcol = Temp < 1000. ? col * Temp * 0.001 : col;\n\n\treturn srgbToLinear(col);\n}\n\nfloat calculateHardShadows(float shadowDepth, vec3 shadowPosition, float bias) {\n\tif(shadowPosition.z >= 1.0) return 1.0;\n\n\treturn 1.0 - fstep(shadowDepth, shadowPosition.z - bias);\n}\n\nvec3 genUnitVector(vec2 xy) {\n\txy.x *= TAU; xy.y = xy.y * 2.0 - 1.0;\n\treturn vec3(sincos(xy.x) * sqrt(1.0 - xy.y * xy.y), xy.y);\n}\n\nvec2 rotate(vec2 x, float r) {\n\tvec2 sc = sincos(r);\n\treturn mat2(sc.x, -sc.y, sc.y, sc.x) * x;\n}\n\nvec3 cartToSphere(vec2 coord) {\n\tcoord.y = 1.0 - coord.y;\n\tcoord *= vec2(TAU, PI);\n\tvec2 lon = sincos(coord.x) * sin(coord.y);\n\treturn vec3(lon.x, cos(coord.y), lon.y);\n}\n\nvec2 sphereToCart(vec3 dir) {\n\tfloat lonlat = atan(-dir.x, -dir.z);\n\treturn vec2(lonlat * rTAU +0.5,0.5*dir.y+0.5);\n}\n\nmat3 getRotMat(vec3 x,vec3 y) {\n\tfloat d = dot(x,y);\n\tvec3 cr = cross(y,x);\n\n\tfloat s = length(cr);\n\n\tfloat id = 1.-d;\n\n\tvec3 m = cr/s;\n\n\tvec3 m2 = m*m*id+d;\n\tvec3 sm = s*m;\n\n\tvec3 w = (m.xy*id).xxy*m.yzz;\n\n\treturn mat3(\n\t\tm2.x, w.x-sm.z, w.y+sm.y,\n\t\tw.x+sm.z, m2.y, w.z-sm.x,\n\t\tw.y-sm.y, w.z+sm.x, m2.z\n\t);\n}\n\n// No intersection if returned y component is < 0.0\nvec2 rsi(vec3 position, vec3 direction, float radius) {\n\tfloat PoD = dot(position, direction);\n\tfloat radiusSquared = radius * radius;\n\n\tfloat delta = PoD * PoD + radiusSquared - dot(position, position);\n\tif (delta < 0.0) return vec2(-1.0);\n\t\tdelta = sqrt(delta);\n\n\treturn -PoD + vec2(-delta, delta);\n}\n\nfloat HaltonSeq3(int index) {\n\tfloat r = 0.;\n\tfloat f = 1.;\n\tfor (int i = index; i > 0; i /= 3){\n\t\tf /= 3.0;\n\t\tr += f * float(i % 3);\n\t}\n\treturn r;\n}\n\nfloat HaltonSeq2(int index) {\n\tfloat r = 0.;\n\tfloat f = 1.;\n\tfor (int i = index; i > 0; i /= 2){\n\t\tf *= 0.5;\n\t\tr += f * float(i % 2);\n\t}\n\treturn r;\n}\n\nfloat Hammersley(int i) {\n\tuint bits = uint(i);\n\tbits = (bits << 16u) | (bits >> 16u);\n\tbits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);\n\tbits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);\n\tbits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);\n\tbits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);\n\treturn float(bits) * 2.3283064365386963e-10; // 1/2^32\n}\n\nvec2 R2_samples(int n) {\n\tvec2 alpha = vec2(0.75487765, 0.56984026);\n\treturn fract(alpha * n);\n}\n\nfloat luma(vec3 color) {\n\treturn dot(color,vec3(0.21, 0.72, 0.07));\n}\n\nvec2 simpleRand22(vec2 p) {\n\tmat2 m = mat2(12.9898,.16180,78.233,.31415);\n\treturn fract(sin(m * p) * vec2(43758.5453, 14142.1));\n}\n\nfloat hash11(float p) {\n\tp = fract(p * .1031);\n\tp *= p + 33.33;\n\tp *= p + p;\n\treturn fract(p);\n}\n\nfloat hash12(vec2 p) {\n\tvec3 p3  = fract(vec3(p.xyx) * 0.1031);\n\tp3 += dot(p3, p3.yzx + 19.19);\n\treturn fract((p3.x + p3.y) * p3.z);\n}\n\nfloat hash13(vec3 p3) {\n\tp3  = fract(p3 * 0.1031);\n\tp3 += dot(p3, p3.zyx + 31.32);\n\treturn fract((p3.x + p3.y) * p3.z);\n}\n\nfloat hash21(vec2 n) {\n\treturn fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);\n}\n\nvec2 hash22(vec2 p) {\n\tvec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973));\n\tp3 += dot(p3, p3.yzx+19.19);\n\treturn fract((p3.xx+p3.yz)*p3.zy);\n}\n\nvec3 hash31(float p) {\n\tvec3 p3 = fract(vec3(p) * vec3(.1031, .1030, .0973));\n\tp3 += dot(p3, p3.yzx+33.33);\n\treturn fract((p3.xxy+p3.yzz)*p3.zyx); \n}\n\nvec3 decode (vec2 encn) {\n\tvec3 n = vec3(0.0);\n\tencn = encn * 2.0 - 1.0;\n\tn.xy = abs(encn);\n\tn.z = 1.0 - n.x - n.y;\n\tn.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn;\n\treturn clamp(normalize(n.xyz),-1.0,1.0);\n}\n\nvec2 decodeVec2(float a) {\n\tconst vec2 constant1 = 65535. / vec2( 256., 65536.);\n\tconst float constant2 = 256. / 255.;\n\treturn fract( a * constant1 ) * constant2 ;\n}\n\nvec4 encode (vec3 n, vec2 lightmaps) {\n\tn.xy = n.xy / dot(abs(n), vec3(1.0));\n\tn.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy;\n\tvec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0);\n\t\n\treturn vec4(encn,vec2(lightmaps.x,lightmaps.y));\n}\n\n//encoding by jodie\nfloat encodeVec2(vec2 a) {\n\tconst vec2 constant1 = vec2(1.0, 256.0) / 65535.0;\n\tvec2 temp = floor(a * 255.0);\n\treturn temp.x*constant1.x+temp.y*constant1.y;\n}\n\nfloat encodeVec2(float x,float y) {\n\treturn encodeVec2(vec2(x,y));\n}"
  },
  {
    "path": "shaders/lib/volumetricClouds.glsl",
    "content": "#define ALTOSTRATUS_LAYER 2\n#define LARGECUMULUS_LAYER 1\n#define SMALLCUMULUS_LAYER 0\n\nfloat cloud_movement = (worldTime + mod(worldDay,100) * 24000.0) / 24.0 * Cloud_Speed;\n\nfloat densityAtPos(in vec3 pos){\n\tpos /= 18.;\n\tpos.xz *= 0.5;\n\tvec3 p = floor(pos);\n\tvec3 f = fract(pos);\n\tvec2 uv =  p.xz + f.xz + p.y * vec2(0.0,193.0);\n\tvec2 coord =  uv / 512.0;\n\n\t//The y channel has an offset to avoid using two textures fetches\n\tvec2 xy = texture2D(noisetex, coord).yx;\n\n\treturn mix(xy.r,xy.g, f.y);\n}\n\nfloat getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight, float maxHeight){\n\tvec3 samplePos = position * vec3(0.25, 0.005, 0.25);\n\n\tfloat coverage = 0.0;\n\tfloat shape = 0.0;\n\tfloat largeCloud = 0.0;\n\tfloat smallCloud = 0.0;\n\n\tswitch (LayerIndex){\n\t\tdefault : { break; }\n\n\t\tcase SMALLCUMULUS_LAYER: {\n\t\t\tcoverage = parameters.smallCumulus.x;\n\n\t\t\tlargeCloud = texture2D(noisetex, (samplePos.xz + cloud_movement)/5000.0 * CloudLayer0_scale).b;\n\t\t\tsmallCloud = 1.0-texture2D(noisetex, (samplePos.xz - cloud_movement)/500.0 * CloudLayer0_scale).r;\n\t\t\tsmallCloud = abs(largeCloud-0.6) + smallCloud*smallCloud;\n\n\t\t\tshape = min(max(coverage - smallCloud,0.0)/(1e-6+sqrt(coverage)),1.0);\n\tbreak; }\n\n\t\tcase LARGECUMULUS_LAYER: {\n\t\t\tcoverage = parameters.largeCumulus.x;\n\n\t\t\tlargeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0 * CloudLayer1_scale).b;\n\t\t\tsmallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0 * CloudLayer1_scale).b;\n\t\t\tsmallCloud = abs(largeCloud* -0.7) + smallCloud;\n\n\t\t\tshape = min(max(coverage - smallCloud,0.0)/(1e-6+sqrt(coverage)),1.0);\n\t\tbreak; }\n\n\t\tcase ALTOSTRATUS_LAYER: {\n\t\t\tcoverage = parameters.altostratus.x;\n\n\t\t\tlargeCloud = texture2D(noisetex, (position.xz + cloud_movement)/100000. * CloudLayer2_scale).b;\n\t\t\tsmallCloud = 1.0 - texture2D(noisetex, ((position.xz - cloud_movement)/7500. - vec2(1.0-largeCloud, -largeCloud)/5.0) * CloudLayer2_scale).b;\n\t\t\tsmallCloud = largeCloud + smallCloud * 0.4 * clamp(1.5-largeCloud,0.0,1.0);\n\n\t\t\tshape = min(max(coverage - smallCloud,0.0) / (1e-6+sqrt(coverage)),1.0);\n\t\t\tshape *= shape;\n\t\t\treturn shape;\n\t\tbreak; }\n\t}\n\n\tfloat toTop = maxHeight - position.y;\n\tfloat toBottom = position.y - minHeight;\n\tfloat tallness = maxHeight - minHeight;\n\n\t// clamp density of the cloud within its upper/lower bounds\n\tshape = min(min(shape, clamp(toTop,0,1)), clamp(toBottom,0,1));\n\n\t// carve out the upper part of clouds. make sure it rounds out at its upper bound\n\tfloat topShape = min(max(toTop,0.0) / max(tallness,1.0),1.0);\n\ttopShape = min(exp(-0.5 * (1.0-topShape)), 1.0-pow(1.0-topShape, 5.0));\n\n\t// round out the bottom part slightly\n\tfloat bottomShape = 1.0-pow(1.0-min(max(toBottom,0.0) / 25.0, 1.0), 5.0);\n\tshape = max((shape - 1.0) + topShape * bottomShape,0.0);\n\n\t/// erosion noise\n\tif(shape > 0.001){\n\t\t// shrink the coverage slightly so it is a similar shape to clouds with erosion. this helps cloud lighting and cloud shadows.\n\t\tif (LOD < 1) return max(shape - 0.27 * ERODE_AMOUNT,0.0);\n\n\t\tsamplePos.xz -= cloud_movement/4.0;\n\t\tsamplePos.xz += pow(max(toBottom - 20.0, 0.01) / (max(tallness, 1.0) * 0.20), 1.5);\n\n \t\tfloat erosion = 0.0;\n\n\t\tswitch (LayerIndex){  \n\t\t\tdefault : { break; }\n\n\t\t\tcase SMALLCUMULUS_LAYER: {\n\t\t\t\terosion += (1.0-densityAtPos(samplePos * 200.0 * CloudLayer0_scale)) * sqrt(1.0-shape);\n\n\t\t\t\tfloat falloff = 1.0 - clamp(toTop/100.0,0.0,1.0);\n\t\t\t\terosion += abs(densityAtPos(samplePos * 600.0 * CloudLayer0_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.25);\n\n\t\t\t\terosion = erosion*erosion*erosion*erosion;\n\t\t\tbreak; }\n\n\t\t\tcase LARGECUMULUS_LAYER: {\n\t\t\t\terosion += (1.0 - densityAtPos(samplePos * 70.0 * CloudLayer1_scale)) * sqrt(1.0-shape);\n\n\t\t\t\tfloat falloff = 1.0 - clamp(toTop/200.0,0.0,1.0);\n\t\t\t\terosion += abs(densityAtPos(samplePos * 250.0 * CloudLayer1_scale) - falloff) * 0.75 * (1.0-shape) * (1.0-falloff*0.5);\n\n\t\t\t\terosion = erosion*erosion*erosion*erosion;\n\t\t\tbreak; }\n\t\t}\n\t\treturn max(shape - erosion * ERODE_AMOUNT,0.0);\n\t} else return 0.0;\n}\n\nfloat getPlanetShadow(vec3 playerPos, vec3 WsunVec){\n\tfloat planetShadow = min(max(playerPos.y - (-100.0 + 1.0 / abs(WsunVec.y*0.1)),0.0) / 100.0, 1.0);\n\n\tplanetShadow = mix(pow(1.0-pow(1.0-planetShadow,2.0),2.0), 1.0, pow(abs(WsunVec.y),2.0));\n\n\treturn planetShadow;\n}\n\nfloat getSunOcculsion(vec3 playerPos, vec3 sunVector){\n\tfloat density = 0.0;\n\t#ifdef CloudLayer0\n\t\tvec3 pos0 = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer0_height + 20.0) - playerPos.y, 0.0);\n\t\tdensity += getCloudShape(SMALLCUMULUS_LAYER, 0, pos0, CloudLayer0_height, CloudLayer0_tallness / CloudLayer0_scale + CloudLayer0_height) * parameters.smallCumulus.y;\n\t#endif\n\t#ifdef CloudLayer1\n\t\tvec3 pos1 = playerPos + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 40.0) - playerPos.y, 0.0);\n\t\tdensity += getCloudShape(LARGECUMULUS_LAYER, 0, pos1, CloudLayer1_height, CloudLayer1_tallness / CloudLayer1_scale + CloudLayer1_height) * parameters.largeCumulus.y;\n\t#endif\n\t#ifdef CloudLayer2\n\t\tvec3 pos2 = playerPos + sunVector / abs(sunVector.y) * max(CloudLayer2_height - playerPos.y, 0.0);\n\t\tdensity += getCloudShape(ALTOSTRATUS_LAYER, 0, pos2, CloudLayer2_height, CloudLayer2_height + 5.0) * parameters.altostratus.y;\n\t#endif\n\treturn density;\n}\n\nfloat getCloudShadow(vec3 playerPos, vec3 sunVector){\n\tfloat totalShadow = getPlanetShadow(playerPos, sunVector);\n\n\t#ifdef CLOUDS_SHADOWS\n \t\tfloat cloudShadows = getSunOcculsion(playerPos, sunVector);\n\t\tcloudShadows *= CLOUD_SHADOW_STRENGTH;\n\n\t\t#if defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2\n\t\t\ttotalShadow *= exp((cloudShadows*cloudShadows) * -200.0);\n\t\t#endif\n\t#endif\n\treturn totalShadow;\n}\n\n#ifndef CLOUDSHADOWSONLY\n\nfloat phaseCloud(float x, float g){\n\tfloat gg = g * g;\n\treturn (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14;\n}\n\nfloat getCloudScattering(\n\tint LayerIndex,\n\tvec3 rayPosition,\n\tvec3 sunVector,\n\tfloat dither, \n\tfloat minHeight,\n\tfloat maxHeight,\n\tfloat density\n){\n\tint samples = 3;\n\tint LOD = 0;\n\n\tif(LayerIndex == ALTOSTRATUS_LAYER) samples = 2;\n\n\tfloat shadow = 0.0;\n\tvec3 shadowRayPosition = vec3(0.0);\n\n\tfor (int i = 0; i < samples; i++){\n\n\t\tif(LayerIndex == ALTOSTRATUS_LAYER){\n\t\t\tshadowRayPosition = rayPosition + sunVector * (0.25 + i * dither) * 200.0;\n\t\t}else{\n\t\t\tshadowRayPosition = rayPosition + sunVector * (0.05 + i + dither)*20.0;\n\t\t}\n\t\tshadow += getCloudShape(LayerIndex, LOD, shadowRayPosition, minHeight, maxHeight) * density;\n\t}\n\treturn shadow;\n}\n\nvec3 getCloudLighting(\n\tfloat shape,\n\tfloat shapeFaded,\n\n\tfloat sunShadowMask,\n\tvec3 directLightCol,\n\n\tfloat indirectShadowMask,\n\tvec3 indirectLightCol,\n\tfloat backScatterPhase,\n\tvec4 phaseLevels\n){\n\tfloat beerCoef = -3.0;\n\tfloat powder = 1.0 - exp(beerCoef * shapeFaded);\n\tfloat backscatter = powder * backScatterPhase;\n\tfloat forwardscatter = mix(mix(phaseLevels.x, phaseLevels.y, powder), mix(phaseLevels.z, phaseLevels.w, powder), powder);\n\n\tvec3 directScattering = TAU * directLightCol * exp((beerCoef - 2.0) * sunShadowMask) * (forwardscatter + backscatter);\n\tvec3 indirectScattering = indirectLightCol * mix(1.0, exp2(-5.0 * shape), indirectShadowMask * indirectShadowMask);\n\n\treturn indirectScattering + directScattering;\n}\n\nvec4 raymarchCloud(\n\tint LayerIndex,\n\tint samples,\n\tvec3 rayPosition,\n\tvec3 rayDirection,\n\tfloat dither,\n\n\tfloat minHeight,\n\tfloat maxHeight,\n\n\tvec3 sunVector,\n\tvec3 sunScattering,\n\tvec3 skyScattering,\n\n\tfloat referenceDistance,\n\tvec3 sampledSkyCol,\n\n\tinout vec2 cloudPlaneDistance,\n\tfloat backScatterPhase,\n\tvec4 phaseLevels\n){\n\tvec3 color = vec3(0.0);\n\tfloat totalAbsorbance = 1.0;\n\tfloat GetPos = 0.0;\n\n\tfloat planetShadow = getPlanetShadow(rayPosition, sunVector);\n\tsunScattering *= planetShadow;\n\n\tfloat distanceFactor = length(rayDirection);\n\n\tfloat densityTresholdCheck = 0.0;\n\n\tif(LayerIndex == SMALLCUMULUS_LAYER) densityTresholdCheck = 0.06;\n\tif(LayerIndex == LARGECUMULUS_LAYER) densityTresholdCheck = 0.02;\n\tif(LayerIndex == ALTOSTRATUS_LAYER) densityTresholdCheck = 0.01;\n\n\tdensityTresholdCheck = mix(1e-5, densityTresholdCheck, dither);\n\n\tif(LayerIndex == ALTOSTRATUS_LAYER){\n\t\tfloat density = parameters.altostratus.y;\n\n\t\tbool ifAboveOrBelowPlane = max(mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight, 0.0, 1.0)) * normalize(rayDirection).y + 0.0001, 0.0) > 0.0;\n\n\t\t// 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.\n\t\t// check if the camera is above or below the cloud plane, so it doesnt waste work on the opposite hemisphere\n\t\t#ifndef VL_CLOUDS_DEFERRED\n\t\t\tif(length(rayPosition - cameraPosition) > referenceDistance || ifAboveOrBelowPlane) return vec4(color, totalAbsorbance);\n\t\t#else\n\t\t\tif(ifAboveOrBelowPlane) return vec4(color, totalAbsorbance);\n\t\t#endif\n\n\t\tfloat shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight);\n\t\tfloat shapeWithDensity = shape*density;\n\n\t\tif(shapeWithDensity > mix(1e-5, 0.06, dither)){\n\t\t\tcloudPlaneDistance.x = length(rayPosition - cameraPosition); cloudPlaneDistance.y = 0.0;\n\t\t}\n\n\t\t// check if the pixel has visible clouds before doing work.\n\t\tif(shapeWithDensity > 1e-5){\n\n\t\t\t// can add the initial cloud shape sample for a free shadow starting step :D\n\t\t\tfloat sunShadowMask = getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density) * (1.0-abs(WsunVec.y));\n\t\t\tfloat indirectShadowMask = 0.5;\n\n\t\t\tvec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensity, sunShadowMask, sunScattering, indirectShadowMask, skyScattering, backScatterPhase, phaseLevels);\n\n\t\t\tvec3 newPos = rayPosition - cameraPosition;\n\t\t\tnewPos.xz /= max(newPos.y,0.0)*0.0025 + 1.0;\n\t\t\tnewPos.y = min(newPos.y,0.0);\n\n\t\t\tfloat distancefog = exp(-0.00025*length(newPos));\n\t\t\tvec3 atmosphereHaze = (sampledSkyCol - sampledSkyCol * distancefog);\n\t\t\tlighting = lighting * distancefog + atmosphereHaze;\n\n\t\t\tfloat densityCoeff = exp(-distanceFactor*shapeWithDensity);\n\t\t\tcolor += (lighting - lighting * densityCoeff) * totalAbsorbance;\n\t\t\ttotalAbsorbance *= densityCoeff;\n\t\t}\n\t\treturn vec4(color, totalAbsorbance);\n\t}\n\n\tif(LayerIndex < ALTOSTRATUS_LAYER){\n\t\tfloat density = (LayerIndex == SMALLCUMULUS_LAYER) ? parameters.smallCumulus.y : parameters.largeCumulus.y;\n\n\t\tfloat skylightOcclusion = 1.0;\n\t\t#if defined CloudLayer0 && defined CloudLayer1\n\t\t\tif(LayerIndex == SMALLCUMULUS_LAYER) {\n\t\t\t\tfloat 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);\n\t\t\t\tskylightOcclusion = mix(mix(0.0,0.2,parameters.largeCumulus.y), 1.0, pow(1.0 - upperLayerOcclusion*parameters.largeCumulus.y,2));\n\t\t\t}\n\t\t#endif\n\n\t\tfor(int i = 0; i < samples; i++) {\n\n\t\t\t// 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.\n\t\t\t#ifndef VL_CLOUDS_DEFERRED\n\t\t\t\tif(length(rayPosition - cameraPosition) > referenceDistance) break;\n\t\t\t#endif\n\n\t\t\t// check if the pixel is in the bounding box before doing work.\n\t\t\tif(clamp(rayPosition.y - maxHeight,0.0,1.0) < 1.0 && clamp(rayPosition.y - minHeight,0.0,1.0) > 0.0){\n\t\t\t\tfloat shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight);\n\t\t\t\tfloat shapeWithDensity = shape * density;\n\t\t\t\tfloat shapeWithDensityFaded = shapeWithDensity * pow(clamp((rayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0);\n\n\t\t\t\tif(shapeWithDensityFaded > densityTresholdCheck){\n\t\t\t\t\tcloudPlaneDistance.x = length(rayPosition - cameraPosition); cloudPlaneDistance.y = 0.0;\n\t\t\t\t}\n\n\t\t\t\t// check if the pixel has visible clouds before doing work.\n\t\t\t\tif(shapeWithDensityFaded > 1e-5){\n\t\t\t\t\t// can add the initial cloud shape sample for a free shadow starting step :D\n\t\t\t\t\tfloat indirectShadowMask = 1.0 - min(max(rayPosition.y - minHeight,0.0) / max(maxHeight-minHeight,1.0), 1.0);\n\t\t\t\t\tfloat sunShadowMask = getCloudScattering(LayerIndex, rayPosition, sunVector, dither, minHeight, maxHeight, density);\n\n\t\t\t\t\t// do cloud shadows from one layer to another\n\t\t\t\t\t// large cumulus layer -> small cumulus layer\n\t\t\t\t\t#if defined CloudLayer0 && defined CloudLayer1\n\t\t\t\t\t\tif(LayerIndex == SMALLCUMULUS_LAYER){\n\t\t\t\t\t\t\tvec3 shadowStartPos = rayPosition + sunVector / abs(sunVector.y) * max((CloudLayer1_height + 20.0) - rayPosition.y, 0.0);\n\t\t\t\t\t\t\tsunShadowMask += 3.0 * getCloudShape(LARGECUMULUS_LAYER, 0, shadowStartPos, CloudLayer1_height, CloudLayer1_height+100.0)*parameters.largeCumulus.y;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t// altostratus layer -> all cumulus layers\n\t\t\t\t\t#ifdef CloudLayer2\n\t\t\t\t\t\tvec3 shadowStartPos = rayPosition + sunVector / abs(sunVector.y) * max(CloudLayer2_height - rayPosition.y, 0.0);\n\t\t\t\t\t\tsunShadowMask += getCloudShape(ALTOSTRATUS_LAYER, 0, shadowStartPos, CloudLayer2_height, CloudLayer2_height) * parameters.altostratus.y * (1.0-abs(sunVector.y));\n\t\t\t\t\t#endif\n\n\t\t\t\t\tvec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering, indirectShadowMask, skyScattering * skylightOcclusion, backScatterPhase, phaseLevels);\n\n\t\t\t\t\t#ifdef LIGHTNINGFLASH_VL\n\t\t\t\t\t\tlighting += createLightningPointLight(rayPosition - cameraPosition, lightningBoltPosition.xyz, shapeWithDensity, indirectShadowMask);\n\t\t\t\t\t#endif\n\n\t\t\t\t\tvec3 newPos = rayPosition - cameraPosition;\n\t\t\t\t\tnewPos.xz /= max(newPos.y,0.0) * 0.0025 + 1.0;\n\t\t\t\t\tnewPos.y = min(newPos.y,0.0);\n\n\t\t\t\t\tfloat distancefog = exp(-0.00035 * length(newPos));\n\t\t\t\t\tvec3 atmosphereHaze = (sampledSkyCol - sampledSkyCol * distancefog);\n\t\t\t\t\tlighting = lighting * distancefog + atmosphereHaze;\n\n\t\t\t\t\tfloat densityCoeff = exp(-distanceFactor*shapeWithDensityFaded);\n\t\t\t\t\tcolor += (lighting - lighting * densityCoeff) * totalAbsorbance;\n\t\t\t\t\ttotalAbsorbance *= densityCoeff;\n\n\t\t\t\t\t// check if you can see through the cloud on the pixel before doing the next iteration\n\t\t\t\t\tif (totalAbsorbance < 1e-5) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\trayPosition += rayDirection;\n\t\t}\n\t\treturn vec4(color, totalAbsorbance);\n\t}\n}\n\nvec3 getRayOrigin(\n\tvec3 rayStartPos,\n\tvec3 cameraPos,\n\tfloat dither,\n\n\tfloat minHeight,\n\tfloat maxHeight\n){\n\tvec3 cloudDist = vec3(1.0);\n\tcloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPos.y - minHeight ,0.0,clamp((maxHeight-15)-cameraPosition.y ,0.0,1.0)));\n\t// allow passing through/above/below the plane without limits\n\tfloat flip = mix(max(cameraPos.y - maxHeight,0.0), max(minHeight - cameraPos.y,0.0), clamp(rayStartPos.y,0.0,1.0));\n\n\t// orient the ray to be a flat plane facing up/down\n\tvec3 position = rayStartPos * dither + cameraPos + (rayStartPos/length(rayStartPos/cloudDist)) * flip;\n\n\treturn position;\n}\n\nvec4 getCorrectBlendOrder(int viewIndex, vec4 smallCumulusColor,vec4 largeCumulusColor,vec4 altostratusColor){\n\n\t// swap order of blending based on where the camera position is relative to the cloud plane altitude.\n\t// viewIndex = 0 is below small cumulus layer\n\t// viewIndex = 1 is above large cumulus layer\n\t// viewIndex = 2 is above altostratus layer\n\n\tvec4 blendedCloudsColor = vec4(0.0,0.0,0.0,1.0);\n\n\tswitch (viewIndex){\n\t\tdefault : { break; }\n\n\t\tcase 0: {\n\t\t\t#ifdef CloudLayer2\n\t\t\t\tblendedCloudsColor = altostratusColor;\n\t\t\t#endif\n\t\t\t#ifdef CloudLayer1\n\t\t\t\tblendedCloudsColor.rgb = blendedCloudsColor.rgb * largeCumulusColor.a + largeCumulusColor.rgb;\n\t\t\t\tblendedCloudsColor.a *= largeCumulusColor.a;\n\t\t\t#endif\n\t\t\t#ifdef CloudLayer0\n\t\t\t\tblendedCloudsColor.rgb = blendedCloudsColor.rgb * smallCumulusColor.a + smallCumulusColor.rgb;\n\t\t\t\tblendedCloudsColor.a *= smallCumulusColor.a;\n\t\t\t#endif  \n\t\tbreak; }\n\n\t\tcase 1: {\n\t\t\t#ifdef CloudLayer2\n\t\t\t\tblendedCloudsColor = altostratusColor;\n\t\t\t#endif\n\t\t\t#ifdef CloudLayer0\n\t\t\t\tblendedCloudsColor.rgb = blendedCloudsColor.rgb * smallCumulusColor.a + smallCumulusColor.rgb;\n\t\t\t\tblendedCloudsColor.a *= smallCumulusColor.a;\n\t\t\t#endif\n\t\t\t#ifdef CloudLayer1\n\t\t\t\tblendedCloudsColor.rgb = blendedCloudsColor.rgb * largeCumulusColor.a + largeCumulusColor.rgb;\n\t\t\t\tblendedCloudsColor.a *= largeCumulusColor.a;\n\t\t\t#endif\n\t\tbreak; }\n\n\t\tcase 2: {\n\t\t\t#ifdef CloudLayer0\n\t\t\t\tblendedCloudsColor = smallCumulusColor;\n\t\t\t#endif\n\t\t\t#ifdef CloudLayer1\n\t\t\t\tblendedCloudsColor.rgb = blendedCloudsColor.rgb * largeCumulusColor.a + largeCumulusColor.rgb;\n\t\t\t\tblendedCloudsColor.a *= largeCumulusColor.a;\n\t\t\t#endif\n\t\t\t#ifdef CloudLayer2\n\t\t\t\tblendedCloudsColor.rgb = blendedCloudsColor.rgb * altostratusColor.a + altostratusColor.rgb;\n\t\t\t\tblendedCloudsColor.a *= altostratusColor.a;\n\t\t\t#endif\n\t\tbreak; }\n\t}\n\treturn blendedCloudsColor;\n}\n\nvec4 GetVolumetricClouds(\n\tvec3 viewPos,\n\tvec2 dither,\n\tvec3 sunVector,\n\tvec3 directLightCol,\n\tvec3 indirectLightCol,\n\n\tinout float cloudPlaneDistance\n){\t\n\t#ifndef VOLUMETRIC_CLOUDS\n\t\treturn vec4(0.0,0.0,0.0,1.0);\n\t#endif\n\n\tvec3 color = vec3(0.0);\n\tfloat totalAbsorbance = 1.0;\n\tvec4 cloudColor = vec4(color, totalAbsorbance);\n\n\tfloat cloudheight = CloudLayer0_tallness / CloudLayer0_scale;\n\tfloat minHeight = CloudLayer0_height;\n\tfloat maxHeight = cloudheight + minHeight;\n\n\t#if defined OVERWORLD_SHADER && defined AETHER_FLAG\n\t\tminHeight = CloudLayer0_height - 350.0;\n\t\tmaxHeight = cloudheight + minHeight;\n\t#endif\n\n\tint layerViewIndex = 0;\n\t#ifdef CloudLayer1\n\t\tif(CloudLayer1_height < cameraPosition.y) layerViewIndex = 1;\n\t#endif\n\t#ifdef CloudLayer2\n\t\tif(CloudLayer2_height < cameraPosition.y) layerViewIndex = 2;\n\t#endif\n\n\tfloat heightRelativeToClouds = clamp(1.0 - max(cameraPosition.y - minHeight,0.0) / 100.0 ,0.0,1.0);\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat maxdist = dhFarPlane - 16.0;\n\t#else\n\t\tfloat maxdist = far + 16.0*5.0;\n\t#endif\n\n   \tfloat lViewPosM = length(viewPos) < maxdist ? length(viewPos) - 1.0 : 100000000.0;\n\tvec4 NormPlayerPos = normalize(gbufferModelViewInverse * vec4(viewPos, 1.0) + vec4(gbufferModelViewInverse[3].xyz,0.0));\n\n\tvec3 signedSunVec = sunVector;\n\tvec3 unsignedSunVec = sunVector;// * (float(sunElevation > 1e-5)*2.0-1.0);\n\tfloat SdotV = dot(unsignedSunVec, NormPlayerPos.xyz);\n\n\t#ifdef SKY_GROUND\n\t\tNormPlayerPos.y += 0.03;\n\t#endif\n\n\tfloat maxSamples = 20.0 * CLOUDS_QUALITY;\n\tfloat minSamples = 15.0 * CLOUDS_QUALITY;\n\n\tint samples = int(clamp(maxSamples / sqrt(exp2(NormPlayerPos.y)), 0.0, minSamples));\n\n   \t///------- setup the ray\n\tvec3 cloudDist = vec3(1.0);\n\tcloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-5) - cameraPosition.y ,0.0,1.0)));\n\n\tvec3 rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)/samples);\n\tvec3 rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);\n\n\t#ifdef SKY_GROUND\n\t\tvec3 sampledSkyCol = mix(skyFromTex(normalize(rayPosition - cameraPosition), colortex4)/1200.0 * Sky_Brightness, indirectLightCol, 1.0);\n\t#else\n\t\tvec3 sampledSkyCol = skyFromTex(normalize(rayPosition - cameraPosition), colortex4)/1200.0 * Sky_Brightness;\n\t#endif\n\t// setup for getting distance\n\tvec3 playerPos = mat3(gbufferModelViewInverse) * viewPos;\n\n\t#ifdef DISTANT_HORIZONS\n\t\tfloat maxLength = min(length(playerPos), max(far, dhRenderDistance))/length(playerPos);\n\t#else\n\t\tfloat maxLength = min(length(playerPos), far)/length(playerPos);\n\t#endif\n\n\tplayerPos *= maxLength;\n\n\tfloat startDistance = length(playerPos);\n\n\t#if defined EXCLUDE_WRITE_TO_LUT && defined USE_CUSTOM_CLOUD_LIGHTING_COLORS\n\t\tdirectLightCol = dot(directLightCol,vec3(0.21, 0.72, 0.07)) * vec3(DIRECTLIGHT_CLOUDS_R,DIRECTLIGHT_CLOUDS_G,DIRECTLIGHT_CLOUDS_B);\n\t\tindirectLightCol = dot(indirectLightCol,vec3(0.21, 0.72, 0.07)) * vec3(INDIRECTLIGHT_CLOUDS_R,INDIRECTLIGHT_CLOUDS_G,INDIRECTLIGHT_CLOUDS_B);\n\t#endif\n\n\t///------- do color stuff outside of the raymarcher loop\n\t// the idea is to interpolate between 4 HG function calls with different G parameters\n\tfloat backScatterPhase = phaseCloud(-SdotV, 0.25) * 2.0;\n\tvec4 phaseLevels = vec4(phaseCloud(SdotV, 0.80), phaseCloud(SdotV, 0.55), phaseCloud(SdotV, 0.35), phaseCloud(SdotV, 0.10));\n\n\tvec3 sunScattering = directLightCol;\n\tvec3 skyScattering = indirectLightCol * (1.0 + pow(1.0-pow(1.0-clamp(sunVector.y,0.0,1.0),5.0),5.0));\n\n\tbool occlusionCheck = true;\n   \t////-------  RENDER SMALL CUMULUS CLOUDS\n\t\tvec4 smallCumulusClouds = cloudColor;\n\n\t\tvec2 cloudLayer0_Distance = vec2(startDistance, 1.0);\n\t\t#ifdef CloudLayer0\n\t\t\tsmallCumulusClouds = raymarchCloud(SMALLCUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, sunScattering, skyScattering, lViewPosM, sampledSkyCol, cloudLayer0_Distance, backScatterPhase, phaseLevels);\n\t\t#endif\n\n\t////------- RENDER LARGE CUMULUS CLOUDS\n\t\tvec4 largeCumulusClouds = cloudColor;\n\n\t\t#ifdef CloudLayer1\n\t\t\tcloudheight = CloudLayer1_tallness/CloudLayer1_scale;\n\t\t\tminHeight = CloudLayer1_height;\n\t\t\tmaxHeight = cloudheight + minHeight;\n\n\t\t\tcloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-15) - cameraPosition.y ,0.0,1.0)));\n\t\t\trayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)/samples);\n\t\t\trayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);\n\n\t\t\tvec2 cloudLayer1_Distance = vec2(startDistance, 1.0);\n\t\t\t\n\t\t\tocclusionCheck = layerViewIndex < 1 ? smallCumulusClouds.a > 1e-5 : true;\n\t\t\tif(occlusionCheck) largeCumulusClouds = raymarchCloud(LARGECUMULUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, sunScattering, skyScattering, lViewPosM, sampledSkyCol, cloudLayer1_Distance, backScatterPhase, phaseLevels);\n\t\t#endif\n\n   \t////------- RENDER ALTOSTRATUS CLOUDS\n\t\tvec4 altoStratusClouds = cloudColor;\n\n\t\t#ifdef CloudLayer2\n\t\t\tcloudheight = 5.0;\n\t\t\tminHeight = CloudLayer2_height;\n\t\t\tmaxHeight = cloudheight + minHeight;\n\n\t\t\tcloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-15) - cameraPosition.y ,0.0,1.0)));\n\t\t\trayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist));\n\t\t\trayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);\n\n\t\t\tvec2 cloudLayer2_Distance = vec2(startDistance, 1.0);\n\n\t\t\tocclusionCheck = layerViewIndex < 2 ? (smallCumulusClouds.a > 1e-5 || largeCumulusClouds.a > 1e-5) : true;\n\t\t\tif(occlusionCheck) altoStratusClouds = raymarchCloud(ALTOSTRATUS_LAYER, samples, rayPosition, rayDirection, dither.x, minHeight, maxHeight, unsignedSunVec, sunScattering, skyScattering, lViewPosM, sampledSkyCol, cloudLayer2_Distance, backScatterPhase, phaseLevels);\n\t\t#endif\n\n\t////------- BLEND LAYERS\n\n\t\t// this is for an intersection check for VL fog, so that fog cannot march beyond a cloud.\n\t\t#if defined CloudLayer0 && !defined CloudLayer1 && !defined CloudLayer2\n\t\t\tcloudPlaneDistance = cloudLayer0_Distance.x;\n\t\t#endif\n\t\t#if defined CloudLayer0 && defined CloudLayer1 && !defined CloudLayer2\n\t\t\tcloudPlaneDistance = mix(cloudLayer0_Distance.x, cloudLayer1_Distance.x, cloudLayer0_Distance.y);\n\t\t#endif\n\t\t#if defined CloudLayer0 && defined CloudLayer1 && defined CloudLayer2\n\t\t\tcloudPlaneDistance = mix(cloudLayer2_Distance.x, cloudLayer1_Distance.x, cloudLayer2_Distance.y);\n\t\t\tcloudPlaneDistance = mix(cloudLayer0_Distance.x, cloudPlaneDistance, cloudLayer0_Distance.y);\n\t\t#endif\n\t\t#if !defined CloudLayer0 && defined CloudLayer1 && defined CloudLayer2\n\t\t\tcloudPlaneDistance = mix(cloudLayer2_Distance.x, cloudLayer1_Distance.x, cloudLayer2_Distance.y);\n\t\t#endif\n\t\t#if defined CloudLayer0 && !defined CloudLayer1 && !defined CloudLayer2\n\t\t\tcloudPlaneDistance = cloudLayer0_Distance.x;\n\t\t#endif\n\t\t#if defined CloudLayer0 && !defined CloudLayer1 && defined CloudLayer2\n\t\t\tcloudPlaneDistance = cloudLayer0_Distance.x;\n\t\t#endif\n\t\t#if !defined CloudLayer0 && defined CloudLayer1 && !defined CloudLayer2\n\t\t\tcloudPlaneDistance = cloudLayer1_Distance.x;\n\t\t#endif\n\t\t#if !defined CloudLayer0 && !defined CloudLayer1 && defined CloudLayer2\n\t\t\tcloudPlaneDistance = cloudLayer2_Distance.x;\n\t\t#endif\n\n\t\tvec4 blendedCloudColor = getCorrectBlendOrder(layerViewIndex, smallCumulusClouds, largeCumulusClouds, altoStratusClouds);\n\n\t\tcolor = blendedCloudColor.rgb;\n\t\ttotalAbsorbance = blendedCloudColor.a;\n\n\t\treturn vec4(color, totalAbsorbance);\n\t}\n#endif"
  },
  {
    "path": "shaders/lib/voxel_common.glsl",
    "content": "#ifdef RENDER_SHADOW\n\tlayout(r16ui) uniform uimage3D imgVoxelMask;\n#else\n\tlayout(r16ui) uniform readonly uimage3D imgVoxelMask;\n#endif\n\nconst uint VoxelSize = uint(exp2(LPV_SIZE));\nconst uvec3 VoxelSize3 = uvec3(VoxelSize);\n\n#define BLOCK_EMPTY 0"
  },
  {
    "path": "shaders/lib/voxel_write.glsl",
    "content": "ivec3 GetVoxelIndex(const in vec3 playerPos) {\n\tvec3 cameraOffset = fract(cameraPosition);\n\treturn ivec3(floor(playerPos + cameraOffset) + VoxelSize3/2u);\n}\n\nvoid SetVoxelBlock(const in vec3 playerPos, const in uint blockId) {\n\tivec3 voxelPos = GetVoxelIndex(playerPos);\n\tif (clamp(voxelPos, ivec3(0), ivec3(VoxelSize-1u)) != voxelPos) return;\n\n\timageStore(imgVoxelMask, voxelPos, uvec4(blockId));\n}\n\nvoid PopulateShadowVoxel(const in vec3 playerPos) {\n\tuint voxelId = 0u;\n\tvec3 originPos = playerPos;\n\n\tif (\n\t\trenderStage == MC_RENDER_STAGE_TERRAIN_SOLID || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT ||\n\t\trenderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED\n\t) {\n\t\tvoxelId = uint(mc_Entity.x + 0.5);\n\n\t\t#ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE\n\t\t\tif (voxelId == 0u && at_midBlock.w > 0) voxelId = uint(BLOCK_LIGHT_1 + at_midBlock.w - 1);\n\t\t#endif\n\n\t\tif (voxelId == 0u) voxelId = 1u;\n\n\t\toriginPos += at_midBlock.xyz/64.0;\n\t}\n\t\n\t#ifdef LPV_ENTITY_LIGHTS\n\t\tif (\n\t\t\t((renderStage == MC_RENDER_STAGE_ENTITIES && (currentRenderedItemId > 0 || entityId > 0)) || renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES)\n\t\t) {\n\t\t\tif (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES) {\n\t\t\t\tif (blockEntityId > 0 && blockEntityId < 500)\n\t\t\t\t\tvoxelId = uint(blockEntityId);\n\t\t\t}\n\t\t\telse if (currentRenderedItemId > 0 && currentRenderedItemId < 1200) {\n\t\t\t\tif (entityId != ENTITY_ITEM_FRAME && entityId != ENTITY_PLAYER)\n\t\t\t\t\tvoxelId = uint(currentRenderedItemId);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tswitch (entityId) {\n\t\t\t\t\tcase ENTITY_BLAZE:\n\t\t\t\t\tcase ENTITY_END_CRYSTAL:\n\t\t\t\t\t// case ENTITY_FIREBALL_SMALL:\n\t\t\t\t\tcase ENTITY_GLOW_SQUID:\n\t\t\t\t\tcase ENTITY_MAGMA_CUBE:\n\t\t\t\t\tcase ENTITY_SPECTRAL_ARROW:\n\t\t\t\t\tcase ENTITY_TNT:\n\t\t\t\t\t\tvoxelId = uint(entityId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t#endif\n\n\tif (voxelId > 0u)\n\t\tSetVoxelBlock(originPos, voxelId);\n}"
  },
  {
    "path": "shaders/lib/waterBump.glsl",
    "content": "float waterCaustics(vec3 worldPos, vec3 sunVec) {\n\n\tvec3 projectedPos = worldPos - (sunVec/sunVec.y*worldPos.y);\n\tvec2 pos = projectedPos.xz;\n\n\tfloat movement = frameTimeCounter*0.035 * WATER_WAVE_SPEED;\n\n\tfloat radiance = 2.39996;\n\tmat2 rotationMatrix  = mat2(vec2(cos(radiance),  -sin(radiance)),  vec2(sin(radiance),  cos(radiance)));\n\n\tvec2 wave_size[3] = vec2[](\n\t\tvec2(48,12),\n\t\tvec2(12,48),\n\t\tvec2(32,32)\n\t);\n\n\tfloat largeWaves = texture2D(noisetex, pos / 600.0 ).b;\n \tfloat largeWavesCurved = pow(1.0-pow(1.0-largeWaves,2.5),4.5);\n\n\tfloat heightSum = 0.0;\n\tfor (int i = 0; i < 3; i++){\n\t\tpos = rotationMatrix * pos;\n\t\theightSum += 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);\n\t}\n\treturn exp((1.0 + 5.0 * sqrt(largeWavesCurved)) * (heightSum / 3.0 - 0.5));\n}\n\nfloat getWaterHeightmap(vec2 posxz, in float largeWaves, in float largeWavesCurved) {\n\tvec2 pos = posxz;\n\n\tfloat movement = frameTimeCounter * 0.035 * WATER_WAVE_SPEED;\n\n\tfloat radiance = 2.39996;\n\tmat2 rotationMatrix  = mat2(vec2(cos(radiance),  -sin(radiance)),  vec2(sin(radiance),  cos(radiance)));\n\n\tvec2 wave_size[3] = vec2[](\n\t\tvec2(48.,12.),\n\t\tvec2(12.,48.),\n\t\tvec2(32.,32.)\n\t);\n\n\tfloat heightSum = 0.0;\n\tfor (int i = 0; i < 3; i++){\n\t\tpos = rotationMatrix * pos;\n\t\theightSum += texture2D(noisetex, pos / wave_size[i] + largeWavesCurved * 0.5 + movement).b;\n\t}\n\treturn (heightSum/4.5) * mix(0.3, 1.0, largeWavesCurved);\n}\n\nvec3 getWaveNormal(vec3 waterPos, vec3 playerpos, bool isLOD){\n\n\tfloat largeWaves = texture2D(noisetex, waterPos.xy / 600.0).b;\n \tfloat largeWavesCurved = pow(1.0-pow(1.0-largeWaves,2.0),2.5);\n\n\t#ifdef HYPER_DETAILED_WAVES\n\t\tfloat deltaPos = 0.025;\n \t#else\n \t\tfloat deltaPos = mix(1.0, 0.15, largeWavesCurved);\n \t\t// reduce high frequency detail as distance increases. reduces noise on waves. why have more details than pixels?\n \t\tfloat range = min(length(playerpos) / (16.0 * 24.0), 3.0);\n \t\tdeltaPos += range;\n\t#endif\n\n\tvec2 coord = waterPos.xy;\n\n\tfloat h0 = getWaterHeightmap(coord, largeWaves, largeWavesCurved);\n \tfloat h1 = getWaterHeightmap(coord + vec2(deltaPos,0.0), largeWaves,largeWavesCurved);\n \tfloat h3 = getWaterHeightmap(coord + vec2(0.0,deltaPos), largeWaves,largeWavesCurved);\n\n\tfloat xDelta = (h1-h0)/deltaPos;\n\tfloat yDelta = (h3-h0)/deltaPos;\n\n\tvec3 wave = normalize(vec3(xDelta, yDelta, 1.0-pow(abs(xDelta+yDelta),2.0)));\n\n\treturn wave;\n}"
  },
  {
    "path": "shaders/shaders.properties",
    "content": "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\n\nprofile.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\n\nprofile.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\n\nprofile.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\n\nprofile.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\n\nprofile.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\n\nscreen.columns=2\nscreen = \\\nSHADER_VERSION_LABEL <profile> \\\n<empty> <empty> \\\n[World] [Ambient_Light_Shadow] \\\n[Water] [Resource_Pack_Support] \\\n[Clouds] [Post_Processing] \\\n[Fog] [Effects] \\\n<empty> <empty> \\\n[Misc_Settings] [Mod_support]\n\n###### WORLD\n\tscreen.World.columns=1\n\tscreen.World = [Sky] [Weather] [Biome] [Seasons] [Waving_Stuff] SKY_GROUND PLANET_CURVATURE CURVATURE_AMOUNT\n\n\t\tscreen.Sky.columns = 2\n\t\tscreen.Sky = \\\n\t\t[Sky_coefficients] [Sun_and_Moon] \\\n\t\t[Aurora] [Stars_and_Shooting_Stars] \\\n\t\t[Rainbow]\n\n\t\t\tscreen.Sky_coefficients.columns=1\n\t\t\tscreen.Sky_coefficients = Sky_Brightness sky_coefficientRayleighR sky_coefficientRayleighG sky_coefficientRayleighB sky_coefficientMieR sky_coefficientMieG sky_coefficientMieB\n\n\t\t\tscreen.Sun_and_Moon.columns = 2\n\t\t\tscreen.Sun_and_Moon = \\\n\t\t\tcolortype <empty> \\\n\t\t\tsunColorR  moonColorR \\\n\t\t\tsunColorG moonColorG \\\n\t\t\tsunColorB moonColorB \\\n\t\t\t<empty> <empty> \\\n\t\t\tSun_temp Moon_temp \\\n\t\t\tsun_illuminance moon_illuminance \\\n\t\t\tsunPathRotation MOONPHASE_BASED_MOONLIGHT\n\n\t\t\tscreen.Aurora.columns = 2\n\t\t\tscreen.Aurora = \\\n\t\t\tAURORA_BRIGHTNESS AURORA_SPEED \\\n\t\t\tAURORA_SNOWY AUR_ENV_OFFSET \\\n\t\t\tAURORA_UPPER_R AURORA_LOWER_R \\\n\t\t\tAURORA_UPPER_G AURORA_LOWER_G \\\n\t\t\tAURORA_UPPER_B AURORA_LOWER_B\n\n\t\t\tscreen.Stars_and_Shooting_Stars.columns = 2\n\t\t\tscreen.Stars_and_Shooting_Stars = \\\n\t\t\tSTAR_DENSITY STAR_MOVEMENT_MULT \\\n\t\t\t<empty> <empty> \\\n\t\t\tSHOOTING_STARS SHOOTING_STARS_SPEED \\\n\t\t\tSHOOTING_STARS_FREQUENCY SHOOTING_STARS_TRAIL_VISIBILITY \\\n\t\t\tSHOOTING_STARS_TRAIL_LENGTH SHOOTING_STARS_TRAIL_WIDTH\n\n\t\t\tscreen.Rainbow.columns = 1\n\t\t\tscreen.Rainbow = RAINBOW RAINBOW_STRENGTH RAINBOW_WIDTH RAINBOW_DISTANCE\n\n\t\tscreen.Weather.columns = 1\n\t\tscreen.Weather = RAIN_VISIBILITY Rain_coverage [Rain_Fog] WATER_RIPPLES GROUND_RIPPLES [DAILY_WEATHER]\n\n\t\t\tscreen.Rain_Fog.columns = 1\n\t\t\tscreen.Rain_Fog = RainFog_amount RAINFOG_R RAINFOG_G RAINFOG_B\n\n\t\t\tscreen.DAILY_WEATHER.columns = 2\n\t\t\tscreen.DAILY_WEATHER = \\\n\t\t\tDaily_Weather CHOOSE_RANDOM_WEATHER_PROFILE \\\n\t\t\t[DAY0_WEATHER] [DAY5_WEATHER] \\\n\t\t\t[DAY1_WEATHER] [DAY6_WEATHER] \\\n\t\t\t[DAY2_WEATHER] [DAY7_WEATHER] \\\n\t\t\t[DAY3_WEATHER] [DAY8_WEATHER] \\\n\t\t\t[DAY4_WEATHER] [DAY9_WEATHER]\n\n\t\t\t\tscreen.DAY0_WEATHER.columns = 2\n\t\t\t\tscreen.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\n\t\t\t\tscreen.DAY1_WEATHER.columns = 2\n\t\t\t\tscreen.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\n\t\t\t\tscreen.DAY2_WEATHER.columns = 2\n\t\t\t\tscreen.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                   \n\t\t\t\tscreen.DAY3_WEATHER.columns = 2\n    \t\t\tscreen.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  \n\t\t\t\tscreen.DAY4_WEATHER.columns = 2\n\t\t\t\tscreen.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 \n\t\t\t\tscreen.DAY5_WEATHER.columns = 2\n\t\t\t\tscreen.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 \n\t\t\t\tscreen.DAY6_WEATHER.columns = 2\n\t\t\t\tscreen.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 \n\t\t\t\tscreen.DAY7_WEATHER.columns = 2\n\t\t\t\tscreen.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 \n\t\t\t\tscreen.DAY8_WEATHER.columns = 2\n\t\t\t\tscreen.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 \n\t\t\t\tscreen.DAY9_WEATHER.columns = 2\n\t\t\t\tscreen.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\n\n\t\tscreen.Biome.columns = 1\n\t\tscreen.Biome = BIOME_TINT_WATER PER_BIOME_ENVIRONMENT [SWAMP] [JUNGLE] [DARKFOREST] [SNOWY] [DRY]\n\n\t\t\tscreen.SWAMP.columns = 1\n\t\t\tscreen.SWAMP = SWAMP_ENV SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY <empty> SWAMP_R SWAMP_G SWAMP_B\n\n\t\t\tscreen.JUNGLE.columns = 1\n\t\t\tscreen.JUNGLE = JUNGLE_ENV JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY <empty> JUNGLE_R JUNGLE_G JUNGLE_B\n\n\t\t\tscreen.DARKFOREST.columns = 1\n\t\t\tscreen.DARKFOREST = DARKFOREST_ENV DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY <empty> DARKFOREST_R DARKFOREST_G DARKFOREST_B\n\n\t\t\tscreen.SNOWY.columns = 1\n\t\t\tscreen.SNOWY = SNOWY_ENV SNOWY_UNIFORM_DENSITY SNOWY_CLOUDY_DENSITY <empty> SNOWY_R SNOWY_G SNOWY_B\n\n\t\t\tscreen.DRY.columns = 1\n\t\t\tscreen.DRY = DRY_ENV DRY_UNIFORM_DENSITY DRY_CLOUDY_DENSITY <empty> DRY_R DRY_G DRY_B\n\n\t\tscreen.Seasons.columns = 1\n\t\tscreen.Seasons = Seasons Season_Length Start_Season <empty> [Summer_colors] [Fall_colors] [Winter_colors] [Spring_colors] \n\n\t\t\tscreen.Summer_colors.columns = 1\n\t\t\tscreen.Summer_colors = Summer_R Summer_G Summer_B <empty> Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B\n\n\t\t\tscreen.Fall_colors.columns = 1\n\t\t\tscreen.Fall_colors = Fall_R Fall_G Fall_B <empty> Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B\n\n\t\t\tscreen.Winter_colors.columns = 1\n\t\t\tscreen.Winter_colors = Winter_R Winter_G Winter_B <empty> Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B\n\n\t\t\tscreen.Spring_colors.columns = 1\n\t\t\tscreen.Spring_colors = Spring_R Spring_G Spring_B <empty> Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B\n\n\t\tscreen.Waving_Stuff.columns = 1\n\t\tscreen.Waving_Stuff = WAVY_PLANTS RP_MODEL_FIX WAVY_STRENGTH WAVY_SPEED\n\n###### AMBIENT LIGHT & SHADOW\n\tscreen.Ambient_Light_Shadow.columns = 2\n\tscreen.Ambient_Light_Shadow = \\\n\t[Torch_Settings] [HAND_HELD_LIGHT] \\\n\t[Ambient_Colors] [Shadows] \\\n\t<empty> <empty> \\\n\tLPV_ENABLED [LPV] \\\n\tLPV_SHADOWS [BLOCK_SHADOWS] \\\n\t<empty> <empty> \\\n\tindirect_effect [AO] \\\n\tindirect_RTGI [GI]\n\n\t\tscreen.HAND_HELD_LIGHT.columns = 2\n\t\tscreen.HAND_HELD_LIGHT = \\\n\t\tHand_Held_lights HANDHELD_LIGHT_RANGE \\\n\t\tFLASHLIGHT [FLASHLIGHT_SETTING]\n\n\t\t\tscreen.FLASHLIGHT_SETTING.columns = 2\n\t\t\tscreen.FLASHLIGHT_SETTING = \\\n\t\t\tFLASHLIGHT_RANGE FLASHLIGHT_R \\\n\t\t\tFLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_G \\\n\t\t\tFLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_B \\\n\t\t\tFLASHLIGHT_SPECULAR FLASHLIGHT_BOUNCED_INDIRECT \\\n\t\t\tFLASHLIGHT_SIZE FLASHLIGHT_FOG_ILLUMINATION\n\n\t\tscreen.LPV.columns = 2\n\t\tscreen.LPV = LPV_SIZE LPV_BLOCKLIGHT_SCALE \\\n\t\tLPV_SATURATION LPV_COLORED_CANDLES \\\n\t\tLPV_TINT_SATURATION LPV_REDSTONE_LIGHTS \\\n\t\tLPV_NORMAL_STRENGTH LPV_ENTITY_LIGHTS \\\n\t\tLPV_VL_FOG_ILLUMINATION LPV_NOSHADOW_HACK \\\n\t\tLPV_VL_FOG_ILLUMINATION_BRIGHTNESS VANILLA_LIGHTMAP_MASK\n\n\t\tscreen.BLOCK_SHADOWS.columns = 1\n\t\tscreen.BLOCK_SHADOWS = LPV_SHADOWS_LIGHT_COUNT LPV_SHADOWS_LIGHT_MULT LPV_COLOR_SHADOWS LPV_HAND_SHADOWS\n\n\t\tscreen.Torch_Settings.columns=1\n\t\tscreen.Torch_Settings = TORCH_AMOUNT Emissive_Brightness Emissive_Curve <empty> TORCH_R TORCH_G TORCH_B\n\n\t\tscreen.Ambient_Colors.columns=1\n\t\tscreen.Ambient_Colors = ambient_brightness MIN_LIGHT_AMOUNT <empty> AmbientLight_R AmbientLight_G AmbientLight_B\n\n\t\tscreen.Shadows.columns=1\n\t\tscreen.Shadows = shadowMapResolution shadowDistance [Filtering] <empty> TRANSLUCENT_COLORED_SHADOWS SCREENSPACE_CONTACT_SHADOWS RENDER_ENTITY_SHADOWS RENDER_PLAYER_SHADOWS\n\n\t\t\tscreen.Filtering.columns=1\n\t\t\tscreen.Filtering = BASIC_SHADOW_FILTER SHADOW_FILTER_SAMPLE_COUNT Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius <empty> Variable_Penumbra_Shadows VPS_Search_Samples Max_Filter_Depth\n\n\t\tscreen.AO.columns = 1\n\t\tscreen.AO = AO_Strength AO_in_sunlight\n\n\t\tscreen.GI.columns = 1\n\t\tscreen.GI = RAY_COUNT RT_ITERATION GI_Strength UseQuarterResDepth\n\n###### RESOURCE PACK SUPPORT\n\tscreen.Resource_Pack_Support.columns = 1\n\tscreen.Resource_Pack_Support = [Reflections] [Emissives] [Subsurface_Scattering] [POM] [Porosity] MATERIAL_AO MATERIAL_NORMAL_STRENGTH RESOURCEPACK_SKY\n\n\t\tscreen.Reflections.columns=2\n\t\tscreen.Reflections = \\\n\t\tDEFERRED_SPECULAR FORWARD_SPECULAR \\\n\t\tDEFERRED_SSR_QUALITY FORWARD_SSR_QUALITY \\\n\t\tDEFERRED_BACKGROUND_REFLECTION FORWARD_BACKGROUND_REFLECTION \\\n\t\tDEFERRED_ROUGH_REFLECTION FORWARD_ROUGH_REFLECTION \\\n\t\tWATER_SUN_SPECULAR SUN_SPECULAR_MULT \\\n\t\tROUGHNESS_THRESHOLD MATERIAL_WETNESS_TYPE\n\n\t\tscreen.Subsurface_Scattering.columns=1\n\t\tscreen.Subsurface_Scattering = SSS_TYPE sss_density_multiplier sss_absorbance_multiplier LabSSS_Curve  <empty> MISC_BLOCK_SSS MOB_SSS Ambient_SSS ambientsss_brightness SCREENSPACE_DIRECT_SSS_BLENDING\n\n\t\tscreen.Emissives.columns = 1\n\t\tscreen.Emissives = EMISSIVE_TYPE Emissive_Brightness Emissive_Curve\n    \n\t\tscreen.POM.columns=1\n\t\tscreen.POM = POM Adaptive_Step_length MAX_ITERATIONS POM_DEPTH MAX_DIST\n\n\t\tscreen.Porosity.columns = 1\n\t\tscreen.Porosity = Porosity Puddles Puddle_Size \n\n###### WATER\n\t\tscreen.Water.columns=2\n\t\tscreen.Water =  rayMarchSampleCount [Water_fog_color] \\\n\t\tFAKE_DISPERSION_AMOUNT Dirt_Amount \\\n\t\tFAKE_REFRACTION_AMOUNT MINIMUM_WATER_ABSORBANCE \\\n\t\tREFRACTION_SMUDGE_AMOUNT SNELLS_WINDOW \\\n  \t\tWATER_CAUSTICS_BRIGHTNESS WATER_WAVE_STRENGTH \\\n\t\tWATER_CAUSTICS_STRENGTH WATER_WAVE_SPEED \\\n\t\tWATER_DISTORTION_AMOUNT LARGE_WAVE_DISPLACEMENT \\\n\t\tHYPER_DETAILED_WAVES\n\n                screen.Water_fog_color.columns=1\n                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\n\n###### CLOUDS\n\tscreen.Clouds.columns = 2\n\tscreen.Clouds = \\\n\tVOLUMETRIC_CLOUDS CLOUDS_SHADOWS \\\n\tCLOUDS_QUALITY CLOUD_SHADOW_STRENGTH \\\n\tHQ_CLOUDS ERODE_AMOUNT \\\n\tCloud_Speed <empty> \\\n\tCloudLayer0 [S_Cumulus_Cloud] \\\n\tCloudLayer1 [L_Cumulus_Cloud] \\\n\tCloudLayer2 [Altostratus_Cloud]\n\n\t\tscreen.S_Cumulus_Cloud.columns = 1\n\t\tscreen.S_Cumulus_Cloud = CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer0_tallness CloudLayer0_scale\n\n\t\tscreen.L_Cumulus_Cloud.columns = 1\n\t\tscreen.L_Cumulus_Cloud = CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer1_tallness CloudLayer1_scale\n\n\t\tscreen.Altostratus_Cloud.columns = 1\n\t\tscreen.Altostratus_Cloud = CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer2_scale\n\n###### FOG\n\tscreen.Fog.columns = 2\n\tscreen.Fog = \\\n\tVL_RENDER_RESOLUTION Haze_amount \\\n\tVL_SAMPLES BLOOMY_FOG \\\n\tFOG_START_HEIGHT BorderFog \\\n\t[Fog_Color] [TOD_fog] \\\n\t[Nether_Fog] [End_Fog] \\\n\t[Cave_Fog]\n\n\t\tscreen.TOD_fog.columns = 2\n\t\tscreen.TOD_fog = TOD_Fog_mult <empty> Morning_Uniform_Fog Morning_Cloudy_Fog Noon_Uniform_Fog Noon_Cloudy_Fog Evening_Uniform_Fog Evening_Cloudy_Fog Night_Uniform_Fog Night_Cloudy_Fog\n                \n\t\tscreen.Cave_Fog.columns = 1\n\t\tscreen.Cave_Fog = CAVE_FOG CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B\n\n\t\tscreen.Fog_Color.columns = 1\n\t\tscreen.Fog_Color = fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB\n\n\t\tscreen.Nether_Fog.columns = 1\n\t\tscreen.Nether_Fog = NETHER_PLUME_DENSITY NETHER_PLUME_R NETHER_PLUME_G NETHER_PLUME_B\n\n\t\tscreen.End_Fog.columns = 1\n\t\tscreen.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\n      \n###### POST\n\tscreen.Post_Processing.columns = 2\n\tscreen.Post_Processing = \\\n\t[TAA_OPTIONS] [COLOR] \\\n\t[Exposure] [Purkinje_effect] \\\n\t[DepthOfField] CAMERA_GRIDLINES \\\n\tBLOOM_STRENGTH SHARPENING \\\n\tMOTION_BLUR MOTION_BLUR_STRENGTH \\\n\tCHROMATIC_ABERRATION CHROMATIC_ABERRATION_STRENGTH \\\n\tVIGNETTE VIGNETTE_STRENGTH \\\n\n\t### TAA\n\t\tscreen.TAA_OPTIONS.columns = 1\n\t\tscreen.TAA_OPTIONS= SCREENSHOT_MODE <empty> TAA RESPONSIVE_TAA BLEND_FACTOR BLEND_FACTOR_DURING_MOVEMENT TAA_UPSCALING SCALE_FACTOR\n\n\t### EXPOSURE\n\t\tscreen.Exposure.columns = 1\n\t\tscreen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed  Manual_exposure_value EXPOSURE_DARKENING EXPOSURE_BRIGHTENING\n\n\t### COLOR\n\t\tscreen.COLOR.columns = 2\n\t\tscreen.COLOR = \\\n\t\tTONEMAP AGX_LOOK \\\n\t\tSATURATION CROSSTALK \\\n\t\t<empty> <empty> \\\n\t\tCOLOR_GRADING_ENABLED [COLOR_GRADING] \\\n\t\tLUMINANCE_CURVE USE_ACES_COLORSPACE_APPROXIMATION \\\n\t\tLOWER_CURVE UPPER_CURVE\n\n\t\t\tscreen.COLOR_GRADING.columns = 2\n\t\t\tscreen.COLOR_GRADING = \\\n\t\t\tSHADOWS_GRADE_R SHADOWS_GRADE_B \\\n\t\t\tSHADOWS_GRADE_G SHADOWS_GRADE_MUL \\\n\t\t\t<empty> <empty> \\\n\t\t\tMIDS_GRADE_R MIDS_GRADE_B \\\n\t\t\tMIDS_GRADE_G MIDS_GRADE_MUL \\\n\t\t\t<empty> <empty> \\\n\t\t\tHIGHLIGHTS_GRADE_R HIGHLIGHTS_GRADE_B \\\n\t\t\tHIGHLIGHTS_GRADE_G HIGHLIGHTS_GRADE_MUL \\\n\n\t### DOF\n\t\tscreen.DepthOfField.columns = 1\n\t\tscreen.DepthOfField = DOF_QUALITY DOF_ANAMORPHIC_RATIO DOF_DISPERSION_MULT focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY REMOVE_HAND_BLUR [JITTER_DOF]\n\t\t\tscreen.JITTER_DOF.columns=1\n\t\t\tscreen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR\n\n\t### PURKINJE\n\t\tscreen.Purkinje_effect.columns = 1\n\t\tscreen.Purkinje_effect = Purkinje_strength Purkinje_Multiplier Purkinje_R Purkinje_G Purkinje_B\n\n###### EFFECTS\n\tscreen.Effects.columns = 1\n\tscreen.Effects = [Emissive_Ore] [GAMEPLAY_EFFECTS] [LENS_EFFECTS] [Aerochrome_Mode] FANCY_END_PORTAL\n\n\t\tscreen.Emissive_Ore.columns=1\n\t\tscreen.Emissive_Ore = EMISSIVE_ORE EMISSIVE_ORE_RANGE <empty> EMISSIVE_ORE_R EMISSIVE_ORE_G EMISSIVE_ORE_B\n\n\t### GAMEPLAY EFFECTS\n\t\tscreen.GAMEPLAY_EFFECTS.columns = 1\n\t\tscreen.GAMEPLAY_EFFECTS = MOTION_AMOUNT DAMAGE_TAKEN_EFFECT LOW_HEALTH_EFFECT LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START\n\n\t\tscreen.LENS_EFFECTS.columns = 2\n\t\tscreen.LENS_EFFECTS = \\\n\t\t\tDISTORT_EFFECT_AMOUNT <empty> \\\n\t\t\tWATER_ON_CAMERA_EFFECT ON_FIRE_DISTORT_EFFECT \\\n\t\t\t<empty> <empty> \\\n\t\t\tRAIN_ON_CAMERA_EFFECT <empty> \\\n\t\t\tLENS_FLARE LENS_FLARE_STRENGTH \\\n\t\t\tFISHEYE_EFFECT FISHEYE_STRENGTH \\\n\n\t\tscreen.Aerochrome_Mode.columns=1\n\t\tscreen.Aerochrome_Mode = AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED\n\n###### MOD SUPPORT SETTINGS\n\tscreen.Mod_support = [DISTANT_HORIZONS_SETTINGS] [PHYSICS_MOD_OCEAN_SETTINGS]\n    \n\t\tscreen.DISTANT_HORIZONS_SETTINGS.columns = 1\n\t\tscreen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE <empty> DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DH_TAA_JITTER DH_NOISE_TEXTURE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF <empty> DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution <empty> TOGGLE_VL_FOG\n\n###### MISC SETTINGS\n\tscreen.Misc_Settings.columns = 1\n\tscreen.Misc_Settings = [DEBUG] [selection_box_outline] [EXPERIMENTAL_STUFF] [SCENE_CONTROLLER] ISOLATE_RESOURCEPACK_SKY\n\n\t\tscreen.DEBUG.columns = 1\n\t\tscreen.DEBUG = DEBUG_VIEW display_LUT WhiteWorld SSS_view ambientLight_only DISABLE_VANILLA_EMISSIVES \n\n\t\tscreen.selection_box_outline.columns = 1\n\t\tscreen.selection_box_outline = SELECT_BOX SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B\n\n\t\tscreen.EXPERIMENTAL_STUFF.columns = 2\n\t\tscreen.EXPERIMENTAL_STUFF = \\\n\t\tCLOUDS_INTERSECT_TERRAIN BLOOMY_PARTICLES \\\n\t\tLIT_PARTICLE_BRIGHTNESS DISABLE_ENCHANT_GLINT \\\n\t\tOLD_BLOOM PLANET_GROUND_BRIGHTNESS \\\n\t\tOLD_INDIRECT_SSS TRANSLUCENT_ENTITIES \\\n\t\tOLD_CAVE_DETECTION PARTICLE_RENDERING_FIX \\\n\t\tLIGHTLEAKFIX_MODE LIGHTING_EFFECTS_BLUR_FILTER \\\n\t\tFORCE_TRANSLUCENT_GLASS LIGHTNING_FLASH \\\n\t\tTexture_MipMap_Bias\n\n\t\tscreen.SCENE_CONTROLLER.columns = 2\n\t\tscreen.SCENE_CONTROLLER = \\\n\t\tUSE_CUSTOM_DIFFUSE_LIGHTING_COLORS [DIFFUSE_LIGHTING_COLORS] \\\n\t\tUSE_CUSTOM_CLOUD_LIGHTING_COLORS [CLOUD_LIGHTING_COLORS] \\\n\t\tUSE_CUSTOM_FOG_LIGHTING_COLORS [FOG_LIGHTING_COLORS] \\\n\t\tUSE_CUSTOM_SKY_GROUND_LIGHTING_COLORS [SKY_GROUND_LIGHTING_COLORS]\n\n\t\t\tscreen.DIFFUSE_LIGHTING_COLORS.columns = 1\n\t\t\tscreen.DIFFUSE_LIGHTING_COLORS = DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B\n\n\t\t\tscreen.CLOUD_LIGHTING_COLORS.columns = 1\n\t\t\tscreen.CLOUD_LIGHTING_COLORS = DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B\n\n\t\t\tscreen.FOG_LIGHTING_COLORS.columns = 1\n\t\t\tscreen.FOG_LIGHTING_COLORS = DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B\n\n\t\t\tscreen.SKY_GROUND_LIGHTING_COLORS.columns = 1\n\t\t\tscreen.SKY_GROUND_LIGHTING_COLORS = SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B\n\n###################################\n####### SHADER PREPARE STUFF #######\n###################################\n\nclouds=off\nstars=false\nvignette=false\n\nunderwaterOverlay=false\ndynamicHandLight=true\noldLighting=false\nseparateAo=true\nrain.depth=false\nbeacon.beam.depth=true\n\niris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES BLOCK_EMISSION_ATTRIBUTE\n\n#if RESOURCEPACK_SKY == 2 || RESOURCEPACK_SKY == 3\n\tsun=true\n\tmoon=true\n#else\n\tsun=false\n\tmoon=false\n#endif\n\n#if RESOURCEPACK_SKY != 0\n    particles.before.deferred=false\n    particles.ordering=after\n#endif\n\n#ifdef LPV_ENABLED\n\tshadow.enabled = true\n\tshadow.culling = reversed\n\tvoxelizeLightBlocks = true\n#endif\n\n#ifndef RENDER_ENTITY_SHADOWS\n\tshadowBlockEntities = false\n\tshadowEntities = false\n\t#ifdef RENDER_PLAYER_SHADOWS\n\t\tshadowPlayer = true\n\t#endif\n#endif\n\n#if defined TRANSLUCENT_ENTITIES && defined IS_IRIS\n\tseparateEntityDraws = true\n#else\n\tseparateEntityDraws = false\n#endif\n\nprogram.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS\nprogram.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS\n\nprogram.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS\nprogram.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS\n\nprogram.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS\nprogram.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS\n\n#if defined DISTANT_HORIZONS && defined IS_IRIS\n\n\t#ifdef DISTANT_HORIZONS_SHADOWMAP\n\t\tdhShadow.enabled = true\n\t#else\n\t\tdhShadow.enabled = false\n\t#endif\n\n\tprogram.world0/dh_terrain.enabled = true\n\tprogram.world0/dh_water.enabled = true\n\tprogram.world1/dh_terrain.enabled = true\n\tprogram.world1/dh_water.enabled = true\n\tprogram.world-1/dh_terrain.enabled = true\n\tprogram.world-1/dh_water.enabled = true\n\n\tblend.dh_terrain = off\n\tblend.dh_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\n#else\n\tdhShadow.enabled = false\n\tprogram.world0/dh_terrain.enabled = false\n\tprogram.world0/dh_water.enabled = false\n\tprogram.world1/dh_terrain.enabled = false\n\tprogram.world1/dh_water.enabled = false\n\tprogram.world-1/dh_terrain.enabled = false\n\tprogram.world-1/dh_water.enabled = false\n#endif\n\n#ifdef CLOUDS_INTERSECT_TERRAIN\n\tprogram.world0/deferred2.enabled = false\n\tprogram.world0/deferred2.enabled = false\n\tprogram.world1/deferred2.enabled = false\n\tprogram.world1/deferred2.enabled = false\n\tprogram.world-1/deferred2.enabled = false\n\tprogram.world-1/deferred2.enabled = false\n#endif\n\nprogram.world0/composite11.enabled = false\nprogram.world1/composite11.enabled = false\nprogram.world-1/composite11.enabled = false\n\nprogram.world0/composite5.enabled = TAA_UPSCALING\nprogram.world1/composite5.enabled = TAA_UPSCALING\nprogram.world-1/composite5.enabled = TAA_UPSCALING\n\n#if RESOURCEPACK_SKY == 0\n    program.world0/deferred2.enabled = false\n    program.world1/deferred2.enabled = false\n    program.world-1/deferred2.enabled = false\n#endif\n\n# SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE ZERO\n# SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\n# Get the correct alpha value : S_A*(1-DST_A)+DST_A\n\n# terrible blending for shadows on purpose\nblend.gbuffers_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_armor_glint = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_hand_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_textured = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_textured_lit = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_basic = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_weather = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_block_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_beaconbeam = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_entities_translucent = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE\nblend.gbuffers_spidereyes = ONE ONE ONE ONE\nblend.gbuffers_skytextured = SRC_ALPHA ONE ONE ONE\nblend.shadow = ONE ZERO ONE ZERO\n\n# Disable blending\nblend.gbuffers_terrain = off\nblend.gbuffers_hand = off\nblend.gbuffers_block = off\nblend.gbuffers_entities = off\nblend.gbuffers_damagedblock = off\n\n# this is important for refraction and glass tint to work correctly\nblend.gbuffers_water.colortex11 = off\nblend.gbuffers_hand_water.colortex11 = off\nblend.gbuffers_basic.colortex11 = off\nblend.gbuffers_entities_translucent.colortex11 = off\n\n# blend.colortex4 = off\nblend.composite.colortex5 = off\nblend.composite.colortex12 = off\nblend.composite.colortex13 = off\nblend.composite.colortex14 = off\n\n# Alpha test\nalphaTest.gbuffers_terrain = GREATER 0.1\nalphaTest.gbuffers_hand = GREATER 0.1\nalphaTest.gbuffers_weather = false\nalphaTest.gbuffers_water = false\nalphaTest.gbuffers_skybasic = false\nalphaTest.gbuffers_skytextured = false\n\n#####################################\n####### TIME RELATED STUFF #######\n#####################################\n\nvariable.float.Time = worldTime%24000\nuniform.float.Morning = clamp((Time - 21000.0) / 1000.0, 0.0, 1.0) + clamp((2000.0 - Time) / 1000.0, 0.0, 1.0)\nuniform.float.Noon = clamp((Time - 1000.0) / 2000.0, 0.0, 1.0) - clamp((Time - 12000.0) / 2000.0, 0.0, 1.0) \nuniform.float.Evening = clamp((Time - 11000.0) / 1000.0, 0.0, 1.0) - clamp((Time -14000.0) / 1000.0, 0.0, 1.0)\nuniform.float.Night = clamp((Time - 13000.0) / 2000.0, 0.0, 1.0) - clamp((Time -22000.0) / 2000.0, 0.0, 1.0)\n\nvariable.float.Year = mod(worldDay + Start_Season * Season_Length, Season_Length * 4.0)\nuniform.float.Summer = clamp(Year / Season_Length, 0.0, 1.0)\nuniform.float.Autumn = clamp(Year / Season - 1.0, 0.0, 1.0)\nuniform.float.Winter = clamp(Year / Season - 2.0, 0.0, 1.0)\nuniform.float.Spring = clamp(Year / Season - 3.0, 0.0, 1.0)\n\n#####################################\n####### WEATHER RELATED STUFF #######\n#####################################\n\n# thank you sixthsurge!\n#ifdef LIGHTNING_FLASH\n\t#ifdef IS_IRIS \n\t\tvariable.float.lightningFlash = smooth(if(lightningBoltPosition.w > 0.0, 1.0, 0.0), 0.0, 0.0)\n\t#else\n\t\tvariable.float.lightningFlash = smooth(if(equals(skyColor.r, skyColor.g, 0.01) && skyColor.r > 0.3, 1.0, 0.0), 0.0, 0.0)\n\t#endif\n#else\n\tvariable.float.lightningFlash = 0.0\n#endif\n\nuniform.vec3.lightningEffect = vec3(77.0 * lightningFlash, 153.0 * lightningFlash, 255.0 * lightningFlash) \n\n###################################\n####### BIOME RELATED STUFF #######\n###################################\n\n#ifdef SWAMP_ENV\n\tuniform.float.smoothSwamp = smooth(if(biome_category == CAT_SWAMP, 1.0, 0.0), 30, 30)\n#else\n\tuniform.float.smoothSwamp = 0.0\n#endif\n\n#ifdef JUNGLE_ENV\n\tuniform.float.smoothJungle = smooth(if(biome_category == CAT_JUNGLE, 1.0, 0.0), 30, 30)\n#else\n\tuniform.float.smoothJungle = 0.0\n#endif\n\n#ifdef DARKFOREST_ENV\n\tuniform.float.smoothDarkForest = smooth(if(in(biome, 11, 53), 1,0), 30, 30)\n#else\n\tuniform.float.smoothDarkForest = 0.0\n#endif\n\n#ifdef SNOWY_ENV\n\tuniform.float.smoothBiome_Snowy = smooth(if(biome_precipitation == PPT_SNOW, 1.0, 0.0), 30, 30)\n\tuniform.float.snowStorm = smooth(if(biome_precipitation == PPT_SNOW, rainStrength, 0.0), 15,30)\n#else\n\tuniform.float.smoothBiome_Snowy = 0.0\n\tuniform.float.snowStorm = 0.0\n#endif\n\n#ifdef DRY_ENV\n\tuniform.float.smoothBiome_Dry = smooth(if(biome_precipitation == PPT_NONE, 1.0, 0.0), 30, 30)\n\n\t#ifdef IS_IRIS\n\t\tuniform.float.sandStorm = smooth(if(biome_category == CAT_DESERT, thunderStrength, 0.0), 15, 30)\n\t\tuniform.float.sandStorm_red = smooth(if(biome_category == CAT_MESA, thunderStrength, 0.0), 15, 30)\n\t#else\n\t\tuniform.float.sandStorm = smooth(if(biome_category == CAT_DESERT, rainStrength, 0.0), 15, 30)\n\t\tuniform.float.sandStorm_red = smooth(if(biome_category == CAT_MESA, rainStrength, 0.0), 15, 30)\n\t#endif\n#else\n\tuniform.float.smoothBiome_Dry = 0.0\n\tuniform.float.sandStorm = 0.0\n\tuniform.float.sandStorm_red = 0.0\n#endif\n\nuniform.float.rainyAreas = smooth(if(biome_precipitation == PPT_RAIN, 1.0, 0.0), 30, 30)\n\n############################\n####### RANDOM STUFF #######\n############################\n\n# force LUT accumulation to have a high blend factor after a certain amount of time\nuniform.float.dayChangeSmooth = smooth(if(abs(smooth(worldDay, 0.05, 0.05) - worldDay) > 0.01, 0.0, 1.0), 300.0, 0.0)\n\nuniform.bool.worldTimeChangeCheck = abs(smooth(sunAngle, 1.0, 1.0) - sunAngle) > 0.01\n\n#ifdef WATER_ON_CAMERA_EFFECT\n\tuniform.float.exitWater = smooth(if(isEyeInWater == 1,1,0),0.0,5.0)\n\tuniform.float.enterWater = smooth(if(isEyeInWater == 1,1,0),1.5,0.0)\n#endif\n\n#ifdef ON_FIRE_DISTORT_EFFECT\n\tuniform.float.onFire = smooth(if(isEyeInWater == 2 || is_burning,1,0),0.5,3.0)\n #endif\n\n#if defined LOW_HEALTH_EFFECT || defined DAMAGE_TAKEN_EFFECT\n\t#ifdef IS_IRIS\n\t\tvariable.float.Currenthealth = currentPlayerHealth * maxPlayerHealth\n\t\tuniform.float.oneHeart =   smooth(if(Currenthealth <= CRITICALLY_LOW_HEALTH_EFFECT_START && currentPlayerHealth > -1.0,  1,0),   0.0,1.0)\n\t\tuniform.float.threeHeart = smooth(if(Currenthealth <= max(LOW_HEALTH_EFFECT_START,CRITICALLY_LOW_HEALTH_EFFECT_START) && currentPlayerHealth > -1.0,  1,0),   0.0,1.0)\n\n\t\tvariable.float.interpolatedHealth = smooth(if(is_hurt, 0.0, Currenthealth), 0.0, 1.0)\n\n\t\t# detect over 5 hearts of damage taken\n\t\tvariable.bool.largeHealthDifference = (interpolatedHealth - Currenthealth) >= 7.0\n\t\tvariable.bool.delayedCritDamage = smooth(if(largeHealthDifference, 1.0, 0.0), 0.0, 1.0) > 0.01\n\n\t\tuniform.float.CriticalDamageTaken = smooth(if(delayedCritDamage && currentPlayerHealth > -1.0, 1.0, 0.0), 0.5, 3.0)\n\n\t\t# detect over 2 hearts of damage taken\n\t\tvariable.bool.smallHealthDifference = (interpolatedHealth - Currenthealth) >= 3.0\n\t\tuniform.float.MinorDamageTaken = smooth(if(smallHealthDifference && currentPlayerHealth > -1.0, 5.0, 0.0), 0.5, 1.0)\n\t#else\n\t\tuniform.bool.isDead = !is_alive\n\t#endif\n#endif\n\n#ifdef OLD_CAVE_DETECTION\n\tvariable.bool.inTheDarkTimer = smooth(if(eyeBrightness.y < 0.01, 1.0, 0.0), 10.0, 0.0) > 0.99\n\n\tuniform.float.caveDetection = smooth(if(inTheDarkTimer, 1.0, 0.0), 3.0, 1.0)\n#else\n\t# the idea is to modulate the mood value between 0 - 1\n\t# then check if the modulated value is non-zero. when it goes back to zero, it will have a very slowly deteriorating value.\n\t# 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.\n\n\t# doing this is just for readablity, not required.\n\tvariable.float.playerMoodPercent = playerMood*100.0 + 1.0\n\t# modulo 0 - 1\n\tvariable.float.modMood = playerMoodPercent - floor(playerMoodPercent)\n\n\t# check if mood is increasing.\n\t# and only activate when mood is above the threshold (5% mood)\n\t# make sure it degenerates slow enough that mood can reach 5% after the mood flips to 0% from 100%\n\tvariable.bool.moodIsClimbing = smooth(if(modMood > 0.50 && playerMoodPercent > 4.0, 1.0, eyeBrightness.x/240.0), 0.0, 10.0) > 0.1\n\n\t# add one more check to turn it off when lightlevels are not zero\n\tuniform.float.caveDetection = smooth(if(moodIsClimbing && eyeBrightness.y < 0.01, 1.0, 0.0), 3.0, 1.0)\n#endif\n\nuniform.float.wetnessAmount = smooth(if(wetness > 0.01, 3.0, 0.0), 100.0, 100.0) * rainyAreas\n# the idea is to record the altitude at which you entered a body of water.\n# 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.\n# 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\nvariable.float.waterEnteredLowLight = if(eyeBrightness.y < 0.004, max(eyeAltitude, SEA_LEVEL), eyeAltitude)\nvariable.float.freezeTranstion = if(isEyeInWater == 1, 100000000000000.0, 0.0)\nuniform.float.waterEnteredAltitude = smooth(waterEnteredLowLight, freezeTranstion, freezeTranstion)\n\n# photon stuff\nuniform.vec2.viewSize = vec2(viewWidth, viewHeight)\n\ntexture.noise = texture/noises.png\ntexture.composite.colortex6 = texture/blueNoise.png\n\nvariable.float.texelSizeX = 1.0/viewWidth\nvariable.float.texelSizeY = 1.0/viewHeight\nuniform.vec2.texelSize = vec2(texelSizeX,texelSizeY)\n\n#ifdef RESPONSIVE_TAA\n\tuniform.int.framemod8 = frameCounter%4\n#else\n\tuniform.int.framemod8 = frameCounter%8\n#endif\n\n#ifdef DISTANT_HORIZONS\n\tuniform.int.framemod4_DH = frameCounter%4\n#endif\n\nvariable.float.sunPosXSTEUFF = sunPosition.x\nvariable.float.sunPosYSTEUFF = sunPosition.y\nvariable.float.sunPosZSTEUFF = sunPosition.z\n\nvariable.float.normSunVec = sqrt(sunPosXSTEUFF*sunPosXSTEUFF+sunPosYSTEUFF*sunPosYSTEUFF+sunPosZSTEUFF*sunPosZSTEUFF)\nvariable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z)\n\nvariable.float.sunPosX = (sunPosition.x/normSunVec)\nvariable.float.sunPosY = (sunPosition.y/normSunVec)\nvariable.float.sunPosZ = (sunPosition.z/normSunVec)\n\nuniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ)\n\nvariable.float.upPosX =(upPosition.x)/normUpVec\nvariable.float.upPosY =(upPosition.y)/normUpVec\nvariable.float.upPosZ =(upPosition.z)/normUpVec\n\nuniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ)\nuniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ\nuniform.float.lightSign = clamp(sunElevation * 1000000000000000000, 0.0, 1.0) * 2.0 - 1.0\n\n#Max angle at frustrum diagonal\nvariable.float.maxAngle = atan(1.0 / gbufferProjection.1.1 * sqrt(1.0+(aspectRatio * aspectRatio)))\nuniform.float.cosFov = cos(maxAngle)\nvariable.float.viewDirX = gbufferModelViewInverse.2.0\nvariable.float.viewDirY = gbufferModelViewInverse.2.1\nvariable.float.viewDirZ = gbufferModelViewInverse.2.2\nvariable.float.normView = sqrt(viewDirX*viewDirX + viewDirY*viewDirY + viewDirZ*viewDirZ)\nvariable.float.shViewDirX = (shadowModelView.0.0 * viewDirX + shadowModelView.1.0 * viewDirY + shadowModelView.2.0 * viewDirZ)/normView\nvariable.float.shViewDirY = (shadowModelView.0.1 * viewDirX + shadowModelView.1.1 * viewDirY + shadowModelView.2.1 * viewDirZ)/normView\nvariable.float.shViewDirZ = (shadowModelView.0.2 * viewDirX + shadowModelView.1.2 * viewDirY + shadowModelView.2.2 * viewDirZ)/normView\n\nuniform.vec3.shadowViewDir = vec3(shViewDirX, shViewDirY, shViewDirZ)\n\nvariable.float.shStartX = (shadowModelView.0.0 * gbufferModelViewInverse.3.0 + shadowModelView.1.0 * gbufferModelViewInverse.3.1 + shadowModelView.2.0 * gbufferModelViewInverse.3.2)\nvariable.float.shStartY = (shadowModelView.0.1 * gbufferModelViewInverse.3.0 + shadowModelView.1.1 * gbufferModelViewInverse.3.1 + shadowModelView.2.1 * gbufferModelViewInverse.3.2)\nvariable.float.shStartZ = (shadowModelView.0.2 * gbufferModelViewInverse.3.0 + shadowModelView.1.2 * gbufferModelViewInverse.3.1 + shadowModelView.2.2 * gbufferModelViewInverse.3.2)\n\nuniform.vec3.shadowCamera = vec3(shStartX + shadowModelView.3.0 + shViewDirX*2., shStartY + shadowModelView.3.1 + shViewDirY*2., shStartZ + shadowModelView.3.2 + shViewDirZ*2.0)\n\nvariable.float.wSunX = (gbufferModelViewInverse.0.0 * sunPosX + gbufferModelViewInverse.1.0 * sunPosY + gbufferModelViewInverse.2.0 * sunPosZ)\nvariable.float.wSunY = (gbufferModelViewInverse.0.1 * sunPosX + gbufferModelViewInverse.1.1 * sunPosY + gbufferModelViewInverse.2.1 * sunPosZ)\nvariable.float.wSunZ = (gbufferModelViewInverse.0.2 * sunPosX + gbufferModelViewInverse.1.2 * sunPosY + gbufferModelViewInverse.2.2 * sunPosZ)\n\nvariable.float.shSunX = (shadowModelView.0.0 * wSunX + shadowModelView.1.0 * wSunY + shadowModelView.2.0 * wSunZ)\nvariable.float.shSunY = (shadowModelView.0.1 * wSunX + shadowModelView.1.1 * wSunY + shadowModelView.2.1 * wSunZ)\nvariable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSunY + shadowModelView.2.2 * wSunZ)\n\nuniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ)\n\nuniform.float.shadowMaxProj = 150.0/abs(sunPosY) \n\n###############################\n####### FLOODFILL STUFF #######\n###############################\n\n#ifdef LPV_ENABLED\n\timage.imgBlockData = texBlockData RG_INTEGER RG32UI UNSIGNED_INT false false 2048\n\n\t#if LPV_SIZE == 8\n\t\timage.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256\n\t\timage.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 256 256 256\n\t\timage.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 256 256 256\n\t#elif LPV_SIZE == 7\n\t\timage.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128\n\t\timage.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 128 128 128\n\t\timage.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 128 128 128\n\t#elif LPV_SIZE == 6\n\t\timage.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64\n\t\timage.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 64 64 64\n\t\timage.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 64 64 64\n\t#endif\n\n\t#ifdef LPV_SHADOWS\n\t\timage.imgCloseLights = texCloseLights RED_INTEGER R32UI UNSIGNED_INT false false 9\n\t\timage.imgSortLights = texSortLights RED_INTEGER R32UI UNSIGNED_INT false false 32 32 9\n\t#endif\n#else\n\tprogram.world1/setup.enabled = false\n\tprogram.world0/setup.enabled = false\n\tprogram.world-1/setup.enabled = false\n    \n\tprogram.world1/shadow.enabled = false\n\tprogram.world-1/shadow.enabled = false\n    \n\tprogram.world1/shadowcomp.enabled = false\n\tprogram.world0/shadowcomp.enabled = false\n\tprogram.world-1/shadowcomp.enabled = false\n#endif\n\tprogram.world0/begin.enabled = LPV_SHADOWS\n\tprogram.world0/shadowcomp3.enabled = LPV_SHADOWS\n\tprogram.world0/shadowcomp4.enabled = LPV_SHADOWS\n\tprogram.world0/shadowcomp5.enabled = LPV_SHADOWS\n\n\tprogram.world1/begin.enabled = LPV_SHADOWS\n\tprogram.world1/shadowcomp3.enabled = LPV_SHADOWS\n\tprogram.world1/shadowcomp4.enabled = LPV_SHADOWS\n\tprogram.world1/shadowcomp5.enabled = LPV_SHADOWS\n\n\tprogram.world-1/begin.enabled = LPV_SHADOWS\n\tprogram.world-1/shadowcomp3.enabled = LPV_SHADOWS\n\tprogram.world-1/shadowcomp4.enabled = LPV_SHADOWS\n\tprogram.world-1/shadowcomp5.enabled = LPV_SHADOWS"
  },
  {
    "path": "shaders/template/.gitignore",
    "content": "potater.exe\npotater\n"
  },
  {
    "path": "shaders/template/block.properties",
    "content": "layer.translucent = minecraft:glass minecraft:glass_pane\n\n\n#= BLOCK_WATER\nblock.8 = minecraft:water minecraft:flowing_water\n\n#= BLOCK_BAMBOO\nblock.11= bamboo bamboo_sapling\n\n#= BLOCK_GRASS_SHORT\nblock.*= minecraft:short_grass minecraft:grass\n\n#= BLOCK_GRASS_TALL_LOWER\nblock.*= 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 \\\n         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\n\n#= BLOCK_GRASS_TALL_UPPER\nblock.*= 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 \\\n         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\n\n#= BLOCK_SAPLING\nblock.*= minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:cherry_sapling\n\n#= BLOCK_VINE\nblock.*= vine\n\n#= BLOCK_VINE_OTHER\nblock.*= minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:berries=false\n\n\n####### ----- FloodFill ----- #######\n\n    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\n\n    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\n\n    # Blocks for FloodFill to ignore\n    #= BLOCK_LPV_IGNORE\n    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 \\\n        [supplementaries_candle]:lit=false\n\n    # Blocks that occlude 25% of light\n    #= BLOCK_LPV_MIN\n    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\n\n    # Blocks that occlude 50% of light\n    #= BLOCK_LPV_MED\n    block.*= iron_bars pointed_dripstone\n\n    # Blocks that occlude 75% of light\n    #= BLOCK_LPV_MAX\n    block.*= \n\n\n####### ----- waving blocks with SSS ----- #######\n\n    ## ground waving\n    ## add a newline to organize for modded blocks\n    #= BLOCK_GROUND_WAVING\n    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\n    \n    ## 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.\n    #= BLOCK_GROUND_WAVING_VERTICAL\n    block.*= minecraft:fern \\\n             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\n    \n    ## air waving\n    ## add a newline to organize for modded blocks\n    #= BLOCK_AIR_WAVING\n    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 \\\n             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 \\\n             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\n\n\n####### ----- blocks with SSS ----- #######\n\n    ## strong sss\n    #= BLOCK_SSS_STRONG\n    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 \\\n              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\n\n    ## weak sss\n    #= BLOCK_SSS_WEAK\n    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\n\n    ## weak sss\n    #= BLOCK_SSS_WEAK_2\n    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 \\\n             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\n    \n    ## weak sss\n    #= BLOCK_SSS_WEAK_3\n    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 \\\n             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\n    \n    ## weird blocks\n    #= BLOCK_SSS_WEIRD\n    block.*= minecraft:sand minecraft:red_sand \n\t\n    ## grass uwu\n    #= BLOCK_GRASS\n\tblock.*= minecraft:grass_block:snowy=false\n\t\n\n####### ----- lightsources ----- #######\n\n    #= BLOCK_AMETHYST_BUD_LARGE\n    block.101= large_amethyst_bud\n\n    #= BLOCK_AMETHYST_BUD_MEDIUM\n    block.*= medium_amethyst_bud\n\n    #= BLOCK_AMETHYST_CLUSTER\n    block.*= amethyst_cluster\n\n    #= BLOCK_BEACON\n    block.*= beacon\n\n    #= BLOCK_BREWING_STAND\n    block.*= brewing_stand\n\n    #ifdef LPV_COLORED_CANDLES\n        #= BLOCK_CANDLES_PLAIN_LIT_1\n        block.*= candle:candles=1:lit=true \\\n                 supplementaries:candle_holder:candles=1:lit=true\n\n        #= BLOCK_CANDLES_PLAIN_LIT_2\n        block.*= candle:candles=2:lit=true \\\n                 supplementaries:candle_holder:candles=2:lit=true\n\n        #= BLOCK_CANDLES_PLAIN_LIT_3\n        block.*= candle:candles=3:lit=true \\\n                 supplementaries:candle_holder:candles=3:lit=true\n\n        #= BLOCK_CANDLES_PLAIN_LIT_4\n        block.*= candle:candles=4:lit=true \\\n                 supplementaries:candle_holder:candles=4:lit=true\n\n        #= BLOCK_CANDLES_BLACK_LIT_1\n        block.*= black_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_black:candles=1:lit=true\n\n        #= BLOCK_CANDLES_BLACK_LIT_2\n        block.*= black_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_black:candles=2:lit=true\n\n        #= BLOCK_CANDLES_BLACK_LIT_3\n        block.*= black_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_black:candles=3:lit=true\n\n        #= BLOCK_CANDLES_BLACK_LIT_4\n        block.*= black_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_black:candles=4:lit=true\n\n        #= BLOCK_CANDLES_BLUE_LIT_1\n        block.*= blue_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_blue:candles=1:lit=true\n\n        #= BLOCK_CANDLES_BLUE_LIT_2\n        block.*= blue_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_blue:candles=2:lit=true\n\n        #= BLOCK_CANDLES_BLUE_LIT_3\n        block.*= blue_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_blue:candles=3:lit=true\n\n        #= BLOCK_CANDLES_BLUE_LIT_4\n        block.*= blue_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_blue:candles=4:lit=true\n\n        #= BLOCK_CANDLES_BROWN_LIT_1\n        block.*= brown_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_brown:candles=1:lit=true\n\n        #= BLOCK_CANDLES_BROWN_LIT_2\n        block.*= brown_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_brown:candles=2:lit=true\n\n        #= BLOCK_CANDLES_BROWN_LIT_3\n        block.*= brown_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_brown:candles=3:lit=true\n\n        #= BLOCK_CANDLES_BROWN_LIT_4\n        block.*= brown_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_brown:candles=4:lit=true\n\n        #= BLOCK_CANDLES_CYAN_LIT_1\n        block.*= cyan_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_cyan:candles=1:lit=true\n\n        #= BLOCK_CANDLES_CYAN_LIT_2\n        block.*= cyan_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_cyan:candles=2:lit=true\n\n        #= BLOCK_CANDLES_CYAN_LIT_3\n        block.*= cyan_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_cyan:candles=3:lit=true\n\n        #= BLOCK_CANDLES_CYAN_LIT_4\n        block.*= cyan_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_cyan:candles=4:lit=true\n\n        #= BLOCK_CANDLES_GRAY_LIT_1\n        block.*= gray_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_gray:candles=1:lit=true\n\n        #= BLOCK_CANDLES_GRAY_LIT_2\n        block.*= gray_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_gray:candles=2:lit=true\n\n        #= BLOCK_CANDLES_GRAY_LIT_3\n        block.*= gray_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_gray:candles=3:lit=true\n\n        #= BLOCK_CANDLES_GRAY_LIT_4\n        block.*= gray_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_gray:candles=4:lit=true\n\n        #= BLOCK_CANDLES_GREEN_LIT_1\n        block.*= green_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_green:candles=1:lit=true\n\n        #= BLOCK_CANDLES_GREEN_LIT_2\n        block.*= green_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_green:candles=2:lit=true\n\n        #= BLOCK_CANDLES_GREEN_LIT_3\n        block.*= green_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_green:candles=3:lit=true\n\n        #= BLOCK_CANDLES_GREEN_LIT_4\n        block.*= green_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_green:candles=4:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_BLUE_LIT_1\n        block.*= light_blue_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_light_blue:candles=1:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_BLUE_LIT_2\n        block.*= light_blue_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_light_blue:candles=2:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_BLUE_LIT_3\n        block.*= light_blue_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_light_blue:candles=3:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_BLUE_LIT_4\n        block.*= light_blue_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_light_blue:candles=4:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_GRAY_LIT_1\n        block.*= light_gray_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_light_gray:candles=1:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_GRAY_LIT_2\n        block.*= light_gray_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_light_gray:candles=2:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_GRAY_LIT_3\n        block.*= light_gray_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_light_gray:candles=3:lit=true\n\n        #= BLOCK_CANDLES_LIGHT_GRAY_LIT_4\n        block.*= light_gray_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_light_gray:candles=4:lit=true\n\n        #= BLOCK_CANDLES_LIME_LIT_1\n        block.*= lime_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_lime:candles=1:lit=true\n\n        #= BLOCK_CANDLES_LIME_LIT_2\n        block.*= lime_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_lime:candles=2:lit=true\n\n        #= BLOCK_CANDLES_LIME_LIT_3\n        block.*= lime_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_lime:candles=3:lit=true\n\n        #= BLOCK_CANDLES_LIME_LIT_4\n        block.*= lime_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_lime:candles=4:lit=true\n\n        #= BLOCK_CANDLES_MAGENTA_LIT_1\n        block.*= magenta_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_magenta:candles=1:lit=true\n\n        #= BLOCK_CANDLES_MAGENTA_LIT_2\n        block.*= magenta_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_magenta:candles=2:lit=true\n\n        #= BLOCK_CANDLES_MAGENTA_LIT_3\n        block.*= magenta_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_magenta:candles=3:lit=true\n\n        #= BLOCK_CANDLES_MAGENTA_LIT_4\n        block.*= magenta_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_magenta:candles=4:lit=true\n\n        #= BLOCK_CANDLES_ORANGE_LIT_1\n        block.*= orange_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_orange:candles=1:lit=true\n\n        #= BLOCK_CANDLES_ORANGE_LIT_2\n        block.*= orange_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_orange:candles=2:lit=true\n\n        #= BLOCK_CANDLES_ORANGE_LIT_3\n        block.*= orange_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_orange:candles=3:lit=true\n\n        #= BLOCK_CANDLES_ORANGE_LIT_4\n        block.*= orange_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_orange:candles=4:lit=true\n\n        #= BLOCK_CANDLES_PINK_LIT_1\n        block.*= pink_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_pink:candles=1:lit=true\n\n        #= BLOCK_CANDLES_PINK_LIT_2\n        block.*= pink_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_pink:candles=2:lit=true\n\n        #= BLOCK_CANDLES_PINK_LIT_3\n        block.*= pink_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_pink:candles=3:lit=true\n\n        #= BLOCK_CANDLES_PINK_LIT_4\n        block.*= pink_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_pink:candles=4:lit=true\n\n        #= BLOCK_CANDLES_PURPLE_LIT_1\n        block.*= purple_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_purple:candles=1:lit=true\n\n        #= BLOCK_CANDLES_PURPLE_LIT_2\n        block.*= purple_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_purple:candles=2:lit=true\n\n        #= BLOCK_CANDLES_PURPLE_LIT_3\n        block.*= purple_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_purple:candles=3:lit=true\n\n        #= BLOCK_CANDLES_PURPLE_LIT_4\n        block.*= purple_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_purple:candles=4:lit=true\n\n        #= BLOCK_CANDLES_RED_LIT_1\n        block.*= red_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_red:candles=1:lit=true\n\n        #= BLOCK_CANDLES_RED_LIT_2\n        block.*= red_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_red:candles=2:lit=true\n\n        #= BLOCK_CANDLES_RED_LIT_3\n        block.*= red_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_red:candles=3:lit=true\n\n        #= BLOCK_CANDLES_RED_LIT_4\n        block.*= red_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_red:candles=4:lit=true\n\n        #= BLOCK_CANDLES_WHITE_LIT_1\n        block.*= white_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_white:candles=1:lit=true\n\n        #= BLOCK_CANDLES_WHITE_LIT_2\n        block.*= white_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_white:candles=2:lit=true\n\n        #= BLOCK_CANDLES_WHITE_LIT_3\n        block.*= white_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_white:candles=3:lit=true\n\n        #= BLOCK_CANDLES_WHITE_LIT_4\n        block.*= white_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_white:candles=4:lit=true\n\n        #= BLOCK_CANDLES_YELLOW_LIT_1\n        block.*= yellow_candle:candles=1:lit=true \\\n                 supplementaries:candle_holder_yellow:candles=1:lit=true\n\n        #= BLOCK_CANDLES_YELLOW_LIT_2\n        block.*= yellow_candle:candles=2:lit=true \\\n                 supplementaries:candle_holder_yellow:candles=2:lit=true\n\n        #= BLOCK_CANDLES_YELLOW_LIT_3\n        block.*= yellow_candle:candles=3:lit=true \\\n                 supplementaries:candle_holder_yellow:candles=3:lit=true\n\n        #= BLOCK_CANDLES_YELLOW_LIT_4\n        block.*= yellow_candle:candles=4:lit=true \\\n                 supplementaries:candle_holder_yellow:candles=4:lit=true\n    #else\n        #= BLOCK_CANDLES_LIT_1\n        block.*= [candle]:candles=1:lit=true \\\n                 [supplementaries_candle]:candles=1:lit=true\n\n        #= BLOCK_CANDLES_LIT_2\n        block.*= [candle]:candles=2:lit=true \\\n                 [supplementaries_candle]:candles=2:lit=true\n\n        #= BLOCK_CANDLES_LIT_3\n        block.*= [candle]:candles=3:lit=true \\\n                 [supplementaries_candle]:candles=3:lit=true\n\n        #= BLOCK_CANDLES_LIT_4\n        block.*= [candle]:candles=4:lit=true \\\n                 [supplementaries_candle]:candles=4:lit=true\n    #endif\n\n    #= BLOCK_CAVE_VINE_BERRIES\n    block.*= cave_vines_plant:berries=true cave_vines:berries=true\n\n    #= BLOCK_COMPARATOR_LIT\n    block.*= comparator:powered=true\n\n    #= BLOCK_COPPER_BULB_LIT\n    block.*= copper_bulb:lit=true waxed_copper_bulb:lit=true\n\n    #= BLOCK_COPPER_BULB_EXPOSED_LIT\n    block.*= exposed_copper_bulb:lit=true waxed_exposed_copper_bulb:lit=true\n\n    #= BLOCK_COPPER_BULB_OXIDIZED_LIT\n    block.*= oxidized_copper_bulb:lit=true waxed_oxidized_copper_bulb:lit=true\n\n    #= BLOCK_COPPER_BULB_WEATHERED_LIT\n    block.*= weathered_copper_bulb:lit=true waxed_weathered_copper_bulb:lit=true\n\n    #= BLOCK_CONDUIT\n    block.*= conduit\n\n    #= BLOCK_CRYING_OBSIDIAN\n    block.*= crying_obsidian\n\n    #= BLOCK_DEEPSLATE_REDSTONE_ORE_LIT\n    block.*= deepslate_redstone_ore:lit=true\n\n    #= BLOCK_END_GATEWAY\n    block.*= end_gateway\n\n    #= BLOCK_END_ROD\n    block.*= end_rod \\\n             mcwlights:garden_light:lit=true\n\n    #= BLOCK_FIRE\n    block.*= fire campfire:lit=true\n\n    #= BLOCK_FIRE_FLIES\n    block.*= conquest:fire_flies\n\n    #= BLOCK_FROGLIGHT_OCHRE\n    block.*= ochre_froglight\n\n    #= BLOCK_FROGLIGHT_PEARLESCENT\n    block.*= pearlescent_froglight\n\n    #= BLOCK_FROGLIGHT_VERDANT\n    block.*= verdant_froglight\n\n    #= BLOCK_FURNACE_LIT\n    block.*= furnace:lit=true blast_furnace:lit=true smoker:lit=true\n\n    #= BLOCK_GLOW_LICHEN\n    block.*= glow_lichen\n\n    #= BLOCK_GLOWSTONE\n    block.*= glowstone \\\n             mcwlights:glowstone_slab\n\n    #= BLOCK_JACK_O_LANTERN\n    block.*= jack_o_lantern\n\n    #= BLOCK_LANTERN\n    block.*= lantern \\\n             amendments:wall_lantern:light_level=15:lit=true \\\n             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\n\n    #= BLOCK_LAVA\n    block.*= lava \\\n             mcwlights:lava_lamp:lit=true\n\n    #= BLOCK_LIGHT_1\n    block.*= light:level=1\n\n    #= BLOCK_LIGHT_2\n    block.*= light:level=2\n\n    #= BLOCK_LIGHT_3\n    block.*= light:level=3\n\n    #= BLOCK_LIGHT_4\n    block.*= light:level=4\n\n    #= BLOCK_LIGHT_5\n    block.*= light:level=5\n\n    #= BLOCK_LIGHT_6\n    block.*= light:level=6\n\n    #= BLOCK_LIGHT_7\n    block.*= light:level=7\n\n    #= BLOCK_LIGHT_8\n    block.*= light:level=8\n\n    #= BLOCK_LIGHT_9\n    block.*= light:level=9\n\n    #= BLOCK_LIGHT_10\n    block.*= light:level=10\n\n    #= BLOCK_LIGHT_11\n    block.*= light:level=11\n\n    #= BLOCK_LIGHT_12\n    block.*= light:level=12\n\n    #= BLOCK_LIGHT_13\n    block.*= light:level=13\n\n    #= BLOCK_LIGHT_14\n    block.*= light:level=14\n\n    #= BLOCK_LIGHT_15\n    block.*= light:level=15\n\n    #= BLOCK_MAGMA\n    block.*= magma_block\n\n    #= BLOCK_RAIL_POWERED_ON\n    block.*= powered_rail:powered=true\n\n    #= BLOCK_REDSTONE_LAMP_LIT\n    block.*= redstone_lamp:lit=true \\\n             mcwlights:redstone_lamp_slab\n\n    #= BLOCK_REDSTONE_ORE_LIT\n    block.*= redstone_ore:lit=true\n\n    #= BLOCK_REDSTONE_TORCH_LIT\n    block.*= redstone_torch:lit=true redstone_wall_torch:lit=true\n\n    #= BLOCK_REDSTONE_WIRE_1\n    block.*= redstone_wire:power=1\n\n    #= BLOCK_REDSTONE_WIRE_2\n    block.*= redstone_wire:power=2\n\n    #= BLOCK_REDSTONE_WIRE_3\n    block.*= redstone_wire:power=3\n\n    #= BLOCK_REDSTONE_WIRE_4\n    block.*= redstone_wire:power=4\n\n    #= BLOCK_REDSTONE_WIRE_5\n    block.*= redstone_wire:power=5\n\n    #= BLOCK_REDSTONE_WIRE_6\n    block.*= redstone_wire:power=6\n\n    #= BLOCK_REDSTONE_WIRE_7\n    block.*= redstone_wire:power=7\n\n    #= BLOCK_REDSTONE_WIRE_8\n    block.*= redstone_wire:power=8\n\n    #= BLOCK_REDSTONE_WIRE_9\n    block.*= redstone_wire:power=9\n\n    #= BLOCK_REDSTONE_WIRE_10\n    block.*= redstone_wire:power=10\n\n    #= BLOCK_REDSTONE_WIRE_11\n    block.*= redstone_wire:power=11\n\n    #= BLOCK_REDSTONE_WIRE_12\n    block.*= redstone_wire:power=12\n\n    #= BLOCK_REDSTONE_WIRE_13\n    block.*= redstone_wire:power=13\n\n    #= BLOCK_REDSTONE_WIRE_14\n    block.*= redstone_wire:power=14\n\n    #= BLOCK_REDSTONE_WIRE_15\n    block.*= redstone_wire:power=15\n\n    #= BLOCK_REPEATER_LIT\n    block.*= repeater:powered=true\n\n    #= BLOCK_RESPAWN_ANCHOR_4\n    block.*= respawn_anchor:charges=4\n\n    #= BLOCK_SCULK_SENSOR_ACTIVE\n    block.*= sculk_sensor:sculk_sensor_phase=active\n\n    #= BLOCK_SEA_PICKLE_WET_1\n    block.*= sea_pickle:waterlogged=true:pickles=1\n\n    #= BLOCK_SEA_PICKLE_WET_2\n    block.*= sea_pickle:waterlogged=true:pickles=2\n\n    #= BLOCK_SEA_PICKLE_WET_3\n    block.*= sea_pickle:waterlogged=true:pickles=3\n\n    #= BLOCK_SEA_PICKLE_WET_4\n    block.*= sea_pickle:waterlogged=true:pickles=4\n\n    #= BLOCK_SEA_LANTERN\n    block.*= sea_lantern \\\n             mcwlights:sea_lantern_slab\n\n    #= BLOCK_SHROOMLIGHT\n    block.*= shroomlight \\\n             mcwlights:shroomlight_slab\n\n    #= BLOCK_SOUL_FIRE\n    block.*= soul_fire soul_campfire:lit=true\n\n    #= BLOCK_SOUL_LANTERN\n    block.*= soul_lantern \\\n             amendments:wall_lantern:light_level=10:lit=true \\\n             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\n\n    #= BLOCK_SOUL_TORCH\n    block.*= soul_torch soul_wall_torch \\\n             supplementaries:sconce_soul supplementaries:sconce_wall_soul \\\n             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\n\n    #= BLOCK_TORCH\n    block.*= torch wall_torch \\\n             supplementaries:sconce supplementaries:sconce_wall supplementaries:sconce_lever \\\n             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\n\n    block.*= westerosblocks:safe_fire\n\n    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\n\n    #= BLOCK_LAMP_LIT_BLACK\n    block.*= mcwlights:black_lamp:lit=true mcwlights:black_paper_lamp:lit=true mcwlights:black_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_BLUE\n    block.*= mcwlights:blue_lamp:lit=true mcwlights:blue_paper_lamp:lit=true mcwlights:blue_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_BROWN\n    block.*= mcwlights:brown_lamp:lit=true mcwlights:brown_paper_lamp:lit=true mcwlights:brown_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_CYAN\n    block.*= mcwlights:cyan_lamp:lit=true mcwlights:cyan_paper_lamp:lit=true mcwlights:cyan_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_GRAY\n    block.*= mcwlights:gray_lamp:lit=true mcwlights:gray_paper_lamp:lit=true mcwlights:gray_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_GREEN\n    block.*= mcwlights:green_lamp:lit=true mcwlights:green_paper_lamp:lit=true mcwlights:green_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_LIGHT_BLUE\n    block.*= mcwlights:light_blue_lamp:lit=true mcwlights:light_blue_paper_lamp:lit=true mcwlights:light_blue_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_LIGHT_GRAY\n    block.*= mcwlights:light_gray_lamp:lit=true mcwlights:light_gray_paper_lamp:lit=true mcwlights:light_gray_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_LIME\n    block.*= mcwlights:lime_lamp:lit=true mcwlights:lime_paper_lamp:lit=true mcwlights:lime_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_MAGENTA\n    block.*= mcwlights:magenta_lamp:lit=true mcwlights:magenta_paper_lamp:lit=true mcwlights:magenta_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_ORANGE\n    block.*= mcwlights:orange_lamp:lit=true mcwlights:orange_paper_lamp:lit=true mcwlights:orange_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_PINK\n    block.*= mcwlights:pink_lamp:lit=true mcwlights:pink_paper_lamp:lit=true mcwlights:pink_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_PURPLE\n    block.*= mcwlights:purple_lamp:lit=true mcwlights:purple_paper_lamp:lit=true mcwlights:purple_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_RED\n    block.*= mcwlights:red_lamp:lit=true mcwlights:red_paper_lamp:lit=true mcwlights:red_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_WHITE\n    block.*= mcwlights:white_lamp:lit=true mcwlights:white_paper_lamp:lit=true mcwlights:white_ceiling_light:lit=true\n\n    #= BLOCK_LAMP_LIT_YELLOW\n    block.*= mcwlights:yellow_lamp:lit=true mcwlights:yellow_paper_lamp:lit=true mcwlights:yellow_ceiling_light:lit=true\n\n\n####### ----- reflective translucents / glass ----- #######\n\n    #= BLOCK_GLASS\n    block.301= glass glass_pane\n\n    #= BLOCK_GLASS_BLACK\n    block.*= black_stained_glass black_stained_glass_pane\n\n    #= BLOCK_GLASS_BLUE\n    block.*= blue_stained_glass blue_stained_glass_pane\n    \n    #= BLOCK_GLASS_BROWN\n    block.*= brown_stained_glass brown_stained_glass_pane\n    \n    #= BLOCK_GLASS_CYAN\n    block.*= cyan_stained_glass cyan_stained_glass_pane\n    \n    #= BLOCK_GLASS_GRAY\n    block.*= gray_stained_glass gray_stained_glass_pane\n    \n    #= BLOCK_GLASS_GREEN\n    block.*= green_stained_glass green_stained_glass_pane\n    \n    #= BLOCK_GLASS_LIGHT_BLUE\n    block.*= light_blue_stained_glass light_blue_stained_glass_pane\n    \n    #= BLOCK_GLASS_LIGHT_GRAY\n    block.*= light_gray_stained_glass light_gray_stained_glass_pane\n    \n    #= BLOCK_GLASS_LIME\n    block.*= lime_stained_glass lime_stained_glass_pane\n    \n    #= BLOCK_GLASS_MAGENTA\n    block.*= magenta_stained_glass magenta_stained_glass_pane\n    \n    #= BLOCK_GLASS_ORANGE\n    block.*= orange_stained_glass orange_stained_glass_pane\n    \n    #= BLOCK_GLASS_PINK\n    block.*= pink_stained_glass pink_stained_glass_pane\n    \n    #= BLOCK_GLASS_PURPLE\n    block.*= purple_stained_glass purple_stained_glass_pane\n    \n    #= BLOCK_GLASS_RED\n    block.*= red_stained_glass red_stained_glass_pane\n    \n    #= BLOCK_GLASS_WHITE\n    block.*= white_stained_glass white_stained_glass_pane\n    \n    #= BLOCK_GLASS_YELLOW\n    block.*= yellow_stained_glass yellow_stained_glass_pane\n\n    #= BLOCK_HONEY\n    block.*= honey_block\n\n    #= BLOCK_ICE\n    block.*= ice frosted_ice\n\n    #= BLOCK_NETHER_PORTAL\n    block.*= nether_portal\n\n    #= BLOCK_SLIME\n    block.*= slime_block\n\n\n####### ----- LPV shapes ----- #######\n\n    #= BLOCK_CARPET\n    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\n\n    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\n\n    #= BLOCK_DOOR_N\n    block.*= [door]:facing=north:open=false [door]:facing=west:hinge=left:open=true [door]:facing=east:hinge=right:open=true\n\n    #= BLOCK_DOOR_E\n    block.*= [door]:facing=east:open=false [door]:facing=north:hinge=left:open=true [door]:facing=south:hinge=right:open=true\n\n    #= BLOCK_DOOR_S\n    block.*= [door]:facing=south:open=false [door]:facing=east:hinge=left:open=true [door]:facing=west:hinge=right:open=true\n\n    #= BLOCK_DOOR_W\n    block.*= [door]:facing=west:open=false [door]:facing=south:hinge=left:open=true [door]:facing=north:hinge=right:open=true\n\n    #= BLOCK_PRESSURE_PLATE\n    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\n\n    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\n\n    #= BLOCK_SLAB_TOP\n    block.*= [slab]:type=top\n\n    #= BLOCK_SLAB_BOTTOM\n    block.*= [slab]:type=bottom daylight_detector\n\n    #= BLOCK_SNOW_LAYERS\n    block.*= snow:layers=1 snow:layers=2 snow:layers=3 snow:layers=4\n\n    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\n\n    #= BLOCK_TRAPDOOR_BOTTOM\n    block.*= [trapdoor]:half=bottom:open=false\n\n    #= BLOCK_TRAPDOOR_TOP\n    block.*= [trapdoor]:half=top:open=false\n\n    #= BLOCK_TRAPDOOR_N\n    block.*= [trapdoor]:facing=north:open=true\n\n    #= BLOCK_TRAPDOOR_E\n    block.*= [trapdoor]:facing=east:open=true\n\n    #= BLOCK_TRAPDOOR_S\n    block.*= [trapdoor]:facing=south:open=true\n\n    #= BLOCK_TRAPDOOR_W\n    block.*= [trapdoor]:facing=west:open=true\n\n\n#=== STAIRS ===#\n\ngroup.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 \\\n    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 \\\n    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\n\n#= BLOCK_STAIRS_BOTTOM_N\nblock.*=[stairs]:shape=straight:half=bottom:facing=north\n\n#= BLOCK_STAIRS_BOTTOM_E\nblock.*=[stairs]:shape=straight:half=bottom:facing=east\n\n#= BLOCK_STAIRS_BOTTOM_S\nblock.*=[stairs]:shape=straight:half=bottom:facing=south\n\n#= BLOCK_STAIRS_BOTTOM_W\nblock.*=[stairs]:shape=straight:half=bottom:facing=west\n\n#= BLOCK_STAIRS_BOTTOM_INNER_S_E\nblock.*=[stairs]:shape=inner_left:half=bottom:facing=south [stairs]:shape=inner_right:half=bottom:facing=east\n\n#= BLOCK_STAIRS_BOTTOM_INNER_S_W\nblock.*=[stairs]:shape=inner_left:half=bottom:facing=west [stairs]:shape=inner_right:half=bottom:facing=south\n\n#= BLOCK_STAIRS_BOTTOM_INNER_N_W\nblock.*=[stairs]:shape=inner_left:half=bottom:facing=north [stairs]:shape=inner_right:half=bottom:facing=west\n\n#= BLOCK_STAIRS_BOTTOM_INNER_N_E\nblock.*=[stairs]:shape=inner_left:half=bottom:facing=east [stairs]:shape=inner_right:half=bottom:facing=north\n\n#= BLOCK_STAIRS_BOTTOM_OUTER_N_W\nblock.*=[stairs]:shape=outer_left:half=bottom:facing=north [stairs]:shape=outer_right:half=bottom:facing=west\n\n#= BLOCK_STAIRS_BOTTOM_OUTER_N_E\nblock.*=[stairs]:shape=outer_left:half=bottom:facing=east [stairs]:shape=outer_right:half=bottom:facing=north\n\n#= BLOCK_STAIRS_BOTTOM_OUTER_S_E\nblock.*=[stairs]:shape=outer_left:half=bottom:facing=south [stairs]:shape=outer_right:half=bottom:facing=east\n\n#= BLOCK_STAIRS_BOTTOM_OUTER_S_W\nblock.*=[stairs]:shape=outer_left:half=bottom:facing=west [stairs]:shape=outer_right:half=bottom:facing=south\n\n#= BLOCK_STAIRS_TOP_N\nblock.*=[stairs]:shape=straight:half=top:facing=north\n\n#= BLOCK_STAIRS_TOP_E\nblock.*=[stairs]:shape=straight:half=top:facing=east\n\n#= BLOCK_STAIRS_TOP_S\nblock.*=[stairs]:shape=straight:half=top:facing=south\n\n#= BLOCK_STAIRS_TOP_W\nblock.*=[stairs]:shape=straight:half=top:facing=west\n\n#= BLOCK_STAIRS_TOP_INNER_S_E\nblock.*=[stairs]:shape=inner_left:half=top:facing=south [stairs]:shape=inner_right:half=top:facing=east\n\n#= BLOCK_STAIRS_TOP_INNER_S_W\nblock.*=[stairs]:shape=inner_left:half=top:facing=west [stairs]:shape=inner_right:half=top:facing=south\n\n#= BLOCK_STAIRS_TOP_INNER_N_W\nblock.*=[stairs]:shape=inner_left:half=top:facing=north [stairs]:shape=inner_right:half=top:facing=west\n\n#= BLOCK_STAIRS_TOP_INNER_N_E\nblock.*=[stairs]:shape=inner_left:half=top:facing=east [stairs]:shape=inner_right:half=top:facing=north\n\n#= BLOCK_STAIRS_TOP_OUTER_N_W\nblock.*=[stairs]:shape=outer_left:half=top:facing=north [stairs]:shape=outer_right:half=top:facing=west\n\n#= BLOCK_STAIRS_TOP_OUTER_N_E\nblock.*=[stairs]:shape=outer_left:half=top:facing=east [stairs]:shape=outer_right:half=top:facing=north\n\n#= BLOCK_STAIRS_TOP_OUTER_S_E\nblock.*=[stairs]:shape=outer_left:half=top:facing=south [stairs]:shape=outer_right:half=top:facing=east\n\n#= BLOCK_STAIRS_TOP_OUTER_S_W\nblock.*=[stairs]:shape=outer_left:half=top:facing=west [stairs]:shape=outer_right:half=top:facing=south\n\n\n#=== WALLS ===#\n\ngroup.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 \\\n    create:cut_andesite_wall create:polished_cut_andesite_wall create:cut_andesite_brick_wall create:small_andesite_brick_wall \\\n    create:cut_asurine_wall create:polished_cut_asurine_wall create:cut_asurine_brick_wall create:small_asurine_brick_wall \\\n    create:cut_calcite_wall create:polished_cut_calcite_wall create:cut_calcite_brick_wall create:small_calcite_brick_wall \\\n    create:cut_crimsite_wall create:polished_cut_crimsite_wall create:cut_crimsite_brick_wall create:small_crimsite_brick_wall \\\n    create:cut_deepslate_wall create:polished_cut_deepslate_wall create:cut_deepslate_brick_wall create:small_deepslate_brick_wall \\\n    create:cut_diorite_wall create:polished_cut_diorite_wall create:cut_diorite_brick_wall create:small_diorite_brick_wall \\\n    create:cut_dripstone_wall create:polished_cut_dripstone_wall create:cut_dripstone_brick_wall create:small_dripstone_brick_wall \\\n    create:cut_granite_wall create:polished_cut_granite_wall create:cut_granite_brick_wall create:small_granite_brick_wall \\\n    create:cut_limestone_wall create:polished_cut_limestone_wall create:cut_limestone_brick_wall create:small_limestone_brick_wall \\\n    create:cut_ochrum_wall create:polished_cut_ochrum_wall create:cut_ochrum_brick_wall create:small_ochrum_brick_wall \\\n    create:cut_scorchia_wall create:polished_cut_scorchia_wall create:cut_scorchia_brick_wall create:small_scorchia_brick_wall \\\n    create:cut_scoria_wall create:polished_cut_scoria_wall create:cut_scoria_brick_wall create:small_scoria_brick_wall \\\n    create:cut_tuff_wall create:polished_cut_tuff_wall create:cut_tuff_brick_wall create:small_tuff_brick_wall \\\n    create:cut_veridium_wall create:polished_cut_veridium_wall create:cut_veridium_brick_wall create:small_veridium_brick_wall\n\n#= BLOCK_WALL_POST, BLOCK_WALL_MIN\nblock.*=[wall]:north=none:east=none:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_N\nblock.*=[wall]:north=low:east=none:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_E\nblock.*=[wall]:north=none:east=low:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_S\nblock.*=[wall]:north=none:east=none:south=low:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_W\nblock.*=[wall]:north=none:east=none:south=none:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_N_S\nblock.*=[wall]:north=low:east=none:south=low:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_W_E\nblock.*=[wall]:north=none:east=low:south=none:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_N_W\nblock.*=[wall]:north=low:east=none:south=none:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_N_E\nblock.*=[wall]:north=low:east=low:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_S_W\nblock.*=[wall]:north=none:east=none:south=low:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_S_E\nblock.*=[wall]:north=none:east=low:south=low:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_N_W_S\nblock.*=[wall]:north=low:east=none:south=low:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_N_E_S\nblock.*=[wall]:north=low:east=low:south=low:west=none:up=true\n\n#= BLOCK_WALL_POST_LOW_W_N_E\nblock.*=[wall]:north=low:east=low:south=none:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_W_S_E\nblock.*=[wall]:north=none:east=low:south=low:west=low:up=true\n\n#= BLOCK_WALL_POST_LOW_ALL\nblock.*=[wall]:north=low:east=low:south=low:west=low:up=true\n\n#= BLOCK_WALL_POST_TALL_N\nblock.*=[wall]:north=tall:east=none:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_E\nblock.*=[wall]:north=none:east=tall:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_S\nblock.*=[wall]:north=none:east=none:south=tall:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_W\nblock.*=[wall]:north=none:east=none:south=none:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_S\nblock.*=[wall]:north=tall:east=none:south=tall:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_W_E\nblock.*=[wall]:north=none:east=tall:south=none:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_W\nblock.*=[wall]:north=tall:east=none:south=none:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_E\nblock.*=[wall]:north=tall:east=tall:south=none:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_S_W\nblock.*=[wall]:north=none:east=none:south=tall:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_S_E\nblock.*=[wall]:north=none:east=tall:south=tall:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_N_W_S\nblock.*=[wall]:north=tall:east=none:south=tall:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_E_S\nblock.*=[wall]:north=tall:east=tall:south=tall:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_W_N_E\nblock.*=[wall]:north=tall:east=tall:south=none:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_W_S_E\nblock.*=[wall]:north=none:east=tall:south=tall:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_ALL\nblock.*=[wall]:north=tall:east=tall:south=tall:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_LOW_S\nblock.*=[wall]:north=tall:east=none:south=low:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_E_LOW_W\nblock.*=[wall]:north=none:east=tall:south=none:west=low:up=true\n\n#= BLOCK_WALL_POST_TALL_S_LOW_N\nblock.*=[wall]:north=low:east=none:south=tall:west=none:up=true\n\n#= BLOCK_WALL_POST_TALL_W_LOW_E\nblock.*=[wall]:north=none:east=low:south=none:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_S_LOW_W_E\nblock.*=[wall]:north=tall:east=low:south=tall:west=low:up=true\n\n#= BLOCK_WALL_POST_TALL_W_E_LOW_N_S\nblock.*=[wall]:north=low:east=tall:south=low:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_W_LOW_S_E\nblock.*=[wall]:north=tall:east=low:south=low:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_N_E_LOW_S_W\nblock.*=[wall]:north=tall:east=tall:south=low:west=low:up=true\n\n#= BLOCK_WALL_POST_TALL_S_W_LOW_N_E\nblock.*=[wall]:north=low:east=low:south=tall:west=tall:up=true\n\n#= BLOCK_WALL_POST_TALL_S_E_LOW_N_W\nblock.*=[wall]:north=low:east=tall:south=tall:west=low:up=true\n\n#= BLOCK_WALL_LOW_N_S\nblock.*=[wall]:north=low:east=none:south=low:west=none:up=false\n\n#= BLOCK_WALL_LOW_W_E\nblock.*=[wall]:north=none:east=low:south=none:west=low:up=false\n\n#= BLOCK_WALL_LOW_N_W\nblock.*=[wall]:north=low:east=none:south=none:west=low:up=false\n\n#= BLOCK_WALL_LOW_N_E\nblock.*=[wall]:north=low:east=low:south=none:west=none:up=false\n\n#= BLOCK_WALL_LOW_S_W\nblock.*=[wall]:north=none:east=none:south=low:west=low:up=false\n\n#= BLOCK_WALL_LOW_S_E\nblock.*=[wall]:north=none:east=low:south=low:west=none:up=false\n\n#= BLOCK_WALL_LOW_ALL\nblock.*=[wall]:north=low:east=low:south=low:west=low:up=false\n\n#= BLOCK_WALL_TALL_N_S\nblock.*=[wall]:north=tall:east=none:south=tall:west=none:up=false\n\n#= BLOCK_WALL_TALL_W_E\nblock.*=[wall]:north=none:east=tall:south=none:west=tall:up=false\n\n#= BLOCK_WALL_TALL_N_W\nblock.*=[wall]:north=tall:east=none:south=none:west=tall:up=false\n\n#= BLOCK_WALL_TALL_N_E\nblock.*=[wall]:north=tall:east=tall:south=none:west=none:up=false\n\n#= BLOCK_WALL_TALL_S_W\nblock.*=[wall]:north=none:east=none:south=tall:west=tall:up=false\n\n#= BLOCK_WALL_TALL_S_E\nblock.*=[wall]:north=none:east=tall:south=tall:west=none:up=false\n\n#= BLOCK_WALL_TALL_ALL\nblock.*=[wall]:north=tall:east=tall:south=tall:west=tall:up=false\n\n#= BLOCK_WALL_TALL_N_S_LOW_W_E\nblock.*=[wall]:north=tall:east=low:south=tall:west=low:up=false\n\n#= BLOCK_WALL_TALL_W_E_LOW_N_S, BLOCK_WALL_MAX\nblock.*=[wall]:north=low:east=tall:south=low:west=tall:up=false\n\n\n####### ----- misc ----- #######\n    \n    ## stuff\n    #= BLOCK_END_PORTAL\n    block.500= minecraft:end_portal\n\n    ## all blocks here get exluded from POM.\n    #= BLOCK_SIGN\n    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\n"
  },
  {
    "path": "shaders/template/entity.properties",
    "content": "#= ENTITY_PLAYER\nentity.1601= player\n\n#= ENTITY_LIGHTNING\nentity.*= minecraft:lightning_bolt weather2:lightning_bolt\n\n## misc stuff\n\n#= ENTITY_BLAZE\nentity.*= blaze minecraft:entity_flame\n\n#= ENTITY_DRAGON_WITHER\nentity.*= ender_dragon wither\n\n#= ENTITY_END_CRYSTAL\nentity.*= end_crystal\n\n#= ENTITY_GLOW_SQUID\nentity.*= glow_squid\n\n#= ENTITY_ITEM_FRAME\nentity.*= item_frame item_display\n\n#= ENTITY_MAGMA_CUBE\nentity.*= magma_cube\n\n#= ENTITY_TNT\nentity.*= tnt firework_rocket\n\n#= ENTITY_FIREBALL_SMALL\nentity.*= small_fireball\n\n#= ENTITY_SPECTRAL_ARROW\nentity.*= spectral_arrow bigglobe:torch_arrow entity_flame\n\n################################################\n###### SUB-SURFACE SCATTERING\n################################################\n\n## medium sss (same as strong sss for blocks)\n#= ENTITY_SSS_MEDIUM\nentity.1801 = giant ghast elder_guardian \n\n## weak sss (same as weak sss for blocks)\n#= ENTITY_SSS_WEAK\nentity.* = 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\n#removed: player blaze magma_cube\n\n################################################\n###### REFLECTIVE TRANSLUCENTS\n################################################\n\n#= ENTITY_SLIME\nentity.* = slime\n"
  },
  {
    "path": "shaders/template/item.properties",
    "content": "#= ITEM_LIGHT_SOURCES\nitem.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\n\n#= ITEM_AMETHYST_BUD_LARGE\nitem.* = large_amethyst_bud\n\n#= ITEM_AMETHYST_BUD_MEDIUM\nitem.* = medium_amethyst_bud\n\n#= ITEM_AMETHYST_CLUSTER\nitem.* = amethyst_cluster\n\n#= ITEM_BEACON\nitem.* = beacon\n\n#= ITEM_BLAZE_ROD\nitem.* = blaze_rod\n\n#= ITEM_END_ROD\nitem.* = end_rod\n\n#= ITEM_FROGLIGHT_OCHRE\nitem.* = ochre_froglight\n\n#= ITEM_FROGLIGHT_PEARLESCENT\nitem.* = pearlescent_froglight\n\n#= ITEM_FROGLIGHT_VERDANT\nitem.* = verdant_froglight\n\n#= ITEM_GLOW_BERRIES\nitem.* = glow_berries\n\n#= ITEM_GLOW_LICHEN\nitem.* = glow_lichen\n\n#= ITEM_GLOWSTONE\nitem.* = glowstone\n\n#= ITEM_GLOWSTONE_DUST\nitem.* = glowstone_dust\n\n#= ITEM_JACK_O_LANTERN\nitem.* = jack_o_lantern\n\n#= ITEM_LANTERN\nitem.* = lantern\n\n#= ITEM_LAVA_BUCKET\nitem.* = lava_bucket\n\n## ITEM_LIGHT\n# item.* = light\n\n#= ITEM_MAGMA\nitem.* = magma_block\n\n#= ITEM_REDSTONE_TORCH\nitem.* = redstone_torch\n\n#= ITEM_SCULK_CATALYST\nitem.* = sculk_catalyst\n\n#= ITEM_SEA_LANTERN\nitem.* = sea_lantern\n\n#= ITEM_SHROOMLIGHT\nitem.* = shroomlight\n\n#= ITEM_SOUL_LANTERN\nitem.* = soul_lantern\n\n#= ITEM_SOUL_TORCH\nitem.* = soul_torch\n\n#= ITEM_TORCH\nitem.* = torch\n"
  },
  {
    "path": "shaders/template/readme.md",
    "content": "# Editing Property Templates\nThe 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.\n\n# Editing Colored Lighting\nThere are two ways to edit colored lighting (explained below). Either method will require editing the block.properties mappings.\n\n## The Simple/Easy Way\nNew block IDs can be easily added to existing block/light mappings.\n\nTODO: expand and example\n\n## The Advanced Way\nCompletely new block/light mappings can also be added, but it will require working with some GLSL code.\n\nTODO: expand and example\n"
  },
  {
    "path": "shaders/template/update.sh",
    "content": "#!/bin/bash\n\n./potater item   '../item.properties'   '../lib/items.glsl'    -t './item.properties'\n./potater block  '../block.properties'  '../lib/blocks.glsl'   -t './block.properties'\n./potater entity '../entity.properties' '../lib/entities.glsl' -t './entity.properties'\n"
  },
  {
    "path": "shaders/texture/blueNoise.png.mcmeta",
    "content": "{\n  \"texture\":\n  {\n    \"blur\": true,\n    \"clamp\": false\n  }\n}"
  },
  {
    "path": "shaders/texture/noises.png.mcmeta",
    "content": "{\n  \"texture\":\n  {\n    \"blur\": true,\n    \"clamp\": false\n  }\n}"
  },
  {
    "path": "shaders/world-1/composite.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/fogBehindTranslucent_pass.fsh\""
  },
  {
    "path": "shaders/world-1/composite.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/fogBehindTranslucent_pass.vsh\""
  },
  {
    "path": "shaders/world-1/composite1.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite.fsh\""
  },
  {
    "path": "shaders/world-1/composite1.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite.vsh\""
  },
  {
    "path": "shaders/world-1/composite10.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite9.fsh\""
  },
  {
    "path": "shaders/world-1/composite10.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite9.vsh\""
  },
  {
    "path": "shaders/world-1/composite11.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite10.fsh\""
  },
  {
    "path": "shaders/world-1/composite11.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite10.vsh\""
  },
  {
    "path": "shaders/world-1/composite12.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite11.fsh\""
  },
  {
    "path": "shaders/world-1/composite12.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite11.vsh\""
  },
  {
    "path": "shaders/world-1/composite13.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite12.fsh\""
  },
  {
    "path": "shaders/world-1/composite13.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite12.vsh\""
  },
  {
    "path": "shaders/world-1/composite2.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite1.fsh\""
  },
  {
    "path": "shaders/world-1/composite2.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite1.vsh\""
  },
  {
    "path": "shaders/world-1/composite3.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite2.fsh\""
  },
  {
    "path": "shaders/world-1/composite3.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite2.vsh\""
  },
  {
    "path": "shaders/world-1/composite4.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite3.fsh\""
  },
  {
    "path": "shaders/world-1/composite4.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite3.vsh\""
  },
  {
    "path": "shaders/world-1/composite5.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite4.fsh\""
  },
  {
    "path": "shaders/world-1/composite5.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite4.vsh\""
  },
  {
    "path": "shaders/world-1/composite6.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite5.fsh\""
  },
  {
    "path": "shaders/world-1/composite6.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite5.vsh\""
  },
  {
    "path": "shaders/world-1/composite7.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite6.fsh\""
  },
  {
    "path": "shaders/world-1/composite7.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite6.vsh\""
  },
  {
    "path": "shaders/world-1/composite8.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite7.fsh\""
  },
  {
    "path": "shaders/world-1/composite8.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite7.vsh\""
  },
  {
    "path": "shaders/world-1/composite9.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite8.fsh\""
  },
  {
    "path": "shaders/world-1/composite9.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/composite8.vsh\""
  },
  {
    "path": "shaders/world-1/deferred.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/deferred.fsh\""
  },
  {
    "path": "shaders/world-1/deferred.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/deferred.vsh\""
  },
  {
    "path": "shaders/world-1/deferred1.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/deferred1.fsh\""
  },
  {
    "path": "shaders/world-1/deferred1.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/deferred1.vsh\""
  },
  {
    "path": "shaders/world-1/dh_terrain.fsh",
    "content": "#version 330 compatibility\n\n#define NETHER_SHADER\n\n#include \"/dimensions/DH_solid.fsh\""
  },
  {
    "path": "shaders/world-1/dh_terrain.vsh",
    "content": "#version 330 compatibility\n\n#define NETHER_SHADER\n\n#include \"/dimensions/DH_solid.vsh\""
  },
  {
    "path": "shaders/world-1/dh_water.fsh",
    "content": "#version 330 compatibility\n\n#define NETHER_SHADER\n\n#include \"/dimensions/DH_translucent.fsh\""
  },
  {
    "path": "shaders/world-1/dh_water.vsh",
    "content": "#version 330 compatibility\n\n#define NETHER_SHADER\n\n#include \"/dimensions/DH_translucent.vsh\""
  },
  {
    "path": "shaders/world-1/final.fsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/final.fsh\""
  },
  {
    "path": "shaders/world-1/final.vsh",
    "content": "#version 120\n\n#define NETHER_SHADER\n\n#include \"/dimensions/final.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_armor_glint.fsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_armor_glint.vsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_basic.fsh",
    "content": "#version 120\n\n#define LINES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_basic.vsh",
    "content": "#version 120\n\n#define LINES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_beaconbeam.fsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_beaconbeam.vsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_block.fsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_block.vsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_block_translucent.fsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_block_translucent.vsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_damagedblock.fsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_damagedblock.vsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_entities.fsh",
    "content": "#version 120\n\n#define WORLD\n#define ENTITIES\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_entities.vsh",
    "content": "#version 120\n\n\n// #define WORLD\n#define ENTITIES\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_entities_glowing.fsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_entities_glowing.vsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_entities_translucent.fsh",
    "content": "#version 120\n\n#define ENTITIES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_entities_translucent.vsh",
    "content": "#version 120\n\n#define ENTITIES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_hand.fsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_hand.vsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_hand_water.fsh",
    "content": "#version 120\n\n#define HAND\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_hand_water.vsh",
    "content": "#version 120\n\n#define HAND\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_lightning.fsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_lightning.vsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_skybasic.fsh",
    "content": "#version 120\n\n/* RENDERTARGETS:0 */\n\nvoid main() {\n\tdiscard;\n}\n"
  },
  {
    "path": "shaders/world-1/gbuffers_skybasic.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}\n"
  },
  {
    "path": "shaders/world-1/gbuffers_skytextured.fsh",
    "content": "#version 120\n\nvoid main() { discard; return; }\n"
  },
  {
    "path": "shaders/world-1/gbuffers_skytextured.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}"
  },
  {
    "path": "shaders/world-1/gbuffers_spidereyes.fsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_spidereyes.vsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_terrain.fsh",
    "content": "#version 120\n\n#define WORLD\n#define NETHER_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_terrain.vsh",
    "content": "#version 120\n\n#define WORLD\n#define NETHER_SHADER\n\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_textured.fsh",
    "content": "#version 120\n\n#define PARTICLES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_textured.vsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_textured_lit.fsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.fsh\"\n"
  },
  {
    "path": "shaders/world-1/gbuffers_textured_lit.vsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_water.fsh",
    "content": "#version 120\n\n#define NETHER\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_water.vsh",
    "content": "#version 120\n\n#define NETHER\n\n#define NETHER_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_weather.fsh",
    "content": "#version 120\n\n#define WEATHER\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world-1/gbuffers_weather.vsh",
    "content": "#version 120\n\n#define WEATHER\n#define NETHER_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world-1/setup.csh",
    "content": "#version 430 compatibility\n\n#define RENDER_SETUP\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/setup.csh\"\n"
  },
  {
    "path": "shaders/world-1/shadow.fsh",
    "content": "#version 120\n\n#include \"/lib/settings.glsl\"\n\n\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_FragData[0] = vec4(0.0);\n}\n"
  },
  {
    "path": "shaders/world-1/shadow.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n#ifdef IS_LPV_ENABLED\n\t#extension GL_ARB_explicit_attrib_location: enable\n\t#extension GL_ARB_shader_image_load_store: enable\n\t#extension GL_ARB_shading_language_packing : enable\n#endif\n\n#define RENDER_SHADOW\n\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\n#ifdef IS_LPV_ENABLED\n\tattribute vec4 mc_Entity;\n\t#ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE\n\t\tattribute vec4 at_midBlock;\n\t#else\n\t\tattribute vec3 at_midBlock;\n\t#endif\n\tattribute vec3 vaPosition;\n\n\t#ifdef LPV_ENTITY_LIGHTS\n\t\tuniform usampler1D texBlockData;\n\t#endif\n\n\tuniform int renderStage;\n\tuniform vec3 chunkOffset;\n\tuniform int currentRenderedItemId;\n\tuniform int blockEntityId;\n\tuniform int entityId;\n\n\t#include \"/lib/projections.glsl\"\n\t#include \"/lib/blocks.glsl\"\n\t#include \"/lib/entities.glsl\"\n\t#include \"/lib/voxel_common.glsl\"\n\t#include \"/lib/voxel_write.glsl\"\n#endif\n\n\nvoid main() {\n\t#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store\n\t\t#ifdef LPV_NOSHADOW_HACK\n\t\t\tvec3 playerpos = gl_Vertex.xyz;\n\t\t#else\n\t\t\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\t\t\tvec3 playerpos = toShadowSpace(position);\n\t\t#endif\n\n\t\tPopulateShadowVoxel(playerpos);\n\t#endif\n\n\tgl_Position = vec4(-1.0);\n}\n"
  },
  {
    "path": "shaders/world-1/shadowcomp.csh",
    "content": "#version 430 compatibility\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/shadowcomp.csh\"\n"
  },
  {
    "path": "shaders/world0/begin.csh",
    "content": "#version 430 compatibility\r\n\r\n#include \"/lib/settings.glsl\"\r\n\r\n#include \"/dimensions/begin.csh\""
  },
  {
    "path": "shaders/world0/composite.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/fogBehindTranslucent_pass.fsh\""
  },
  {
    "path": "shaders/world0/composite.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/fogBehindTranslucent_pass.vsh\""
  },
  {
    "path": "shaders/world0/composite1.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite.fsh\""
  },
  {
    "path": "shaders/world0/composite1.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite.vsh\""
  },
  {
    "path": "shaders/world0/composite10.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite9.fsh\""
  },
  {
    "path": "shaders/world0/composite10.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite9.vsh\""
  },
  {
    "path": "shaders/world0/composite11.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite10.fsh\""
  },
  {
    "path": "shaders/world0/composite11.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite10.vsh\""
  },
  {
    "path": "shaders/world0/composite12.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite11.fsh\""
  },
  {
    "path": "shaders/world0/composite12.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite11.vsh\""
  },
  {
    "path": "shaders/world0/composite13.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite12.fsh\""
  },
  {
    "path": "shaders/world0/composite13.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite12.vsh\""
  },
  {
    "path": "shaders/world0/composite2.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite1.fsh\""
  },
  {
    "path": "shaders/world0/composite2.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite1.vsh\""
  },
  {
    "path": "shaders/world0/composite3.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite2.fsh\""
  },
  {
    "path": "shaders/world0/composite3.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite2.vsh\""
  },
  {
    "path": "shaders/world0/composite4.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite3.fsh\""
  },
  {
    "path": "shaders/world0/composite4.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite3.vsh\""
  },
  {
    "path": "shaders/world0/composite5.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite4.fsh\""
  },
  {
    "path": "shaders/world0/composite5.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite4.vsh\""
  },
  {
    "path": "shaders/world0/composite6.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite5.fsh\""
  },
  {
    "path": "shaders/world0/composite6.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite5.vsh\""
  },
  {
    "path": "shaders/world0/composite7.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite6.fsh\""
  },
  {
    "path": "shaders/world0/composite7.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite6.vsh\""
  },
  {
    "path": "shaders/world0/composite8.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite7.fsh\""
  },
  {
    "path": "shaders/world0/composite8.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite7.vsh\""
  },
  {
    "path": "shaders/world0/composite9.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite8.fsh\""
  },
  {
    "path": "shaders/world0/composite9.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite8.vsh\""
  },
  {
    "path": "shaders/world0/deferred.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/deferred.fsh\""
  },
  {
    "path": "shaders/world0/deferred.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/deferred.vsh\""
  },
  {
    "path": "shaders/world0/deferred1.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/deferred1.fsh\""
  },
  {
    "path": "shaders/world0/deferred1.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/deferred1.vsh\""
  },
  {
    "path": "shaders/world0/deferred2.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/deferred2.fsh\""
  },
  {
    "path": "shaders/world0/deferred2.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/deferred2.vsh\""
  },
  {
    "path": "shaders/world0/dh_generic.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/DH_generic.fsh\""
  },
  {
    "path": "shaders/world0/dh_generic.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/DH_generic.vsh\""
  },
  {
    "path": "shaders/world0/dh_shadow.fsh",
    "content": "#version 120\n//#extension GL_ARB_shader_texture_lod : disable\n\n#include \"/lib/settings.glsl\"\n\nflat in int isWater;\nin vec2 texcoord;\nin float overdrawCull;\n\nuniform sampler2D tex;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n\tif(isWater > 0){   \n\t\tdiscard;\n\t\treturn;\n\t}\n\n\tif(overdrawCull < 1.0){   \n\t\tdiscard;\n\t\treturn;\n\t}\n\n\tgl_FragData[0] = texture2D(tex, texcoord.xy);\n}\n"
  },
  {
    "path": "shaders/world0/dh_shadow.vsh",
    "content": "#version 120\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n#include \"/lib/settings.glsl\"\n\n#define SHADOW_MAP_BIAS 0.5\nconst float PI = 3.1415927;\nout vec3 color;\n\nflat out int isWater;\n\n#include \"/lib/Shadow_Params.glsl\"\n\n#include \"/lib/projections.glsl\"\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nout float overdrawCull;\n// uniform int renderStage;\n\nvoid main() {\n\tisWater = 0;\n\n\tif(gl_Color.a < 1.0) isWater = 1;\n\n\tcolor = gl_Color.rgb;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\t#ifdef DH_OVERDRAW_PREVENTION\n\t\tvec3 worldpos = toShadowSpace(position);\n\t\toverdrawCull = 1.0 - clamp(1.0 - length(worldpos) / far,0.0,1.0);\n\t#else\n\t\toverdrawCull = 1.0;\n\t#endif\n\n\t#ifdef DISTORT_SHADOWMAP\n\t\tgl_Position = BiasShadowProjection(toClipSpace4(position));\n\t#else\n\t\tgl_Position = toClipSpace4(position);\n\t#endif\n\n\tgl_Position.z /= 6.0;\n\t#ifdef LPV_SHADOWS\n\t\tgl_Position.xy = gl_Position.xy * 0.8 - 0.2 * gl_Position.w;\n\t#endif\n}"
  },
  {
    "path": "shaders/world0/dh_terrain.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/DH_solid.fsh\""
  },
  {
    "path": "shaders/world0/dh_terrain.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/DH_solid.vsh\""
  },
  {
    "path": "shaders/world0/dh_water.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/DH_translucent.fsh\""
  },
  {
    "path": "shaders/world0/dh_water.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/DH_translucent.vsh\""
  },
  {
    "path": "shaders/world0/final.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/final.fsh\""
  },
  {
    "path": "shaders/world0/final.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/final.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_armor_glint.fsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_armor_glint.vsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_basic.fsh",
    "content": "#version 120\n\n\n#define LINES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_basic.vsh",
    "content": "#version 120\n\n\n#define LINES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_beaconbeam.fsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_beaconbeam.vsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_block.fsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_block.vsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_block_translucent.fsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_block_translucent.vsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_damagedblock.fsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_damagedblock.vsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_entities.fsh",
    "content": "#version 120\n\n#define WORLD\n#define ENTITIES\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_entities.vsh",
    "content": "#version 120\n\n\n#define WORLD\n#define ENTITIES\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_entities_glowing.fsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_entities_glowing.vsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_entities_translucent.fsh",
    "content": "#version 120\n\n#define ENTITIES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_entities_translucent.vsh",
    "content": "#version 120\n\n#define ENTITIES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_hand.fsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_hand.vsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_hand_water.fsh",
    "content": "#version 120\n\n#define HAND\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_hand_water.vsh",
    "content": "#version 120\n\n#define HAND\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_lightning.fsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_lightning.vsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_skybasic.fsh",
    "content": "#version 120\n\nvoid main() {\n\tdiscard;\n}\n"
  },
  {
    "path": "shaders/world0/gbuffers_skybasic.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}\n"
  },
  {
    "path": "shaders/world0/gbuffers_skytextured.fsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n\n#if RESOURCEPACK_SKY != 0\n\tin vec4 color;\n\tin vec2 texcoord;\n\tuniform sampler2D texture;\n\tuniform sampler2D depthtex0;\n\n\tuniform int renderStage;\n\tuniform vec2 texelSize;\n\n\tfloat interleaved_gradientNoise(){\n\t\tvec2 coord = gl_FragCoord.xy ;\n\t\tfloat noise = fract(52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)));\n\t\treturn noise ;\n\t}\n\n\tvec3 toLinear(vec3 sRGB){\n\t\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n\t}\n#endif\n\nvoid main() {\n\n\t#if RESOURCEPACK_SKY != 0\n\t\t/* RENDERTARGETS:2 */\n\n\t\tvec4 COLOR = texture2D(texture, texcoord.xy) * color;\n\n\t\tbool isSun = renderStage == MC_RENDER_STAGE_SUN || renderStage == 4;\n\t\tbool isMoon = renderStage == MC_RENDER_STAGE_MOON || renderStage == 5;\n\t\tbool isSkyBox = (renderStage == MC_RENDER_STAGE_SKY || renderStage == MC_RENDER_STAGE_CUSTOM_SKY) || (renderStage == 1 || renderStage == 3);\n\n\t\t#if RESOURCEPACK_SKY == 1\n\t\t\tif(isMoon || isSun) { discard; return; }\n\t\t#endif\n\n\t\t#if RESOURCEPACK_SKY == 3\n\t\t\tif(isSkyBox) { discard; return; }\n\t\t#endif\n\n\t\tvec3 NEWCOLOR = COLOR.rgb;\n\n\t\tif(isSun) NEWCOLOR.rgb = COLOR.rgb * 10.0;\n\t\tif(isMoon) NEWCOLOR.rgb = COLOR.rgb * 5.0;\n\t\tif(isSkyBox) NEWCOLOR.rgb = COLOR.rgb * 2.0;\n\n\t\tNEWCOLOR.rgb = toLinear(NEWCOLOR.rgb);\n\n\t\tNEWCOLOR.rgb = max(NEWCOLOR.rgb - NEWCOLOR.rgb * interleaved_gradientNoise()*0.05, 0.0);\n\n\t\tgl_FragData[0] = vec4(NEWCOLOR.rgb * 0.1, COLOR.a);\n\t#else\n\t\tdiscard;\n\t#endif\n}\n"
  },
  {
    "path": "shaders/world0/gbuffers_skytextured.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n\n#if RESOURCEPACK_SKY != 0\n\t#include \"/lib/res_params.glsl\"\n\t/*\n\t!! DO NOT REMOVE !!\n\tThis code is from Chocapic13' shaders\n\tRead the terms of modification and sharing before changing something below please !\n\t!! DO NOT REMOVE !!\n\t*/\n\tout vec4 color;\n\tout vec2 texcoord;\n\tuniform vec2 texelSize;\n\tuniform int framemod8;\n\tconst vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),\n\t\t\t\t\t\t\t\tvec2(-1.,3.)/8.,\n\t\t\t\t\t\t\t\tvec2(5.0,1.)/8.,\n\t\t\t\t\t\t\t\tvec2(-3,-5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-5.,5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-7.,-1.)/8.,\n\t\t\t\t\t\t\t\tvec2(3,7.)/8.,\n\t\t\t\t\t\t\t\tvec2(7.,-7.)/8.);\n\n#endif\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\t#if RESOURCEPACK_SKY != 0\n\t\ttexcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;\n\t\tcolor = gl_Color;\n\n\t\t#ifdef TAA_UPSCALING\n\t\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t\t#endif\n\t\t#ifdef TAA\n\t\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t\t#endif\n\t#endif\n}"
  },
  {
    "path": "shaders/world0/gbuffers_spidereyes.fsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_spidereyes.vsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_terrain.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#define WORLD\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_terrain.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#define WORLD\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_textured.fsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_textured.vsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_textured_lit.fsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_textured_lit.vsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_water.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_water.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0/gbuffers_weather.fsh",
    "content": "#version 120\n\n#define WEATHER\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0/gbuffers_weather.vsh",
    "content": "#version 120\n\n#define WEATHER\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0/physics_ocean.fsh",
    "content": "#version 120\r\n\r\n#define PHYSICSMOD_FRAGMENT\r\n#define PHYSICSMOD_OCEAN_SHADER\r\n#define OVERWORLD_SHADER\r\n\r\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0/physics_ocean.vsh",
    "content": "#version 120\r\n\r\n#define PHYSICSMOD_VERTEX\r\n#define PHYSICSMOD_OCEAN_SHADER\r\n#define OVERWORLD_SHADER\r\n\r\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0/setup.csh",
    "content": "#version 430 compatibility\n\n#define RENDER_SETUP\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/setup.csh\"\n"
  },
  {
    "path": "shaders/world0/shadow.fsh",
    "content": "#version 120\n\n#include \"/lib/settings.glsl\"\n\nin vec4 color;\n\n#ifdef TRANSLUCENT_COLORED_SHADOWS\n\tin vec3 Fcolor;\n#else\n\tconst vec3 Fcolor = vec3(1.0);\n#endif\n\nin vec2 Ftexcoord;\nuniform sampler2D tex;\nuniform sampler2D noisetex;\n\n#ifdef LPV_SHADOWS\n\t#include \"/lib/cube/cubeData.glsl\"\n\tflat in int render;\n#endif\n\nfloat blueNoise(){\n\treturn fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\t#ifdef LPV_SHADOWS\n\t\tif (render >= 0 && (\n\t\t\tany(lessThan(gl_FragCoord.xy, minBounds[render >> 4] + renderBounds[render & 15])) ||\n\t\t\tany(greaterThan(gl_FragCoord.xy, maxBounds[render >> 4] + renderBounds[render & 15])))){\n\t\t\tdiscard;\n\t\t\treturn;\n\t\t}\n\t#endif\n\n\tvec4 shadowColor = vec4(texture2D(tex,Ftexcoord.xy).rgb * Fcolor.rgb,  texture2DLod(tex, Ftexcoord.xy, 0).a);\n\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tif(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0);\n\t#endif\n\n\t// gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb,  texture2DLod(tex, texcoord.xy, 0).a);\n\tgl_FragData[0] = shadowColor;\n\n  \t#ifdef Stochastic_Transparent_Shadows\n\t\tif(gl_FragData[0].a < blueNoise()){\n\t\t\tdiscard;\n\t\t\treturn;\n\t\t}\n  \t#endif\n}"
  },
  {
    "path": "shaders/world0/shadow.gsh",
    "content": "#version 330 compatibility\r\n\r\nlayout (triangles) in;\r\nlayout (triangle_strip) out;\r\n\r\n#include \"/lib/settings.glsl\"\r\n\r\n#define OVERWORLD_SHADER\r\n\r\n#ifdef LPV_SHADOWS\r\n\t// limit vertex output to light count to reduce overhead\r\n\t// can be slow when the shader wants to output too many vertices, even if they aren't outputted\r\n\t// there are 3 vertices for the regular shadows, and up to 3x5 for each light\r\n\t#if LPV_SHADOWS_LIGHT_COUNT == 1\r\n\t\tlayout (max_vertices = 18) out;\r\n\t#elif LPV_SHADOWS_LIGHT_COUNT == 2\r\n\t\tlayout (max_vertices = 33) out;\r\n\t#elif LPV_SHADOWS_LIGHT_COUNT == 3\r\n\t\tlayout (max_vertices = 48) out;\r\n\t#elif LPV_SHADOWS_LIGHT_COUNT == 4\r\n\t\tlayout (max_vertices = 63) out;\r\n\t#elif LPV_SHADOWS_LIGHT_COUNT == 5\r\n\t\tlayout (max_vertices = 78) out;\r\n\t#elif LPV_SHADOWS_LIGHT_COUNT == 6\r\n\t\tlayout (max_vertices = 93) out;\r\n\t#else\r\n\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\r\n\t\t\t// colored shadows need more vertex data, so can only push fewer vertices\r\n\t\t\tlayout (max_vertices = 102) out;\r\n\t\t#else\r\n\t\t\t#if LPV_SHADOWS_LIGHT_COUNT == 7\r\n\t\t\t\tlayout (max_vertices = 108) out;\r\n\t\t\t#elif LPV_SHADOWS_LIGHT_COUNT == 8\r\n\t\t\t\tlayout (max_vertices = 123) out;\r\n\t\t\t#elif LPV_SHADOWS_LIGHT_COUNT == 9\r\n\t\t\t\tlayout (max_vertices = 138) out;\r\n\t\t\t#endif\r\n\t\t#endif\r\n\t#endif\r\n#else\r\n\t// only 3 shadow vertices\r\n\tlayout (max_vertices = 3) out;\r\n#endif\r\n\r\nin vec4 color[3];\r\nin vec2 texcoord[3];\r\n\r\nout vec2 Ftexcoord;\r\n#ifdef TRANSLUCENT_COLORED_SHADOWS\r\n\tout vec3 Fcolor;\r\n#endif\r\n\r\n#ifdef LPV_SHADOWS\r\n\tin vec3 worldPos[3];\r\n\tflat in vec3 worldNormal[3];\r\n\tflat out int render;\r\n\r\n\t#include \"/lib/cube/emit.glsl\"\r\n\t#include \"/lib/cube/lightData.glsl\"\r\n\r\n\tuniform usampler1D texCloseLights;\r\n\tuniform vec3 cameraPosition;\r\n\tuniform vec3 previousCameraPosition;\r\n\t#ifdef LPV_HAND_SHADOWS\r\n\t\tuniform vec3 relativeEyePosition;\r\n\t\tuniform vec3 playerLookVector;\r\n\t#endif\r\n#endif\r\n\r\nvoid main() {\r\n\t#ifdef LPV_SHADOWS\r\n\t\tfor (int i = 0; i < LPV_SHADOWS_LIGHT_COUNT; i++) {\r\n\t\t\tuint data = texelFetch(texCloseLights, i, 0).r;\r\n\t\t\tfloat dist;\r\n\t\t\tivec3 pos;\r\n\t\t\tuint id;\r\n\t\t\tif (getLightData(data, dist, pos, id)) {\r\n\t\t\t\tvec3 lightPos = -fract(previousCameraPosition) + (previousCameraPosition - cameraPosition) + vec3(pos) - 14.5;\r\n\t\t\t\t#ifdef LPV_HAND_SHADOWS\r\n\t\t\t\t\tif (dist < 0.0001) {\r\n\t\t\t\t\t\tvec2 viewDir = normalize(playerLookVector.xz) * 0.25;\r\n\t\t\t\t\t\tlightPos = -relativeEyePosition + vec3(viewDir.x, 0, viewDir.y);\r\n\t\t\t\t\t}\r\n\t\t\t\t#endif\r\n\r\n\t\t\t\tvec3 dists = vec3(length(worldPos[0] - lightPos), length(worldPos[1] - lightPos), length(worldPos[2] - lightPos));\r\n\t\t\t\tif (\r\n\t\t\t\t\t// check that all vertices are in range, don't want to render unnecessary vertices\r\n\t\t\t\t\tall(lessThan(dists, vec3(14))) &&\r\n\t\t\t\t\t// discard backfaces, if they are closer than 1 block, since those can be the faces from the light\r\n\t\t\t\t\t(max(max(dists.x, dists.y), dists.z) > 1.45 || dot(worldNormal[0], worldPos[0] - lightPos) < 0)) {\r\n\t\t\t\t\tfor (int f = 0; f < 6; f++) {\r\n\t\t\t\t\t\trender = i + f * 16;\r\n\t\t\t\t\t\temitCubemap(directionMatices[f], cubeFaceOffsets[f]*2+renderOffsets[i]*2, lightPos);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// since lights are sorted, if one light is invalid all followings are aswell\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trender = -1;\r\n\t#endif\r\n\r\n\tfor (int i = 0; i < 3; i++) {\r\n\t\tgl_Position = gl_in[i].gl_Position;\r\n\t\t#ifdef LPV_SHADOWS\r\n\t\t\tgl_Position.xy = gl_Position.xy * 0.8 - 0.2 * gl_Position.w;\r\n\t\t#endif\r\n\t\tFtexcoord = texcoord[i].xy;\r\n\t\t#ifdef TRANSLUCENT_COLORED_SHADOWS\r\n\t\t\tFcolor = color[i].rgb;\r\n\t\t#endif\r\n\t\tEmitVertex();\r\n\t}\r\n\tEndPrimitive();\r\n}"
  },
  {
    "path": "shaders/world0/shadow.vsh",
    "content": "#version 120\n\n#include \"/lib/settings.glsl\"\n\n#ifdef IS_LPV_ENABLED\n\t#extension GL_ARB_explicit_attrib_location: enable\n\t#extension GL_ARB_shader_image_load_store: enable\n#endif\n\n#define RENDER_SHADOW\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\n#define SHADOW_MAP_BIAS 0.5\nconst float PI = 3.1415927;\nout vec2 texcoord;\nuniform int hideGUI;\nuniform float frameTimeCounter;\nuniform int frameCounter;\nuniform float screenBrightness;\nuniform vec3 sunVec;\nuniform float aspectRatio;\nuniform float sunElevation;\nuniform vec3 sunPosition;\nuniform float lightSign;\nuniform float cosFov;\nuniform vec3 shadowViewDir;\nuniform vec3 shadowCamera;\nuniform vec3 shadowLightVec;\nuniform float shadowMaxProj;\nattribute vec4 mc_midTexCoord;\nout vec4 color;\n#ifdef LPV_SHADOWS\n\tout vec3 worldPos;\n\tflat out vec3 worldNormal;\n#endif\n\nattribute vec4 mc_Entity;\nuniform int blockEntityId;\nuniform int entityId;\n\n#include \"/lib/projections.glsl\"\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/bokeh.glsl\"\n#include \"/lib/blocks.glsl\"\n#include \"/lib/entities.glsl\"\n\n#ifdef IS_LPV_ENABLED\n\t#ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE\n\t\tattribute vec4 at_midBlock;\n\t#else\n\t\tattribute vec3 at_midBlock;\n\t#endif\n    uniform int currentRenderedItemId;\n\tuniform int renderStage;\n\n\t#include \"/lib/voxel_common.glsl\"\n\t#include \"/lib/voxel_write.glsl\"\n#endif\n\nconst float PI48 = 150.796447372*WAVY_SPEED;\nfloat pi2wt = PI48*frameTimeCounter;\n\nvec2 calcWave(in vec3 pos) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude;\n\treturn ret;\n}\n\nvec3 calcMovePlants(in vec3 pos) {\n\tvec2 move1 = calcWave(pos );\n\tfloat move1y = -length(move1);\n\treturn vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0;\n}\n\nvec3 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) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude;\n\treturn ret;\n}\n\nvec3 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) {\n\tvec3 move1 = calcWaveLeaves(pos      , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1;\n\treturn move1*5.*WAVY_STRENGTH/255.;\n}\n\nbool intersectCone(float coneHalfAngle, vec3 coneTip , vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) {\n\tvec3 co = rayOrig - coneTip;\n\tfloat prod = dot(normalize(co),coneAxis);\n\tif (prod <= -coneHalfAngle) return true;   //In view frustrum\n\n\tfloat a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle;\n\tfloat b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle);\n\tfloat c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle;\n\n\tfloat det = b*b - 4.*a*c;\n\tif (det < 0.) return false;    // No intersection with either forward cone and backward cone\n\n\tdet = sqrt(det);\n\tfloat t2 = (-b + det) / (2. * a);\n\tif (t2 <= 0.0 || t2 >= maxZ) return false;  //Idk why it works\n\n\treturn true;\n}\n\n// uniform float far;\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\n// uniform int renderStage;\n\nvoid main() {\n\ttexcoord.xy = gl_MultiTexCoord0.xy;\n\tcolor = gl_Color;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\n\tvec3 playerpos = toShadowSpace(position);\n\n\t#ifdef LPV_SHADOWS\n\t\tworldPos = playerpos;\n\t\tworldNormal = mat3(shadowModelViewInverse) * gl_NormalMatrix * gl_Normal;\n\t#endif\n\n\t#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store\n\t\tPopulateShadowVoxel(playerpos);\n\t#endif\n\n\tvec3 worldpos = playerpos;\n\n\t#ifdef WAVY_PLANTS\n\t\t// also use normal, so up/down facing geometry does not get detatched from its model parts.\n\t\tbool InterpolateFromBase = gl_MultiTexCoord0.t < max(mc_midTexCoord.t, abs(viewToWorld(normalize(gl_NormalMatrix * gl_Normal)).y));\n\t\tif((\n\t\t\t// these wave off of the ground. the area connected to the ground does not wave.\n\t\t\t(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))\n\n\t\t\t// these wave off of the ceiling. the area connected to the ceiling does not wave.\n\t\t\t|| (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE))\n\n\t\t\t// these wave off of the air. they wave uniformly\n\t\t\t|| (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING)\n\n\t\t\t#ifndef RP_MODEL_FIX\n\t\t\t\t|| (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES)\n\t\t\t#endif\n\n\t\t) && length(position) < 32.0) {\n\n\t\t\t// apply displacement for waving plant blocks\n\t\t\tworldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5);\n\n\t\t\t// apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly\n\t\t\tif(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;\n\t\t}\n\t#endif\n\n\t#ifdef PLANET_CURVATURE\n\t\tfloat curvature = length(worldpos) / (16*8);\n\t\tworldpos.y -= curvature*curvature * CURVATURE_AMOUNT;\n\t#endif\n\n\tposition = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz;\n\n\t#ifdef DISTORT_SHADOWMAP\n\t\tif (entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SLIME)\n\t\t\tposition.xyz = position.xyz - normalize(gl_NormalMatrix * gl_Normal) * 0.25;\n\n\t\tgl_Position = BiasShadowProjection(toClipSpace4(position));\n\t#else\n\t\tgl_Position = toClipSpace4(position);\n\t#endif\n\n\tif (mc_Entity.x == BLOCK_WATER) gl_Position.w = -1.0;\n\n  \tgl_Position.z /= 6.0;\n}"
  },
  {
    "path": "shaders/world0/shadowcomp.csh",
    "content": "#version 430 compatibility\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/shadowcomp.csh\"\n"
  },
  {
    "path": "shaders/world0/shadowcomp3.csh",
    "content": "#version 430 compatibility\r\n\r\n#include \"/lib/settings.glsl\"\r\n\r\n#include \"/dimensions/shadowcomp3.csh\""
  },
  {
    "path": "shaders/world0/shadowcomp4.csh",
    "content": "#version 430 compatibility\r\n\r\n#include \"/lib/settings.glsl\"\r\n\r\n#include \"/dimensions/shadowcomp4.csh\""
  },
  {
    "path": "shaders/world0/shadowcomp5.csh",
    "content": "#version 430 compatibility\r\n\r\n#include \"/lib/settings.glsl\"\r\n\r\n#include \"/dimensions/shadowcomp5.csh\""
  },
  {
    "path": "shaders/world0_Aether/composite.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/fogBehindTranslucent_pass.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/fogBehindTranslucent_pass.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite1.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite1.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite10.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite9.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite10.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite9.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite12.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite11.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite12.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite11.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite13.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite12.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite13.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite12.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite2.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite1.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite2.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite1.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite3.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite2.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite3.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite2.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite4.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite3.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite4.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite3.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite5.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite4.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite5.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite4.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite6.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite5.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite6.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite5.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite7.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite6.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite7.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite6.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite8.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite7.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite8.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite7.vsh\""
  },
  {
    "path": "shaders/world0_Aether/composite9.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite8.fsh\""
  },
  {
    "path": "shaders/world0_Aether/composite9.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/composite8.vsh\""
  },
  {
    "path": "shaders/world0_Aether/deferred.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/deferred.fsh\""
  },
  {
    "path": "shaders/world0_Aether/deferred.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/deferred.vsh\""
  },
  {
    "path": "shaders/world0_Aether/deferred1.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/deferred1.fsh\""
  },
  {
    "path": "shaders/world0_Aether/deferred1.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/deferred1.vsh\""
  },
  {
    "path": "shaders/world0_Aether/deferred2.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/deferred2.fsh\""
  },
  {
    "path": "shaders/world0_Aether/deferred2.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/deferred2.vsh\""
  },
  {
    "path": "shaders/world0_Aether/dh_generic.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/DH_generic.fsh\""
  },
  {
    "path": "shaders/world0_Aether/dh_generic.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/DH_generic.vsh\""
  },
  {
    "path": "shaders/world0_Aether/dh_shadow.fsh",
    "content": "#version 120\n//#extension GL_ARB_shader_texture_lod : disable\n\n#include \"/lib/settings.glsl\"\n\nflat varying int water;\nvarying vec2 texcoord;\n\nvarying float overdrawCull;\n\nuniform sampler2D tex;\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n    if(water > 0){   \n        discard;\n        return;\n    }\n    \n    if(overdrawCull < 1.0){   \n        discard;\n        return;\n    }\n    \n\tgl_FragData[0] = texture2D(tex, texcoord.xy);\n}\n"
  },
  {
    "path": "shaders/world0_Aether/dh_shadow.vsh",
    "content": "#version 120\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n#include \"/lib/settings.glsl\"\n\n#define SHADOW_MAP_BIAS 0.5\nconst float PI = 3.1415927;\nvarying vec2 texcoord;\n\nflat varying int water;\n\n#include \"/lib/projections.glsl\"\n\n#include \"/lib/Shadow_Params.glsl\"\n\n// uniform float far;\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nvarying float overdrawCull;\n// uniform int renderStage;\n\nvoid main() {\n\twater = 0;\n\n\tif(gl_Color.a < 1.0) water = 1;\n\n\ttexcoord.xy = gl_MultiTexCoord0.xy;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\t#ifdef DH_OVERDRAW_PREVENTION\n  \t\tvec3 worldpos = toShadowSpace(position);\n\t\toverdrawCull = 1.0 - clamp(1.0 - length(worldpos) / far,0.0,1.0);\n\t#else\n\t\toverdrawCull = 1.0;\n\t#endif\n\n\t#ifdef DISTORT_SHADOWMAP\n\t\tgl_Position = BiasShadowProjection(toClipSpace4(position));\n\t#else\n\t\tgl_Position = toClipSpace4(position);\n\t#endif\n\n  \tgl_Position.z /= 6.0;\n}"
  },
  {
    "path": "shaders/world0_Aether/dh_terrain.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/DH_solid.fsh\""
  },
  {
    "path": "shaders/world0_Aether/dh_terrain.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/DH_solid.vsh\""
  },
  {
    "path": "shaders/world0_Aether/dh_water.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/DH_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Aether/dh_water.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/DH_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Aether/final.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/final.fsh\""
  },
  {
    "path": "shaders/world0_Aether/final.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/final.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_armor_glint.fsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_armor_glint.vsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_basic.fsh",
    "content": "#version 120\n\n\n#define LINES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_basic.vsh",
    "content": "#version 120\n\n\n#define LINES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_beaconbeam.fsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_beaconbeam.vsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_block.fsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_block.vsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_block_translucent.fsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_block_translucent.vsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_damagedblock.fsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_damagedblock.vsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_entities.fsh",
    "content": "#version 120\n\n#define WORLD\n#define ENTITIES\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_entities.vsh",
    "content": "#version 120\n\n\n#define WORLD\n#define ENTITIES\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_entities_glowing.fsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_entities_glowing.vsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_entities_translucent.fsh",
    "content": "#version 120\n\n#define ENTITIES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_entities_translucent.vsh",
    "content": "#version 120\n\n#define ENTITIES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_hand.fsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_hand.vsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_hand_water.fsh",
    "content": "#version 120\n\n#define HAND\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_hand_water.vsh",
    "content": "#version 120\n\n#define HAND\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_lightning.fsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_lightning.vsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_skybasic.fsh",
    "content": "#version 120\n\nvoid main() {\n\tdiscard;\n}\n"
  },
  {
    "path": "shaders/world0_Aether/gbuffers_skybasic.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}\n"
  },
  {
    "path": "shaders/world0_Aether/gbuffers_skytextured.fsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n\n#if RESOURCEPACK_SKY != 0\n\tvarying vec4 color;\n\tvarying vec2 texcoord;\n\tuniform sampler2D texture;\n\tuniform sampler2D depthtex0;\n\t\n\tuniform int renderStage;\n\tuniform vec2 texelSize;\n\n\tfloat interleaved_gradientNoise(){\n\t\t// vec2 coord = gl_FragCoord.xy + (frameCounter%40000);\n\t\tvec2 coord = gl_FragCoord.xy ;\n\t\t// vec2 coord = gl_FragCoord.xy;\n\t\tfloat noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) );\n\t\treturn noise ;\n\t}\n\n\tvec3 toLinear(vec3 sRGB){\n\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n\t}\n\n#endif\n\n\nvoid main() {\n\n\t#if RESOURCEPACK_SKY != 0\n\t\t/* RENDERTARGETS:2 */\n\n\t\tvec4 COLOR = texture2D(texture, texcoord.xy) * color;\n\n\t\tbool isSun = renderStage == MC_RENDER_STAGE_SUN || renderStage == 4;\n\t\tbool isMoon = renderStage == MC_RENDER_STAGE_MOON || renderStage == 5;\n\t\tbool isSkyBox = (renderStage == MC_RENDER_STAGE_SKY || renderStage == MC_RENDER_STAGE_CUSTOM_SKY) || (renderStage == 1 || renderStage == 3);\n\n\t\t#if RESOURCEPACK_SKY == 1\n\t\t\tif(isMoon || isSun) { discard; return; }\n\t\t#endif\n\n\t\t#if RESOURCEPACK_SKY == 3\n\t\t\tif(isSkyBox) { discard; return; }\n\t\t#endif\n\n\n\t\tvec3 NEWCOLOR = COLOR.rgb;\n\n\t\tif(isSun) NEWCOLOR.rgb = COLOR.rgb * 10.0;\n\t\tif(isMoon) NEWCOLOR.rgb = COLOR.rgb * 5.0;\n\t\tif(isSkyBox) NEWCOLOR.rgb = COLOR.rgb * 2.0;\n\n\t\tNEWCOLOR.rgb = toLinear(NEWCOLOR.rgb);\n\n\t\tNEWCOLOR.rgb = max(NEWCOLOR.rgb - NEWCOLOR.rgb * interleaved_gradientNoise()*0.05, 0.0);\n\t\t\n\t\tgl_FragData[0] = vec4(NEWCOLOR.rgb*0.1, COLOR.a);\n\t#else\n\t\tdiscard;\n\t#endif\n}\n"
  },
  {
    "path": "shaders/world0_Aether/gbuffers_skytextured.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n\n#if RESOURCEPACK_SKY != 0\n\t#include \"/lib/res_params.glsl\"\n\t/*\n\t!! DO NOT REMOVE !!\n\tThis code is from Chocapic13' shaders\n\tRead the terms of modification and sharing before changing something below please !\n\t!! DO NOT REMOVE !!\n\t*/\n\tvarying vec4 color;\n\tvarying vec2 texcoord;\n\tuniform vec2 texelSize;\n\tuniform int framemod8;\n\tconst vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),\n\t\t\t\t\t\t\t\tvec2(-1.,3.)/8.,\n\t\t\t\t\t\t\t\tvec2(5.0,1.)/8.,\n\t\t\t\t\t\t\t\tvec2(-3,-5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-5.,5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-7.,-1.)/8.,\n\t\t\t\t\t\t\t\tvec2(3,7.)/8.,\n\t\t\t\t\t\t\t\tvec2(7.,-7.)/8.);\n\n#endif\n\nvoid main() {\n\tgl_Position = ftransform();\n\t\n\t#if RESOURCEPACK_SKY != 0\n\n\t\ttexcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;\n\t\tcolor = gl_Color;\n\n\t\t#ifdef TAA_UPSCALING\n\t\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t\t#endif\n\t\t#ifdef TAA\n\t\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t\t#endif\n\t\t\n\t#endif\n}"
  },
  {
    "path": "shaders/world0_Aether/gbuffers_spidereyes.fsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_spidereyes.vsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_terrain.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#define WORLD\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_terrain.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#define WORLD\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_textured.fsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_textured.vsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_textured_lit.fsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_textured_lit.vsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_water.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_water.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_weather.fsh",
    "content": "#version 120\n\n#define WEATHER\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Aether/gbuffers_weather.vsh",
    "content": "#version 120\n\n#define WEATHER\n#define OVERWORLD_SHADER\n#define AETHER_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Aether/setup.csh",
    "content": "#version 430 compatibility\n\n#define RENDER_SETUP\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/setup.csh\"\n"
  },
  {
    "path": "shaders/world0_Aether/shadow.fsh",
    "content": "#version 120\n\n#include \"/lib/settings.glsl\"\n\nvarying vec4 color;\n\nvarying vec2 texcoord;\nuniform sampler2D tex;\nuniform sampler2D noisetex;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nfloat blueNoise(){\n\treturn fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887);\n}\n\nvoid main() {\n\tvec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb,  texture2DLod(tex, texcoord.xy, 0).a);\n\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tif(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0);\n\t#endif\n\n\tgl_FragData[0] = shadowColor;\n\n\t// gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb,  texture2DLod(tex, texcoord.xy, 0).a);\n\n  \t#ifdef Stochastic_Transparent_Shadows\n\t\tif(gl_FragData[0].a < blueNoise()) { discard; return;}\n  \t#endif\n}\n"
  },
  {
    "path": "shaders/world0_Aether/shadow.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n#ifdef IS_LPV_ENABLED\n\t#extension GL_ARB_explicit_attrib_location: enable\n\t#extension GL_ARB_shader_image_load_store: enable\n#endif\n\n#define RENDER_SHADOW\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\n#define SHADOW_MAP_BIAS 0.5\nconst float PI = 3.1415927;\nvarying vec2 texcoord;\n\nuniform int hideGUI;\nuniform float frameTimeCounter;\nuniform int frameCounter;\nuniform float screenBrightness;\nuniform vec3 sunVec;\nuniform float aspectRatio;\nuniform float sunElevation;\nuniform vec3 sunPosition;\nuniform float lightSign;\nuniform float cosFov;\nuniform vec3 shadowViewDir;\nuniform vec3 shadowCamera;\nuniform vec3 shadowLightVec;\nuniform float shadowMaxProj;\nattribute vec4 mc_midTexCoord;\nvarying vec4 color;\n\nattribute vec4 mc_Entity;\nuniform int blockEntityId;\nuniform int entityId;\n\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/bokeh.glsl\"\n#include \"/lib/blocks.glsl\"\n#include \"/lib/entities.glsl\"\n\n#include \"/lib/projections.glsl\"\n#include \"/lib/DistantHorizons_projections.glsl\"\n\n#ifdef IS_LPV_ENABLED\n\t#ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE\n\t\tattribute vec4 at_midBlock;\n\t#else\n\t\tattribute vec3 at_midBlock;\n\t#endif\n\tuniform int currentRenderedItemId;\n\tuniform int renderStage;\n\n\t#include \"/lib/voxel_common.glsl\"\n\t#include \"/lib/voxel_write.glsl\"\n#endif\n\nconst float PI48 = 150.796447372*WAVY_SPEED;\nfloat pi2wt = PI48*frameTimeCounter;\n\nvec2 calcWave(in vec3 pos) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude;\n\n\treturn ret;\n}\n\nvec3 calcMovePlants(in vec3 pos) {\n\tvec2 move1 = calcWave(pos);\n\tfloat move1y = -length(move1);\n\treturn vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0;\n}\n\nvec3 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) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude;\n\n\treturn ret;\n}\n\nvec3 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) {\n\tvec3 move1 = calcWaveLeaves(pos, 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1;\n\treturn move1*5.*WAVY_STRENGTH/255.;\n}\n\nbool intersectCone(float coneHalfAngle, vec3 coneTip, vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) {\n\tvec3 co = rayOrig - coneTip;\n\tfloat prod = dot(normalize(co),coneAxis);\n\tif (prod <= -coneHalfAngle) return true; //In view frustrum\n\n\tfloat a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle;\n\tfloat b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle);\n\tfloat c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle;\n\n\tfloat det = b*b - 4.*a*c;\n\tif (det < 0.) return false; // No intersection with either forward cone and backward cone\n\n\tdet = sqrt(det);\n\tfloat t2 = (-b + det) / (2. * a);\n\tif (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works\n\n\treturn true;\n}\n\nvoid main() {\n\ttexcoord.xy = gl_MultiTexCoord0.xy;\n\tcolor = gl_Color;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\n\t// #if defined IS_LPV_ENABLED || defined WAVY_PLANTS  || !defined PLANET_CURVATURE\n\t\tvec3 playerpos = toShadowSpace(position);\n\t// #endif\n\n\t#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store\n\t\tPopulateShadowVoxel(playerpos);\n\t#endif\n\n\tint blockId = int(mc_Entity.x + 0.5);\n\n\tvec3 worldpos = playerpos;\n\n\t#ifdef WAVY_PLANTS\n\t\t// also use normal, so up/down facing geometry does not get detatched from its model parts.\n\t\tbool InterpolateFromBase = gl_MultiTexCoord0.t < max(mc_midTexCoord.t, abs(viewToWorld(normalize(gl_NormalMatrix * gl_Normal)).y));\n\t\tif((\n\t\t\t// these wave off of the ground. the area connected to the ground does not wave.\n\t\t\t(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))\n\n\t\t\t// these wave off of the ceiling. the area connected to the ceiling does not wave.\n\t\t\t|| (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE))\n\n\t\t\t// these wave off of the air. they wave uniformly\n\t\t\t|| (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING)\n\n\t\t\t#ifndef RP_MODEL_FIX\n\t\t\t\t|| (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES)\n\t\t\t#endif\n\n\t\t) && length(position) < 32.0) {\n\n\t\t\t// apply displacement for waving plant blocks\n\t\t\tworldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5);\n\n\t\t\t// apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly\n\t\t\tif(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;\n\t\t}\n\t#endif\n\n\t#ifdef PLANET_CURVATURE\n\t\tfloat curvature = length(worldpos) / (16*8);\n\t\tworldpos.y -= curvature*curvature * CURVATURE_AMOUNT;\n\t#endif\n\n\tposition = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz;\n\n\t#ifdef DISTORT_SHADOWMAP\n\t\tif (entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SLIME)\n\t\t\tposition.xyz = position.xyz - normalize(gl_NormalMatrix * gl_Normal) * 0.25;\n\n\t\tgl_Position = BiasShadowProjection(toClipSpace4(position));\n\t#else\n\t\tgl_Position = toClipSpace4(position);\n\t#endif\n \t\n\n\tif (blockId == BLOCK_WATER) gl_Position.w = -1.0;\n\n  \tgl_Position.z /= 6.0;\n}\n"
  },
  {
    "path": "shaders/world0_Aether/shadowcomp.csh",
    "content": "#version 430 compatibility\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/shadowcomp.csh\"\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/fogBehindTranslucent_pass.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/fogBehindTranslucent_pass.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite1.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite1.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite10.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite9.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite10.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite9.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite12.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite11.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite12.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite11.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite13.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite12.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite13.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite12.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite2.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite1.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite2.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite1.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite3.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite2.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite3.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite2.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite4.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite3.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite4.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite3.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite5.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite4.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite5.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite4.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite6.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite5.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite6.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite5.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite7.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite6.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite7.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite6.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite8.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite7.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite8.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite7.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite9.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite8.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/composite9.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/composite8.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/deferred.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/deferred.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/deferred.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/deferred.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/deferred1.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/deferred1.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/deferred1.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/deferred1.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/deferred2.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/deferred2.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/deferred2.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/deferred2.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_generic.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/DH_generic.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_generic.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/DH_generic.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_shadow.fsh",
    "content": "#version 120\n//#extension GL_ARB_shader_texture_lod : disable\n\n#include \"/lib/settings.glsl\"\n\nflat varying int water;\nvarying vec2 texcoord;\n\nvarying float overdrawCull;\n\nuniform sampler2D tex;\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\n    if(water > 0){   \n        discard;\n        return;\n    }\n    \n    if(overdrawCull < 1.0){   \n        discard;\n        return;\n    }\n    \n\tgl_FragData[0] = texture2D(tex, texcoord.xy);\n}\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_shadow.vsh",
    "content": "#version 120\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n#include \"/lib/settings.glsl\"\n\n#define SHADOW_MAP_BIAS 0.5\nconst float PI = 3.1415927;\nvarying vec2 texcoord;\n\nflat varying int water;\n\n#include \"/lib/projections.glsl\"\n\n#include \"/lib/Shadow_Params.glsl\"\n\n// uniform float far;\n\n#include \"/lib/DistantHorizons_projections.glsl\"\n\nvarying float overdrawCull;\n// uniform int renderStage;\n\nvoid main() {\n\twater = 0;\n\n\tif(gl_Color.a < 1.0) water = 1;\n\n\ttexcoord.xy = gl_MultiTexCoord0.xy;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\t#ifdef DH_OVERDRAW_PREVENTION\n  \t\tvec3 worldpos = toShadowSpace(position);\n\t\toverdrawCull = 1.0 - clamp(1.0 - length(worldpos) / far,0.0,1.0);\n\t#else\n\t\toverdrawCull = 1.0;\n\t#endif\n\n\t#ifdef DISTORT_SHADOWMAP\n\t\tgl_Position = BiasShadowProjection(toClipSpace4(position));\n\t#else\n\t\tgl_Position = toClipSpace4(position);\n\t#endif\n\n  \tgl_Position.z /= 6.0;\n}"
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_terrain.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/DH_solid.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_terrain.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/DH_solid.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_water.fsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/DH_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/dh_water.vsh",
    "content": "#version 330 compatibility\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/DH_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/final.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/final.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/final.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/final.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_armor_glint.fsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_armor_glint.vsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_basic.fsh",
    "content": "#version 120\n\n\n#define LINES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_basic.vsh",
    "content": "#version 120\n\n\n#define LINES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_beaconbeam.fsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_beaconbeam.vsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_block.fsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_block.vsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_block_translucent.fsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_block_translucent.vsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_damagedblock.fsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_damagedblock.vsh",
    "content": "#version 120\n\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_entities.fsh",
    "content": "#version 120\n\n#define WORLD\n#define ENTITIES\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_entities.vsh",
    "content": "#version 120\n\n\n#define WORLD\n#define ENTITIES\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_entities_glowing.fsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_entities_glowing.vsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_entities_translucent.fsh",
    "content": "#version 120\n\n#define ENTITIES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_entities_translucent.vsh",
    "content": "#version 120\n\n#define ENTITIES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_hand.fsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_hand.vsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_hand_water.fsh",
    "content": "#version 120\n\n#define HAND\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_hand_water.vsh",
    "content": "#version 120\n\n#define HAND\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_lightning.fsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_lightning.vsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_skybasic.fsh",
    "content": "#version 120\n\nvoid main() {\n\tdiscard;\n}\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_skybasic.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_skytextured.fsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n\n#if RESOURCEPACK_SKY != 0\n\tvarying vec4 color;\n\tvarying vec2 texcoord;\n\tuniform sampler2D texture;\n\tuniform sampler2D depthtex0;\n\t\n\tuniform int renderStage;\n\tuniform vec2 texelSize;\n\n\tfloat interleaved_gradientNoise(){\n\t\t// vec2 coord = gl_FragCoord.xy + (frameCounter%40000);\n\t\tvec2 coord = gl_FragCoord.xy ;\n\t\t// vec2 coord = gl_FragCoord.xy;\n\t\tfloat noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) );\n\t\treturn noise ;\n\t}\n\n\tvec3 toLinear(vec3 sRGB){\n\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n\t}\n\n#endif\n\n\nvoid main() {\n\n\t#if RESOURCEPACK_SKY != 0\n\t\t/* RENDERTARGETS:2 */\n\n\t\tvec4 COLOR = texture2D(texture, texcoord.xy) * color;\n\n\t\tbool isSun = renderStage == MC_RENDER_STAGE_SUN || renderStage == 4;\n\t\tbool isMoon = renderStage == MC_RENDER_STAGE_MOON || renderStage == 5;\n\t\tbool isSkyBox = (renderStage == MC_RENDER_STAGE_SKY || renderStage == MC_RENDER_STAGE_CUSTOM_SKY) || (renderStage == 1 || renderStage == 3);\n\n\t\t#if RESOURCEPACK_SKY == 1\n\t\t\tif(isMoon || isSun) { discard; return; }\n\t\t#endif\n\n\t\t#if RESOURCEPACK_SKY == 3\n\t\t\tif(isSkyBox) { discard; return; }\n\t\t#endif\n\n\n\t\tvec3 NEWCOLOR = COLOR.rgb;\n\n\t\tif(isSun) NEWCOLOR.rgb = COLOR.rgb * 10.0;\n\t\tif(isMoon) NEWCOLOR.rgb = COLOR.rgb * 5.0;\n\t\tif(isSkyBox) NEWCOLOR.rgb = COLOR.rgb * 2.0;\n\n\t\tNEWCOLOR.rgb = toLinear(NEWCOLOR.rgb);\n\n\t\tNEWCOLOR.rgb = max(NEWCOLOR.rgb - NEWCOLOR.rgb * interleaved_gradientNoise()*0.05, 0.0);\n\t\t\n\t\tgl_FragData[0] = vec4(NEWCOLOR.rgb*0.1, COLOR.a);\n\t#else\n\t\tdiscard;\n\t#endif\n}\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_skytextured.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n\n#if RESOURCEPACK_SKY != 0\n\t#include \"/lib/res_params.glsl\"\n\t/*\n\t!! DO NOT REMOVE !!\n\tThis code is from Chocapic13' shaders\n\tRead the terms of modification and sharing before changing something below please !\n\t!! DO NOT REMOVE !!\n\t*/\n\tvarying vec4 color;\n\tvarying vec2 texcoord;\n\tuniform vec2 texelSize;\n\tuniform int framemod8;\n\tconst vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),\n\t\t\t\t\t\t\t\tvec2(-1.,3.)/8.,\n\t\t\t\t\t\t\t\tvec2(5.0,1.)/8.,\n\t\t\t\t\t\t\t\tvec2(-3,-5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-5.,5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-7.,-1.)/8.,\n\t\t\t\t\t\t\t\tvec2(3,7.)/8.,\n\t\t\t\t\t\t\t\tvec2(7.,-7.)/8.);\n\n#endif\n\nvoid main() {\n\tgl_Position = ftransform();\n\t\n\t#if RESOURCEPACK_SKY != 0\n\n\t\ttexcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;\n\t\tcolor = gl_Color;\n\n\t\t#ifdef TAA_UPSCALING\n\t\t\tgl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;\n\t\t#endif\n\t\t#ifdef TAA\n\t\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t\t#endif\n\t\t\n\t#endif\n}"
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_spidereyes.fsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_spidereyes.vsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_terrain.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#define WORLD\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_terrain.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#define WORLD\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_textured.fsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_textured.vsh",
    "content": "#version 120\n\n\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_textured_lit.fsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_textured_lit.vsh",
    "content": "#version 120\n\n#define LIT\n#define PARTICLES\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_water.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_water.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_weather.fsh",
    "content": "#version 120\n\n#define WEATHER\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/gbuffers_weather.vsh",
    "content": "#version 120\n\n#define WEATHER\n#define OVERWORLD_SHADER\n#define TWILIGHT_FOREST_FLAG\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world0_Twilight_Forest/setup.csh",
    "content": "#version 430 compatibility\n\n#define RENDER_SETUP\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/setup.csh\"\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/shadow.fsh",
    "content": "#version 120\n\n#include \"/lib/settings.glsl\"\n\nvarying vec4 color;\n\nvarying vec2 texcoord;\nuniform sampler2D tex;\nuniform sampler2D noisetex;\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nfloat blueNoise(){\n\treturn fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887);\n}\n\nvoid main() {\n\tvec4 shadowColor = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb,  texture2DLod(tex, texcoord.xy, 0).a);\n\n\t#ifdef TRANSLUCENT_COLORED_SHADOWS\n\t\tif(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0);\n\t#endif\n\n\tgl_FragData[0] = shadowColor;\n\n\t// gl_FragData[0] = vec4(texture2D(tex,texcoord.xy).rgb * color.rgb,  texture2DLod(tex, texcoord.xy, 0).a);\n\n  \t#ifdef Stochastic_Transparent_Shadows\n\t\tif(gl_FragData[0].a < blueNoise()) { discard; return;}\n  \t#endif\n}\n"
  },
  {
    "path": "shaders/world0_Twilight_Forest/shadow.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n#ifdef IS_LPV_ENABLED\n\t#extension GL_ARB_explicit_attrib_location: enable\n\t#extension GL_ARB_shader_image_load_store: enable\n#endif\n\n#define RENDER_SHADOW\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\n#define SHADOW_MAP_BIAS 0.5\nconst float PI = 3.1415927;\nvarying vec2 texcoord;\n\nuniform int hideGUI;\nuniform float frameTimeCounter;\nuniform int frameCounter;\nuniform float screenBrightness;\nuniform vec3 sunVec;\nuniform float aspectRatio;\nuniform float sunElevation;\nuniform vec3 sunPosition;\nuniform float lightSign;\nuniform float cosFov;\nuniform vec3 shadowViewDir;\nuniform vec3 shadowCamera;\nuniform vec3 shadowLightVec;\nuniform float shadowMaxProj;\nattribute vec4 mc_midTexCoord;\nvarying vec4 color;\n\nattribute vec4 mc_Entity;\nuniform int blockEntityId;\nuniform int entityId;\n\n#include \"/lib/Shadow_Params.glsl\"\n#include \"/lib/bokeh.glsl\"\n#include \"/lib/blocks.glsl\"\n#include \"/lib/entities.glsl\"\n\n#include \"/lib/projections.glsl\"\n#include \"/lib/DistantHorizons_projections.glsl\"\n\n#ifdef IS_LPV_ENABLED\n\t#ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE\n\t\tattribute vec4 at_midBlock;\n\t#else\n\t\tattribute vec3 at_midBlock;\n\t#endif\n    uniform int currentRenderedItemId;\n\tuniform int renderStage;\n\n\t#include \"/lib/voxel_common.glsl\"\n\t#include \"/lib/voxel_write.glsl\"\n#endif\n\nconst float PI48 = 150.796447372*WAVY_SPEED;\nfloat pi2wt = PI48*frameTimeCounter;\n\nvec2 calcWave(in vec3 pos) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude;\n\n\treturn ret;\n}\n\nvec3 calcMovePlants(in vec3 pos) {\n\tvec2 move1 = calcWave(pos);\n\tfloat move1y = -length(move1);\n\treturn vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0;\n}\n\nvec3 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) {\n\tfloat magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013;\n\tvec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude;\n\n\treturn ret;\n}\n\nvec3 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) {\n\tvec3 move1 = calcWaveLeaves(pos, 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1;\n\treturn move1*5.*WAVY_STRENGTH/255.;\n}\n\nbool intersectCone(float coneHalfAngle, vec3 coneTip, vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) {\n\tvec3 co = rayOrig - coneTip;\n\tfloat prod = dot(normalize(co),coneAxis);\n\tif (prod <= -coneHalfAngle) return true; //In view frustrum\n\n\tfloat a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle;\n\tfloat b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle);\n\tfloat c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle;\n\n\tfloat det = b*b - 4.*a*c;\n\tif (det < 0.) return false; // No intersection with either forward cone and backward cone\n\n\tdet = sqrt(det);\n\tfloat t2 = (-b + det) / (2. * a);\n\tif (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works\n\n\treturn true;\n}\n\nvoid main() {\n\ttexcoord.xy = gl_MultiTexCoord0.xy;\n\tcolor = gl_Color;\n\n\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\n\t// #if defined IS_LPV_ENABLED || defined WAVY_PLANTS  || !defined PLANET_CURVATURE\n\t\tvec3 playerpos = toShadowSpace(position);\n\t// #endif\n\n\t#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store\n\t\tPopulateShadowVoxel(playerpos);\n\t#endif\n\n\tint blockId = int(mc_Entity.x + 0.5);\n\n\tvec3 worldpos = playerpos;\n\n\t#ifdef WAVY_PLANTS\n\t\t// also use normal, so up/down facing geometry does not get detatched from its model parts.\n\t\tbool InterpolateFromBase = gl_MultiTexCoord0.t < max(mc_midTexCoord.t, abs(viewToWorld(normalize(gl_NormalMatrix * gl_Normal)).y));\n\t\tif((\n\t\t\t// these wave off of the ground. the area connected to the ground does not wave.\n\t\t\t(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))\n\n\t\t\t// these wave off of the ceiling. the area connected to the ceiling does not wave.\n\t\t\t|| (!InterpolateFromBase && (mc_Entity.x == BLOCK_VINE))\n\n\t\t\t// these wave off of the air. they wave uniformly\n\t\t\t|| (mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_AIR_WAVING)\n\n\t\t\t#ifndef RP_MODEL_FIX\n\t\t\t\t|| (InterpolateFromBase && (mc_Entity.x == BLOCK_GROUND_WAVING)) || (mc_Entity.x == BLOCK_CAVE_VINE_BERRIES)\n\t\t\t#endif\n\n\t\t) && length(position) < 32.0) {\n\n\t\t\t// apply displacement for waving plant blocks\n\t\t\tworldpos += calcMovePlants(playerpos + cameraPosition) * max(gl_MultiTexCoord1.y,0.5);\n\n\t\t\t// apply displacement for waving leaf blocks specifically, overwriting the other waving mode. these wave off of the air. they wave uniformly\n\t\t\tif(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;\n\t\t}\n\t#endif\n\n\t#ifdef PLANET_CURVATURE\n\t\tfloat curvature = length(worldpos) / (16*8);\n\t\tworldpos.y -= curvature*curvature * CURVATURE_AMOUNT;\n\t#endif\n\n\tposition = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz;\n\n\t#ifdef DISTORT_SHADOWMAP\n\t\tif (entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SLIME)\n\t\t\tposition.xyz = position.xyz - normalize(gl_NormalMatrix * gl_Normal) * 0.25;\n\n\t\tgl_Position = BiasShadowProjection(toClipSpace4(position));\n\t#else\n\t\tgl_Position = toClipSpace4(position);\n\t#endif\n\n\tif (blockId == BLOCK_WATER) gl_Position.w = -1.0;\n\n  \tgl_Position.z /= 6.0;\n}"
  },
  {
    "path": "shaders/world0_Twilight_Forest/shadowcomp.csh",
    "content": "#version 430 compatibility\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/shadowcomp.csh\"\n"
  },
  {
    "path": "shaders/world1/composite.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/fogBehindTranslucent_pass.fsh\""
  },
  {
    "path": "shaders/world1/composite.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/fogBehindTranslucent_pass.vsh\""
  },
  {
    "path": "shaders/world1/composite1.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite.fsh\""
  },
  {
    "path": "shaders/world1/composite1.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite.vsh\""
  },
  {
    "path": "shaders/world1/composite10.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite9.fsh\""
  },
  {
    "path": "shaders/world1/composite10.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite9.vsh\""
  },
  {
    "path": "shaders/world1/composite11.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite10.fsh\""
  },
  {
    "path": "shaders/world1/composite11.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite10.vsh\""
  },
  {
    "path": "shaders/world1/composite12.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite11.fsh\""
  },
  {
    "path": "shaders/world1/composite12.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite11.vsh\""
  },
  {
    "path": "shaders/world1/composite13.fsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite12.fsh\""
  },
  {
    "path": "shaders/world1/composite13.vsh",
    "content": "#version 120\n\n#define OVERWORLD_SHADER\n\n#include \"/dimensions/composite12.vsh\""
  },
  {
    "path": "shaders/world1/composite2.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite1.fsh\""
  },
  {
    "path": "shaders/world1/composite2.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite1.vsh\""
  },
  {
    "path": "shaders/world1/composite3.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite2.fsh\""
  },
  {
    "path": "shaders/world1/composite3.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite2.vsh\""
  },
  {
    "path": "shaders/world1/composite4.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite3.fsh\""
  },
  {
    "path": "shaders/world1/composite4.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite3.vsh\""
  },
  {
    "path": "shaders/world1/composite5.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite4.fsh\""
  },
  {
    "path": "shaders/world1/composite5.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite4.vsh\""
  },
  {
    "path": "shaders/world1/composite6.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite5.fsh\""
  },
  {
    "path": "shaders/world1/composite6.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite5.vsh\""
  },
  {
    "path": "shaders/world1/composite7.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite6.fsh\""
  },
  {
    "path": "shaders/world1/composite7.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite6.vsh\""
  },
  {
    "path": "shaders/world1/composite8.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite7.fsh\""
  },
  {
    "path": "shaders/world1/composite8.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite7.vsh\""
  },
  {
    "path": "shaders/world1/composite9.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite8.fsh\""
  },
  {
    "path": "shaders/world1/composite9.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/composite8.vsh\""
  },
  {
    "path": "shaders/world1/deferred.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/deferred.fsh\""
  },
  {
    "path": "shaders/world1/deferred.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/deferred.vsh\""
  },
  {
    "path": "shaders/world1/deferred1.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/deferred1.fsh\""
  },
  {
    "path": "shaders/world1/deferred1.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/deferred1.vsh\""
  },
  {
    "path": "shaders/world1/dh_terrain.fsh",
    "content": "#version 330 compatibility\n\n#define END_SHADER\n\n#include \"/dimensions/DH_solid.fsh\""
  },
  {
    "path": "shaders/world1/dh_terrain.vsh",
    "content": "#version 330 compatibility\n\n#define END_SHADER\n\n#include \"/dimensions/DH_solid.vsh\""
  },
  {
    "path": "shaders/world1/dh_water.fsh",
    "content": "#version 330 compatibility\n\n#define END_SHADER\n\n#include \"/dimensions/DH_translucent.fsh\""
  },
  {
    "path": "shaders/world1/dh_water.vsh",
    "content": "#version 330 compatibility\n\n#define END_SHADER\n\n#include \"/dimensions/DH_translucent.vsh\""
  },
  {
    "path": "shaders/world1/final.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/final.fsh\""
  },
  {
    "path": "shaders/world1/final.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/final.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_armor_glint.fsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_armor_glint.vsh",
    "content": "#version 120\n\n#define ENCHANT_GLINT\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_basic.fsh",
    "content": "#version 120\n\n#define LINES\n#define END_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_basic.vsh",
    "content": "#version 120\n\n#define LINES\n#define END_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_beaconbeam.fsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_beaconbeam.vsh",
    "content": "#version 120\n\n#define BEACON_BEAM\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_block.fsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define END_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_block.vsh",
    "content": "#version 120\n\n#define WORLD\n#define BLOCKENTITIES\n\n#define END_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_block_translucent.fsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_block_translucent.vsh",
    "content": "#version 120\n\n#define BLOCKENTITIES\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_damagedblock.fsh",
    "content": "#version 120\n\n#define END_SHADER\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_damagedblock.vsh",
    "content": "#version 120\n\n#define END_SHADER\n#define DAMAGE_BLOCK_EFFECT\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_entities.fsh",
    "content": "#version 120\n\n#define WORLD\n#define ENTITIES\n\n#define END_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_entities.vsh",
    "content": "#version 120\n\n\n// #define WORLD\n#define ENTITIES\n\n#define END_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_entities_glowing.fsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_entities_glowing.vsh",
    "content": "#version 120\n\n#define GLOWING\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_entities_translucent.fsh",
    "content": "#version 120\n\n#define ENTITIES\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_entities_translucent.vsh",
    "content": "#version 120\n\n#define ENTITIES\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_hand.fsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define END_SHADER\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_hand.vsh",
    "content": "#version 120\n\n#define WORLD\n#define HAND\n\n#define END_SHADER\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_hand_water.fsh",
    "content": "#version 120\n\n#define HAND\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_hand_water.vsh",
    "content": "#version 120\n\n#define HAND\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_lightning.fsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_lightning.vsh",
    "content": "#version 120\n\n#define LIGHTNING_AND_DRAGON_DEATH_BEAMS\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_skybasic.fsh",
    "content": "#version 120\n\n/* RENDERTARGETS:0 */\n\nvoid main() {\n\tdiscard;\n}\n"
  },
  {
    "path": "shaders/world1/gbuffers_skybasic.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}\n"
  },
  {
    "path": "shaders/world1/gbuffers_skytextured.fsh",
    "content": "#version 120\n\nvoid main() { discard; return; }"
  },
  {
    "path": "shaders/world1/gbuffers_skytextured.vsh",
    "content": "#version 120\n\nvoid main() {\n\tgl_Position = ftransform();\n}"
  },
  {
    "path": "shaders/world1/gbuffers_spidereyes.fsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_spidereyes.vsh",
    "content": "#version 120\n\n#define SPIDER_EYES\n\n#include \"/dimensions/all_vanilla_emissives.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_terrain.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#define WORLD\n\n#include \"/dimensions/all_solid.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_terrain.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#define WORLD\n\n#include \"/dimensions/all_solid.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_textured.fsh",
    "content": "#version 120\n\n\n#define END_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_textured.vsh",
    "content": "#version 120\n\n\n#define END_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_textured_lit.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/all_particles.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_textured_lit.vsh",
    "content": "#version 120\n\n// #define WEATHER\n#define PARTICLES\n\n#define END_SHADER\n\n#include \"/dimensions/all_particles.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_water.fsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.fsh\""
  },
  {
    "path": "shaders/world1/gbuffers_water.vsh",
    "content": "#version 120\n\n#define END_SHADER\n\n#include \"/dimensions/all_translucent.vsh\""
  },
  {
    "path": "shaders/world1/gbuffers_weather.fsh",
    "content": "#version 120\n\nin vec4 lmtexcoord;\nin vec4 color;\n\nuniform sampler2D texture;\nuniform sampler2D gaux1;\nuniform vec4 lightCol;\nuniform vec3 sunVec;\n\nuniform vec2 texelSize;\nuniform float skyIntensityNight;\nuniform float skyIntensity;\nuniform float rainStrength;\n\nuniform mat4 gbufferProjectionInverse;\n\n#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)\n#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz)\nvec3 toLinear(vec3 sRGB){\n\treturn sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\n}\n\nvec3 toScreenSpaceVector(vec3 p) {\n\tvec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);\n\tvec3 p3 = p * 2. - 1.;\n\tvec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3];\n\treturn normalize(fragposition.xyz);\n}\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n/* DRAWBUFFERS:2 */\n\tgl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color;\n\tgl_FragData[0].a = clamp(gl_FragData[0].a -0.1,0.0,1.0)*0.5;\n\tvec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb);\n\tvec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb;\n\n\tgl_FragData[0].rgb = dot(albedo,vec3(1.0))*ambient*10./3.0/150.*0.1;\n}\n"
  },
  {
    "path": "shaders/world1/gbuffers_weather.vsh",
    "content": "#version 120\n#define TAA\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\nout vec4 color;\nout vec4 lmtexcoord;\n\nuniform vec2 texelSize;\nuniform int framemod8;\nconst vec2[8] offsets = vec2[8](vec2(1.,-3.)/8.,\n\t\t\t\t\t\t\t\tvec2(-1.,3.)/8.,\n\t\t\t\t\t\t\t\tvec2(5.0,1.)/8.,\n\t\t\t\t\t\t\t\tvec2(-3,-5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-5.,5.)/8.,\n\t\t\t\t\t\t\t\tvec2(-7.,-1.)/8.,\n\t\t\t\t\t\t\t\tvec2(3,7.)/8.,\n\t\t\t\t\t\t\t\tvec2(7.,-7.)/8.);\n\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_Position = ftransform();\n\n\tlmtexcoord.xy = (gl_MultiTexCoord0).xy;\n\tlmtexcoord.zw = gl_MultiTexCoord1.xy / 240.0;\n\n\tcolor = gl_Color;\n\t#ifdef TAA\n\t\tgl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;\n\t#endif\n}"
  },
  {
    "path": "shaders/world1/setup.csh",
    "content": "#version 430 compatibility\n\n#define RENDER_SETUP\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/setup.csh\"\n"
  },
  {
    "path": "shaders/world1/shadow.fsh",
    "content": "#version 120\n\n#include \"/lib/settings.glsl\"\n\n\n//////////////////////////////VOID MAIN//////////////////////////////\n\nvoid main() {\n\tgl_FragData[0] = vec4(0.0);\n}\n"
  },
  {
    "path": "shaders/world1/shadow.vsh",
    "content": "#version 120\n#include \"/lib/settings.glsl\"\n#ifdef IS_LPV_ENABLED\n\t#extension GL_ARB_explicit_attrib_location: enable\n\t#extension GL_ARB_shader_image_load_store: enable\n\t#extension GL_ARB_shading_language_packing : enable\n#endif\n\n#define RENDER_SHADOW\n\n/*\n!! DO NOT REMOVE !!\nThis code is from Chocapic13' shaders\nRead the terms of modification and sharing before changing something below please !\n!! DO NOT REMOVE !!\n*/\n\n#ifdef IS_LPV_ENABLED\n\tattribute vec4 mc_Entity;\n\t#ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE\n\t\tattribute vec4 at_midBlock;\n\t#else\n\t\tattribute vec3 at_midBlock;\n\t#endif\n\tattribute vec3 vaPosition;\n\n\t#ifdef LPV_ENTITY_LIGHTS\n\t\tuniform usampler1D texBlockData;\n\t#endif\n\t\n\tuniform int renderStage;\n\tuniform vec3 chunkOffset;\n    uniform int currentRenderedItemId;\n\tuniform int blockEntityId;\n\tuniform int entityId;\n\n\t#include \"/lib/projections.glsl\"\n\t#include \"/lib/blocks.glsl\"\n\t#include \"/lib/entities.glsl\"\n\t#include \"/lib/voxel_common.glsl\"\n\t#include \"/lib/voxel_write.glsl\"\n#endif\n\nvoid main() {\n\t#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store\n\t\t#ifdef LPV_NOSHADOW_HACK\n\t\t\tvec3 playerpos = gl_Vertex.xyz;\n\t\t#else\n\t\t\tvec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;\n\t\t\tvec3 playerpos = toShadowSpace(position);\n\t\t#endif\n\n\t\tPopulateShadowVoxel(playerpos);\n\t#endif\n\n\tgl_Position = vec4(-1.0);\n}\n"
  },
  {
    "path": "shaders/world1/shadowcomp.csh",
    "content": "#version 430 compatibility\n\n#include \"/lib/settings.glsl\"\n\n#include \"/dimensions/shadowcomp.csh\"\n"
  }
]