diff --git a/404.html b/404.html index a99e1be8..8ebc9c73 100644 --- a/404.html +++ b/404.html @@ -20,9 +20,9 @@ 404 - + - +
diff --git a/advancement/index.html b/advancement/index.html index 8139cd0a..1f14eb61 100644 --- a/advancement/index.html +++ b/advancement/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.15, 1.16, 1.17, 1.18 - + - +
diff --git a/assets/index.117fd922.css b/assets/index.117fd922.css new file mode 100644 index 00000000..1fdae92e --- /dev/null +++ b/assets/index.117fd922.css @@ -0,0 +1 @@ +:root{--background-1:#1b1b1b;--background-2:#252525;--background-3:#222222;--background-4:#3d3d3d;--background-5:#383838;--background-6:#575757;--text-1:#ffffff;--text-2:#dcdcdc;--text-3:#c3c3c3;--accent-primary:#50baf9;--accent-success:#3eb84f;--nav:#91908f;--nav-hover:#b4b3b0;--nav-faded:#4d4c4c;--nav-faded-hover:#6e6e6e;--selection:#6786dd99;--errors-background:#62190f;--errors-text:#ffffffcc}:root[data-theme=light]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#b8b8b8;--background-5:#bdbdbd;--background-6:#cecece;--text-1:#000000;--text-2:#2f2f2f;--text-3:#494949;--accent-primary:#088cdb;--accent-success:#1a7f37;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc}@media (prefers-color-scheme:light){:root[data-theme=system]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#b8b8b8;--background-5:#bdbdbd;--background-6:#cecece;--text-1:#000000;--text-2:#2f2f2f;--text-3:#494949;--accent-primary:#088cdb;--accent-success:#1a7f37;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc}}*{box-sizing:border-box;margin:0;padding:0}::selection{background-color:var(--selection)}a svg{pointer-events:none}body{font-size:18px;font-family:Arial,Helvetica,sans-serif;overflow-x:hidden;background-color:var(--background-1)}header{display:flex;justify-content:space-between;align-items:center;padding:10px;width:100%;height:56px;z-index:5;position:fixed;box-shadow:0 0 9px -3px #000;background-color:var(--background-2)}body[data-panel=home] header,body[data-panel=settings] header{position:fixed}.title{display:flex;align-items:center}.title h2{color:var(--nav)}.home-link{margin:0 8px 0 0}.home-link svg{display:block;width:32px;height:32px;padding:2px}.home-link svg rect:nth-child(2n){transition:transform .2s}.home-link:hover rect:nth-child(2){transform:translateX(-8px)}.home-link:hover rect:nth-child(4){transform:translateX(-11px)}.home-link:hover rect:nth-child(6){transform:translateX(-6px)}nav ul{display:flex;align-items:center}nav li{display:flex;align-items:center;cursor:pointer;margin:0 16px;fill:var(--nav);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.home-link:hover svg{fill:var(--nav-hover)}nav li.dimmed svg{fill:var(--nav-faded)}nav li.dimmed:hover svg{fill:var(--nav-faded-hover)}nav li svg,nav li>*{width:24px;height:24px}.title .btn-menu{margin:0 8px}.title .btn-menu>.btn svg{width:24px;height:24px}header .btn-menu>.btn{background:0 0!important;padding:0;box-shadow:none;fill:var(--nav)}header .btn-menu>.btn:hover{fill:var(--nav-hover)}main{padding-top:68px;color:var(--text-1);fill:var(--text-1);transition:padding .3s}.controls{display:flex;justify-content:flex-end;position:fixed;top:12px;right:16px;z-index:1;pointer-events:none}main>.controls{position:sticky;margin-right:16px;right:16px;top:68px}.controls>*{pointer-events:all}.controls>:not(:last-child){margin-right:8px}.tree{margin-top:-36px;overflow-x:auto;padding:4px 16px 50vh}.error+.tree{margin-top:0}.popup-source{position:fixed;display:flex;flex-direction:column;width:40vw;left:100%;bottom:0;z-index:1;transition:transform .3s;border-radius:6px 0 0 0}.popup-source.shown{transform:translateX(-100%)}.source{width:100%;height:40vh;max-height:50vh;padding:12px;border:none;font-family:Consolas,monospace;font-size:14px;white-space:pre;overflow-wrap:normal;overflow-x:auto;tab-size:4;-moz-tab-size:4;-o-tab-size:4;-webkit-tab-size:4;outline:0;resize:none;position:static;background-color:var(--background-2);border-top-left-radius:6px;color:var(--text-1);box-shadow:0 0 7px -3px #000}.popup-preview{position:fixed;display:flex;flex-direction:column;height:calc(100% - 56px);width:40vw;left:100%;bottom:0;z-index:1;background-color:var(--background-2);box-shadow:0 0 7px -3px #000;transition:transform .3s}main.has-preview{padding-right:40vw}.popup-preview.shown{transform:translateX(-100%)}.popup-preview canvas{width:100%;background-color:var(--nav-faded);display:block;cursor:crosshair;image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:crisp-edges;image-rendering:pixelated;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn{display:flex;align-items:center;border:none;height:32px;border-radius:6px;padding:7px 11px;cursor:pointer;outline:0;font-size:1rem;white-space:nowrap;background-color:var(--background-4);box-shadow:0 1px 7px -2px #000;color:var(--text-2);fill:var(--text-2);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn.active{color:var(--accent-primary);fill:var(--accent-primary)}.btn:not(.btn-input):hover{background-color:var(--background-5)}.btn.no-pointer{pointer-events:none}.btn svg:not(:last-child){margin-right:5px}.btn-menu:not(.no-relative){position:relative}.btn-menu>.btn{height:100%}.btn-menu .btn-group{display:flex;flex-direction:column;position:absolute;right:0;top:100%;margin-top:8px}.btn-group{border-radius:6px;box-shadow:0 0 7px -2px #000}.btn-group .btn{box-shadow:none}.btn-group .btn:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group .btn:not(:first-child),.btn-menu .result-list .btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-input{cursor:initial;padding-right:7px}.btn-input input{background:var(--background-1);color:var(--text-1);font-size:17px;border:none;padding:0 3px;margin-left:5px;width:100px}.btn-input.large-input{padding:5px;padding-left:11px}.btn-input.large-input input{width:100%;height:100%}.btn-menu .result-list{display:block;width:380px;height:unset;overflow-y:auto;overflow-x:hidden;max-height:240px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.popup-actions{display:flex;position:fixed;bottom:8px;left:100%;z-index:5;padding-right:8px;background-color:var(--background-4);box-shadow:0 0 7px -3px #000;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;transform:translateX(var(--offset));transition:padding .1s,transform .3s;border-top-left-radius:24px;border-bottom-left-radius:24px}.popup-action{padding:12px;fill:var(--text-3);cursor:pointer;border-top-left-radius:50%;border-bottom-left-radius:50%;padding-left:16px}.popup-action.shown+.popup-action{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:12px}.popup-action:not(.shown){pointer-events:none;order:1;visibility:hidden}.popup-action>svg{display:block;width:24px;height:24px}.popup-action:hover{background-color:var(--background-5)}.popup-action.action-preview{fill:var(--accent-primary)}.popup-action.action-copy.active{fill:var(--accent-success)}.tooltipped{position:relative}.tooltipped::after{content:attr(aria-label);position:absolute;z-index:100;padding:3px 7px;display:none;white-space:pre;pointer-events:none;background-color:var(--background-6);color:var(--text-1);border-radius:6px;font-size:14px;line-height:1.5;text-align:left;opacity:0}.tooltipped.tip-ne::after{bottom:100%;margin-bottom:6px;left:50%;margin-left:-16px}.tooltipped.tip-nw::after{bottom:100%;margin-bottom:6px;right:50%;margin-right:-16px}.tooltipped.tip-ne::before,.tooltipped.tip-nw::before{bottom:auto;top:-7px;border-top-color:var(--background-6)}.tooltipped.tip-se::after{top:100%;margin-top:6px;left:50%;margin-left:-16px}.tooltipped.tip-sw::after{top:100%;margin-top:6px;right:50%;margin-right:-16px}.tooltipped.tip-se::before,.tooltipped.tip-sw::before{top:auto;bottom:-7px;border-bottom-color:var(--background-6)}.tooltipped::before{content:'';position:absolute;z-index:100;display:none;right:50%;width:0;height:0;margin-right:-8px;pointer-events:none;border:8px solid transparent;opacity:0}.tooltipped:not([disabled]):hover::after,.tooltipped:not([disabled]):hover::before{display:inline-block;animation:tooltip-appear .1s ease-in .4s forwards}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.error{padding:5px 14px;margin:12px 16px;color:var(--text-1);background-color:var(--errors-background);border-radius:3px}.error>*{margin:10px 0}.error .error-dismiss{float:right;cursor:pointer;margin-left:10px}.error-dismiss svg{display:block;width:24px;height:24px}.error a{color:var(--text-1)}.home{padding:16px}.generator-picker{display:flex}.home.center{flex-direction:column;align-items:center;color:var(--nav)}.home.center p{padding-bottom:20px;text-align:center;font-size:20px}.home{max-width:960px;margin:0 auto}.tool-card{display:flex;padding:10px;margin-bottom:8px;color:var(--text-2);background-color:var(--background-2);box-shadow:1px 1px 7px -3px #000;border-radius:6px;text-decoration:none}.tool-card:hover{background-color:var(--background-3)}.tool-card svg{width:32px;height:32px;flex-shrink:0;margin-right:8px}.tool-card h3{font-weight:unset}.tool-card p{color:var(--text-3)}hr{margin:12px 0;border:none}.settings{padding:20px}.settings p{color:var(--nav);padding:8px;border-bottom:2px solid var(--background-4)}.field-list{width:100%;border-collapse:collapse;list-style-type:none}.field-list li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--background-4)}.field-prop{display:inline-flex;align-items:center;max-width:100%;margin:4px}.field-prop>input,.field-prop>label{height:34px;color:var(--text-1);margin-right:-1px;border:1px solid;border-color:var(--nav-faded-hover)}.field-prop label{padding:0 9px;line-height:1.94rem;background-color:var(--node-background-label);white-space:nowrap;border-top-left-radius:3px;border-bottom-left-radius:3px}.field-prop input{width:100%;line-height:1.6rem;background-color:var(--node-background-input);color:var(--text-1);padding-left:9px;font-size:18px;border-top-right-radius:3px;border-bottom-right-radius:3px}.field-prop svg{padding:4px;margin:0 4px;height:28px;width:28px;fill:var(--nav);cursor:pointer}.field-prop .hidden svg{fill:#be4b2e}.field-prop .dimmed svg{fill:var(--nav-faded)}.very-large{font-size:80px;font-weight:100}[data-ea-publisher]{margin:0 16px 8px}.ea-content{margin:0!important;background:var(--background-2)!important}.ea-content span{color:var(--text-2)!important}.ea-content strong{color:var(--accent-primary)!important}.ea-callout{margin:.25rem 0!important;padding:0!important}.ea-callout a{color:var(--text-3)!important}@keyframes spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes fadein{from{opacity:0}to{opacity:1}}@media screen and (max-width:1300px){main.has-preview .tree{margin-top:8px}}@media screen and (max-width:800px){main .tree{margin-top:4px!important}}@media screen and (max-width:580px){.title h2{font-size:18px}body nav li{margin:0 8px}main.has-preview{padding-right:0}main .controls{top:64px}.tree{padding-left:8px;padding-right:8px}.popup-source{width:100vw}.source{border-radius:0}.popup-preview{width:100vw;height:unset;bottom:0;background-color:transparent;box-shadow:none}.popup-preview canvas{margin-top:8px}.btn-menu .result-list,.btn.btn.large-input{width:calc(100vw - 10px)}.generator-picker{justify-content:center}.field-list li{flex-direction:column}.field-prop{width:100%}.field-prop input{width:100%}}:root{--node-border:#3f3f3f;--node-background-label:#1b1b1b;--node-background-input:#272727;--node-background-hover:#1f1f1f;--node-text:#dadada;--node-text-dimmed:#b4b4b4;--node-selected:#ad9715;--node-selected-hover:#a38c0a;--node-selected-border:#8d7a0d;--node-add:#487c13;--node-add-hover:#3e7409;--node-add-border:#3b6e0c;--node-remove:#9b341b;--node-remove-hover:#922d13;--node-remove-border:#7e1d05;--node-indent-border:#454749;--category-predicate:#306163;--category-predicate-border:#224849;--category-predicate-background:#1d3333;--category-function:#838383;--category-function-border:#6b6b6b;--category-function-background:#414141;--category-pool:#386330;--category-pool-border:#2e4922;--category-pool-background:#21331d}:root[data-theme=light]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-background-hover:#e7e7e7;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-hover:#faf06c;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-hover:#a5dd70;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-hover:#f57656;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}@media (prefers-color-scheme:light){:root[data-theme=system]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-background-hover:#e7e7e7;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-hover:#faf06c;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-hover:#a5dd70;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-hover:#f57656;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}}.node-header{display:inline-flex;position:relative;align-items:center;width:100%}.node-header>*{height:34px;border:1px solid;color:var(--node-text);border-color:var(--node-border)}.node-header>label{align-self:flex-start;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;background-color:var(--node-background-label)}.node-header>input{font-size:18px;padding-left:9px;background-color:var(--node-background-input)}.node-header>input[type=color]{padding:0 2px}.node-header>textarea{min-width:236.33px;min-height:34px;font-size:18px;padding-left:9px;padding-top:5px;background-color:var(--node-background-input)}.node-header>datalist,.node-header>select{font-size:18px;padding-left:6px;background-color:var(--node-background-input)}.node-header button{font-size:18px;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;cursor:pointer;background-color:var(--node-background-input)}.node-header button:not([disabled]):hover{background-color:var(--node-background-hover)}.object-node>.node-header>.collapse{cursor:pointer}.node-error+.fixed-list~input,.node-error~input:last-child,.node-error~input[list]:nth-last-child(2),.node-error~select:last-child{border-color:var(--node-remove)!important}.node-header>:focus{position:relative}.node-header>.node-icon{order:1}.node-header>.node-icon+*,.node-header>:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.node-header>:last-child,.node-header>input[list]:nth-last-child(2){border-top-right-radius:3px;border-bottom-right-radius:3px}.node-header>*{margin-right:-1px}.list-node>.node-header>:first-child,.map-node>.node-header>:first-child,.object-node:not(.no-body)>.node-header>:first-child{border-top-left-radius:8px;border-bottom-left-radius:0}button.selected{background-color:var(--node-selected);border-color:var(--node-selected-border)}button:not([disabled]).selected:hover{background-color:var(--node-selected-hover)}.collapse svg{fill:var(--node-text)}.collapse.closed,button.add{background-color:var(--node-add);border-color:var(--node-add-border)}.collapse:not([disabled]).closed:hover,button:not([disabled]).add:hover{background-color:var(--node-add-hover)}.collapse.open,button.remove{background-color:var(--node-remove);border-color:var(--node-remove-border)}.collapse:not([disabled]).open:hover,button:not([disabled]).remove:hover{background-color:var(--node-remove-hover)}.node-header>button svg{display:inline-block;position:relative;top:2px;fill:var(--node-text)}.node-header>button.add:last-child,.node-header>button.collapse:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.node-move{display:flex;flex-direction:column;width:34px}button.move{height:50%;border:none;display:flex}button.move+button.move{border-top:1px solid var(--node-border)}button.move:disabled{cursor:unset;fill:var(--node-border)}.node-icon{border:none;position:relative;display:inline-block}.node-icon .icon-popup{visibility:hidden;width:240px;background-color:var(--background-6);color:var(--text-1);text-align:center;border-radius:6px;padding:8px 4px;position:absolute;z-index:2;top:125%;left:50%;margin-left:-120px}.node-icon .icon-popup::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-3px;border-width:5px;border-style:solid;border-color:transparent transparent var(--background-6) transparent}.node-icon svg:hover+.icon-popup,.node-icon.show .icon-popup{visibility:visible}.node-icon svg{height:34px;width:34px;min-width:34px;margin-left:6px;cursor:pointer}.node-icon.node-help svg{fill:var(--node-border)}.node-icon.node-error svg{fill:var(--node-remove)}.node-menu{position:absolute;left:0;top:100%;width:min-content;margin-top:4px;margin-left:4px;z-index:1;color:var(--text-1);font-size:16px;border-radius:6px;background-color:var(--background-6);box-shadow:0 1px 5px -2px #000}.node-menu::after{content:"";position:absolute;bottom:100%;left:0;margin-left:6px;border-width:5px;border-style:solid;border-color:transparent transparent var(--background-6) transparent}.menu-item{padding:4px;display:flex;align-items:center;white-space:normal}.menu-item>*{margin-right:4px}.menu-item .btn{padding:8px;box-shadow:unset}span.menu-item{padding:4px 8px}.menu-item-context{color:var(--text-2)}.node{margin-bottom:4px}.node-body>.node:first-child{margin-top:4px}.node:last-child{margin-bottom:0}.node-body{border-left:3px solid var(--node-indent-border)}.node-body{display:flex;flex-direction:column;padding-left:18px}.list-node>.node-body>.object-node>.node-body,.map-node>.node-body>.object-node>.node-body{padding-left:0}.list-node>.node-body>.object-node>.node-body>.node>.node-body,.map-node>.node-body>.object-node>.node-body>.node>.node-body{border-left:none}.list-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon+*,.list-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child,.map-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon+*,.map-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category],.node-body>.map-node[data-category],.node-body>.object-node[data-category]{width:100%;min-width:max-content;padding:5px;padding-left:0;border:2px solid var(--node-border);border-radius:3px}.node-body>.object-node[data-category]>.node-header>.node-icon+*,.node-body>.object-node[data-category]>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category]>.node-body,.node-body>.map-node[data-category]>.node-body,.node-body>.object-node[data-category]>.node-body{border:none}.range-node select{width:25px}.fixed-list{display:none}.fixed-list~input,.number-node input,.range-node input{width:100px}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body>.node>.node-header>label,[data-category=predicate]>.node-header>label{background-color:var(--category-predicate)}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body,[data-category=predicate]>.node-body>.node>.node-header>:not(.selected),[data-category=predicate]>.node-header>:not(.selected),[data-category=predicate]>.node-header>label{border-color:var(--category-predicate-border)}.node-body>.node.list-node[data-category=predicate],.node-body>.node.map-node[data-category=predicate],.node-body>.node.object-node[data-category=predicate]{background-color:var(--category-predicate-background);border-color:var(--category-predicate-border)}[data-category=function].node-header>label,[data-category=function]>.node-body>.node>.node-header>label,[data-category=function]>.node-header>label{background-color:var(--category-function)}[data-category=function].node-header>label,[data-category=function]>.node-body,[data-category=function]>.node-body>.node>.node-header>:not(.selected),[data-category=function]>.node-header>:not(.selected),[data-category=function]>.node-header>label{border-color:var(--category-function-border)}.node-body>.node.list-node[data-category=function],.node-body>.node.map-node[data-category=function],.node-body>.node.object-node[data-category=function]{background-color:var(--category-function-background);border-color:var(--category-function-border)}[data-category=pool].node-header>label,[data-category=pool]>.node-body>.node>.node-header>label,[data-category=pool]>.node-header>label{background-color:var(--category-pool)}[data-category=pool].node-header>label,[data-category=pool]>.node-body,[data-category=pool]>.node-body>.node>.node-header>:not(.selected),[data-category=pool]>.node-header>:not(.selected),[data-category=pool]>.node-header>label{border-color:var(--category-pool-border)}.node-body>.node.list-node[data-category=pool],.node-body>.node.map-node[data-category=pool],.node-body>.node.object-node[data-category=pool]{background-color:var(--category-pool-background);border-color:var(--category-pool-border)} \ No newline at end of file diff --git a/assets/index.385a6e8e.css b/assets/index.385a6e8e.css deleted file mode 100644 index 0b0c1487..00000000 --- a/assets/index.385a6e8e.css +++ /dev/null @@ -1 +0,0 @@ -:root{--background-1:#1b1b1b;--background-2:#252525;--background-3:#2f2f2f;--background-4:#3d3d3d;--background-5:#464646;--text-1:#ffffff;--text-2:#dcdcdc;--text-3:#c3c3c3;--accent-primary:#50baf9;--accent-success:#3eb84f;--nav:#91908f;--nav-hover:#b4b3b0;--nav-faded:#4d4c4c;--nav-faded-hover:#6e6e6e;--selection:#6786dd99;--errors-background:#62190f;--errors-text:#ffffffcc}:root[data-theme=light]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#cccccc;--background-5:#d6d6d6;--text-1:#000000;--text-2:#505050;--text-3:#6a6a6a;--accent-primary:#088cdb;--accent-success:#1a7f37;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc}@media (prefers-color-scheme:light){:root[data-theme=system]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#cccccc;--background-5:#d6d6d6;--text-1:#000000;--text-2:#505050;--text-3:#6a6a6a;--accent-primary:#088cdb;--accent-success:#1a7f37;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc}}*{box-sizing:border-box;margin:0;padding:0}::selection{background-color:var(--selection)}a svg{pointer-events:none}body{font-size:18px;font-family:Arial,Helvetica,sans-serif;overflow-x:hidden;background-color:var(--background-1)}header{display:flex;justify-content:space-between;align-items:center;padding:10px;width:100%;height:56px;z-index:5;position:fixed;box-shadow:0 0 9px -3px #000;background-color:var(--background-2)}body[data-panel=home] header,body[data-panel=settings] header{position:fixed}.title{display:flex;align-items:center}.title h2{color:var(--nav)}.home-link{margin:0 8px 0 0}.home-link svg{display:block;width:32px;height:32px;padding:2px}.home-link svg rect:nth-child(2n){transition:transform .2s}.home-link:hover rect:nth-child(2){transform:translateX(-8px)}.home-link:hover rect:nth-child(4){transform:translateX(-11px)}.home-link:hover rect:nth-child(6){transform:translateX(-6px)}nav ul{display:flex;align-items:center}nav li{display:flex;align-items:center;cursor:pointer;margin:0 16px;fill:var(--nav);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.home-link:hover svg{fill:var(--nav-hover)}nav li.dimmed svg{fill:var(--nav-faded)}nav li.dimmed:hover svg{fill:var(--nav-faded-hover)}nav li svg,nav li>*{width:24px;height:24px}.title .btn-menu{margin:0 8px}.title .btn-menu>.btn svg{width:24px;height:24px}header .btn-menu>.btn{background:0 0!important;padding:0;box-shadow:none;fill:var(--nav)}header .btn-menu>.btn:hover{fill:var(--nav-hover)}main{padding-top:68px;color:var(--text-1);fill:var(--text-1);transition:padding .3s}.controls{display:flex;justify-content:flex-end;position:fixed;top:12px;right:16px;z-index:1;pointer-events:none}main>.controls{position:sticky;margin-right:16px;right:16px;top:68px}.controls>*{pointer-events:all}.controls>:not(:last-child){margin-right:8px}.tree{margin-top:-36px;overflow-x:auto;padding:4px 16px 50vh}.error+.tree{margin-top:0}.popup-source{position:fixed;display:flex;flex-direction:column;width:40vw;left:100%;bottom:0;z-index:1;transition:transform .3s;border-radius:6px 0 0 0}.popup-source.shown{transform:translateX(-100%)}.source{width:100%;height:40vh;max-height:50vh;padding:12px;border:none;font-family:Consolas,monospace;font-size:14px;white-space:pre;overflow-wrap:normal;overflow-x:auto;tab-size:4;-moz-tab-size:4;-o-tab-size:4;-webkit-tab-size:4;outline:0;resize:none;position:static;background-color:var(--background-2);border-top-left-radius:6px;color:var(--text-1);box-shadow:0 0 7px -3px #000}.popup-preview{position:fixed;display:flex;flex-direction:column;height:calc(100% - 56px);width:40vw;left:100%;bottom:0;z-index:1;background-color:var(--background-2);box-shadow:0 0 7px -3px #000;transition:transform .3s}main.has-preview{padding-right:40vw}.popup-preview.shown{transform:translateX(-100%)}.popup-preview canvas{width:100%;background-color:var(--nav-faded);display:block;cursor:crosshair;image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:crisp-edges;image-rendering:pixelated;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn{display:flex;align-items:center;border:none;height:32px;border-radius:6px;padding:7px 11px;cursor:pointer;outline:0;font-size:1rem;white-space:nowrap;background-color:var(--background-4);box-shadow:0 1px 7px -2px #000;color:var(--text-2);fill:var(--text-2);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn.active{color:var(--accent-primary);fill:var(--accent-primary)}.btn:not(.btn-input):hover{background-color:var(--background-5)}.btn.no-pointer{pointer-events:none}.btn svg:not(:last-child){margin-right:5px}.btn-menu:not(.no-relative){position:relative}.btn-menu>.btn{height:100%}.btn-menu .btn-group{display:flex;flex-direction:column;position:absolute;right:0;top:100%;margin-top:8px}.btn-group{border-radius:6px;box-shadow:0 0 7px -2px #000}.btn-group .btn{box-shadow:none}.btn-group .btn:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group .btn:not(:first-child),.btn-menu .result-list .btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-input{cursor:initial;padding-right:7px}.btn-input input{background:var(--background-1);color:var(--text-1);font-size:17px;border:none;padding:0 3px;margin-left:5px;width:100px}.btn-input.large-input{padding:5px;padding-left:11px}.btn-input.large-input input{width:100%;height:100%}.btn-menu .result-list{display:block;width:380px;height:unset;overflow-y:auto;overflow-x:hidden;max-height:240px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.popup-actions{display:flex;position:fixed;bottom:8px;left:100%;z-index:5;padding:0 8px;border-top-left-radius:24px;border-bottom-left-radius:24px;background-color:var(--background-4);box-shadow:0 0 7px -3px #000;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;transform:translateX(var(--offset));transition:padding .1s,transform .3s}.popup-actions:hover{background-color:var(--background-5)}.popup-action{padding:12px;fill:var(--text-2);cursor:pointer}.popup-action:not(.shown){pointer-events:none;order:1;visibility:hidden}.popup-action>svg{display:block;width:24px;height:24px}.popup-action.action-preview{fill:var(--accent-primary)}.popup-action.action-copy.active{fill:var(--accent-success)}.error{padding:5px 14px;margin:12px 16px;color:var(--text-1);background-color:var(--errors-background);border-radius:3px}.error>*{margin:10px 0}.error .error-dismiss{float:right;cursor:pointer;margin-left:10px}.error-dismiss svg{display:block;width:24px;height:24px}.error a{color:var(--text-1)}.home{padding:16px}.generator-picker{display:flex}.home.center{flex-direction:column;align-items:center;color:var(--nav)}.home.center p{padding-bottom:20px;text-align:center;font-size:20px}.home{max-width:960px;margin:0 auto}.tool-card{display:flex;padding:10px;margin-bottom:8px;color:var(--text-2);background-color:var(--background-2);box-shadow:1px 1px 7px -3px #000;border-radius:6px;text-decoration:none}.tool-card:hover{background-color:var(--background-3)}.tool-card svg{width:32px;height:32px;flex-shrink:0;margin-right:8px}.tool-card h3{font-weight:unset}.tool-card p{color:var(--text-3)}hr{margin:12px 0;border:none}.settings{padding:20px}.settings p{color:var(--nav);padding:8px;border-bottom:2px solid var(--background-4)}.field-list{width:100%;border-collapse:collapse;list-style-type:none}.field-list li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--background-4)}.field-prop{display:inline-flex;align-items:center;max-width:100%;margin:4px}.field-prop>input,.field-prop>label{height:34px;color:var(--text-1);margin-right:-1px;border:1px solid;border-color:var(--nav-faded-hover)}.field-prop label{padding:0 9px;line-height:1.94rem;background-color:var(--node-background-label);white-space:nowrap;border-top-left-radius:3px;border-bottom-left-radius:3px}.field-prop input{width:100%;line-height:1.6rem;background-color:var(--node-background-input);color:var(--text-1);padding-left:9px;font-size:18px;border-top-right-radius:3px;border-bottom-right-radius:3px}.field-prop svg{padding:4px;margin:0 4px;height:28px;width:28px;fill:var(--nav);cursor:pointer}.field-prop .hidden svg{fill:#be4b2e}.field-prop .dimmed svg{fill:var(--nav-faded)}.very-large{font-size:80px;font-weight:100}[data-ea-publisher]{margin:0 16px 8px}.ea-content{margin:0!important;background:var(--background-2)!important}.ea-content span{color:var(--text-2)!important}.ea-content strong{color:var(--accent-primary)!important}.ea-callout{margin:.25rem 0!important;padding:0!important}.ea-callout a{color:var(--text-3)!important}@keyframes spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes fadein{from{opacity:0}to{opacity:1}}@media screen and (max-width:1300px){main.has-preview .tree{margin-top:8px}}@media screen and (max-width:800px){main .tree{margin-top:4px!important}}@media screen and (max-width:580px){.title h2{font-size:18px}body nav li{margin:0 8px}main.has-preview{padding-right:0}main .controls{top:64px}.tree{padding-left:8px;padding-right:8px}.popup-source{width:100vw}.source{border-radius:0}.popup-preview{width:100vw;height:unset;bottom:0;background-color:transparent;box-shadow:none}.popup-preview canvas{margin-top:8px}.btn-menu .result-list,.btn.btn.large-input{width:calc(100vw - 10px)}.generator-picker{justify-content:center}.field-list li{flex-direction:column}.field-prop{width:100%}.field-prop input{width:100%}}:root{--node-border:#4e4e4e;--node-background-label:#1b1b1b;--node-background-input:#272727;--node-text:#dadada;--node-text-dimmed:#b4b4b4;--node-selected:#ad9715;--node-selected-border:#8d7a0d;--node-add:#487c13;--node-add-border:#3b6e0c;--node-remove:#9b341b;--node-remove-border:#7e1d05;--node-indent-border:#454749;--node-popup-background:#0a0a0ae6;--node-popup-text:#dadada;--node-popup-text-dimmed:#b4b4b4;--category-predicate:#306163;--category-predicate-border:#224849;--category-predicate-background:#1d3333;--category-function:#838383;--category-function-border:#6b6b6b;--category-function-background:#414141;--category-pool:#386330;--category-pool-border:#2e4922;--category-pool-background:#21331d}:root[data-theme=light]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--node-popup-background:#1f2020e6;--node-popup-text:#dadada;--node-popup-text-dimmed:#b4b4b4;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}@media (prefers-color-scheme:light){:root[data-theme=system]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--node-popup-background:#1f2020e6;--node-popup-text:#dadada;--node-popup-text-dimmed:#b4b4b4;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}}.node-header{display:inline-flex;position:relative;align-items:center;width:100%}.node-header>*{height:34px;border:1px solid;color:var(--node-text);border-color:var(--node-border)}.node-header>label{align-self:flex-start;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;background-color:var(--node-background-label)}.node-header>input{font-size:18px;padding-left:9px;background-color:var(--node-background-input)}.node-header>input[type=color]{padding:0 2px}.node-header>textarea{min-width:236.33px;min-height:34px;font-size:18px;padding-left:9px;padding-top:5px;background-color:var(--node-background-input)}.node-header>datalist,.node-header>select{font-size:18px;padding-left:6px;background-color:var(--node-background-input)}.node-header button{font-size:18px;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;cursor:pointer;background-color:var(--node-background-input)}.object-node>.node-header>.collapse{cursor:pointer}.node-error+.fixed-list~input,.node-error~input:last-child,.node-error~input[list]:nth-last-child(2),.node-error~select:last-child{border-color:var(--node-remove)!important}.node-header>:focus{position:relative}.node-header>.node-icon{order:1}.node-header>.node-icon+*,.node-header>:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.node-header>:last-child,.node-header>input[list]:nth-last-child(2){border-top-right-radius:3px;border-bottom-right-radius:3px}.node-header>*{margin-right:-1px}.list-node>.node-header>:first-child,.map-node>.node-header>:first-child,.object-node:not(.no-body)>.node-header>:first-child{border-top-left-radius:8px;border-bottom-left-radius:0}button.selected{background-color:var(--node-selected);border-color:var(--node-selected-border)}.collapse svg{fill:var(--node-text)}.collapse.closed,button.add{background-color:var(--node-add);border-color:var(--node-add-border)}.collapse.open,button.remove{background-color:var(--node-remove);border-color:var(--node-remove-border)}.node-header>button svg{display:inline-block;position:relative;top:2px;fill:var(--node-text)}.node-header>button.add:last-child,.node-header>button.collapse:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.node-move{display:flex;flex-direction:column;width:34px}button.move{height:50%;border:none;display:flex}button.move+button.move{border-top:1px solid var(--node-border)}button.move:disabled{cursor:unset;fill:var(--node-border)}.node-icon{border:none;position:relative;display:inline-block}.node-icon .icon-popup{visibility:hidden;width:240px;background-color:var(--node-popup-background);color:var(--node-popup-text);text-align:center;border-radius:6px;padding:8px 4px;position:absolute;z-index:2;top:125%;left:50%;margin-left:-120px}.node-icon .icon-popup::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-3px;border-width:5px;border-style:solid;border-color:transparent transparent var(--node-popup-background) transparent}.node-icon svg:hover+.icon-popup,.node-icon.show .icon-popup{visibility:visible}.node-icon svg{height:34px;width:34px;min-width:34px;margin-left:6px;cursor:pointer}.node-icon.node-help svg{fill:var(--node-border)}.node-icon.node-error svg{fill:var(--node-remove)}.node-menu{position:absolute;left:0;top:100%;width:min-content;margin-top:4px;margin-left:4px;z-index:1;color:var(--node-popup-text);font-size:16px;border-radius:3px;background-color:var(--node-popup-background)}.node-menu::after{content:"";position:absolute;bottom:100%;left:0;margin-left:6px;border-width:5px;border-style:solid;border-color:transparent transparent var(--node-popup-background) transparent}.menu-item{padding:4px;display:flex;align-items:center;white-space:normal}.menu-item>*{margin-right:4px}.menu-item .btn{padding:8px}span.menu-item{padding:4px 8px}.menu-item-context{color:var(--node-popup-text-dimmed)}.node-message{color:var(--node-text-dimmed);margin:6px 0}.node{margin-bottom:4px}.node-body>.node:first-child{margin-top:4px}.node:last-child{margin-bottom:0}.node-body{border-left:3px solid var(--node-indent-border)}.node-body{display:flex;flex-direction:column;padding-left:18px}.list-node>.node-body>.object-node>.node-body,.map-node>.node-body>.object-node>.node-body{padding-left:0}.list-node>.node-body>.object-node>.node-body>.node>.node-body,.map-node>.node-body>.object-node>.node-body>.node>.node-body{border-left:none}.list-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon+*,.list-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child,.map-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon+*,.map-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category],.node-body>.map-node[data-category],.node-body>.object-node[data-category]{width:100%;min-width:max-content;padding:5px;padding-left:0;border:2px solid var(--node-border);border-radius:3px}.node-body>.object-node[data-category]>.node-header>.node-icon+*,.node-body>.object-node[data-category]>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category]>.node-body,.node-body>.map-node[data-category]>.node-body,.node-body>.object-node[data-category]>.node-body{border:none}.range-node select{width:25px}.fixed-list{display:none}.fixed-list~input,.number-node input,.range-node input{width:100px}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body>.node>.node-header>label,[data-category=predicate]>.node-header>label{background-color:var(--category-predicate)}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body,[data-category=predicate]>.node-body>.node>.node-header>:not(.selected),[data-category=predicate]>.node-header>:not(.selected),[data-category=predicate]>.node-header>label{border-color:var(--category-predicate-border)}.node-body>.node.list-node[data-category=predicate],.node-body>.node.map-node[data-category=predicate],.node-body>.node.object-node[data-category=predicate]{background-color:var(--category-predicate-background);border-color:var(--category-predicate-border)}[data-category=function].node-header>label,[data-category=function]>.node-body>.node>.node-header>label,[data-category=function]>.node-header>label{background-color:var(--category-function)}[data-category=function].node-header>label,[data-category=function]>.node-body,[data-category=function]>.node-body>.node>.node-header>:not(.selected),[data-category=function]>.node-header>:not(.selected),[data-category=function]>.node-header>label{border-color:var(--category-function-border)}.node-body>.node.list-node[data-category=function],.node-body>.node.map-node[data-category=function],.node-body>.node.object-node[data-category=function]{background-color:var(--category-function-background);border-color:var(--category-function-border)}[data-category=pool].node-header>label,[data-category=pool]>.node-body>.node>.node-header>label,[data-category=pool]>.node-header>label{background-color:var(--category-pool)}[data-category=pool].node-header>label,[data-category=pool]>.node-body,[data-category=pool]>.node-body>.node>.node-header>:not(.selected),[data-category=pool]>.node-header>:not(.selected),[data-category=pool]>.node-header>label{border-color:var(--category-pool-border)}.node-body>.node.list-node[data-category=pool],.node-body>.node.map-node[data-category=pool],.node-body>.node.object-node[data-category=pool]{background-color:var(--category-pool-background);border-color:var(--category-pool-border)} \ No newline at end of file diff --git a/assets/index.6344f897.js b/assets/index.6344f897.js deleted file mode 100644 index b277b005..00000000 --- a/assets/index.6344f897.js +++ /dev/null @@ -1,2 +0,0 @@ -var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,s=(e,t)=>{for(var n in t||(t={}))o.call(t,n)&&i(e,n,t[n]);if(r)for(var n of r(t))a.call(t,n)&&i(e,n,t[n]);return e},l=(e,r)=>t(e,n(r));import{y as c,a as d,s as u,l as m,r as h,b as p,j as g,c as f,d as v,e as _,g as w,L as y,f as b,C as x,M as k,_ as C,X as M,W as z,R as I,h as V,N as A,i as E,I as j,k as O,A as L,m as $,q as P,n as S,o as D}from"./vendor.6ba5b923.js";var N,T=JSON.parse('{"languages":[{"code":"de","name":"Deutsch"},{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"pl","name":"Polski"},{"code":"pt","name":"Português"},{"code":"ru","name":"Русский"},{"code":"sk","name":"Slovenčina","schemas":false},{"code":"zh-cn","name":"简体中文"},{"code":"zh-tw","name":"正體中文"}],"versions":[{"id":"1.15","refs":{"mcdata_master":"13355f7"}},{"id":"1.16","refs":{"mcdata_master":"1.16.4","vanilla_datapack_data":"1.16.4-data","vanilla_datapack_summary":"1.16.4-summary"}},{"id":"1.17","refs":{"mcdata_master":"1.17.1","vanilla_datapack_data":"1.17.1-data","vanilla_datapack_summary":"1.17.1-summary"}},{"id":"1.18","refs":{"mcdata_master":"master","vanilla_datapack_data":"data","vanilla_datapack_summary":"summary"},"dynamic":true}],"generators":[{"id":"loot_table","url":"loot-table","path":"loot_tables","schema":"loot_table","maxVersion":"1.17"},{"id":"predicate","url":"predicate","path":"predicates","schema":"predicate"},{"id":"item_modifier","url":"item-modifier","path":"item_modifiers","schema":"item_modifier","minVersion":"1.17"},{"id":"advancement","url":"advancement","path":"advancements","schema":"advancement"},{"id":"dimension","url":"dimension","schema":"dimension","category":"worldgen","minVersion":"1.16"},{"id":"dimension_type","url":"dimension-type","schema":"dimension_type","category":"worldgen","minVersion":"1.16"},{"id":"world","url":"world","schema":"world_settings","category":"worldgen","minVersion":"1.16"},{"id":"worldgen/biome","url":"worldgen/biome","category":"worldgen","schema":"biome","minVersion":"1.16"},{"id":"worldgen/configured_carver","url":"worldgen/carver","category":"worldgen","schema":"configured_carver","minVersion":"1.16"},{"id":"worldgen/configured_feature","url":"worldgen/feature","category":"worldgen","schema":"configured_feature","minVersion":"1.16"},{"id":"worldgen/noise_settings","url":"worldgen/noise-settings","category":"worldgen","schema":"noise_settings","minVersion":"1.16"},{"id":"worldgen/configured_structure_feature","url":"worldgen/structure-feature","category":"worldgen","schema":"configured_structure_feature","minVersion":"1.16"},{"id":"worldgen/configured_surface_builder","url":"worldgen/surface-builder","category":"worldgen","schema":"configured_surface_builder","minVersion":"1.16"},{"id":"worldgen/processor_list","url":"worldgen/processor-list","category":"worldgen","schema":"processor_list","minVersion":"1.16"},{"id":"worldgen/template_pool","url":"worldgen/template-pool","category":"worldgen","schema":"template_pool","minVersion":"1.16"}],"registries":[{"id":"advancement","dynamic":true},{"id":"attribute","minVersion":"1.16"},{"id":"block"},{"id":"dimension","dynamic":true},{"id":"dimension_type","dynamic":true},{"id":"enchantment"},{"id":"entity_type"},{"id":"fluid"},{"id":"function","dynamic":true},{"id":"float_provider_type","minVersion":"1.17"},{"id":"item"},{"id":"int_provider_type","minVersion":"1.17"},{"id":"height_provider_type","minVersion":"1.17"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_function_type","minVersion":"1.16"},{"id":"loot_nbt_provider_type","minVersion":"1.17"},{"id":"loot_number_provider_type","minVersion":"1.17"},{"id":"loot_pool_entry_type","minVersion":"1.16"},{"id":"loot_score_provider_type","minVersion":"1.17"},{"id":"loot_table","dynamic":true},{"id":"mob_effect"},{"id":"pos_rule_test","minVersion":"1.16"},{"id":"potion","minVersion":"1.15"},{"id":"predicate","dynamic":true},{"id":"recipe","dynamic":true},{"id":"rule_test","minVersion":"1.16"},{"id":"sound_event"},{"id":"stat_type"},{"id":"structure","dynamic":true},{"id":"tag/block","dynamic":true},{"id":"tag/entity_type","dynamic":true},{"id":"tag/fluid","dynamic":true},{"id":"tag/function","dynamic":true},{"id":"tag/item","dynamic":true},{"id":"worldgen/biome","dynamic":true},{"id":"worldgen/block_state_provider_type","minVersion":"1.16"},{"id":"worldgen/block_placer_type","minVersion":"1.16"},{"id":"worldgen/biome_source","minVersion":"1.16"},{"id":"worldgen/carver","minVersion":"1.16"},{"id":"worldgen/chunk_generator","minVersion":"1.16"},{"id":"worldgen/configured_carver","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_decorator","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_structure_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_surface_builder","minVersion":"1.16","dynamic":true},{"id":"worldgen/decorator","minVersion":"1.16"},{"id":"worldgen/feature","minVersion":"1.16"},{"id":"worldgen/feature_size_type","minVersion":"1.16"},{"id":"worldgen/foliage_placer_type","minVersion":"1.16"},{"id":"worldgen/noise_settings","minVersion":"1.16","dynamic":true},{"id":"worldgen/processor_list","minVersion":"1.16","dynamic":true},{"id":"worldgen/structure_feature","minVersion":"1.16"},{"id":"worldgen/structure_pool_element","minVersion":"1.16"},{"id":"worldgen/structure_processor","minVersion":"1.16"},{"id":"worldgen/surface_builder","minVersion":"1.16"},{"id":"worldgen/template_pool","minVersion":"1.16","dynamic":true},{"id":"worldgen/tree_decorator_type","minVersion":"1.16"},{"id":"worldgen/trunk_placer_type","minVersion":"1.16"},{"id":"biome","maxVersion":"1.15"},{"id":"worldgen/biome","minVersion":"1.16","path":"processed/reports/biomes"}]}');function B({type:e,id:t}){return c((()=>{var e;null==(e=document.getElementById("ad-placeholder"))||e.remove(),"ethicalads"in window&ðicalads.load()}),[]),d("div",{"data-ea-publisher":"misode-github-io","data-ea-type":e,class:"ad dark flat",id:t})}function H({icon:e,label:t,active:n,class:r,onClick:o}){return d("div",{class:`btn${n?" active":""}${r?` ${r}`:""}`,onClick:o},e&&Y[e],t&&d("span",null,t))}function R({icon:e,label:t,large:n,doSelect:r,value:o,onChange:a}){const i=void 0===a?()=>{}:e=>{const t=e.target.value;null==a||a(t)},s=u(null);return c((()=>{r&&s.current&&s.current.select()}),[r]),d("div",{class:"btn btn-input "+(n?"large-input":""),onClick:e=>e.stopPropagation()},e&&Y[e],t&&d("span",null,t),d("input",{ref:s,type:"text",value:o,onChange:i}))}function F({size:e,draw:t,onDrag:n,onHover:r,onLeave:o},a){const i=u(null),s=u(),l=u(),d=u([0,0]),m=u(!1);c((()=>{const e=e=>{s.current=[e.offsetX,e.offsetY]},t=e=>{if(void 0===s.current){const t=e.offsetX/i.current.clientWidth,n=e.offsetY/i.current.clientHeight;return void(null==r||r(t,n))}if(!n)return;const t=e.offsetX-s.current[0],o=e.offsetY-s.current[1];0===t&&0===o||(d.current=[d.current[0]+t,d.current[1]+o],m.current||(cancelAnimationFrame(l.current),l.current=requestAnimationFrame((async()=>{m.current=!0;const e=d.current[0]/i.current.clientWidth,t=d.current[1]/i.current.clientHeight;d.current=[0,0],await(null==n?void 0:n(e,t)),m.current=!1})))),s.current=[e.offsetX,e.offsetY]},a=()=>{s.current=void 0},c=()=>{null==o||o()};return i.current.addEventListener("mousedown",e),i.current.addEventListener("mousemove",t),i.current.addEventListener("mouseleave",c),document.body.addEventListener("mouseup",a),()=>{i.current.removeEventListener("mousedown",e),i.current.removeEventListener("mousemove",t),i.current.removeEventListener("mouseleave",c),document.body.removeEventListener("mouseup",a)}}),[...null!=a?a:[],i.current]);const h=u(),p=u(0);return h.current=async()=>{const n=i.current.getContext("2d"),r=e();i.current.width=r[0],i.current.height=r[1];const o=n.getImageData(0,0,r[0],r[1]),a=p.current+=1;await t(o),a===p.current&&n.putImageData(o,0,0)},{canvas:i,redraw:h.current}}function J(){const[e,t]=m(!1),n=()=>{t(!1)};return c((()=>(e&&(document.body.addEventListener("click",n),document.body.addEventListener("contextmenu",n)),()=>{document.body.removeEventListener("click",n),document.body.removeEventListener("contextmenu",n)})),[e]),[e,()=>t(!0)]}function W(e,t){const n={invalidated(){e&&t(e)}};c((()=>(null==e||e.addListener(n),()=>{null==e||e.removeListener(n)})),[e])}function G({icon:e,label:t,relative:n,children:r}){const[o,a]=J();return d("div",{class:"btn-menu"+(!1===n?" no-relative":"")},d(H,{icon:e,label:t,onClick:a}),o&&d("div",{class:"btn-group"},r))}!function(e){const t="Site",n="Generator";function r(e,t,n){ga("send","event",e,t,n)}function o(e,t){ga("set",`dimension${e}`,t)}e.pageview=function(e){ga("set","page",e),ga("send","pageview")},e.setLanguage=function(e){o(4,e),r(t,"set-language",e)},e.setTheme=function(e){o(1,e),r(t,"set-theme",e)},e.setVersion=function(e){o(3,e),r(n,"set-version",e)},e.setPreview=function(e){o(5,e),r(n,"set-preview",e)},e.generatorEvent=function(e,t){r(n,e,t)}}(N||(N={}));const Y={archive:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5a.25.25 0 00-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-1.5a.25.25 0 00-.25-.25H1.75zM0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0114.25 6H1.75A1.75 1.75 0 010 4.25v-1.5zM1.75 7a.75.75 0 01.75.75v5.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25v-5.5a.75.75 0 111.5 0v5.5A1.75 1.75 0 0113.25 15H2.75A1.75 1.75 0 011 13.25v-5.5A.75.75 0 011.75 7zm4.5 1a.75.75 0 000 1.5h3.5a.75.75 0 100-1.5h-3.5z"})),arrow_left:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"})),arrow_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"})),check:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})),chevron_down:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"})),chevron_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"})),chevron_up:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"})),clippy:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"})),code:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"})),dash:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2 8a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H2.75A.75.75 0 012 8z"})),device_desktop:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"})),download:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),eye:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"})),eye_closed:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M.143 2.31a.75.75 0 011.047-.167l14.5 10.5a.75.75 0 11-.88 1.214l-2.248-1.628C11.346 13.19 9.792 14 8 14c-1.981 0-3.67-.992-4.933-2.078C1.797 10.832.88 9.577.43 8.9a1.618 1.618 0 010-1.797c.353-.533.995-1.42 1.868-2.305L.31 3.357A.75.75 0 01.143 2.31zm3.386 3.378a14.21 14.21 0 00-1.85 2.244.12.12 0 00-.022.068c0 .021.006.045.022.068.412.621 1.242 1.75 2.366 2.717C5.175 11.758 6.527 12.5 8 12.5c1.195 0 2.31-.488 3.29-1.191L9.063 9.695A2 2 0 016.058 7.52l-2.53-1.832zM8 3.5c-.516 0-1.017.09-1.499.251a.75.75 0 11-.473-1.423A6.23 6.23 0 018 2c1.981 0 3.67.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.619 1.619 0 010 1.798c-.11.166-.248.365-.41.587a.75.75 0 11-1.21-.887c.148-.201.272-.382.371-.53a.119.119 0 000-.137c-.412-.621-1.242-1.75-2.366-2.717C10.825 4.242 9.473 3.5 8 3.5z"})),gear:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"})),globe:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 00-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 004.666 5.5 11.13 11.13 0 01-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 01-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 01-.857-1.215A9.637 9.637 0 015.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 011.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0110.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 004.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 00-.353-.552 6.506 6.506 0 014.666 5.5zM8 0a8 8 0 100 16A8 8 0 008 0z"})),history:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"})),info:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"})),issue_opened:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"})),kebab_horizontal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"})),link:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})),mark_github:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})),moon:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"})),play:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"})),plus:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"})),plus_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.75 4.75a.75.75 0 00-1.5 0v2.5h-2.5a.75.75 0 000 1.5h2.5v2.5a.75.75 0 001.5 0v-2.5h2.5a.75.75 0 000-1.5h-2.5v-2.5z"})),search:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"})),sun:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"})),sync:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"})),tag:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"})),three_bars:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"})),trashcan:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"})),unfold:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8.177.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V4H5.104a.25.25 0 01-.177-.427L7.823.677a.25.25 0 01.354 0zM7.25 10.75a.75.75 0 011.5 0V12h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 12H7.25v-1.25zm-5-2a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 016 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 0112 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"})),upload:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.53 1.22a.75.75 0 00-1.06 0L3.72 4.97a.75.75 0 001.06 1.06l2.47-2.47v6.69a.75.75 0 001.5 0V3.56l2.47 2.47a.75.75 0 101.06-1.06L8.53 1.22zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),x:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"})),x_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.404 12.596a6.5 6.5 0 119.192-9.192 6.5 6.5 0 01-9.192 9.192zM2.344 2.343a8 8 0 1011.313 11.314A8 8 0 002.343 2.343zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"}))};function U({error:e,onDismiss:t}){return d("div",{class:"error"},t&&d("div",{class:"error-dismiss",onClick:t},Y.x),d("h3",null,e),d("p",null,"If you think this is a bug, you can report it ",d("a",{href:"https://github.com/misode/misode.github.io/issues/new",target:"_blank"},"on GitHub")))}let Z;const X={},q=function(e,t){if(!t)return e();if(void 0===Z){const e=document.createElement("link").relList;Z=e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}return Promise.all(t.map((e=>{if(e in X)return;X[e]=!0;const t=e.endsWith(".css"),n=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${n}`))return;const r=document.createElement("link");return r.rel=t?"stylesheet":Z,t||(r.as="script",r.crossOrigin=""),r.href=e,document.head.appendChild(r),t?new Promise(((e,t)=>{r.addEventListener("load",e),r.addEventListener("error",t)})):void 0}))).then((()=>e()))};var K=JSON.parse('{"advancement":"Advancement","button.add":"Add","button.collapse":"Collapse","button.expand":"Expand","button.remove":"Remove","copy":"Copy","dimension_type":"Dimension Type","dimension":"Dimension","download":"Download","entries_hidden":"%0% entries hidden","entries_hidden.more":"Show %0% more","entries_hidden.all":"Show all","fields":"Fields","github":"GitHub","home":"Home","import":"Import","indentation.2_spaces":"2 spaces","indentation.4_spaces":"4 spaces","indentation.tabs":"Tabs","item_modifier":"Item Modifier","language":"Language","loot_table":"Loot Table","not_found.description":"The page you were looking for does not exist.","no_presets":"No presets","predicate":"Predicate","redo":"Redo","reset":"Reset","settings":"Settings","settings.fields.description":"Customize advanced field settings","settings.fields.path":"Context","settings.fields.name":"Name","share":"Share","theme.dark":"Dark","theme.light":"Light","theme.system":"System","title.generator":"%0% Generator","title.generator_category":"%0% Generators","title.home":"Data Pack Generators","presets":"Presets","preview":"Visualize","preview.scale":"Scale","preview.depth":"Depth","preview.factor":"Factor","preview.offset":"Offset","preview.peaks":"Peaks","preview.width":"Width","source_placeholder":"Paste JSON content here","undo":"Undo","world":"World Settings","worldgen":"Worldgen","worldgen/biome":"Biome","worldgen/configured_carver":"Carver","worldgen/configured_feature":"Feature","worldgen/noise_settings":"Noise Settings","worldgen/processor_list":"Processor List","worldgen/configured_structure_feature":"Structure Feature","worldgen/configured_surface_builder":"Surface Builder","worldgen/template_pool":"Template Pool"}'),Q=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:K});const ee={fallback:K};function te(e,t,...n){var r,o,a,i,s;return function(e,t){return e.replace(/%\d+%/g,(e=>{const n=parseInt(e.slice(1,-1));return void 0!==(null==t?void 0:t[n])?t[n]:e}))}(null!=(s=null!=(i=null!=(a=null==(r=ee[e])?void 0:r[t])?a:null==(o=ee.en)?void 0:o[t])?i:ee.fallback[t])?s:t,n)}async function ne(e){const t=T.languages.find((t=>t.code===e));if(!t)return;const n=await function(e){switch(e){case"../locales/de.json":return q((()=>import("./de.a5527242.js")),void 0);case"../locales/en.json":return q((()=>Promise.resolve().then((function(){return Q}))),void 0);case"../locales/es.json":return q((()=>import("./es.be1c5183.js")),void 0);case"../locales/fr.json":return q((()=>import("./fr.cc0e1c18.js")),void 0);case"../locales/it.json":return q((()=>import("./it.fd9a8268.js")),void 0);case"../locales/ja.json":return q((()=>import("./ja.8c79487c.js")),void 0);case"../locales/pl.json":return q((()=>import("./pl.3a9fb38c.js")),void 0);case"../locales/pt.json":return q((()=>import("./pt.689bba1d.js")),void 0);case"../locales/ru.json":return q((()=>import("./ru.43cf4da1.js")),void 0);case"../locales/sk.json":return q((()=>import("./sk.586a2a32.js")),void 0);case"../locales/zh-cn.json":return q((()=>import("./zh-cn.97195370.js")),void 0);case"../locales/zh-tw.json":return q((()=>import("./zh-tw.a82e5245.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../locales/${e}.json`),r=!1!==t.schemas&&await function(e){switch(e){case"../../node_modules/@mcschema/locales/src/de.json":return q((()=>import("./de.f9c3209c.js")),void 0);case"../../node_modules/@mcschema/locales/src/en.json":return q((()=>import("./en.d614ad00.js")),void 0);case"../../node_modules/@mcschema/locales/src/es.json":return q((()=>import("./es.c83d9c73.js")),void 0);case"../../node_modules/@mcschema/locales/src/fr.json":return q((()=>import("./fr.9b3a1c69.js")),void 0);case"../../node_modules/@mcschema/locales/src/it.json":return q((()=>import("./it.7ff123cd.js")),void 0);case"../../node_modules/@mcschema/locales/src/ja.json":return q((()=>import("./ja.4ae430b9.js")),void 0);case"../../node_modules/@mcschema/locales/src/pl.json":return q((()=>import("./pl.01cb20df.js")),void 0);case"../../node_modules/@mcschema/locales/src/pt.json":return q((()=>import("./pt.31e14993.js")),void 0);case"../../node_modules/@mcschema/locales/src/ru.json":return q((()=>import("./ru.92df5b59.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-cn.json":return q((()=>import("./zh-cn.7cd3f35b.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-tw.json":return q((()=>import("./zh-tw.bae62b5e.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../../node_modules/@mcschema/locales/src/${e}.json`);ee[e]=s(s({},n.default),r.default)}const re=e=>("0"+e.toString(16)).substr(-2);function oe(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,re).join("")}function ae(){return BigInt(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))}function ie(e){const t=Math.floor(4294967296*Math.random())-2147483648;e.set(new p.Path(["generator","seed"]),t,!0),e.set(new p.Path(["generator","biome_source","seed"]),t)}function se(e){return`/${e}/`.replaceAll("//","/")}function le(e){const t=e.replace(/^\//,"").replace(/\/$/,"");return T.generators.find((e=>e.url===t))}function ce(e){const t=Math.abs(function(e){let t=0;for(let n=0;n>8)%256,(t>>16)%256]}function de(e){return e*e}function ue(e,t,n){return Math.max(e,Math.min(t,n))}function me(e,t,n){return n<0?e:n>1?t:he(n,e,t)}function he(e,t,n){return t+e*(n-t)}function pe(e){return e instanceof Error?e.message:`${e}`}const ge=h();function fe(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;let n,r;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=0;rve(e.node)));if("object"==typeof e&&null!==e){const t={};return Object.entries(e).map((([e,n])=>{t[e]=ve(n)})),t}return e}["1.15","1.16","1.17"].forEach((e=>localStorage.removeItem(`cache_${e}`)));const _e="https://raw.githubusercontent.com/Arcensoth/mcdata",we="https://raw.githubusercontent.com/SPGoding/vanilla-datapack",ye=[{id:"mcdata_master",hash:"2eb26a7112f2abd02b79ce5213337ef021fb1428",url:_e},{id:"vanilla_datapack_summary",hash:"e936a783bf8a3a3a3ebfe7fba8389ca10096fcba",url:we}];async function be(e,t,n){const r=T.versions.find((t=>t.id===e));r?(console.debug(`[fetchData] ${JSON.stringify(r)}`),r.dynamic&&await Promise.all(ye.filter((e=>localStorage.getItem(`cached_${e.id}`)!==e.hash)).map((async e=>{console.debug(`[deleteMatching] ${e.id} '${localStorage.getItem(`cached_${e.id}`)}' < '${e.hash}' ${e.url}/${r.refs[e.id]}`),await async function(e){try{const t=await caches.open("misode-v1");console.debug("[deleteMatching] Opened cache misode-v1");const n=[];for(const r of await t.keys())e(r.url)&&n.push(t.delete(r));console.debug(`[deleteMatching] Removing ${n.length} cache objects...`),await Promise.all(n)}catch(t){console.warn(`[deleteMatching] Failed to open cache misode-v1: ${pe(t)}`)}}((t=>t.startsWith(`${e.url}/${r.refs[e.id]}`))),console.debug(`[deleteMatching] Done! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`),localStorage.setItem(`cached_${e.id}`,e.hash),console.debug(`[deleteMatching] Set! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`)}))),await Promise.all([xe(r,t),ke(r,n),Ce(r,t)])):console.error(`[fetchData] Unknown version ${r} in ${JSON.stringify(T.versions)}`)}async function xe(e,t){console.debug(`[fetchRegistries] ${e.id}`);const n=T.registries.filter((e=>!e.dynamic)).filter((t=>Oe(e.id,t.minVersion,t.maxVersion)));if(Oe(e.id,void 0,"1.15")){const o=`${_e}/${e.refs.mcdata_master}/generated/reports/registries.json`;try{const e=await ze(o,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n.slice(10)]=Object.keys(e[n].entries)})),t}));n.forEach((n=>{var r;t.register(n.id,null!=(r=e[n.id])?r:[])}))}catch(r){console.warn("Error occurred while fetching registries:",pe(r))}}else await Promise.all(n.map((async n=>{try{const r=n.path?`${_e}/${e.refs.mcdata_master}/${n.path}/data.min.json`:`${_e}/${e.refs.mcdata_master}/processed/reports/registries/${n.id}/data.min.json`;t.register(n.id,await ze(r,(e=>e.values)))}catch(r){console.warn(`Error occurred while fetching registry ${n.id}:`,pe(r))}})))}async function ke(e,t){if(console.debug(`[fetchBlockStateMap] ${e.id}`),Oe(e.id,void 0,"1.16")){const r=Oe(e.id,void 0,"1.15")?`${_e}/${e.refs.mcdata_master}/generated/reports/blocks.json`:`${_e}/${e.refs.mcdata_master}/processed/reports/blocks/data.min.json`;try{const e=await ze(r,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n]={properties:e[n].properties,default:e[n].states.find((e=>e.default)).properties}})),t}));Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",pe(n))}}else{const r=`${_e}/${e.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`;try{const e=await ze(r);Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",pe(n))}}}async function Ce(e,t){console.debug(`[fetchDynamicRegistries] ${e.id}`);const n=T.registries.filter((e=>e.dynamic)).filter((t=>Oe(e.id,t.minVersion,t.maxVersion)));if(Oe(e.id,"1.16")){const o=`${we}/${e.refs.vanilla_datapack_summary}/summary/flattened.min.json`;try{const e=await ze(o);n.forEach((n=>{t.register(n.id,e[n.id])}))}catch(r){console.warn("Error occurred while fetching dynamic registries:",pe(r))}}}async function Me(e,t,n){console.debug(`[fetchPreset] ${t} ${n}`);const r=T.versions.find((t=>t.id===e));try{const e=`${we}/${r.refs.vanilla_datapack_data}/data/minecraft/${t}/${n}.json`,o=await fetch(e);return await o.json()}catch(o){console.warn(`Error occurred while fetching ${t} preset ${n}:`,pe(o))}}async function ze(e,t=(e=>e)){try{const n=await caches.open("misode-v1");console.debug(`[getData] Opened cache misode-v1 ${e}`);const r=await n.match(e);if(r&&r.ok)return console.debug(`[getData] Retrieving cached data ${e}`),await r.json();console.debug(`[getData] fetching data ${e}`);const o=await fetch(e),a=t(await o.json());return await n.put(e,new Response(JSON.stringify(a))),a}catch(n){console.warn(`[getData] Failed to open cache misode-v1: ${pe(n)}`),console.debug(`[getData] fetching data ${e}`);const r=await fetch(e);return t(await r.json())}}const Ie=["1.15","1.16","1.17","1.18"],Ve={},Ae={},Ee={1.15:g,1.16:f,1.17:v,1.18:_};async function je(e){return Ve[e]||(Ve[e]=(async()=>{try{const t=Ee[e].getCollections(),n={};await be(e,t,n);const r=Ee[e].getSchemas(t);return Ve[e]={collections:t,schemas:r,blockStates:n},Ve[e]}catch(t){throw new Error(`Cannot get version "${e}": ${pe(t)}`)}})()),Ve[e]}function Oe(e,t,n){const r=T.versions.findIndex((t=>t.id===e)),o=t?T.versions.findIndex((e=>e.id===t)):0,a=n?T.versions.findIndex((e=>e.id===n)):T.versions.length-1;return o<=r&&r<=a}const Le={system:"device_desktop",dark:"moon",light:"sun"};function $e({lang:e,title:t,version:n,theme:r,changeTheme:o,language:a,changeLanguage:i}){const s=te.bind(null,e),l=le(w());return d("header",null,d("div",{class:"title"},d(y,{class:"home-link",href:"/"},Pe.home),d("h2",null,t),l&&d(G,{icon:"chevron_down"},T.generators.filter((e=>e.category===(null==l?void 0:l.category)&&Oe(n,e.minVersion))).map((e=>d(H,{label:s(e.id),active:e.id===l.id,onClick:()=>b(se(e.url))}))))),d("nav",null,d("ul",null,d("li",null,d(G,{icon:"globe"},T.languages.map((({code:e,name:t})=>d(H,{label:t,active:e===a,onClick:()=>i(e)}))))),d("li",null,d(G,{icon:Le[r]},Object.entries(Le).map((([e,t])=>d(H,{icon:t,label:s(`theme.${e}`),active:e===r,onClick:()=>o(e)}))))),d("li",{class:"dimmed"},d("a",{href:"https://github.com/misode/misode.github.io",target:"_blank",rel:"noreferrer",title:s("github")},Y.mark_github)))))}const Pe={home:d("svg",{width:"32",height:"28",viewBox:"0 0 32 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},d("rect",{width:"26",height:"6",rx:"3",fill:"#7CB45C"}),d("rect",{x:"8",width:"18",height:"6",rx:"3",fill:"#4BA041"}),d("rect",{y:"11",width:"32",height:"6",rx:"3",fill:"#AAA8A8"}),d("rect",{x:"11",y:"11",width:"21",height:"6",rx:"3",fill:"#91908F"}),d("rect",{x:"11",y:"22",width:"21",height:"6",rx:"3",fill:"#70B5C3"}),d("rect",{x:"17",y:"22",width:"15",height:"6",rx:"3",fill:"#4D989B"})),report:d("svg",{width:"30",height:"36",viewBox:"0 0 30 36",xmlns:"http://www.w3.org/2000/svg"},d("path",{d:"M0 16C0 13.7909 1.79086 12 4 12V12C6.20914 12 8 13.7909 8 16V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V16Z",fill:"#6ACC5D"}),d("path",{d:"M11 4C11 1.79086 12.7909 0 15 0V0C17.2091 0 19 1.79086 19 4V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V4Z",fill:"#FF4C4C"}),d("path",{d:"M22 10C22 7.79086 23.7909 6 26 6V6C28.2091 6 30 7.79086 30 10V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V10Z",fill:"#E5B442"}),d("path",{d:"M0 23C0 20.7909 1.79086 19 4 19V19C6.20914 19 8 20.7909 8 23V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V23Z",fill:"#2BAD1D"}),d("path",{d:"M11 15C11 12.7909 12.7909 11 15 11V11C17.2091 11 19 12.7909 19 15V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V15Z",fill:"#C10B0B"}),d("path",{d:"M22 19C22 16.7909 23.7909 15 26 15V15C28.2091 15 30 16.7909 30 19V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V19Z",fill:"#CC8E00"})),sounds:d("svg",{width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},d("circle",{cx:"10",cy:"10",r:"10",fill:"#451475"}),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.5 10C3.5 8.27609 4.18482 6.62279 5.40381 5.40381C6.62279 4.18482 8.27609 3.5 10 3.5C11.7239 3.5 13.3772 4.18482 14.5962 5.40381C15.8152 6.62279 16.5 8.27609 16.5 10C16.5 11.7239 15.8152 13.3772 14.5962 14.5962C13.3772 15.8152 11.7239 16.5 10 16.5C8.27609 16.5 6.62279 15.8152 5.40381 14.5962C4.18482 13.3772 3.5 11.7239 3.5 10V10ZM10 2C7.87827 2 5.84344 2.84285 4.34315 4.34315C2.84285 5.84344 2 7.87827 2 10C2 12.1217 2.84285 14.1566 4.34315 15.6569C5.84344 17.1571 7.87827 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 7.87827 17.1571 5.84344 15.6569 4.34315C14.1566 2.84285 12.1217 2 10 2V2ZM8.379 7.227C8.34101 7.20412 8.29762 7.19175 8.25327 7.19117C8.20892 7.19059 8.16522 7.20181 8.12664 7.2237C8.08807 7.24558 8.05601 7.27733 8.03375 7.3157C8.0115 7.35406 7.99985 7.39765 8 7.442V12.559C8.00003 12.6033 8.0118 12.6467 8.03413 12.685C8.05646 12.7232 8.08854 12.7548 8.12708 12.7765C8.16563 12.7983 8.20926 12.8095 8.25352 12.8088C8.29778 12.8082 8.34108 12.7958 8.379 12.773L12.643 10.214C12.6798 10.1917 12.7103 10.1604 12.7315 10.1229C12.7526 10.0854 12.7638 10.043 12.7638 10C12.7638 9.95695 12.7526 9.91463 12.7315 9.87714C12.7103 9.83965 12.6798 9.80825 12.643 9.786L8.379 7.227Z",fill:"#C5A5E6"}))};let Se,De,Ne;async function Te(e,t){const n=[e,t.octaves,`${t.seed}`,t.version];if(!fe(n,Se)){Se=ge(n),De=await async function(e,t){var n,r,o,a,i;switch(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,"")){case"fixed":return new I(e.biome);case"checkerboard":const n=(null!=(r=e.scale)?r:2)+2,s=null!=(a=null==(o=e.biomes)?void 0:o.length)?a:0;return{getBiome(t,r,o){var a;const i=(((t>>n)+(o>>n))%s+s)%s;return null==(a=e.biomes)?void 0:a[i].node}};case"multi_noise":switch(null==(i=e.preset)?void 0:i.replace(/^minecraft:/,"")){case"nether":e="1.18"===t.version?Fe:Re;break;case"overworld":e="1.18"===t.version?await async function(){return(await Me("1.18","dimension","overworld")).generator.biome_source}():e}if(e=ve(e),"1.18"===t.version)return C.fromJson(e);{const n=["altitude","temperature","humidity","weirdness"].map(((n,r)=>{var o;const a=e[`${n}_noise`];return a.firstOctave=ue(null!=(o=a.firstOctave)?o:-7,-100,-1),new M(new z(t.seed+BigInt(r)),a)}));return Array.isArray(e.biomes)&&0!==e.biomes.length?{getBiome(t,r,o){const a=n.map((e=>e.sample(t,o,0)));let i=1/0,s="";for(const{biome:n,parameters:l}of e.biomes){const e=de(l.altitude-a[0])+de(l.temperature-a[1])+de(l.humidity-a[2])+de(l.weirdness-a[3])+de(l.offset);er.nextFloat(),nextInt:e=>r.nextInt(e),sampleInt(e){return Ze(e,this)}};for(let i=0;i=n.size[0]||i[1]>=n.size[1]||i[2]>=n.size[2])continue;const e=i[2]*(4*t.width)+4*i[0],r=s{Ke(t,null==e?void 0:e.decorator,n).forEach((t=>qe(t,null==e?void 0:e.feature,n)))},random_boolean_selector:(e,t,n)=>{qe(t,n.nextFloat()<.5?null==e?void 0:e.feature_true:null==e?void 0:e.feature_false,n)},random_selector:(e,t,n)=>{var r,o;for(const a of null!=(r=null==e?void 0:e.features)?r:[])if(n.nextFloat()<(null!=(o=null==a?void 0:a.chance)?o:0))return void qe(t,a.feature,n);qe(t,null==e?void 0:e.default,n)},simple_random_selector:(e,t,n)=>{var r,o,a;qe(t,null==(a=null==e?void 0:e.features)?void 0:a[n.nextInt(null!=(o=null==(r=null==e?void 0:e.features)?void 0:r.length)?o:0)],n)}},et={chance:(e,t,n)=>{var r;return n.nextFloat()<1/(null!=(r=null==e?void 0:e.chance)?r:1)?[t]:[]},count:(e,t,n)=>{var r;return new Array(n.sampleInt(null!=(r=null==e?void 0:e.count)?r:1)).fill(t)},count_extra:(e,t,n)=>{var r,o;let a=null!=(r=null==e?void 0:e.count)?r:1;return n.nextFloat(){var r;return new Array(n.sampleInt(null!=(r=null==e?void 0:e.count)?r:1)).fill(t).map((e=>[e[0]+n.nextInt(16),e[1],e[2]+n.nextInt(16)]))},count_noise:(e,t,n)=>{const r=n.biomeInfoNoise.sample(t[0]/200,0,t[2]/200){var r;const o=Math.max(1,e.noise_factor),a=n.biomeInfoNoise.sample(t[0]/o,0,t[2]/o),i=Math.max(0,Math.ceil((a+(null!=(r=e.noise_offset)?r:0))*e.noise_to_count_ratio));return new Array(i).fill(t)},dark_oak_tree:(e,t,n)=>[...new Array(16)].map(((e,r)=>{const o=4*Math.floor(r/4)+1+n.nextInt(3)+t[0];return[o,Math.max(n.seaLevel,Je[ue(0,63,o)]),4*Math.floor(r%4)+1+n.nextInt(3)+t[2]]})),decorated:(e,t,n)=>Ke(t,null==e?void 0:e.outer,n).flatMap((t=>Ke(t,null==e?void 0:e.inner,n))),depth_average:(e,t,n)=>{var r,o,a,i;return Ue(t,n.nextInt(null!=(r=null==e?void 0:e.spread)?r:0)+n.nextInt(null!=(o=null==e?void 0:e.spread)?o:0)-(null!=(a=e.spread)?a:0)+(null!=(i=null==e?void 0:e.baseline)?i:0))},emerald_ore:(e,t,n)=>{const r=3+n.nextInt(6);return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),4+n.nextInt(28),t[2]+n.nextInt(16)]))},fire:(e,t,n)=>{const r=1+n.nextInt(n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},glowstone:(e,t,n)=>{const r=n.nextInt(1+n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},heightmap:(e,t,n)=>Ue(t,Math.max(n.seaLevel,Je[ue(0,63,t[0])])),heightmap_spread_double:(e,t,n)=>{const r=Math.max(n.seaLevel,Je[ue(0,63,t[0])]);return Ue(t,n.nextInt(2*r))},heightmap_world_surface:(e,t,n)=>Ue(t,Math.max(n.seaLevel,Je[ue(0,63,t[0])])),iceberg:(e,t,n)=>[[t[0]+4+n.nextInt(8),t[1],t[2]+4+n.nextInt(8)]],lava_lake:(e,t,n)=>{var r,o;if(0===n.nextInt((null!=(r=e.chance)?r:1)/10)){const r=n.nextInt(n.nextInt(248)+8);if(r[t],range:(e,t,n)=>{var r,o,a;return Ue(t,n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(o=null==e?void 0:e.top_offset)?o:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0))},range_biased:(e,t,n)=>{var r,o,a;return Ue(t,n.nextInt(n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(o=null==e?void 0:e.top_offset)?o:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0)))},range_very_biased:(e,t,n)=>{var r,o,a,i;return Ue(t,n.nextInt(n.nextInt(n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(o=null==e?void 0:e.top_offset)?o:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0))+(null!=(i=null==e?void 0:e.bottom_offset)?i:0)))},spread_32_above:(e,t,n)=>Ue(t,n.nextInt(t[1]+32)),top_solid_heightmap:(e,t)=>Ue(t,Je[ue(0,63,t[0])]),magma:(e,t,n)=>Ue(t,n.nextInt(t[1]+32)),square:(e,t,n)=>[[t[0]+n.nextInt(16),t[1],t[2]+n.nextInt(16)]],surface_relative_threshold:(e,t)=>{var n,r;const o=Je[ue(0,63,t[0])],a=o+(null!=(n=null==e?void 0:e.min_inclusive)?n:-1/0),i=o+(null!=(r=null==e?void 0:e.max_inclusive)?r:1/0);return t[1]i?[t]:[]},water_lake:(e,t,n)=>{var r;return 0===n.nextInt(null!=(r=e.chance)?r:1)?[[t[0]+n.nextInt(16),n.nextInt(256),t[2]+n.nextInt(16)]]:[]}};class tt{constructor(e){this.settings={},this.chunkWidth=4,this.chunkHeight=4,this.chunkCountY=32,this.biomeDepth=.1,this.biomeScale=.2,this.noiseColumnCache=[],this.xOffset=0;const t=new z(e);this.minLimitPerlinNoise=new V(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.maxLimitPerlinNoise=new V(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.mainPerlinNoise=new V(t,-7,[1,1,1,1,1,1,1,1]),this.depthNoise=new V(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])}reset(e,t,n,r,o){this.settings=e,this.chunkWidth=4*e.size_horizontal,this.chunkHeight=4*e.size_vertical,this.chunkCountY=Math.floor(e.height/this.chunkHeight),e.amplified&&t>0&&(t=1+2*t,n=1+4*n),this.biomeDepth=.265625*(.5*t-.125),this.biomeScale=96/(.9*n+.1),this.noiseColumnCache=Array(o).fill(null),this.xOffset=r}iterateNoiseColumn(e){const t=Array(this.chunkCountY*this.chunkHeight),n=Math.floor(e/this.chunkWidth),r=Math.floor(e%this.chunkWidth)/this.chunkWidth,o=this.fillNoiseColumn(n),a=this.fillNoiseColumn(n+1);for(let m=this.chunkCountY-1;m>=0;m-=1)for(let e=this.chunkHeight;e>=0;e-=1){const n=e/this.chunkHeight;t[m*this.chunkHeight+e]=(i=n,s=r,l=o[m],c=o[m+1],d=a[m],u=a[m+1],he(s,he(i,l,c),he(i,d,u)))}var i,s,l,c,d,u;return t}fillNoiseColumn(e){const t=this.noiseColumnCache[e-this.xOffset];if(t)return t;const n=Array(this.chunkCountY+1),r=684.412*this.settings.sampling.xz_scale,o=684.412*this.settings.sampling.y_scale,a=r/this.settings.sampling.xz_factor,i=o/this.settings.sampling.y_factor,s=this.settings.random_density_offset?this.getRandomDensity(e):0;for(let l=0;l<=this.chunkCountY;l+=1){let t=this.sampleAndClampNoise(e,l,this.mainPerlinNoise.getOctaveNoise(0).zo,r,o,a,i);const c=((1-2*l/this.chunkCountY+s)*this.settings.density_factor+this.settings.density_offset+this.biomeDepth)*this.biomeScale;t+=c*(c>0?4:1),this.settings.top_slide.size>0&&(t=me(this.settings.top_slide.target,t,(this.chunkCountY-l-this.settings.top_slide.offset)/this.settings.top_slide.size)),this.settings.bottom_slide.size>0&&(t=me(this.settings.bottom_slide.target,t,(l-this.settings.bottom_slide.offset)/this.settings.bottom_slide.size)),n[l]=t}return this.noiseColumnCache[e-this.xOffset]=n,n}getRandomDensity(e){const t=this.depthNoise.sample(200*e,10,this.depthNoise.getOctaveNoise(0).zo,1,0,!0),n=24.575625*(t<0?.3*-t:t)-2;return n<0?.009486607142857142*n:.006640625*Math.min(n,1)}sampleAndClampNoise(e,t,n,r,o,a,i){let s=0,l=0,c=0,d=1;for(let u=0;u<16;u+=1){const m=V.wrap(e*r*d),h=V.wrap(t*o*d),p=V.wrap(n*r*d),g=o*d,f=this.minLimitPerlinNoise.getOctaveNoise(u);f&&(s+=f.sample(m,h,p,g,t*g)/d);const v=this.maxLimitPerlinNoise.getOctaveNoise(u);if(v&&(l+=v.sample(m,h,p,g,t*g)/d),u<8){const r=this.mainPerlinNoise.getOctaveNoise(u);r&&(c+=r.sample(V.wrap(e*a*d),V.wrap(t*i*d),V.wrap(n*a*d),i*d,t*i*d)/d)}d/=2}return me(s/512,l/512,(c/10+1)/2)}}const nt={"minecraft:air":[150,160,170],"minecraft:water":[20,80,170],"minecraft:lava":[200,100,0],"minecraft:stone":[50,50,50],"minecraft:netherrack":[100,40,40],"minecraft:end_stone":[200,200,140]};let rt,ot,at=[];function it(e,t,n){var r;if(Oe(n.version,"1.18")){const{settings:o,generator:a}=function(e,t){const n=x.fromJson(ve(e));n.noise.bottomSlide.target*=128,n.noise.topSlide.target*=128;const r={factor:t.biomeFactor,offset:t.biomeOffset,peaks:t.biomePeaks,nearWater:!1},o=[e,r,`${t.seed}`];if(!fe(o,rt)){rt=ge(o),at=[];const e=new I("unknown");ot=new A(t.seed,e,n,r)}return{settings:n,generator:ot}}(e,n),i=new lt(-n.offset,n.width,o.noise.minY,o.noise.height);i.fill(a);const s=t.data;for(let e=0;e0?0:e[t+1]>0?150:255}class lt{constructor(e,t,n,r){this.minX=e,this.filled=[],this.chunks=[...Array(Math.ceil(t/16)+1)].map(((t,o)=>{const a=(e>>4)+o,i=at.find((e=>e.pos[0]===a));return i?(this.filled[o]=!0,i):new E(n,r,j.create(a,0))}))}fill(e){this.chunks.forEach(((t,n)=>{this.filled[n]||(e.fill(t),this.filled[n]=!0,at.push(t))}))}getBlockState(e){const t=(e[0]>>4)-(this.minX>>4);return this.chunks[t].getBlockState(e)}}const ct=({model:e,data:t,shown:n,version:r})=>{var o;const[a,i]=m(2),[s,l]=m(void 0),h=u([0,0]),g=u(1),f=u(void 0),v=BigInt(e.get(new p.Path(["generator","seed"]))),_=function(e){if("string"==typeof e)switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return{temperature:{firstOctave:-9,amplitudes:[1.5,0,1,0,0,0]},humidity:{firstOctave:-7,amplitudes:[1,1,0,0,0,0]},continentalness:{firstOctave:-9,amplitudes:[1,1,2,2,2,1,1,1,1]},erosion:{firstOctave:-9,amplitudes:[1,1,0,1,1]},weirdness:{firstOctave:-7,amplitudes:[1,2,1,0,0,0]},shift:{firstOctave:-3,amplitudes:[1,1,1,0]}};case"end":case"floating_islands":return{temperature:{firstOctave:0,amplitudes:[0]},humidity:{firstOctave:0,amplitudes:[0]},continentalness:{firstOctave:0,amplitudes:[0]},erosion:{firstOctave:0,amplitudes:[0]},weirdness:{firstOctave:0,amplitudes:[0]},shift:{firstOctave:0,amplitudes:[0]}};default:return{temperature:{firstOctave:-7,amplitudes:[1,1]},humidity:{firstOctave:-7,amplitudes:[1,1]},continentalness:{firstOctave:-7,amplitudes:[1,1]},erosion:{firstOctave:-7,amplitudes:[1,1]},weirdness:{firstOctave:-7,amplitudes:[1,1]},shift:{firstOctave:0,amplitudes:[0]}}}return x.fromJson(e).octaves}(e.get(new p.Path(["generator","settings"]))),w=n?function(e,t){return JSON.stringify([e,t])}(t,_):"",y=null==(o=t.type)?void 0:o.replace(/^minecraft:/,""),{canvas:b,redraw:k}=F({size:()=>[200/g.current,200/g.current],async draw(e){const n={octaves:_,biomeColors:{},offset:h.current,scale:a,seed:v,res:g.current,version:r};await async function(e,t,n){const{biomeSource:r,climateSampler:o}=await Te(e,n),a=t.data,i=-n.offset[0]-100+n.res/2,s=-n.offset[1]-100+n.res/2,l=4*t.width/n.res,c=4/n.res;for(let d=0;d<200;d+=n.res)for(let e=0;e<200;e+=n.res){const t=e*l+d*c,u=(d+i)*n.scale,m=(e+s)*n.scale,h=Be(r.getBiome(u,64,m,o),n.biomeColors);a[t]=h[0],a[t+1]=h[1],a[t+2]=h[2],a[t+3]=255}}(t,e,n),4===g.current&&(clearTimeout(f.current),f.current=setTimeout((()=>{g.current=1,k()}),150))},async onDrag(e,t){h.current[0]=h.current[0]+200*e,h.current[1]=h.current[1]+200*t,clearTimeout(f.current),g.current="multi_noise"===y?4:1,k()},async onHover(e,n){const o={octaves:_,biomeColors:{},offset:h.current,scale:a,seed:v,res:1,version:r},i=await async function(e,t,n,r){const{biomeSource:o,climateSampler:a}=await Te(e,r),[i,s]=function([e,t],n){return[(e-n.offset[0]-100+n.res/2)*n.scale,(t-n.offset[1]-100+n.res/2)*n.scale]}([t,n],r);return o.getBiome(i,64,s,a)}(t,Math.floor(200*e),Math.floor(200*n),o);l(i)},onLeave(){l(void 0)}},[w,a,v]);c((()=>{n&&(g.current="multi_noise"===y?4:1,k())}),[w,a,v,n]);const C=e=>{h.current[0]=h.current[0]*a/e,h.current[1]=h.current[1]*a/e,i(e)};return d(O,null,d("div",{class:"controls"},s&&d(H,{label:s,class:"no-pointer"}),("multi_noise"===y||"checkerboard"===y)&&d(O,null,d(H,{icon:"dash",onClick:()=>C(1.5*a)}),d(H,{icon:"plus",onClick:()=>C(a/1.5)})),"multi_noise"===y&&d(H,{icon:"sync",onClick:()=>ie(e)})),d("canvas",{ref:b,width:"200",height:"200"}))};const dt=({data:e,version:t,shown:n})=>{const[r,o]=m(4),[a,i]=m(ae()),{canvas:s,redraw:l}=F({size:()=>[16*r,16*r],async draw(n){Ge(e,n,{seed:a,version:t,size:[16*r,128,16*r]})}}),u=JSON.stringify(e);return c((()=>{n&&l()}),[u,r,a,n]),d(O,null,d("div",{class:"controls"},d(H,{icon:"dash",onClick:()=>o(Math.min(16,r+1))}),d(H,{icon:"plus",onClick:()=>o(Math.max(1,r-1))}),d(H,{icon:"sync",onClick:()=>i(ae())})),d("canvas",{ref:s,width:"64",height:"64"}))},ut=({lang:e,data:t,shown:n,version:r})=>{var o,a;const i=te.bind(null,e),[s,l]=m(ae()),[h,p]=m(.2),[g,f]=m(.1),[v,_]=m(0),[w,y]=m(void 0),b=u(0),x=JSON.stringify([t,h,g,v]),k=Oe(r,"1.18");c((()=>{p(k?600:.2),f(k?.05:.1)}),[k]);const C=null!=(a=null==(o=null==t?void 0:t.noise)?void 0:o.height)?a:256,{canvas:M,redraw:z}=F({size:()=>[C,C],async draw(e){const n={biomeOffset:g,biomeFactor:h,biomePeaks:v,offset:b.current,width:e.width,seed:s,version:r};it(t,e,n)},async onDrag(e){b.current+=e*C,z()},async onHover(e,n){var r,o;const a=C-Math.max(1,Math.ceil(n*C))+(null!=(o=null==(r=null==t?void 0:t.noise)?void 0:r.min_y)?o:0);y(`${a}`)},onLeave(){y(void 0)}},[x,s]);return c((()=>{n&&z()}),[x,s,n]),d(O,null,d("div",{class:"controls"},w&&d(H,{label:`Y = ${w}`,class:"no-pointer"}),d(G,{icon:"gear"},k?d(O,null,d(R,{label:i("preview.factor"),value:`${h}`,onChange:e=>p(Number(e))}),d(R,{label:i("preview.offset"),value:`${g}`,onChange:e=>f(Number(e))}),d(R,{label:i("preview.peaks"),value:`${v}`,onChange:e=>_(Number(e))})):d(O,null,d(R,{label:i("preview.scale"),value:`${h}`,onChange:e=>p(Number(e))}),d(R,{label:i("preview.depth"),value:`${g}`,onChange:e=>f(Number(e))}))),d(H,{icon:"sync",onClick:()=>l(ae())})),d("canvas",{ref:M,width:C,height:C}))},mt=["dimension","worldgen/noise_settings","worldgen/configured_feature"];function ht({lang:e,model:t,version:n,id:r,shown:o}){var a;const[,i]=m(0);if(W(t,(()=>{i((e=>e+1))})),"dimension"===r&&(null==(a=null==t?void 0:t.get(new p.Path(["generator","type"])))?void 0:a.endsWith("noise"))){const r=t.get(new p.Path(["generator","biome_source"]));if(r)return d(ct,s({},{lang:e,model:t,version:n,shown:o,data:r}))}if("worldgen/noise_settings"===r&&t){const r=t.get(new p.Path([]));if(r)return d(ut,s({},{lang:e,model:t,version:n,shown:o,data:r}))}if("worldgen/configured_feature"===r&&t){const r=t.get(new p.Path([]));if(r)return d(dt,s({},{lang:e,model:t,version:n,shown:o,data:r}))}return d(O,null)}const pt={base:({},e,t)=>t,choice({switchNode:e},t,n,r){return e.hook(this,t,n,r)},list({children:e},t,n,r){return Array.isArray(n)?n.map(((n,o)=>e.hook(this,t.push(o),n.node,r))):n},map({children:e,config:t},n,r,o){var a,i;if(void 0===r)return;const s="block_state_map"===(null==(a=t.validation)?void 0:a.validator)?null==(i=o.blockStates)?void 0:i[p.relativePath(n,t.validation.params.id).get()]:null,l={};return Object.keys(r).forEach((t=>{var a;s&&!Object.keys(null!=(a=s.properties)?a:{}).includes(t)||(l[t]=e.hook(this,n.push(t),r[t],o))})),l},object({getActiveFields:e},t,n,r){if(null==n||"object"!=typeof n)return n;const o={},a=e(t);return Object.keys(a).filter((e=>a[e].enabled(t))).forEach((e=>{o[e]=a[e].hook(this,t.push(e),n[e],r)})),o}};var gt,ft;(ft=gt||(gt={})).ID_LANGUAGE="language",ft.ID_THEME="theme",ft.ID_VERSION="schema_version",ft.ID_INDENT="indentation",ft.getLanguage=function(){var e;return null!=(e=localStorage.getItem(ft.ID_LANGUAGE))?e:"en"},ft.getTheme=function(){var e;return null!=(e=localStorage.getItem(ft.ID_THEME))?e:"dark"},ft.getVersion=function(){const e=localStorage.getItem(ft.ID_VERSION);return e&&Ie.includes(e)?e:"1.17"},ft.getIndent=function(){var e;return null!=(e=localStorage.getItem(ft.ID_INDENT))?e:"2_spaces"},ft.setLanguage=function(e){e&&localStorage.setItem(ft.ID_LANGUAGE,e)},ft.setTheme=function(e){e&&localStorage.setItem(ft.ID_THEME,e)},ft.setVersion=function(e){e&&localStorage.setItem(ft.ID_VERSION,e)},ft.setIndent=function(e){e&&localStorage.setItem(ft.ID_INDENT,e)};const vt={"2_spaces":2,"4_spaces":4,tabs:"\t"};function _t({lang:e,name:t,model:n,blockStates:r,doCopy:o,doDownload:a,doImport:i,copySuccess:s,onError:l}){const h=te.bind(null,e),[g,f]=m(gt.getIndent()),v=u(null),_=u(null),w=u(),y=L(((e,t)=>{const n=e.schema.hook(pt,new p.ModelPath(e),e.data,{blockStates:t});return JSON.stringify(n,null,vt[g])+"\n"}),[]);c((()=>{w.current=()=>{if(n&&r)try{const e=y(n,r);e.length>=1e4?v.current.value=e.slice(0,1e4)+"\n\nOutput is too large to display (+10000 chars)\nExport to view complete output\n\n":v.current.value=e}catch(e){l(`Error getting JSON output: ${pe(e)}`),console.error(e),v.current.value=""}}})),W(n,(()=>{w.current()})),c((()=>{n&&w.current()}),[n]),c((()=>{w.current()}),[g]);c((()=>{o&&n&&r&&navigator.clipboard.writeText(y(n,r)).then((()=>{s()}))}),[o]),c((()=>{if(a&&v.current&&_.current){const e=encodeURIComponent(v.current.value);_.current.setAttribute("href",`data:text/json;charset=utf-8,${e}`),_.current.setAttribute("download",`${t}.json`),_.current.click()}}),[a]),c((()=>{i&&v.current&&(v.current.value="",v.current.select())}),[i]);return d(O,null,d("div",{class:"controls"},d(G,{icon:"gear"},Object.entries(vt).map((([e])=>d(H,{label:h(`indentation.${e}`),active:g===e,onClick:()=>{return t=e,gt.setIndent(t),void f(t);var t}}))))),d("textarea",{ref:v,class:"source",onChange:()=>{try{const e=JSON.parse(v.current.value);null==n||n.reset(p.DataModel.wrapLists(e),!1)}catch(e){l(`Error importing: ${pe(e)}`),console.error(e)}},spellcheck:!1,autocorrect:"off",placeholder:h("source_placeholder")}),d("a",{ref:_,style:"display: none;"}))}function wt({title:e,link:t,icon:n,children:r}){return d("a",{class:"tool-card",href:t},n&&Pe[n],d("div",null,d("h3",null,e),r))}const yt=["loot_table.type","loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","dimension.generator.biome_source.preset","carver.type","feature.type","decorator.type","feature.tree.minimum_size.type","block_state_provider.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","int_provider.type","float_provider.type","height_provider.type","structure_feature.type","surface_builder.type","processor.processor_type","rule_test.predicate_type","pos_rule_test.predicate_type","template_element.element_type","block_placer.type"],bt=["number_provider.type","score_provider.type","nbt_provider.type","int_provider.type","float_provider.type","height_provider.type"],xt=["feature.config","decorator.config","int_provider.value","float_provider.value","block_state_provider.simple_state_provider.state","block_state_provider.rotated_block_provider.state","block_state_provider.weighted_state_provider.entries.entry.data","rule_test.block_state","structure_feature.config","surface_builder.config","template_pool.elements.entry.element","decorator.block_survives_filter.state"],kt=["loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","feature.type","decorator.type","block_state_provider.type","feature.tree.minimum_size.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","block_placer.type","rule_test.predicate_type","processor.processor_type","template_element.element_type","nbt_operation.op","number_provider.value","score_provider.name","score_provider.target","nbt_provider.source","nbt_provider.target","generator_biome.biome"],Ct=["function.set_nbt.tag","advancement.display.icon.nbt","text_component_object.nbt","entity.nbt","block.nbt","item.nbt"],Mt=["generator_biome.parameters.temperature","generator_biome.parameters.humidity","generator_biome.parameters.continentalness","generator_biome.parameters.erosion","generator_biome.parameters.depth","generator_biome.parameters.weirdness","feature.end_spike.crystal_beam_target","feature.end_gateway.exit","decorator.block_filter.offset"],zt=new p.DataModel(p.MapNode(p.StringNode(),p.StringNode()),{historyMax:0});function It({model:e,lang:t,blockStates:n}){var r;const o=new p.ModelPath(e),[a,i,s]=e.schema.hook(Vt,o,ge(e.data),t,n,{});return(null==(r=null==i?void 0:i.props)?void 0:r.children.some((e=>e)))?d("div",{class:`node ${e.schema.type(o)}-node`,"data-category":e.schema.category(o)},d("div",{class:"node-header"},a,i),d("div",{class:"node-body"},s)):s}const Vt={base:()=>[null,null,null],boolean:(e,t,n,r,o,a)=>[null,d(jt,s({},l(s({},e),{path:t,value:n,lang:r,states:o,ctx:a}))),null],choice({choices:e,config:t,switchNode:n},r,o,a,i,s){const l=n.activeCase(r,!0),c=(null==t?void 0:t.context)?new p.ModelPath(r.getModel(),new p.Path(r.getArray(),[t.context])):r,[u,m,h]=l.node.hook(this,c,o,a,i,s);if(1===e.length)return[u,m,h];const g=(null==t?void 0:t.choiceContext)?new p.Path([],[t.choiceContext]):(null==t?void 0:t.context)?new p.Path([],[t.context]):r,f=d("select",{value:l.type,onChange:t=>(t=>{var n;const o=null!=(n=e.find((e=>e.type===t)))?n:l;r.model.set(r,o.change?o.change(t,{wrapLists:!0}):p.DataModel.wrapLists(o.node.default()))})(t.target.value)},e.map((e=>d("option",{value:e.type},Dt(a,g.contextPush(e.type))))));return[u,d(O,null,f,m),h]},list({children:e,config:t},n,r,o,a,i){const{expand:c,collapse:u,isToggled:h}=Et(),[g,f]=m(50),v=n.getContext().join(".");if(Mt.includes(v)){return[d(O,null,[...Array(t.maxLength)].map(((e,t)=>d(Nt,{lang:o,path:n.modelPush(t)}))),d("div",{class:"fixed-list"})),d(O,null,[...Array(t.maxLength)].map(((t,s)=>{var l;return e.hook(this,n.modelPush(s),null==(l=null==r?void 0:r[s])?void 0:l.node,o,a,i)[1]}))),null]}return[null,d("button",{class:"add",onClick:()=>{Array.isArray(r)||(r=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[{node:t,id:oe()},...r])}},Y.plus_circle),d(O,null,r&&Array.isArray(r)&&r.map((({node:t,id:m},p)=>{if(p===g)return d("div",{class:"node node-header"},d("label",null,te(o,"entries_hidden",""+(r.length-g))),d("button",{onClick:()=>f(Math.min(g+50,r.length))},te(o,"entries_hidden.more","50")),d("button",{onClick:()=>f(r.length)},te(o,"entries_hidden.all")));if(p>g)return null;const v=n.push(p).contextPush("entry"),_="object"===e.type(v),w=h(m);if(_&&(!1===w||void 0===w&&r.length>20))return d("div",{class:"node node-header","data-category":e.category(v)},d(Nt,{lang:o,path:v,nested:!0}),d("button",{class:"toggle",onClick:c(m)},Y.chevron_right),d("label",null,Dt(o,v,`${p}`)),d(At,{key:m,path:v,value:t,schema:e}));return d($t,{key:m,path:v,schema:e,value:t,lang:o,states:a,ctx:l(s({},i),{index:(0===p?1:0)+(p===r.length-1?2:0)})},_&&d("button",{class:"toggle",onClick:u(m)},Y.chevron_down),d("button",{class:"remove",onClick:()=>v.set(void 0)},Y.trashcan),r.length>1&&d("div",{class:"node-move"},d("button",{class:"move",onClick:()=>{const e=[...n.get()];[e[p-1],e[p]]=[e[p],e[p-1]],n.model.set(n,e)},disabled:0===p},Y.chevron_up),d("button",{class:"move",onClick:()=>{const e=[...n.get()];[e[p+1],e[p]]=[e[p],e[p+1]],n.model.set(n,e)},disabled:p===r.length-1},Y.chevron_down)))})),r&&r.length>2&&r.length<=g&&d("div",{class:"node node-header"},d("button",{class:"add",onClick:()=>{Array.isArray(r)||(r=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[...r,{node:t,id:oe()}])}},Y.plus_circle)))]},map({children:e,keys:t,config:n},r,o,a,i,c){var u,m,h,g,f;const{expand:v,collapse:_,isToggled:w}=Et(),y=new p.ModelPath(zt,new p.Path([St(r.toString())])),b="block_state_map"===(null==(u=n.validation)?void 0:u.validator)?null==i?void 0:i[p.relativePath(r,n.validation.params.id).get()]:null,x=(null==b?void 0:b.properties)?p.StringNode(null,{enum:Object.keys(null!=(m=b.properties)?m:{})}):t;if(b&&"Properties"===r.last()){"object"!=typeof o&&(o={});const e=Object.entries(null!=(h=b.properties)?h:{}).map((([e,t])=>[e,p.StringNode(null,{enum:t})]));return Object.entries(null!=(g=b.properties)?g:{}).forEach((([e,t])=>{"string"!=typeof o[e]?r.model.errors.add(r.push(e),"error.expected_string"):t.includes(o[e])||r.model.errors.add(r.push(e),"error.invalid_enum_option",o[e])})),p.ObjectNode(Object.fromEntries(e)).hook(this,r,o,a,i,c)}return[null,d(O,null,x.hook(this,y,null!=(f=y.get())?f:"",a,i,c)[1],d("button",{class:"add",onClick:()=>{const t=y.get();r.model.set(r.push(t),p.DataModel.wrapLists(e.default()))}},Y.plus_circle)),d(O,null,"object"==typeof o&&Object.entries(o).map((([t,n])=>{var u,m,h,g;const f=r.modelPush(t),y="object"===e.type(f),x=w(t);if(y&&(!1===x||void 0===x&&o.length>20))return d("div",{class:"node node-header","data-category":e.category(f)},d(Nt,{lang:a,path:f,nested:!0}),d("button",{class:"toggle",onClick:v(t)},Y.chevron_right),d("label",null,t),d(At,{key:t,path:f,value:n,schema:e}));const k=b?p.StringNode(null,{enum:null!=(m=null==(u=b.properties)?void 0:u[t])?m:[]}):e;(null==(h=null==b?void 0:b.properties)?void 0:h[t])&&"string"==typeof n&&!(null==(g=b.properties)?void 0:g[t].includes(n))&&r.model.errors.add(f,"error.invalid_enum_option",n);return d($t,l(s({key:t,schema:k,path:f,value:n},{lang:a,states:i,ctx:c}),{label:t}),y&&d("button",{class:"toggle",onClick:_(t)},Y.chevron_down),d("button",{class:"remove",onClick:()=>f.set(void 0)},Y.trashcan))})))]},number:(e,t,n,r,o,a)=>[null,d(Ot,s({},l(s({},e),{path:t,value:n,lang:r,states:o,ctx:a}))),null],object({node:e,getActiveFields:t,getChildModelPath:n},r,o,a,i,c){var u;let m=null,h=null;if(e.optional())if(void 0===o){h=d("button",{class:"collapse closed",onClick:()=>r.set(p.DataModel.wrapLists(e.default()))},Y.plus_circle)}else{h=d("button",{class:"collapse open",onClick:()=>r.set(void 0)},Y.trashcan)}const g="object"==typeof o&&null!==o&&(null==(u=e.default())?void 0:u.pools)?l(s({},c),{loot:null==o?void 0:o.type}):c,f=d(O,null,"object"==typeof o&&null!==o&&!(e.optional()&&void 0===o)&&Object.entries(t(r)).filter((([e,t])=>t.enabled(r))).map((([e,t])=>{var l,c,u;const p=n(r,e),f=p.getContext().join(".");if(bt.includes(f))return null;const[v,_,w]=t.hook(this,p,o[e],a,i,g);if(!(v||_||(null!=(u=null==(c=null==(l=null==w?void 0:w.props)?void 0:l.children)?void 0:c.length)?u:0)>0))return null;const y="object"===t.type(p)&&xt.includes(f),b=kt.includes(f);return y||b?(m=d(O,null,m,d(Nt,{lang:a,path:p}),d(Tt,{lang:a,path:p}),v),h=d(O,null,h,_),y?w:null):d($t,s({key:e,schema:t,path:p,value:o[e]},{lang:a,states:i,ctx:g}))})));return[m,h,f]},string:(e,t,n,r,o,a)=>[null,d(Lt,s({},l(s({},e),{path:t,value:n,lang:r,states:o,ctx:a}))),null]};function At({path:e,value:t}){var n,r,o,a,i;switch(e.getContext().join(".")){case"loot_table.pools.entry":return d("label",null,null!=(r=null==(n=null==t?void 0:t.entries)?void 0:n.length)?r:0," entries");case"function.set_contents.entries.entry":case"loot_pool.entries.entry":return d("label",null,null!=(i=null==(o=null==t?void 0:t.name)?void 0:o.replace(/^minecraft:/,""))?i:null==(a=null==t?void 0:t.type)?void 0:a.replace(/^minecraft:/,""))}for(const s of Object.values(null!=t?t:{}))if("string"==typeof s)return d("label",null,s.replace(/^minecraft:/,""));return null}function Et(){const[e,t]=m(new Map),[n,r]=m(void 0);return{expand:e=>n=>{n.ctrlKey?(t(new Map),r(!0)):t((t=>new Map(t.set(e,!0))))},collapse:e=>n=>{n.ctrlKey?(t(new Map),r(!1)):t((t=>new Map(t.set(e,!1))))},isToggled:t=>{var r;return null!=(r=e.get(t))?r:n}}}function jt({path:e,node:t,value:n,lang:r}){const o=r=>{e.model.set(e,t.optional()&&n===r?void 0:r)};return d(O,null,d("button",{class:!1===n?"selected":"",onClick:()=>o(!1)},te(r,"false")),d("button",{class:!0===n?"selected":"",onClick:()=>o(!0)},te(r,"true")))}function Ot({path:e,config:t,integer:n,value:r}){var o;const[a,i]=m(null!=r?r:""),s=u(),l=t=>{s.current&&clearTimeout(s.current),s.current=setTimeout((()=>{e.model.set(e,t)}),500)};return d(O,null,d("input",{type:"text",value:a,onChange:e=>{const t=e.target.value,r=n?parseInt(t):parseFloat(t);i(t),l(r)},onBlur:()=>{i(null!=r?r:"")}}),(null==t?void 0:t.color)&&d("input",{type:"color",value:"#"+(null!=(o=null==r?void 0:r.toString(16).padStart(6,"0"))?o:"000000"),onChange:e=>{const t=e.target.value,n=parseInt(t.slice(1),16);i(n),l(n)}}),e.equals(new p.Path(["generator","seed"]))&&d("button",{onClick:()=>ie(e.model)},Y.sync))}function Lt({path:e,getValues:t,config:n,node:r,value:o,lang:a,states:i}){var s;const l=t=>{t.stopPropagation();const n=t.target.value;e.model.set(e,0===n.length?void 0:n)},c=t(),u=e.getContext().join(".");if(Ct.includes(u))return d("textarea",{value:null!=o?o:"",onChange:l});if(Pt(n)&&!n.additional||yt.includes(u)){let e=new p.Path([]);return Pt(n)&&"string"==typeof n.enum?e=e.contextPush(n.enum):Pt(n)||"resource"!==(null==n?void 0:n.validator)||"string"!=typeof n.params.pool||(e=e.contextPush(n.params.pool)),d("select",{value:null!=o?o:"",onChange:l},r.optional()&&d("option",{value:""},te(a,"unset")),c.map((t=>d("option",{value:t},Dt(a,e.contextPush(t.replace(/^minecraft:/,"")))))))}if(Pt(n)||"block_state_key"!==(null==n?void 0:n.validator)){const e=oe();return d(O,null,d("input",{value:null!=o?o:"",onChange:l,list:c.length>0?e:""}),c.length>0&&d("datalist",{id:e},c.map((e=>d("option",{value:e})))))}{const t=null==i?void 0:i[p.relativePath(e,n.params.id).get()],r=Object.keys(null!=(s=null==t?void 0:t.properties)?s:{});return d("select",{value:null!=o?o:"",onChange:l},r.map((e=>d("option",null,e))))}}const $t=$((function({label:e,schema:t,path:n,value:r,lang:o,states:a,ctx:i,children:l}){const c=t.type(n),u=t.category(n),m=n.getContext().join("."),[h,p]=J(),g=s({},i);delete g.index;const[f,v,_]=t.hook(Vt,n,r,o,a,g);return d("div",{class:`node ${c}-node`,"data-category":u},d("div",{class:"node-header"},d(Nt,{lang:o,path:n}),d(Tt,{lang:o,path:n}),l,f,d("label",{onContextMenu:e=>{e.preventDefault(),p()}},null!=e?e:Dt(o,n,`${n.last()}`),h&&d("div",{class:"node-menu"},d("div",{class:"menu-item"},d(H,{icon:"clippy",onClick:()=>navigator.clipboard.writeText(m)}),"Context:",d("span",{class:"menu-item-context"},m)))),v),_&&d("div",{class:"node-body"},_))}),((e,t)=>e.schema===t.schema&&e.lang===t.lang&&e.path.equals(t.path)&&fe(e.ctx,t.ctx)&&fe(e.value,t.value)));function Pt(e){return!!(null==e?void 0:e.enum)}function St(e){var t,n=0;for(t=0;te.path.startsWith(t))):t.model.errors.get(t,!0);if(0===o.length)return null;const a=te(e,o[0].error,...null!=(r=o[0].params)?r:[]);return Bt("node-error","issue_opened",a)}function Tt({lang:e,path:t}){const n=t.contextPush("help").getContext().join("."),r=te(e,n);return r===n?null:Bt("node-help","info",r)}const Bt=(e,t,n)=>{const[r,o]=J();return d("div",{class:`node-icon ${e}${r?" show":""}`,onClick:o},Y[t],d("span",{class:"icon-popup"},n))};function Ht({lang:e,model:t,blockStates:n,onError:r}){if(!t||!n)return d(O,null);const[o]=P((e=>{r(`Error rendering the tree: ${e.message}`),console.error(e)}));if(o)return d(O,null);const[,a]=m(0);return W(t,(()=>{a((e=>e+1))})),d("div",{class:"tree"},d(It,s({},{model:t,lang:e,blockStates:n})))}function Rt({lang:e}){const t=te.bind(null,e);return d("main",null,d("div",{class:"settings"},d("p",null,t("settings.fields.description")),d("ul",{class:"field-list"})))}function Ft({lang:e,changeTitle:t,version:n,onChangeVersion:r}){var o;const a=te.bind(null,e),[i,h]=m(null),[g,f]=P();if(g)return d("main",null,d(U,{error:`Something went wrong rendering the generator: ${g.message}`,onDismiss:f}));const v=le(w());if(!v)return d("main",null,d(U,{error:`Cannot find generator "${w()}"`}));c((()=>{h(null)}),[v.id,n]);const _=T.versions.filter((e=>Oe(e.id,v.minVersion))).map((e=>e.id));t(a("title.generator",a(v.id)),_),Oe(n,v.minVersion)||h(`The minimum version for this generator is ${v.minVersion}`);const[y,b]=m(null),[x,k]=m(null);c((()=>{b(null),async function(e){return(await je(e)).blockStates}(n).then((e=>k(e))),async function(e,t){var n;if(!Ae[t]||Ae[t].version!==e){const o=await je(e),a=null==(n=T.generators.find((e=>e.id===t)))?void 0:n.schema;if(!a)throw new Error(`Cannot find model ${t}`);try{const n=o.schemas.get(a),r=new p.DataModel(n,{wrapLists:!0});Ae[t]?r.reset(Ae[t].model.data,!1):(r.validate(!0),r.history=[JSON.stringify(r.data)]),Ae[t]={model:r,version:e}}catch(r){throw new Error(`Cannot get generator "${t}" for version "${e}": ${pe(r)}`)}}return Ae[t].model}(n,v.id).then((e=>b(e))).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id]),W(y,(()=>{h(null)}));const C=e=>{e.ctrlKey&&"z"===e.key?(N.generatorEvent("undo","Hotkey"),null==y||y.undo()):e.ctrlKey&&"y"===e.key&&(N.generatorEvent("redo","Hotkey"),null==y||y.redo())};c((()=>(document.addEventListener("keyup",C),()=>{document.removeEventListener("keyup",C)})),[y]);const[M,z]=m(""),[I,V]=m([]);c((()=>{(async function(e){return(await je(e)).collections})(n).then((e=>{const t=(null!=M?M:"").trim().split(" "),n=e.get(v.id).map((e=>e.slice(10))).filter((e=>t.every((t=>e.includes(t)))));n&&V(n)})).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id,M]);const[A,E]=m(window.innerWidth>820),[j,L]=m(0),[$,S]=m(0),[D,F]=m(0),[J,Z]=m(!1),X=u(void 0),[q,K]=m(!1),Q=mt.includes(v.id);q&&!Q&&K(!1);let ee=1;Q&&(ee+=1),A&&(ee+=2);return d(O,null,d("main",{class:q?"has-preview":""},d(B,{id:"data-pack-generator",type:"text"}),d("div",{class:"controls"},d(H,{icon:"upload",label:a("import"),onClick:()=>{N.generatorEvent("import"),E(!0),F(D+1)}}),d(G,{icon:"archive",label:a("presets"),relative:!1},d(R,{icon:"search",large:!0,value:M,onChange:z,doSelect:1}),d("div",{class:"result-list"},I.map((e=>d(H,{label:e,onClick:()=>{return t=e,N.generatorEvent("load-preset",t),void Me(n,null!=(r=v.path)?r:v.id,t).then((e=>{var t,n;const r=null==y?void 0:y.get(new p.Path(["generator","seed"]));void 0!==(null==(t=null==e?void 0:e.generator)?void 0:t.seed)&&void 0!==r&&(e.generator.seed=r,void 0!==(null==(n=e.generator.biome_source)?void 0:n.seed)&&(e.generator.biome_source.seed=r)),null==y||y.reset(p.DataModel.wrapLists(e),!1)}));var t,r}})))),0===I.length&&d(H,{label:a("no_presets")})),d(G,{icon:"tag",label:n},_.reverse().map((e=>d(H,{label:e,active:e===n,onClick:()=>r(e)})))),d(G,{icon:"kebab_horizontal"},d(H,{icon:"history",label:a("reset"),onClick:()=>{N.generatorEvent("reset"),null==y||y.reset(p.DataModel.wrapLists(y.schema.default()),!0)}}),d(H,{icon:"arrow_left",label:a("undo"),onClick:e=>{e.stopPropagation(),N.generatorEvent("undo","Menu"),null==y||y.undo()}}),d(H,{icon:"arrow_right",label:a("redo"),onClick:e=>{e.stopPropagation(),N.generatorEvent("redo","Menu"),null==y||y.redo()}}))),i&&d(U,{error:i,onDismiss:()=>h(null)}),d(Ht,l(s({},{lang:e,model:y,version:n,blockStates:x}),{onError:h}))),d("div",{class:"popup-actions",style:`--offset: -${10+50*ee}px;`},d("div",{class:"popup-action action-preview"+(Q?" shown":""),onClick:()=>{N.generatorEvent("toggle-preview",q?"hidden":"visible"),K(!q)}},q?Y.x_circle:Y.play),d("div",{class:"popup-action action-download"+(A?" shown":""),onClick:()=>{N.generatorEvent("download"),S($+1)}},Y.download),d("div",{class:`popup-action action-copy${A?" shown":""}${J?" active":""}`,onClick:()=>{N.generatorEvent("copy"),L(j+1)}},J?Y.check:Y.clippy),d("div",{class:"popup-action action-code shown",onClick:()=>{N.generatorEvent("toggle-output",A?"hidden":"visible"),E(!A),L(0),S(0),F(0)}},A?Y.chevron_right:Y.code)),d("div",{class:"popup-preview"+(q?" shown":"")},d(ht,l(s({},{lang:e,model:y,version:n,id:v.id}),{shown:q,onError:h}))),d("div",{class:"popup-source"+(A?" shown":"")},d(_t,l(s({},{lang:e,model:y,blockStates:x,doCopy:j,doDownload:$,doImport:D}),{name:null!=(o=v.schema)?o:"data",copySuccess:()=>{Z(!0),void 0!==X.current&&clearTimeout(X.current),X.current=setTimeout((()=>{Z(!1)}),2e3)},onError:h}))))}function Jt({lang:e,changeTitle:t}){const n=te.bind(null,e);return t(n("title.home")),d("main",null,d("div",{class:"home"},T.generators.filter((e=>!e.category)).map((e=>d(wt,{title:n(e.id),link:se(e.url)}))),d(wt,{title:n("worldgen"),link:"/worldgen/"}),d("hr",null),d(wt,{title:"Report Inspector",icon:"report",link:"https://misode.github.io/report/"},d("p",null,"Analyse your performance reports")),d(wt,{title:"Minecraft Sounds",icon:"sounds",link:"https://misode.github.io/sounds/"},d("p",null,"Browse through and mix all the vanilla sounds")),d(wt,{title:"Data Pack Upgrader",link:"https://misode.github.io/upgrader/"},d("p",null,"Convert your 1.16 data packs to 1.17"))))}function Wt({lang:e,changeTitle:t}){const n=te.bind(null,e);return t(n("title.generator_category",n("worldgen"))),d("main",null,d("div",{class:"home"},T.generators.filter((e=>"worldgen"===e.category)).map((e=>d(wt,{title:n(e.id),link:se(e.url)})))))}function Gt(){const[e,t]=m("en");c((()=>{(async()=>{const e=gt.getLanguage();await Promise.all([ne("en"),..."en"!==e?[ne(e)]:[]]),t(e)})()}),[]);const[n,r]=m(gt.getTheme());c((()=>{document.documentElement.setAttribute("data-theme",n)}),[n]);const[o,a]=m(gt.getVersion()),[i,u]=m(te(e,"title.home")),h=(e,t)=>{null!=t||(t=T.versions.map((e=>e.id))),t.splice(0,t.length-3),document.title=`${e} Minecraft ${t.join(", ")}`,u(e)};return d(O,null,d($e,s({},{lang:e,title:i,version:o,theme:n,language:e,changeLanguage:async e=>{ee[e]||await ne(e),N.setLanguage(e),gt.setLanguage(e),t(e)},changeTheme:e=>{N.setTheme(e),gt.setTheme(e),r(e)}})),d(D,{onChange:e=>{setTimeout((()=>N.pageview(se(e.url))))}},d(Jt,s({path:"/"},{lang:e,changeTitle:h})),d(Rt,s({path:"/settings/fields"},{lang:e,changeTitle:h})),d(Wt,s({path:"/worldgen"},{lang:e,changeTitle:h})),d(Ft,l(s({default:!0},{lang:e,version:o,changeTitle:h}),{onChangeVersion:e=>{N.setVersion(e),gt.setVersion(e),a(e)}}))))}S(d(Gt,null),document.body); -//# sourceMappingURL=index.6344f897.js.map diff --git a/assets/index.6344f897.js.map b/assets/index.6344f897.js.map deleted file mode 100644 index dff2a823..00000000 --- a/assets/index.6344f897.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.6344f897.js","sources":["../../src/app/Analytics.ts","../../src/app/components/Ad.tsx","../../src/app/components/Btn.tsx","../../src/app/components/BtnInput.tsx","../../src/app/hooks/useCanvas.ts","../../src/app/hooks/useFocus.ts","../../src/app/hooks/useModel.ts","../../src/app/components/BtnMenu.tsx","../../src/app/components/Octicon.tsx","../../src/app/components/ErrorPanel.tsx","../../vite/preload-helper","../../src/app/Locales.ts","../../src/app/Utils.ts","../../src/app/DataFetcher.ts","../../src/app/Schemas.ts","../../src/app/components/Header.tsx","../../src/app/components/Icons.tsx","../../src/app/previews/BiomeSource.ts","../../src/app/previews/Decorator.ts","../../src/app/previews/noise/NoiseChunkGenerator.ts","../../src/app/previews/NoiseSettings.ts","../../src/app/components/previews/BiomeSourcePreview.tsx","../../src/app/components/previews/DecoratorPreview.tsx","../../src/app/components/previews/NoiseSettingsPreview.tsx","../../src/app/components/PreviewPanel.tsx","../../src/app/schema/transformOutput.ts","../../src/app/Store.ts","../../src/app/components/SourcePanel.tsx","../../src/app/components/ToolCard.tsx","../../src/app/schema/renderHtml.tsx","../../src/app/components/Tree.tsx","../../src/app/pages/FieldSettings.tsx","../../src/app/pages/Generator.tsx","../../src/app/pages/Home.tsx","../../src/app/pages/Worldgen.tsx","../../src/app/Main.tsx"],"sourcesContent":["export namespace Analytics {\n\tconst ID_SITE = 'Site'\n\tconst ID_GENERATOR = 'Generator'\n\n\tconst DIM_THEME = 1\n\tconst DIM_VERSION = 3\n\tconst DIM_LANGUAGE = 4\n\tconst DIM_PREVIEW = 5\n\n\tfunction event(category: string, action: string, label?: string) {\n\t\tga('send', 'event', category, action, label)\n\t}\n\n\tfunction dimension(index: number, value: string) {\n\t\tga('set', `dimension${index}`, value)\n\t}\n\n\texport function pageview(page: string) {\n\t\tga('set', 'page', page)\n\t\tga('send', 'pageview')\n\t}\n\n\texport function setLanguage(language: string) {\n\t\tdimension(DIM_LANGUAGE, language)\n\t\tevent(ID_SITE, 'set-language', language)\n\t}\n\n\texport function setTheme(theme: string) {\n\t\tdimension(DIM_THEME, theme)\n\t\tevent(ID_SITE, 'set-theme', theme)\n\t}\n\n\texport function setVersion(version: string) {\n\t\tdimension(DIM_VERSION, version)\n\t\tevent(ID_GENERATOR, 'set-version', version)\n\t}\n\n\texport function setPreview(preview: string) {\n\t\tdimension(DIM_PREVIEW, preview)\n\t\tevent(ID_GENERATOR, 'set-preview', preview)\n\t}\n\n\texport function generatorEvent(action: string, label?: string) {\n\t\tevent(ID_GENERATOR, action, label)\n\t}\n}\n","import { useEffect } from 'preact/hooks'\n\ndeclare const ethicalads: any\n\ntype AdProps = {\n\ttype: 'text' | 'image',\n\tid: string,\n}\nexport function Ad({ type, id }: AdProps) {\n\tuseEffect(() => {\n\t\tdocument.getElementById('ad-placeholder')?.remove()\n\t\tif ('ethicalads' in window) {\n\t\t\tethicalads.load()\n\t\t}\n\t}, [])\n\n\treturn
\n}\n","import { Octicon } from '.'\n\ntype BtnProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tactive?: boolean,\n\tclass?: string,\n\tonClick?: (event: MouseEvent) => unknown,\n}\nexport function Btn({ icon, label, active, class: class_, onClick }: BtnProps) {\n\treturn
\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t
\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Octicon } from '.'\n\ntype BtnInputProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tlarge?: boolean,\n\tdoSelect?: number,\n\tvalue?: string,\n\tonChange?: (value: string) => unknown,\n}\nexport function BtnInput({ icon, label, large, doSelect, value, onChange }: BtnInputProps) {\n\tconst onInput = onChange === undefined ? () => {} : (e: any) => {\n\t\tconst value = (e.target as HTMLInputElement).value\n\t\tonChange?.(value)\n\t}\n\n\tconst ref = useRef(null)\n\tuseEffect(() => {\n\t\tif (doSelect && ref.current) {\n\t\t\tref.current.select()\n\t\t}\n\t}, [doSelect])\n\n\treturn
e.stopPropagation()}>\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t\t\n\t
\n}\n","import type { Inputs } from 'preact/hooks'\nimport { useEffect, useRef } from 'preact/hooks'\n\ntype Vec2 = [number, number]\n\nexport function useCanvas({ size, draw, onDrag, onHover, onLeave }: {\n\tsize: () => Vec2,\n\tdraw: (img: ImageData) => Promise,\n\tonDrag?: (dx: number, dy: number) => Promise,\n\tonHover?: (x: number, y: number) => unknown,\n\tonLeave?: () => unknown,\n}, inputs?: Inputs) {\n\tconst canvas = useRef(null)\n\n\tconst dragStart = useRef()\n\tconst dragRequest = useRef()\n\tconst dragPending = useRef([0, 0])\n\tconst dragBusy = useRef(false)\n\n\tuseEffect(() => {\n\t\tconst onMouseDown = (e: MouseEvent) => {\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseMove = (e: MouseEvent) => {\n\t\t\tif (dragStart.current === undefined) {\n\t\t\t\tconst x = e.offsetX / canvas.current.clientWidth\n\t\t\t\tconst y = e.offsetY / canvas.current.clientHeight\n\t\t\t\tonHover?.(x, y)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!onDrag) return\n\t\t\tconst dx = e.offsetX - dragStart.current[0]\n\t\t\tconst dy = e.offsetY - dragStart.current[1]\n\t\t\tif (!(dx === 0 && dy === 0)) {\n\t\t\t\tdragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]\n\t\t\t\tif (!dragBusy.current) {\n\t\t\t\t\tcancelAnimationFrame(dragRequest.current)\n\t\t\t\t\tdragRequest.current = requestAnimationFrame(async () => {\n\t\t\t\t\t\tdragBusy.current = true\n\t\t\t\t\t\tconst dx = dragPending.current[0] / canvas.current.clientWidth\n\t\t\t\t\t\tconst dy = dragPending.current[1] / canvas.current.clientHeight\n\t\t\t\t\t\tdragPending.current = [0, 0]\n\t\t\t\t\t\tawait onDrag?.(dx, dy)\n\t\t\t\t\t\tdragBusy.current = false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseUp = () => {\n\t\t\tdragStart.current = undefined\n\t\t}\n\t\tconst onMouseLeave = () => {\n\t\t\tonLeave?.()\n\t\t}\n\n\t\tcanvas.current.addEventListener('mousedown', onMouseDown)\n\t\tcanvas.current.addEventListener('mousemove', onMouseMove)\n\t\tcanvas.current.addEventListener('mouseleave', onMouseLeave)\n\t\tdocument.body.addEventListener('mouseup', onMouseUp)\n\n\t\treturn () => {\n\t\t\tcanvas.current.removeEventListener('mousedown', onMouseDown)\n\t\t\tcanvas.current.removeEventListener('mousemove', onMouseMove)\n\t\t\tcanvas.current.removeEventListener('mouseleave', onMouseLeave)\n\t\t\tdocument.body.removeEventListener('mouseup', onMouseUp)\n\t\t}\n\t}, [...inputs ?? [], canvas.current])\n\n\tconst redraw = useRef<() => Promise>()\n\tconst redrawCount = useRef(0)\n\tredraw.current = async () => {\n\t\tconst ctx = canvas.current.getContext('2d')!\n\t\tconst s = size()\n\t\tcanvas.current.width = s[0]\n\t\tcanvas.current.height = s[1]\n\t\tconst img = ctx.getImageData(0, 0, s[0], s[1])\n\t\tconst ownCount = redrawCount.current += 1\n\t\tawait draw(img)\n\t\tif (ownCount === redrawCount.current) {\n\t\t\tctx.putImageData(img, 0, 0)\n\t\t}\n\t}\n\n\treturn {\n\t\tcanvas,\n\t\tredraw: redraw.current,\n\t}\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nexport function useFocus(): [boolean, () => unknown] {\n\tconst [active, setActive] = useState(false)\n\n\tconst hider = () => {\n\t\tsetActive(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (active) {\n\t\t\tdocument.body.addEventListener('click', hider)\n\t\t\tdocument.body.addEventListener('contextmenu', hider)\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener('click', hider)\n\t\t\tdocument.body.removeEventListener('contextmenu', hider)\n\t\t}\n\t}, [active])\n\n\treturn [active, () => setActive(true)]\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useEffect } from 'preact/hooks'\n\nexport function useModel(model: DataModel | undefined | null, invalidated: (model: DataModel) => unknown) {\n\tconst listener = {\n\t\tinvalidated() {\n\t\t\tif (model) {\n\t\t\t\tinvalidated(model)\n\t\t\t}\n\t\t},\n\t}\n\n\tuseEffect(() => {\n\t\tmodel?.addListener(listener)\n\t\treturn () => {\n\t\t\tmodel?.removeListener(listener)\n\t\t}\n\t}, [model])\n}\n","import type { ComponentChildren } from 'preact'\nimport type { Octicon } from '.'\nimport { Btn } from '.'\nimport { useFocus } from '../hooks'\n\ntype BtnMenuProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\trelative?: boolean,\n\tchildren: ComponentChildren,\n}\nexport function BtnMenu({ icon, label, relative, children }: BtnMenuProps) {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t\n\t\t{active &&
\n\t\t\t{children}\n\t\t
}\n\t
\n}\n","export const Octicon = {\n\tarchive: ,\n\tarrow_left: ,\n\tarrow_right: ,\n\tcheck: ,\n\tchevron_down: ,\n\tchevron_right: ,\n\tchevron_up: ,\n\tclippy: ,\n\tcode: ,\n\tdash: ,\n\tdevice_desktop: ,\n\tdownload: ,\n\teye: ,\n\teye_closed: ,\n\tgear: ,\n\tglobe: ,\n\thistory: ,\n\tinfo: ,\n\tissue_opened: ,\n\tkebab_horizontal: ,\n\tlink: ,\n\tmark_github: ,\n\tmoon: ,\n\tplay: ,\n\tplus: ,\n\tplus_circle: ,\n\tsearch: ,\n\tsun: ,\n\tsync: ,\n\ttag: ,\n\tthree_bars: ,\n\ttrashcan: ,\n\tunfold: ,\n\tupload: ,\n\tx: ,\n\tx_circle: ,\n}\n","import { Octicon } from './Octicon'\n\ntype ErrorPanelProps = {\n\terror: string,\n\tonDismiss?: () => unknown,\n}\nexport function ErrorPanel({ error, onDismiss }: ErrorPanelProps) {\n\treturn
\n\t\t{onDismiss &&
{Octicon.x}
}\n\t\t

{error}

\n\t\t

If you think this is a bug, you can report it on GitHub

\n\t
\n}\n","let scriptRel;const seen = {};export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps) {\n return baseModule();\n }\n // @ts-ignore\n if (scriptRel === undefined) {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n scriptRel =\n relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import config from '../config.json'\nimport English from '../locales/en.json'\n\nexport type Localize = (key: string, ...params: string[]) => string\n\ninterface Locale {\n\t[key: string]: string\n}\n\nexport const Locales: {\n\t[key: string]: Locale,\n} = {\n\tfallback: English,\n}\n\nfunction resolveLocaleParams(value: string, params?: string[]): string {\n\treturn value.replace(/%\\d+%/g, match => {\n\t\tconst index = parseInt(match.slice(1, -1))\n\t\treturn params?.[index] !== undefined ? params[index] : match\n\t})\n}\n\nexport function locale(language: string, key: string, ...params: string[]): string {\n\tconst value: string | undefined = Locales[language]?.[key]\n\t\t?? Locales.en?.[key] ?? Locales.fallback[key] ?? key\n\treturn resolveLocaleParams(value, params)\n}\n\nexport async function loadLocale(language: string) {\n\tconst langConfig = config.languages.find(lang => lang.code === language)\n\tif (!langConfig) return\n\tconst data = await import(`../locales/${language}.json`)\n\tconst schema = langConfig.schemas !== false\n\t\t&& await import(`../../node_modules/@mcschema/locales/src/${language}.json`)\n\tLocales[language] = { ...data.default, ...schema.default }\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport rfdc from 'rfdc'\nimport config from '../config.json'\n\nexport function isPromise(obj: any): obj is Promise {\n\treturn typeof (obj as any)?.then === 'function' \n}\n\nconst dec2hex = (dec: number) => ('0' + dec.toString(16)).substr(-2)\n\nexport function hexId(length = 12) {\n\tvar arr = new Uint8Array(length / 2)\n\twindow.crypto.getRandomValues(arr)\n\treturn Array.from(arr, dec2hex).join('')\n}\n\nexport function randomSeed() {\n\treturn BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n}\n\nexport function newSeed(model: DataModel) {\n\tconst seed = Math.floor(Math.random() * (4294967296)) - 2147483648\n\tmodel.set(new Path(['generator', 'seed']), seed, true)\n\tmodel.set(new Path(['generator', 'biome_source', 'seed']), seed)\n}\n\nexport function htmlEncode(str: string) {\n\treturn str.replace(/&/g, '&').replace(//g, '>')\n\t\t.replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/')\n}\n\nexport function hashString(s: string) {\n\tlet h = 0\n\tfor(let i = 0; i < s.length; i++)\n\t\th = Math.imul(31, h) + s.charCodeAt(i) | 0\n\treturn h\n}\n\nexport function cleanUrl(url: string) {\n\treturn `/${url}/`.replaceAll('//', '/')\n}\n\nexport function getGenerator(url: string) {\n\tconst trimmedUrl = url.replace(/^\\//, '').replace(/\\/$/, '')\n\treturn config.generators.find(g => g.url === trimmedUrl)\n}\n\nexport function stringToColor(str: string): [number, number, number] {\n\tconst h = Math.abs(hashString(str))\n\treturn [h % 256, (h >> 8) % 256, (h >> 16) % 256]\n}\n\nexport function square(a: number) {\n\treturn a * a\n}\n\nexport function clamp(a: number, b: number, c: number) {\n\treturn Math.max(a, Math.min(b, c))\n}\n\nexport function clampedLerp(a: number, b: number, c: number): number {\n\tif (c < 0) {\n\t\treturn a\n\t} else if (c > 1) {\n\t\treturn b\n\t} else {\n\t\treturn lerp(c, a, b)\n\t}\n}\n\nexport function lerp(a: number, b: number, c: number): number {\n\treturn b + a * (c - b)\n}\n\nexport function lerp2(a: number, b: number, c: number, d: number, e: number, f: number): number {\n\treturn lerp(b, lerp(a, c, d), lerp(a, e, f))\n}\n\nexport function lerp3(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) {\n\treturn lerp(c, lerp2(a, b, d, e, f, g), lerp2(a, b, h, i, j, k))\n}\n\nexport function smoothstep(x: number): number {\n\treturn x * x * x * (x * (x * 6 - 15) + 10)\n}\n\nexport function message(e: unknown): string {\n\tif (e instanceof Error) return e.message\n\treturn `${e}`\n}\n\nexport const deepClone = rfdc()\n\n/**\n * MIT License\n * \n * Copyright (c) 2017 Evgeny Poberezkin\n * \n * https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE\n */\nexport function deepEqual(a: any, b: any) {\n\tif (a === b) return true\n\n\tif (a && b && typeof a == 'object' && typeof b == 'object') {\n\t\tif (a.constructor !== b.constructor) return false\n\t\tlet length, i\n\t\tif (Array.isArray(a)) {\n\t\t\tlength = a.length\n\t\t\tif (length != b.length) return false\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tif (!deepEqual(a[i], b[i])) return false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\t\tconst keys = Object.keys(a)\n\t\tlength = keys.length\n\t\tif (length !== Object.keys(b).length) return false\n\t\tfor (i = length; i-- !== 0;)\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\t\tfor (i = length; i-- !== 0;) {\n\t\t\tconst key = keys[i]\n\t\t\tif (!deepEqual(a[key], b[key])) return false\n\t\t}\n\t\treturn true\n\t}\n\treturn a !== a && b !== b\n}\n\nexport function unwrapLists(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(v => unwrapLists(v.node))\n\t} else if (typeof value === 'object' && value !== null) {\n\t\tconst res: Record = {}\n\t\tObject.entries(value).map(([k, v]) => {\n\t\t\tres[k] = unwrapLists(v)\n\t\t})\n\t\treturn res\n\t} else {\n\t\treturn value\n\t}\n}\n","import type { CollectionRegistry } from '@mcschema/core'\nimport config from '../config.json'\nimport type { BlockStateRegistry, VersionId } from './Schemas'\nimport { checkVersion } from './Schemas'\nimport { message } from './Utils'\n\n['1.15', '1.16', '1.17'].forEach(v => localStorage.removeItem(`cache_${v}`))\n\nconst CACHE_NAME = 'misode-v1'\n\ntype VersionRef = 'mcdata_master' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'\n\ntype Version = {\n\tid: string,\n\trefs: Partial<{ [key in VersionRef]: string }>,\n\tdynamic?: boolean,\n}\n\ndeclare var __MCDATA_MASTER_HASH__: string\ndeclare var __VANILLA_DATAPACK_SUMMARY_HASH__: string\n\nconst mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'\nconst vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'\n\nconst refs: {\n\tid: VersionRef,\n\thash: string,\n\turl: string,\n}[] = [\n\t{\n\t\tid: 'mcdata_master',\n\t\thash: __MCDATA_MASTER_HASH__,\n\t\turl: mcdataUrl,\n\t},\n\t{\n\t\tid: 'vanilla_datapack_summary',\n\t\thash: __VANILLA_DATAPACK_SUMMARY_HASH__,\n\t\turl: vanillaDatapackUrl,\n\t},\n]\n\nexport async function fetchData(versionId: string, collectionTarget: CollectionRegistry, blockStateTarget: BlockStateRegistry) {\n\tconst version = config.versions.find(v => v.id === versionId) as Version | undefined\n\tif (!version) {\n\t\tconsole.error(`[fetchData] Unknown version ${version} in ${JSON.stringify(config.versions)}`)\n\t\treturn\n\t}\n\tconsole.debug(`[fetchData] ${JSON.stringify(version)}`)\n\n\tif (version.dynamic) {\n\t\tawait Promise.all(refs\n\t\t\t.filter(r => localStorage.getItem(`cached_${r.id}`) !== r.hash)\n\t\t\t.map(async r => {\n\t\t\t\tconsole.debug(`[deleteMatching] ${r.id} '${localStorage.getItem(`cached_${r.id}`)}' < '${r.hash}' ${r.url}/${version.refs[r.id]}`)\n\t\t\t\tawait deleteMatching(url => url.startsWith(`${r.url}/${version.refs[r.id]}`))\n\t\t\t\tconsole.debug(`[deleteMatching] Done! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t\tlocalStorage.setItem(`cached_${r.id}`, r.hash)\n\t\t\t\tconsole.debug(`[deleteMatching] Set! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t}))\n\t}\n\n\tawait Promise.all([\n\t\tfetchRegistries(version, collectionTarget),\n\t\tfetchBlockStateMap(version, blockStateTarget),\n\t\tfetchDynamicRegistries(version, collectionTarget),\n\t])\n}\n\nasync function fetchRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => !r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, undefined, '1.15')) {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/registries.json`\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: {[id: string]: string[]} = {}\n\t\t\t\tObject.keys(data).forEach(k => {\n\t\t\t\t\tres[k.slice(10)] = Object.keys(data[k].entries)\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id] ?? [])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching registries:', message(e))\n\t\t}\n\t} else {\n\t\tawait Promise.all(registries.map(async r => {\n\t\t\ttry {\n\t\t\t\tconst url = r.path\n\t\t\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/${r.path}/data.min.json`\n\t\t\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/registries/${r.id}/data.min.json`\n\t\t\t\ttarget.register(r.id, await getData(url, v => v.values))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(`Error occurred while fetching registry ${r.id}:`, message(e))\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function fetchBlockStateMap(version: Version, target: BlockStateRegistry) {\n\tconsole.debug(`[fetchBlockStateMap] ${version.id}`)\n\tif (checkVersion(version.id, undefined, '1.16')) {\n\t\tconst url = (checkVersion(version.id, undefined, '1.15'))\n\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/blocks.json`\n\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/data.min.json`\n\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: BlockStateRegistry = {}\n\t\t\t\tObject.keys(data).forEach(b => {\n\t\t\t\t\tres[b] = {\n\t\t\t\t\t\tproperties: data[b].properties,\n\t\t\t\t\t\tdefault: data[b].states.find((s: any) => s.default).properties,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t} else {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t}\n}\n\nasync function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchDynamicRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, '1.16')) {\n\t\tconst url = `${vanillaDatapackUrl}/${version.refs.vanilla_datapack_summary}/summary/flattened.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching dynamic registries:', message(e))\n\t\t}\n\t}\n}\n\nexport async function fetchPreset(version: VersionId, registry: string, id: string) {\n\tconsole.debug(`[fetchPreset] ${registry} ${id}`)\n\tconst versionData = config.versions.find(v => v.id === version)!\n\ttry {\n\t\tconst url = `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`\n\t\tconst res = await fetch(url)\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tconsole.warn(`Error occurred while fetching ${registry} preset ${id}:`, message(e))\n\t}\n}\n\nasync function getData(url: string, fn: (v: any) => T = (v: any) => v): Promise {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[getData] Opened cache ${CACHE_NAME} ${url}`)\n\t\tconst cacheResponse = await cache.match(url)\n \n\t\tif (cacheResponse && cacheResponse.ok) {\n\t\t\tconsole.debug(`[getData] Retrieving cached data ${url}`)\n\t\t\treturn await cacheResponse.json()\n\t\t}\n \n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\tawait cache.put(url, new Response(JSON.stringify(responseData)))\n\t\treturn responseData\n\t} catch (e) {\n\t\tconsole.warn(`[getData] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\treturn responseData\n\t}\n}\n\nasync function deleteMatching(matches: (url: string) => boolean) {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[deleteMatching] Opened cache ${CACHE_NAME}`)\n\t\tconst promises: Promise[] = []\n \n\t\tfor (const request of await cache.keys()) {\n\t\t\tif (matches(request.url)) {\n\t\t\t\tpromises.push(cache.delete(request))\n\t\t\t}\n\t\t}\n\t\tconsole.debug(`[deleteMatching] Removing ${promises.length} cache objects...`)\n\t\tawait Promise.all(promises)\n\t} catch (e) {\n\t\tconsole.warn(`[deleteMatching] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\t}\n}\n","import type { CollectionRegistry, SchemaRegistry } from '@mcschema/core'\nimport { DataModel } from '@mcschema/core'\nimport * as java15 from '@mcschema/java-1.15'\nimport * as java16 from '@mcschema/java-1.16'\nimport * as java17 from '@mcschema/java-1.17'\nimport * as java18 from '@mcschema/java-1.18'\nimport config from '../config.json'\nimport { fetchData } from './DataFetcher'\nimport { message } from './Utils'\n\nexport const VersionIds = ['1.15', '1.16', '1.17', '1.18'] as const\nexport type VersionId = typeof VersionIds[number]\n\nexport type BlockStateRegistry = {\n\t[block: string]: {\n\t\tproperties?: {\n\t\t\t[key: string]: string[],\n\t\t},\n\t\tdefault?: {\n\t\t\t[key: string]: string,\n\t\t},\n\t},\n}\n\ntype VersionData = {\n\tcollections: CollectionRegistry,\n\tschemas: SchemaRegistry,\n\tblockStates: BlockStateRegistry,\n}\nconst Versions: Record> = {}\n\ntype ModelData = {\n\tmodel: DataModel,\n\tversion: VersionId,\n}\nconst Models: Record = {}\n\nconst versionGetter: {\n\t[versionId in VersionId]: {\n\t\tgetCollections: () => CollectionRegistry,\n\t\tgetSchemas: (collections: CollectionRegistry) => SchemaRegistry,\n\t}\n} = {\n\t1.15: java15,\n\t1.16: java16,\n\t1.17: java17,\n\t1.18: java18,\n}\n\nasync function getVersion(id: VersionId): Promise {\n\tif (!Versions[id]) {\n\t\tVersions[id] = (async () => {\n\t\t\ttry {\n\t\t\t\tconst collections = versionGetter[id].getCollections()\n\t\t\t\tconst blockStates: BlockStateRegistry = {}\n\t\t\t\tawait fetchData(id, collections, blockStates)\n\t\t\t\tconst schemas = versionGetter[id].getSchemas(collections)\n\t\t\t\tVersions[id] = { collections, schemas, blockStates }\n\t\t\t\treturn Versions[id]\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error(`Cannot get version \"${id}\": ${message(e)}`)\n\t\t\t}\n\t\t})()\n\t\treturn Versions[id]\n\t}\n\treturn Versions[id]\n}\n\nexport async function getModel(version: VersionId, id: string): Promise {\n\tif (!Models[id] || Models[id].version !== version) {\n\t\tconst versionData = await getVersion(version)\n\t\tconst schemaName = config.generators.find(g => g.id === id)?.schema\n\t\tif (!schemaName) {\n\t\t\tthrow new Error(`Cannot find model ${id}`)\n\t\t}\n\t\ttry {\n\t\t\tconst schema = versionData.schemas.get(schemaName)\n\t\t\tconst model = new DataModel(schema, { wrapLists: true })\n\t\t\tif (Models[id]) {\n\t\t\t\tmodel.reset(Models[id].model.data, false)\n\t\t\t} else {\n\t\t\t\tmodel.validate(true)\n\t\t\t\tmodel.history = [JSON.stringify(model.data)]\n\t\t\t}\n\t\t\tModels[id] = { model, version }\n\t\t} catch (e) {\n\t\t\tthrow new Error(`Cannot get generator \"${id}\" for version \"${version}\": ${message(e)}`)\n\t\t}\n\t}\n\treturn Models[id].model\n}\n\nexport async function getCollections(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.collections\n}\n\nexport async function getBlockStates(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.blockStates\n}\n\nexport function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {\n\tconst version = config.versions.findIndex(v => v.id === versionId)\n\tconst minVersion = minVersionId ? config.versions.findIndex(v => v.id === minVersionId) : 0\n\tconst maxVersion = maxVersionId ? config.versions.findIndex(v => v.id === maxVersionId) : config.versions.length - 1\n\treturn minVersion <= version && version <= maxVersion\n}\n","import { getCurrentUrl, Link, route } from 'preact-router'\nimport { Btn, BtnMenu, Icons, Octicon } from '.'\nimport config from '../../config.json'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { cleanUrl, getGenerator } from '../Utils'\n\nconst Themes: Record = {\n\tsystem: 'device_desktop',\n\tdark: 'moon',\n\tlight: 'sun',\n}\n\ntype HeaderProps = {\n\tlang: string,\n\ttitle: string,\n\tversion: VersionId,\n\ttheme: string,\n\tchangeTheme: (theme: string) => unknown,\n\tlanguage: string,\n\tchangeLanguage: (language: string) => unknown,\n}\nexport function Header({ lang, title, version, theme, changeTheme, language, changeLanguage }: HeaderProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst gen = getGenerator(getCurrentUrl())\n\n\treturn
\n\t\t
\n\t\t\t{Icons.home}\n\t\t\t

{title}

\n\t\t\t{gen && \n\t\t\t\t{config.generators\n\t\t\t\t\t.filter(g => g.category === gen?.category && checkVersion(version, g.minVersion))\n\t\t\t\t\t.map(g =>\n\t\t\t\t\t\t route(cleanUrl(g.url))} />\n\t\t\t\t\t)}\n\t\t\t}\n\t\t
\n\t\t\n\t
\n}\n","export const Icons = {\n\thome: ,\n\treport: ,\n\tsounds: ,\n}\n","import type { BiomeSource, Climate, NoiseOctaves } from 'deepslate'\nimport { FixedBiome, MultiNoise, NoiseGeneratorSettings, NoiseSampler, NormalNoise, Random } from 'deepslate'\nimport { fetchPreset } from '../DataFetcher'\nimport type { VersionId } from '../Schemas'\nimport { clamp, deepClone, deepEqual, square, stringToColor, unwrapLists } from '../Utils'\n\ntype BiomeColors = Record\ntype BiomeSourceOptions = {\n\toctaves: NoiseOctaves,\n\tbiomeColors: BiomeColors,\n\toffset: [number, number],\n\tscale: number,\n\tres: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nlet cacheState: any\nlet biomeSourceCache: BiomeSource\nlet climateSamplerCache: Climate.Sampler\n\nexport async function biomeMap(state: any, img: ImageData, options: BiomeSourceOptions) {\n\tconst { biomeSource, climateSampler } = await getCached(state, options)\n\n\tconst data = img.data\n\tconst ox = -options.offset[0] - 100 + options.res / 2\n\tconst oz = -options.offset[1] - 100 + options.res / 2\n\tconst row = img.width * 4 / options.res\n\tconst col = 4 / options.res\n\tfor (let x = 0; x < 200; x += options.res) {\n\t\tfor (let z = 0; z < 200; z += options.res) {\n\t\t\tconst i = z * row + x * col\n\t\t\tconst worldX = (x + ox) * options.scale\n\t\t\tconst worldZ = (z + oz) * options.scale\n\t\t\tconst b = biomeSource.getBiome(worldX, 64, worldZ, climateSampler)\n\t\t\tconst color = getBiomeColor(b, options.biomeColors)\n\t\t\tdata[i] = color[0]\n\t\t\tdata[i + 1] = color[1]\n\t\t\tdata[i + 2] = color[2]\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nexport async function getBiome(state: any, x: number, z: number, options: BiomeSourceOptions): Promise {\n\tconst { biomeSource, climateSampler } = await getCached(state, options)\n\n\tconst [xx, zz] = toWorld([x, z], options)\n\treturn biomeSource.getBiome(xx, 64, zz, climateSampler)\n}\n\nasync function getCached(state: any, options: BiomeSourceOptions): Promise<{ biomeSource: BiomeSource, climateSampler: Climate.Sampler }> {\n\tconst newState = [state, options.octaves, `${options.seed}`, options.version]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\n\t\tbiomeSourceCache = await getBiomeSource(state, options)\n\n\t\tconst settings = NoiseGeneratorSettings.fromJson({ octaves: options.octaves })\n\t\tconst noiseSampler = new NoiseSampler(4, 4, 32, biomeSourceCache, settings.noise, options.octaves, options.seed)\n\t\tclimateSamplerCache = noiseSampler.getClimate.bind(noiseSampler)\n\t}\n\treturn {\n\t\tbiomeSource: biomeSourceCache,\n\t\tclimateSampler: climateSamplerCache,\n\t} \n}\n\nasync function getBiomeSource(state: any, options: BiomeSourceOptions): Promise {\n\tswitch (state?.type?.replace(/^minecraft:/, '')) {\n\t\tcase 'fixed':\n\t\t\treturn new FixedBiome(state.biome as string)\n\n\t\tcase 'checkerboard':\n\t\t\tconst shift = (state.scale ?? 2) + 2\n\t\t\tconst numBiomes = state.biomes?.length ?? 0\n\t\t\treturn {\n\t\t\t\tgetBiome(x: number, _y: number, z: number) {\n\t\t\t\t\tconst i = (((x >> shift) + (z >> shift)) % numBiomes + numBiomes) % numBiomes\n\t\t\t\t\treturn (state.biomes?.[i].node as string)\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase 'multi_noise':\n\t\t\tswitch(state.preset?.replace(/^minecraft:/, '')) {\n\t\t\t\tcase 'nether':\n\t\t\t\t\tstate = options.version === '1.18' ? NetherPreset18 : NetherPreset\n\t\t\t\t\tbreak\n\t\t\t\tcase 'overworld':\n\t\t\t\t\tstate = options.version === '1.18' ? await OverworldPreset18() : state\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t\tstate = unwrapLists(state)\n\t\t\tif (options.version === '1.18') {\n\t\t\t\treturn MultiNoise.fromJson(state)\n\t\t\t} else {\n\t\t\t\tconst noise = ['altitude', 'temperature', 'humidity', 'weirdness']\n\t\t\t\t\t.map((id, i) => {\n\t\t\t\t\t\tconst config = state[`${id}_noise`]\n\t\t\t\t\t\tconfig.firstOctave = clamp(config.firstOctave ?? -7, -100, -1)\n\t\t\t\t\t\treturn new NormalNoise(new Random(options.seed + BigInt(i)), config)\n\t\t\t\t\t})\n\t\t\t\tif (!Array.isArray(state.biomes) || state.biomes.length === 0) {\n\t\t\t\t\treturn new FixedBiome('unknown')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x: number, _y: number, z: number): string {\n\t\t\t\t\t\tconst n = noise.map(n => n.sample(x, z, 0))\n\t\t\t\t\t\tlet minDist = Infinity\n\t\t\t\t\t\tlet minBiome = ''\n\t\t\t\t\t\tfor (const { biome, parameters: p } of state.biomes) {\n\t\t\t\t\t\t\tconst dist = square(p.altitude - n[0]) + square(p.temperature - n[1]) + square(p.humidity - n[2]) + square(p.weirdness - n[3]) + square(p.offset)\n\t\t\t\t\t\t\tif (dist < minDist) {\n\t\t\t\t\t\t\t\tminDist = dist\n\t\t\t\t\t\t\t\tminBiome = biome\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn minBiome\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t}\n\tthrow new Error('Unknown biome source')\n}\n\nfunction getBiomeColor(biome: string, biomeColors: BiomeColors) {\n\tif (!biome) {\n\t\treturn [128, 128, 128]\n\t}\n\tconst color = biomeColors[biome] ?? VanillaColors[biome]\n\tif (color === undefined) {\n\t\treturn stringToColor(biome)\n\t}\n\treturn color\n}\n\nfunction toWorld([x, z]: [number, number], options: BiomeSourceOptions) {\n\tconst xx = (x - options.offset[0] - 100 + options.res / 2) * options.scale\n\tconst zz = (z - options.offset[1] - 100 + options.res / 2) * options.scale\n\treturn [xx, zz]\n}\n\nconst VanillaColors: Record = {\n\t'minecraft:badlands': [217,69,21],\n\t'minecraft:badlands_plateau': [202,140,101],\n\t'minecraft:bamboo_jungle': [118,142,20],\n\t'minecraft:bamboo_jungle_hills': [59,71,10],\n\t'minecraft:basalt_deltas': [64,54,54],\n\t'minecraft:beach': [250,222,85],\n\t'minecraft:birch_forest': [48,116,68],\n\t'minecraft:birch_forest_hills': [31,95,50],\n\t'minecraft:cold_ocean': [32,32,112],\n\t'minecraft:crimson_forest': [221,8,8],\n\t'minecraft:dark_forest': [64,81,26],\n\t'minecraft:dark_forest_hills': [104,121,66],\n\t'minecraft:deep_cold_ocean': [32,32,56],\n\t'minecraft:deep_frozen_ocean': [64,64,144],\n\t'minecraft:deep_lukewarm_ocean': [0,0,64],\n\t'minecraft:deep_ocean': [0,0,48],\n\t'minecraft:deep_warm_ocean': [0,0,80],\n\t'minecraft:desert': [250,148,24],\n\t'minecraft:desert_hills': [210,95,18],\n\t'minecraft:desert_lakes': [255,188,64],\n\t'minecraft:end_barrens': [128,128,255],\n\t'minecraft:end_highlands': [128,128,255],\n\t'minecraft:end_midlands': [128,128,255],\n\t'minecraft:eroded_badlands': [255,109,61],\n\t'minecraft:flower_forest': [45,142,73],\n\t'minecraft:forest': [5,102,33],\n\t'minecraft:frozen_ocean': [112,112,214],\n\t'minecraft:frozen_river': [160,160,255],\n\t'minecraft:giant_spruce_taiga': [129,142,121],\n\t'minecraft:giant_spruce_taiga_hills': [109,119,102],\n\t'minecraft:giant_tree_taiga': [89,102,81],\n\t'minecraft:giant_tree_taiga_hills': [69,79,62],\n\t'minecraft:gravelly_mountains': [136,136,136],\n\t'minecraft:ice_spikes': [180,220,220],\n\t'minecraft:jungle': [83,123,9],\n\t'minecraft:jungle_edge': [98,139,23],\n\t'minecraft:jungle_hills': [44,66,5],\n\t'minecraft:lukewarm_ocean': [0,0,144],\n\t'minecraft:modified_badlands_plateau': [242,180,141],\n\t'minecraft:modified_gravelly_mountains': [120,152,120],\n\t'minecraft:modified_jungle': [123,163,49],\n\t'minecraft:modified_jungle_edge': [138,179,63],\n\t'minecraft:modified_wooded_badlands_plateau': [216,191,141],\n\t'minecraft:mountain_edge': [114,120,154],\n\t'minecraft:mountains': [96,96,96],\n\t'minecraft:mushroom_field_shore': [160,0,255],\n\t'minecraft:mushroom_fields': [255,0,255],\n\t'minecraft:nether_wastes': [191,59,59],\n\t'minecraft:ocean': [0,0,112],\n\t'minecraft:plains': [141,179,96],\n\t'minecraft:river': [0,0,255],\n\t'minecraft:savanna': [189,178,95],\n\t'minecraft:savanna_plateau': [167,157,100],\n\t'minecraft:shattered_savanna': [229,218,135],\n\t'minecraft:shattered_savanna_plateau': [207,197,140],\n\t'minecraft:small_end_islands': [128,128,255],\n\t'minecraft:snowy_beach': [250,240,192],\n\t'minecraft:snowy_mountains': [160,160,160],\n\t'minecraft:snowy_taiga': [49,85,74],\n\t'minecraft:snowy_taiga_hills': [36,63,54],\n\t'minecraft:snowy_taiga_mountains': [89,125,114],\n\t'minecraft:snowy_tundra': [255,255,255],\n\t'minecraft:soul_sand_valley': [94,56,48],\n\t'minecraft:stone_shore': [162,162,132],\n\t'minecraft:sunflower_plains': [181,219,136],\n\t'minecraft:swamp': [7,249,178],\n\t'minecraft:swamp_hills': [47,255,218],\n\t'minecraft:taiga': [11,102,89],\n\t'minecraft:taiga_hills': [22,57,51],\n\t'minecraft:taiga_mountains': [51,142,129],\n\t'minecraft:tall_birch_forest': [88,156,108],\n\t'minecraft:tall_birch_hills': [71,135,90],\n\t'minecraft:the_end': [128,128,255],\n\t'minecraft:the_void': [0,0,0],\n\t'minecraft:warm_ocean': [0,0,172],\n\t'minecraft:warped_forest': [73,144,123],\n\t'minecraft:wooded_badlands_plateau': [176,151,101],\n\t'minecraft:wooded_hills': [34,85,28],\n\t'minecraft:wooded_mountains': [80,112,80],\n\t'minecraft:snowy_slopes': [140, 195, 222],\n\t'minecraft:lofty_peaks': [196, 168, 193],\n\t'minecraft:snowcapped_peaks': [200, 198, 200],\n\t'minecraft:stony_peaks': [82, 92, 103],\n\t'minecraft:grove': [150, 150, 189],\n\t'minecraft:meadow': [169, 197, 80],\n\t'minecraft:lush_caves': [112, 255, 79],\n\t'minecraft:dripstone_caves': [140, 124, 0],\n}\n\nconst NetherPreset = {type:'minecraft:multi_noise',seed:0,altitude_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},humidity_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{biome:'minecraft:nether_wastes',parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{altitude:0,temperature:0,humidity:-0.5,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{altitude:0,temperature:0.4,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{altitude:0,temperature:0,humidity:0.5,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{altitude:0,temperature:-0.5,humidity:0,weirdness:0,offset:0.175}}]}\n\nconst NetherPreset18 = {type:'minecraft:multi_noise',biomes:[{biome:'minecraft:nether_wastes',parameters:{temperature:0,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{temperature:0,humidity:-0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{temperature:0.4,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{temperature:0,humidity:0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{temperature:-0.5,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.175}}]}\n\nasync function OverworldPreset18() {\n\tconst overworld = await fetchPreset('1.18', 'dimension', 'overworld')\n\treturn overworld.generator.biome_source\n}\n","import { PerlinNoise, Random } from 'deepslate'\nimport type { VersionId } from '../Schemas'\nimport { clamp, stringToColor, unwrapLists } from '../Utils'\n\ntype BlockPos = [number, number, number]\ntype Placement = [BlockPos, number]\n\ntype PlacementContext = {\n\tplacements: Placement[],\n\tfeatures: string[],\n\trandom: Random,\n\tbiomeInfoNoise: PerlinNoise,\n\tseaLevel: number,\n\tversion: VersionId,\n\tnextFloat(): number,\n\tnextInt(max: number): number,\n\tsampleInt(provider: any): number,\n}\n\nconst terrain = [50, 50, 51, 51, 52, 52, 53, 54, 56, 57, 57, 58, 58, 59, 60, 60, 60, 59, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 64, 65, 65, 66, 66, 65, 65, 66, 66, 67, 67, 67, 68, 69, 71, 73, 74, 76, 79, 80, 81, 81, 82, 83, 83, 82, 82, 81, 81, 80, 80, 80, 81, 81, 82, 82] \n\nconst featureColors = [\n\t[255, 77, 54], // red\n\t[59, 118, 255], // blue\n\t[91, 207, 25], // green\n\t[217, 32, 245], // magenta\n\t[255, 209, 41], // yellow\n\t[52, 204, 209], // cyan\n]\n\nexport type DecoratorOptions = {\n\tsize: [number, number, number],\n\tseed: bigint,\n\tversion: VersionId,\n}\nexport function decorator(state: any, img: ImageData, options: DecoratorOptions) {\n\tconst random = new Random(options.seed)\n\tconst ctx: PlacementContext = {\n\t\tplacements: [],\n\t\tfeatures: [],\n\t\trandom,\n\t\tbiomeInfoNoise: new PerlinNoise(random.fork(), 0, [1]),\n\t\tseaLevel: 63,\n\t\tversion: options.version,\n\t\tnextFloat: () => random.nextFloat(),\n\t\tnextInt: (max: number) => random.nextInt(max),\n\t\tsampleInt(value) { return sampleInt(value, this) },\n\t}\n\n\tfor (let x = 0; x < options.size[0] / 16; x += 1) {\n\t\tfor (let z = 0; z < options.size[2] / 16; z += 1) {\n\t\t\tgetPlacements([x * 16, 0, z * 16], unwrapLists(state), ctx)\n\t\t}\n\t}\n\n\tconst data = img.data\n\timg.data.fill(255)\n\n\tfor (const [pos, feature] of ctx.placements) {\n\t\tif (pos[0] < 0 || pos[1] < 0 || pos[2] < 0 || pos[0] >= options.size[0] || pos[1] >= options.size[1] || pos[2] >= options.size[2]) continue\n\t\tconst i = (pos[2] * (img.width * 4)) + (pos[0] * 4)\n\t\tconst color = feature < featureColors.length ? featureColors[feature] : stringToColor(ctx.features[feature])\n\t\tdata[i] = clamp(50, 205, color[0])\n\t\tdata[i + 1] = clamp(50, 205, color[1])\n\t\tdata[i + 2] = clamp(50, 205, color[2])\n\t\tdata[i + 3] = 255\n\t}\n\n\tfor (let x = 0; x < options.size[0]; x += 1) {\n\t\tfor (let y = 0; y < options.size[2]; y += 1) {\n\t\t\tif ((Math.floor(x / 16) + Math.floor(y / 16)) % 2 === 0) continue\n\t\t\tconst i = (y * (img.width * 4)) + (x * 4)\n\t\t\tfor (let j = 0; j < 3; j += 1) {\n\t\t\t\tdata[i + j] = 0.85 * data[i + j] \n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction normalize(id: string) {\n\treturn id.startsWith('minecraft:') ? id.slice(10) : id\n}\n\nfunction decorateY(pos: BlockPos, y: number): BlockPos[] {\n\treturn [[ pos[0], y, pos[2] ]]\n}\n\nfunction sampleInt(value: any, ctx: PlacementContext): number {\n\tif (typeof value === 'number') {\n\t\treturn value\n\t} else if (value.base) {\n\t\treturn value.base ?? 1 + ctx.nextInt(1 + (value.spread ?? 0))\n\t} else {\n\t\tswitch (normalize(value.type)) {\n\t\t\tcase 'constant': return value.value\n\t\t\tcase 'uniform': return value.value.min_inclusive + ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1)\n\t\t\tcase 'biased_to_bottom': return value.value.min_inclusive + ctx.nextInt(ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1) + 1)\n\t\t\tcase 'clamped': return Math.max(value.value.min_inclusive, Math.min(value.value.max_inclusive, sampleInt(value.value.source, ctx)))\n\t\t}\n\t\treturn 1\n\t}\n}\n\nfunction useFeature(s: string, ctx: PlacementContext) {\n\tconst i = ctx.features.indexOf(s)\n\tif (i != -1) return i\n\tctx.features.push(s)\n\treturn ctx.features.length - 1\n}\n\nfunction getPlacements(pos: BlockPos, feature: any, ctx: PlacementContext): void {\n\tif (typeof feature === 'string') {\n\t\tctx.placements.push([pos, useFeature(feature, ctx)])\n\t\treturn\n\t}\n\tconst type = normalize(feature?.type ?? 'no_op')\n\tconst featureFn = Features[type]\n\tif (featureFn) {\n\t\tfeatureFn(feature.config, pos, ctx)\n\t} else {\n\t\tctx.placements.push([pos, useFeature(JSON.stringify(feature), ctx)])\n\t}\n}\n\nfunction getPositions(pos: BlockPos, decorator: any, ctx: PlacementContext): BlockPos[] {\n\tconst type = normalize(decorator?.type ?? 'nope')\n\tconst decoratorFn = Decorators[type]\n\tif (!decoratorFn) {\n\t\treturn [pos]\n\t}\n\treturn decoratorFn(decorator?.config, pos, ctx)\n}\n\nconst Features: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => void,\n} = {\n\tdecorated: (config, pos, ctx) => {\n\t\tconst positions = getPositions(pos, config?.decorator, ctx)\n\t\tpositions.forEach(p => getPlacements(p, config?.feature, ctx))\n\t},\n\trandom_boolean_selector: (config, pos, ctx) => {\n\t\tconst feature = ctx.nextFloat() < 0.5 ? config?.feature_true : config?.feature_false\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n\trandom_selector: (config, pos, ctx) => {\n\t\tfor (const f of config?.features ?? []) {\n\t\t\tif (ctx.nextFloat() < (f?.chance ?? 0)) {\n\t\t\t\tgetPlacements(pos, f.feature, ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tgetPlacements(pos, config?.default, ctx)\n\t},\n\tsimple_random_selector: (config, pos, ctx) => {\n\t\tconst feature = config?.features?.[ctx.nextInt(config?.features?.length ?? 0)]\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n}\n\nconst Decorators: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => BlockPos[],\n} = {\n\tchance: (config, pos, ctx) => {\n\t\treturn ctx.nextFloat() < 1 / (config?.chance ?? 1) ? [pos] : []\n\t},\n\tcount: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t},\n\tcount_extra: (config, pos, ctx) => {\n\t\tlet count = config?.count ?? 1\n\t\tif (ctx.nextFloat() < config.extra_chance ?? 0){\n\t\t\tcount += config.extra_count ?? 0\n\t\t}\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_multilayer: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t\t\t.map(p => [\n\t\t\t\tp[0] + ctx.nextInt(16),\n\t\t\t\tp[1], \n\t\t\t\tp[2] + ctx.nextInt(16),\n\t\t\t])\n\t},\n\tcount_noise: (config, pos, ctx) => {\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / 200, 0, pos[2] / 200)\n\t\tconst count = noise < config.noise_level ? config.below_noise : config.above_noise\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_noise_biased: (config, pos, ctx) => {\n\t\tconst factor = Math.max(1, config.noise_factor)\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / factor, 0, pos[2] / factor)\n\t\tconst count = Math.max(0, Math.ceil((noise + (config.noise_offset ?? 0)) * config.noise_to_count_ratio))\n\t\treturn new Array(count).fill(pos)\n\t},\n\tdark_oak_tree: (_config, pos, ctx) => {\n\t\treturn [...new Array(16)].map((_, i) => {\n\t\t\tconst x = Math.floor(i / 4) * 4 + 1 + ctx.nextInt(3) + pos[0]\n\t\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, x)])\n\t\t\tconst z = Math.floor(i % 4) * 4 + 1 + ctx.nextInt(3) + pos[2]\n\t\t\treturn [x, y, z]\n\t\t})\n\t},\n\tdecorated: (config, pos, ctx) => {\n\t\treturn getPositions(pos, config?.outer, ctx).flatMap(p => {\n\t\t\treturn getPositions(p, config?.inner, ctx)\n\t\t})\n\t},\n\tdepth_average: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(config?.spread ?? 0) + ctx.nextInt(config?.spread ?? 0) - (config.spread ?? 0) + (config?.baseline ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\temerald_ore: (_config, pos, ctx) => {\n\t\tconst count = 3 + ctx.nextInt(6)\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t4 + ctx.nextInt(28),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tfire: (config, pos, ctx) => {\n\t\tconst count = 1 + ctx.nextInt(ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tglowstone: (config, pos, ctx) => {\n\t\tconst count = ctx.nextInt(1 + ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\theightmap: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\theightmap_spread_double: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, ctx.nextInt(y * 2))\n\t},\n\theightmap_world_surface: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\ticeberg: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + 4 + ctx.nextInt(8),\n\t\t\tpos[1],\n\t\t\tpos[2] + 4 + ctx.nextInt(8),\n\t\t]]\n\t},\n\tlava_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt((config.chance ?? 1) / 10) === 0) {\n\t\t\tconst y = ctx.nextInt(ctx.nextInt(256 - 8) + 8)\n\t\t\tif (y < ctx.seaLevel || ctx.nextInt((config?.chance ?? 1) / 8) == 0) {\n\t\t\t\tconst x = ctx.nextInt(16) + pos[0]\n\t\t\t\tconst z = ctx.nextInt(16) + pos[2]\n\t\t\t\treturn [[x, y, z]]\n\t\t\t}\n\t\t}\n\t\treturn []\n\t},\n\tnope: (_config, pos) => {\n\t\treturn [pos]\n\t},\n\trange: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\trange_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\trange_very_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\tspread_32_above: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\ttop_solid_heightmap: (_config, pos) => {\n\t\tconst y = terrain[clamp(0, 63, pos[0])]\n\t\treturn decorateY(pos, y)\n\t},\n\tmagma: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\tsquare: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tpos[1],\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t]]\n\t},\n\tsurface_relative_threshold: (config, pos) => {\n\t\tconst height = terrain[clamp(0, 63, pos[0])]\n\t\tconst min = height + (config?.min_inclusive ?? -Infinity)\n\t\tconst max = height + (config?.max_inclusive ?? Infinity)\n\t\treturn (pos[1] < min || pos[1] > max) ? [pos] : []\n\t},\n\twater_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt(config.chance ?? 1) === 0) {\n\t\t\treturn [[\n\t\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t\tctx.nextInt(256),\n\t\t\t\tpos[2] + ctx.nextInt(16),\n\t\t\t]]\n\t\t}\n\t\treturn []\n\t},\n}\n","import { PerlinNoise, Random } from 'deepslate'\nimport { clampedLerp, lerp2 } from '../../Utils'\n\nexport class NoiseChunkGenerator {\n\tprivate readonly minLimitPerlinNoise: PerlinNoise\n\tprivate readonly maxLimitPerlinNoise: PerlinNoise\n\tprivate readonly mainPerlinNoise: PerlinNoise\n\tprivate readonly depthNoise: PerlinNoise\n\n\tprivate settings: any = {}\n\tprivate chunkWidth: number = 4\n\tprivate chunkHeight: number = 4\n\tprivate chunkCountY: number = 32\n\tprivate biomeDepth: number = 0.1\n\tprivate biomeScale: number = 0.2\n\n\tprivate noiseColumnCache: (number[] | null)[] = []\n\tprivate xOffset: number = 0\n\n\tconstructor(seed: bigint) {\n\t\tconst random = new Random(seed)\n\t\tthis.minLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.maxLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.mainPerlinNoise = new PerlinNoise(random, -7, [1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.depthNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t}\n\n\tpublic reset(settings: any, depth: number, scale: number, xOffset: number, width: number) {\n\t\tthis.settings = settings\n\t\tthis.chunkWidth = settings.size_horizontal * 4\n\t\tthis.chunkHeight = settings.size_vertical * 4\n\t\tthis.chunkCountY = Math.floor(settings.height / this.chunkHeight)\n\n\t\tif (settings.amplified && depth > 0) {\n\t\t\tdepth = 1 + depth * 2\n\t\t\tscale = 1 + scale * 4\n\t\t}\n\t\tthis.biomeDepth = 0.265625 * (depth * 0.5 - 0.125)\n\t\tthis.biomeScale = 96.0 / (scale * 0.9 + 0.1)\n\n\t\tthis.noiseColumnCache = Array(width).fill(null)\n\t\tthis.xOffset = xOffset\n\t}\n \n\tpublic iterateNoiseColumn(x: number): number[] {\n\t\tconst data = Array(this.chunkCountY * this.chunkHeight)\n\t\tconst cx = Math.floor(x / this.chunkWidth)\n\t\tconst ox = Math.floor(x % this.chunkWidth) / this.chunkWidth\n\t\tconst noise1 = this.fillNoiseColumn(cx)\n\t\tconst noise2 = this.fillNoiseColumn(cx + 1)\n\n\t\tfor (let y = this.chunkCountY - 1; y >= 0; y -= 1) {\n\t\t\tfor (let yy = this.chunkHeight; yy >= 0; yy -= 1) {\n\t\t\t\tconst oy = yy / this.chunkHeight\n\t\t\t\tconst i = y * this.chunkHeight + yy\n\t\t\t\tdata[i] = lerp2(oy, ox, noise1[y], noise1[y+1], noise2[y], noise2[y+1])\n\t\t\t}\n\t\t}\n\t\treturn data\n\t}\n\n\tprivate fillNoiseColumn(x: number): number[] {\n\t\tconst cachedColumn = this.noiseColumnCache[x - this.xOffset]\n\t\tif (cachedColumn) return cachedColumn\n\n\t\tconst data = Array(this.chunkCountY + 1)\n\n\t\tconst xzScale = 684.412 * this.settings.sampling.xz_scale\n\t\tconst yScale = 684.412 * this.settings.sampling.y_scale\n\t\tconst xzFactor = xzScale / this.settings.sampling.xz_factor\n\t\tconst yFactor = yScale / this.settings.sampling.y_factor\n\t\tconst randomDensity = this.settings.random_density_offset ? this.getRandomDensity(x) : 0\n\n\t\tfor (let y = 0; y <= this.chunkCountY; y += 1) {\n\t\t\tlet noise = this.sampleAndClampNoise(x, y, this.mainPerlinNoise.getOctaveNoise(0)!.zo, xzScale, yScale, xzFactor, yFactor)\n\t\t\tconst yOffset = 1 - y * 2 / this.chunkCountY + randomDensity\n\t\t\tconst density = yOffset * this.settings.density_factor + this.settings.density_offset\n\t\t\tconst falloff = (density + this.biomeDepth) * this.biomeScale\n\t\t\tnoise += falloff * (falloff > 0 ? 4 : 1)\n\n\t\t\tif (this.settings.top_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.top_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(this.chunkCountY - y - (this.settings.top_slide.offset)) / (this.settings.top_slide.size)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.settings.bottom_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.bottom_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(y - (this.settings.bottom_slide.offset)) / (this.settings.bottom_slide.size)\n\t\t\t\t)\n\t\t\t}\n\t\t\tdata[y] = noise\n\t\t}\n\n\t\tthis.noiseColumnCache[x - this.xOffset] = data\n\t\treturn data\n\t}\n\n\tprivate getRandomDensity(x: number): number {\n\t\tconst noise = this.depthNoise.sample(x * 200, 10, this.depthNoise.getOctaveNoise(0)!.zo, 1, 0, true)\n\t\tconst a = (noise < 0) ? -noise * 0.3 : noise\n\t\tconst b = a * 24.575625 - 2\n\t\treturn (b < 0) ? b * 0.009486607142857142 : Math.min(b, 1) * 0.006640625\n\t}\n\n\tprivate sampleAndClampNoise(x: number, y: number, z: number, xzScale: number, yScale: number, xzFactor: number, yFactor: number): number {\n\t\tlet a = 0\n\t\tlet b = 0\n\t\tlet c = 0\n\t\tlet d = 1\n\n\t\tfor (let i = 0; i < 16; i += 1) {\n\t\t\tconst x2 = PerlinNoise.wrap(x * xzScale * d)\n\t\t\tconst y2 = PerlinNoise.wrap(y * yScale * d)\n\t\t\tconst z2 = PerlinNoise.wrap(z * xzScale * d)\n\t\t\tconst e = yScale * d\n\n\t\t\tconst minLimitNoise = this.minLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (minLimitNoise) {\n\t\t\t\ta += minLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tconst maxLimitNoise = this.maxLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (maxLimitNoise) {\n\t\t\t\tb += maxLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tif (i < 8) {\n\t\t\t\tconst mainNoise = this.mainPerlinNoise.getOctaveNoise(i)\n\t\t\t\tif (mainNoise) {\n\t\t\t\t\tc += mainNoise.sample(\n\t\t\t\t\t\tPerlinNoise.wrap(x * xzFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(y * yFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(z * xzFactor * d),\n\t\t\t\t\t\tyFactor * d,\n\t\t\t\t\t\ty * yFactor * d \n\t\t\t\t\t) / d\n\t\t\t\t}\n\t\t\t}\n\n\t\t\td /= 2\n\t\t}\n\n\t\treturn clampedLerp(a / 512, b / 512, (c / 10 + 1) / 2)\n\t}\n}\n","import type { BlockPos, BlockState } from 'deepslate'\nimport { Chunk, ChunkPos, FixedBiome, NoiseChunkGenerator, NoiseGeneratorSettings } from 'deepslate'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { deepClone, deepEqual, unwrapLists } from '../Utils'\nimport { NoiseChunkGenerator as OldNoiseChunkGenerator } from './noise/NoiseChunkGenerator'\n\nexport type NoiseSettingsOptions = {\n\tbiomeFactor: number,\n\tbiomeOffset: number,\n\tbiomePeaks: number,\n\toffset: number,\n\twidth: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nconst Z = 0\n\nconst colors: Record = {\n\t'minecraft:air': [150, 160, 170],\n\t'minecraft:water': [20, 80, 170],\n\t'minecraft:lava': [200, 100, 0],\n\t'minecraft:stone': [50, 50, 50],\n\t'minecraft:netherrack': [100, 40, 40],\n\t'minecraft:end_stone': [200, 200, 140],\n}\n\nlet cacheState: any\nlet generatorCache: NoiseChunkGenerator\nlet chunkCache: Chunk[] = []\n\nexport function noiseSettings(state: any, img: ImageData, options: NoiseSettingsOptions) {\n\tif (checkVersion(options.version, '1.18')) {\n\t\tconst { settings, generator } = getCached(state, options)\n\n\t\tconst slice = new LevelSlice(-options.offset, options.width, settings.noise.minY, settings.noise.height)\n\t\tslice.fill(generator)\n\n\t\tconst data = img.data\n\t\tfor (let x = 0; x < options.width; x += 1) {\n\t\t\tfor (let y = 0; y < settings.noise.height; y += 1) {\n\t\t\t\tconst i = x * 4 + (settings.noise.height-y-1) * 4 * img.width\n\t\t\t\tconst state = slice.getBlockState([x - options.offset, y, Z])\n\t\t\t\tconst color = colors[state.getName()] ?? [0, 0, 0]\n\t\t\t\tdata[i] = color[0]\n\t\t\t\tdata[i + 1] = color[1]\n\t\t\t\tdata[i + 2] = color[2]\n\t\t\t\tdata[i + 3] = 255\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tconst generator = new OldNoiseChunkGenerator(options.seed)\n\tgenerator.reset(state.noise, options.biomeOffset, options.biomeFactor, options.offset, 200)\n\tconst data = img.data\n\tconst row = img.width * 4\n\tfor (let x = 0; x < options.width; x += 1) {\n\t\tconst noise = generator.iterateNoiseColumn(x - options.offset).reverse()\n\t\tfor (let y = 0; y < state.noise.height; y += 1) {\n\t\t\tconst i = y * row + x * 4\n\t\t\tconst color = getColor(noise, y)\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nfunction getCached(state: unknown, options: NoiseSettingsOptions) {\n\tconst settings = NoiseGeneratorSettings.fromJson(unwrapLists(state))\n\t// Temporary fix for slides\n\tsettings.noise.bottomSlide.target *= 128\n\tsettings.noise.topSlide.target *= 128\n\tconst shape = { factor: options.biomeFactor, offset: options.biomeOffset, peaks: options.biomePeaks, nearWater: false }\n\n\tconst newState = [state, shape, `${options.seed}`]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\t\tchunkCache = []\n\t\tconst biomeSource = new FixedBiome('unknown')\n\t\tgeneratorCache = new NoiseChunkGenerator(options.seed, biomeSource, settings, shape)\n\t}\n\treturn {\n\t\tsettings,\n\t\tgenerator: generatorCache,\n\t}\n}\n\nfunction getColor(noise: number[], y: number): number {\n\tif (noise[y] > 0) {\n\t\treturn 0\n\t}\n\tif (noise[y+1] > 0) {\n\t\treturn 150\n\t}\n\treturn 255\n}\n\nclass LevelSlice {\n\tprivate readonly chunks: Chunk[]\n\tprivate readonly filled: boolean[]\n\n\tconstructor(\n\t\tprivate readonly minX: number,\n\t\twidth: number,\n\t\tminY: number,\n\t\theight: number,\n\t) {\n\t\tthis.filled = []\n\t\tthis.chunks = [...Array(Math.ceil(width / 16) + 1)]\n\t\t\t.map((_, i) => {\n\t\t\t\tconst x = (minX >> 4) + i\n\t\t\t\tconst cached = chunkCache.find(c => c.pos[0] === x)\n\t\t\t\tif (cached) {\n\t\t\t\t\tthis.filled[i] = true\n\t\t\t\t\treturn cached\n\t\t\t\t}\n\t\t\t\treturn new Chunk(minY, height, ChunkPos.create(x, Z >> 4))\n\t\t\t})\n\t}\n\n\tpublic fill(generator: NoiseChunkGenerator) {\n\t\tthis.chunks.forEach((chunk, i) => {\n\t\t\tif (!this.filled[i]) {\n\t\t\t\tgenerator.fill(chunk)\n\t\t\t\tthis.filled[i] = true\n\t\t\t\tchunkCache.push(chunk)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic getBlockState(pos: BlockPos): BlockState {\n\t\tconst chunkIndex = (pos[0] >> 4) - (this.minX >> 4)\n\t\treturn this.chunks[chunkIndex].getBlockState(pos)\n\t}\n}\n","import { Path } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { NoiseGeneratorSettings } from 'deepslate'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { biomeMap, getBiome } from '../../previews'\nimport { newSeed } from '../../Utils'\n\nexport const BiomeSourcePreview = ({ model, data, shown, version }: PreviewProps) => {\n\tconst [scale, setScale] = useState(2)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst res = useRef(1)\n\tconst refineTimeout = useRef(undefined)\n\n\tconst seed = BigInt(model.get(new Path(['generator', 'seed'])))\n\tconst octaves = getOctaves(model.get(new Path(['generator', 'settings'])))\n\tconst state = shown ? calculateState(data, octaves) : ''\n\tconst type: string = data.type?.replace(/^minecraft:/, '')\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [200 / res.current, 200 / res.current]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { octaves, biomeColors: {}, offset: offset.current, scale, seed, res: res.current, version }\n\t\t\tawait biomeMap(data, img, options)\n\t\t\tif (res.current === 4) {\n\t\t\t\tclearTimeout(refineTimeout.current)\n\t\t\t\trefineTimeout.current = setTimeout(() => {\n\t\t\t\t\tres.current = 1\n\t\t\t\t\tredraw()\n\t\t\t\t}, 150)\n\t\t\t}\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 200\n\t\t\toffset.current[1] = offset.current[1] + dy * 200\n\t\t\tclearTimeout(refineTimeout.current)\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(x, y) {\n\t\t\tconst options = { octaves, biomeColors: {}, offset: offset.current, scale, seed, res: 1, version }\n\t\t\tconst biome = await getBiome(data, Math.floor(x * 200), Math.floor(y * 200), options)\n\t\t\tsetFocused(biome)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, scale, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{(type === 'multi_noise' || type === 'checkerboard') && <>\n\t\t\t\t changeScale(scale * 1.5)} />\n\t\t\t\t changeScale(scale / 1.5)} />\n\t\t\t}\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t newSeed(model)} />}\n\t\t
\n\t\t\n\t\n}\n\nfunction calculateState(data: any, octaves: NoiseOctaves) {\n\treturn JSON.stringify([data, octaves])\n}\n\nfunction getOctaves(obj: any): NoiseOctaves {\n\tif (typeof obj === 'string') {\n\t\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\t\tcase 'overworld':\n\t\t\tcase 'amplified':\n\t\t\t\treturn {\n\t\t\t\t\ttemperature: { firstOctave: -9, amplitudes: [1.5, 0, 1, 0, 0, 0] },\n\t\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1, 0, 0, 0, 0] },\n\t\t\t\t\tcontinentalness: { firstOctave: -9, amplitudes: [1, 1, 2, 2, 2, 1, 1, 1, 1] },\n\t\t\t\t\terosion: { firstOctave: -9, amplitudes: [1, 1, 0, 1, 1] },\n\t\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 2, 1, 0, 0, 0] },\n\t\t\t\t\tshift: { firstOctave: -3, amplitudes: [1, 1, 1, 0] },\n\t\t\t\t}\n\t\t\tcase 'end':\n\t\t\tcase 'floating_islands':\n\t\t\t\treturn {\n\t\t\t\t\ttemperature: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\thumidity: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\tcontinentalness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\terosion: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\tweirdness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ttemperature: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\tcontinentalness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\terosion: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t}\n\t\t}\n\t}\n\treturn NoiseGeneratorSettings.fromJson(obj).octaves\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { decorator } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const DecoratorPreview = ({ data, version, shown }: PreviewProps) => {\n\tconst [scale, setScale] = useState(4)\n\tconst [seed, setSeed] = useState(randomSeed())\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [scale * 16, scale * 16]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tdecorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })\n\t\t},\n\t})\n\n\tconst state = JSON.stringify(data)\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t setScale(Math.min(16, scale + 1))} />\n\t\t\t setScale(Math.max(1, scale - 1))} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnInput, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { noiseSettings } from '../../previews'\nimport { checkVersion } from '../../Schemas'\nimport { randomSeed } from '../../Utils'\n\nexport const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst loc = locale.bind(null, lang)\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [biomeFactor, setBiomeFactor] = useState(0.2)\n\tconst [biomeOffset, setBiomeOffset] = useState(0.1)\n\tconst [biomePeaks, setBiomePeaks] = useState(0)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef(0)\n\tconst state = JSON.stringify([data, biomeFactor, biomeOffset, biomePeaks])\n\n\tconst hasPeaks = checkVersion(version, '1.18')\n\tuseEffect(() => {\n\t\tsetBiomeFactor(hasPeaks ? 600 : 0.2)\n\t\tsetBiomeOffset(hasPeaks ? 0.05 : 0.1)\n\t}, [hasPeaks])\n\n\tconst size = data?.noise?.height ?? 256\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [size, size]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { biomeOffset, biomeFactor, biomePeaks, offset: offset.current, width: img.width, seed, version }\n\t\t\tnoiseSettings(data, img, options)\n\t\t},\n\t\tasync onDrag(dx) {\n\t\t\toffset.current += dx * size\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(_, y) {\n\t\t\tconst worldY = size - Math.max(1, Math.ceil(y * size)) + (data?.noise?.min_y ?? 0)\n\t\t\tsetFocused(`${worldY}`)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t\n\t\t\t\t{hasPeaks ? <>\n\t\t\t\t\t setBiomeFactor(Number(v))} />\n\t\t\t\t\t setBiomeOffset(Number(v))} />\n\t\t\t\t\t setBiomePeaks(Number(v))} />\n\t\t\t\t : <>\n\t\t\t\t\t setBiomeFactor(Number(v))} />\n\t\t\t\t\t setBiomeOffset(Number(v))} />\n\t\t\t\t}\n\t\t\t\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { useState } from 'preact/hooks'\nimport { useModel } from '../hooks'\nimport type { VersionId } from '../Schemas'\nimport { BiomeSourcePreview, DecoratorPreview, NoiseSettingsPreview } from './previews'\n\nexport const HasPreview = ['dimension', 'worldgen/noise_settings', 'worldgen/configured_feature']\n\ntype PreviewPanelProps = {\n\tlang: string,\n\tmodel: DataModel | null,\n\tversion: VersionId,\n\tid: string,\n\tshown: boolean,\n\tonError: (message: string) => unknown,\n}\nexport function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {\n\tconst [, setCount] = useState(0)\n\n\tuseModel(model, () => {\n\t\tsetCount(count => count + 1)\n\t})\n\n\tif (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {\n\t\tconst data = model.get(new Path(['generator', 'biome_source']))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise_settings' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/configured_feature' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\treturn <>\n}\n","import type { Hook } from '@mcschema/core'\nimport { relativePath } from '@mcschema/core'\nimport type { BlockStateRegistry } from '../Schemas'\n\nexport type OutputProps = {\n\tblockStates: BlockStateRegistry,\n}\nexport const transformOutput: Hook<[any, OutputProps], any> = {\n\tbase({}, _, value) {\n\t\treturn value\n\t},\n\n\tchoice({ switchNode }, path, value, props) {\n\t\treturn switchNode.hook(this, path, value, props)\n\t},\n\n\tlist({ children }, path, value, props) {\n\t\tif (!Array.isArray(value)) return value\n\t\treturn value.map((obj, index) =>\n\t\t\tchildren.hook(this, path.push(index), obj.node, props)\n\t\t)\n\t},\n\n\tmap({ children, config }, path, value, props) {\n\t\tif (value === undefined) return undefined\n\t\tconst blockState = config.validation?.validator === 'block_state_map'? props.blockStates?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst res: any = {}\n\t\tObject.keys(value).forEach(f => {\n\t\t\tif (blockState) {\n\t\t\t\tif (!Object.keys(blockState.properties ?? {}).includes(f)) return\n\t\t\t}\n\t\t\tres[f] = children.hook(this, path.push(f), value[f], props)\n\t\t})\n\t\treturn res\n\t},\n\n\tobject({ getActiveFields }, path, value, props) {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn value\n\t\t}\n\t\tconst res: any = {}\n\t\tconst activeFields = getActiveFields(path)\n\t\tObject.keys(activeFields)\n\t\t\t.filter(k => activeFields[k].enabled(path))\n\t\t\t.forEach(f => {\n\t\t\t\tres[f] = activeFields[f].hook(this, path.push(f), value[f], props)\n\t\t\t})\n\t\treturn res\n\t},\n}\n","import type { VersionId } from './Schemas'\nimport { VersionIds } from './Schemas'\n\nexport namespace Store {\n\texport const ID_LANGUAGE = 'language'\n\texport const ID_THEME = 'theme'\n\texport const ID_VERSION = 'schema_version'\n\texport const ID_INDENT = 'indentation'\n\n\texport function getLanguage() {\n\t\treturn localStorage.getItem(ID_LANGUAGE) ?? 'en'\n\t}\n\n\texport function getTheme() {\n\t\treturn localStorage.getItem(ID_THEME) ?? 'dark'\n\t}\n\n\texport function getVersion(): VersionId {\n\t\tconst version = localStorage.getItem(ID_VERSION)\n\t\tif (version && VersionIds.includes(version as VersionId)) {\n\t\t\treturn version as VersionId\n\t\t}\n\t\treturn '1.17'\n\t}\n\n\texport function getIndent() {\n\t\treturn localStorage.getItem(ID_INDENT) ?? '2_spaces'\n\t}\n\n\texport function setLanguage(language: string | undefined) {\n\t\tif (language) localStorage.setItem(ID_LANGUAGE, language)\n\t}\n\n\texport function setTheme(theme: string | undefined) {\n\t\tif (theme) localStorage.setItem(ID_THEME, theme)\n\t}\n\n\texport function setVersion(version: VersionId | undefined) {\n\t\tif (version) localStorage.setItem(ID_VERSION, version)\n\t}\n\n\texport function setIndent(indent: string | undefined) {\n\t\tif (indent) localStorage.setItem(ID_INDENT, indent)\n\t}\n}\n","import { DataModel, ModelPath } from '@mcschema/core'\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, BtnMenu } from '.'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport { transformOutput } from '../schema/transformOutput'\nimport type { BlockStateRegistry } from '../Schemas'\nimport { Store } from '../Store'\nimport { message } from '../Utils'\n\nconst OUTPUT_CHARS_LIMIT = 10000\n\nconst INDENT: Record = {\n\t'2_spaces': 2,\n\t'4_spaces': 4,\n\ttabs: '\\t',\n}\n\ntype SourcePanelProps = {\n\tlang: string,\n\tname: string,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tdoCopy?: number,\n\tdoDownload?: number,\n\tdoImport?: number,\n\tcopySuccess: () => unknown,\n\tonError: (message: string) => unknown,\n}\nexport function SourcePanel({ lang, name, model, blockStates, doCopy, doDownload, doImport, copySuccess, onError }: SourcePanelProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [indent, setIndent] = useState(Store.getIndent())\n\tconst source = useRef(null)\n\tconst download = useRef(null)\n\tconst retransform = useRef()\n\n\tconst getOutput = useCallback((model: DataModel, blockStates: BlockStateRegistry) => {\n\t\tconst data = model.schema.hook(transformOutput, new ModelPath(model), model.data, { blockStates })\n\t\treturn JSON.stringify(data, null, INDENT[indent]) + '\\n'\n\t}, [])\n\n\tuseEffect(() => {\n\t\tretransform.current = () => {\n\t\t\tif (!model || !blockStates) return\n\t\t\ttry {\n\t\t\t\tconst output = getOutput(model, blockStates)\n\t\t\t\tif (output.length >= OUTPUT_CHARS_LIMIT) {\n\t\t\t\t\tsource.current.value = output.slice(0, OUTPUT_CHARS_LIMIT) + `\\n\\nOutput is too large to display (+${OUTPUT_CHARS_LIMIT} chars)\\nExport to view complete output\\n\\n`\n\t\t\t\t} else {\n\t\t\t\t\tsource.current.value = output\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tonError(`Error getting JSON output: ${message(e)}`)\n\t\t\t\tconsole.error(e)\n\t\t\t\tsource.current.value = ''\n\t\t\t}\n\t\t}\n\t})\n\n\tuseModel(model, () => {\n\t\tretransform.current()\n\t})\n\tuseEffect(() => {\n\t\tif (model) retransform.current()\n\t}, [model])\n\n\tuseEffect(() => {\n\t\tretransform.current()\n\t}, [indent])\n\n\tconst onImport = () => {\n\t\ttry {\n\t\t\tconst data = JSON.parse(source.current.value)\n\t\t\tmodel?.reset(DataModel.wrapLists(data), false)\n\t\t} catch (e) {\n\t\t\tonError(`Error importing: ${message(e)}`)\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (doCopy && model && blockStates) {\n\t\t\tnavigator.clipboard.writeText(getOutput(model, blockStates)).then(() => {\n\t\t\t\tcopySuccess()\n\t\t\t})\n\t\t}\n\t}, [doCopy])\n\n\tuseEffect(() => {\n\t\tif (doDownload && source.current && download.current) {\n\t\t\tconst content = encodeURIComponent(source.current.value)\n\t\t\tdownload.current.setAttribute('href', `data:text/json;charset=utf-8,${content}`)\n\t\t\tdownload.current.setAttribute('download', `${name}.json`)\n\t\t\tdownload.current.click()\n\t\t}\n\t}, [doDownload])\n\n\tuseEffect(() => {\n\t\tif (doImport && source.current) {\n\t\t\tsource.current.value = ''\n\t\t\tsource.current.select()\n\t\t}\n\t}, [doImport])\n\n\tconst changeIndent = (value: string) => {\n\t\tStore.setIndent(value)\n\t\tsetIndent(value)\n\t}\n\n\treturn <> \n\t\t
\n\t\t\t\n\t\t\t\t{Object.entries(INDENT).map(([key]) =>\n\t\t\t\t\t changeIndent(key)}/>\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\n}\n","import type { ComponentChildren } from 'preact'\nimport { Icons } from './Icons'\n\ntype ToolCardProps = {\n\ttitle: string,\n\tlink: string,\n\ticon?: keyof typeof Icons,\n\tchildren?: ComponentChildren,\n}\nexport function ToolCard({ title, link, icon, children }: ToolCardProps) {\n\treturn \n\t\t{icon && Icons[icon]}\n\t\t
\n\t\t\t

{title}

\n\t\t\t{children}\n\t\t
\n\t
\n}\n","import type { BooleanHookParams, EnumOption, Hook, INode, NumberHookParams, StringHookParams, ValidationOption } from '@mcschema/core'\nimport { DataModel, MapNode, ModelPath, ObjectNode, Path, relativePath, StringNode } from '@mcschema/core'\nimport type { ComponentChildren, JSX } from 'preact'\nimport { memo } from 'preact/compat'\nimport { useRef, useState } from 'preact/hooks'\nimport { Btn } from '../components'\nimport { Octicon } from '../components/Octicon'\nimport { useFocus } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry } from '../Schemas'\nimport { deepClone, deepEqual, hexId, newSeed } from '../Utils'\n\nconst selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type']\nconst hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type']\nconst flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state']\nconst inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome']\nconst nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt']\nconst fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset']\n\n/**\n * Secondary model used to remember the keys of a map\n */\nconst keysModel = new DataModel(MapNode(\n\tStringNode(),\n\tStringNode()\n), { historyMax: 0 })\n\ntype JSXTriple = [JSX.Element | null, JSX.Element | null, JSX.Element | null]\ntype RenderHook = Hook<[any, string, BlockStateRegistry, Record], JSXTriple>\n\ntype NodeProps = T & {\n\tnode: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n}\n\nexport function FullNode({ model, lang, blockStates }: { model: DataModel, lang: string, blockStates: BlockStateRegistry }) {\n\tconst path = new ModelPath(model)\n\tconst [prefix, suffix, body] = model.schema.hook(renderHtml, path, deepClone(model.data), lang, blockStates, {})\n\treturn suffix?.props?.children.some((c: any) => c) ?
\n\t\t
{prefix}{suffix}
\n\t\t
{body}
\n\t
: body\n}\n\nconst renderHtml: RenderHook = {\n\tbase() {\n\t\treturn [null, null, null]\n\t},\n\n\tboolean(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tchoice({ choices, config, switchNode }, path, value, lang, states, ctx) {\n\t\tconst choice = switchNode.activeCase(path, true) as typeof choices[number]\n\t\tconst contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path\n\t\tconst [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx)\n\t\tif (choices.length === 1) {\n\t\t\treturn [prefix, suffix, body]\n\t\t}\n\t\tconst choiceContextPath = config?.choiceContext ? new Path([], [config.choiceContext]) : config?.context ? new Path([], [config.context]) : path\n\t\tconst set = (value: string) => {\n\t\t\tconst c = choices.find(c => c.type === value) ?? choice\n\t\t\tpath.model.set(path, c.change ? c.change(value, { wrapLists: true }) : DataModel.wrapLists(c.node.default()))\n\t\t}\n\t\tconst inject = \n\t\treturn [prefix, <>{inject}{suffix}, body]\n\t},\n\n\tlist({ children, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\t\tconst [maxShown, setMaxShown] = useState(50)\n\n\t\tconst context = path.getContext().join('.')\n\t\tif (fixedLists.includes(context)) {\n\t\t\tconst prefix = <>\n\t\t\t\t{[...Array(config.maxLength!)].map((_, i) =>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\tconst suffix = <>{[...Array(config.maxLength)].map((_, i) => {\n\t\t\t\tconst child = children.hook(this, path.modelPush(i), value?.[i]?.node, lang, states, ctx)\n\t\t\t\treturn child[1]\n\t\t\t})}\n\t\t\treturn [prefix, suffix, null]\n\t\t}\n\n\t\tconst onAdd = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [{ node, id: hexId() }, ...value])\n\t\t}\n\t\tconst onAddBottom = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [...value, { node, id: hexId() }])\n\t\t}\n\t\tconst suffix = \n\t\tconst body = <>\n\t\t\t{(value && Array.isArray(value)) && value.map(({ node: cValue, id: cId }, index) => {\n\t\t\t\tif (index === maxShown) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tif (index > maxShown) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tconst cPath = path.push(index).contextPush('entry')\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(cId)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\tconst onMoveUp = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index - 1], v[index]] = [v[index], v[index - 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst onMoveDown = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index + 1], v[index]] = [v[index], v[index + 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\t{value.length > 1 &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t})}\n\t\t\t{(value && value.length > 2 && value.length <= maxShown) &&
\n\t\t\t\t\n\t\t\t
}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tmap({ children, keys, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tconst keyPath = new ModelPath(keysModel, new Path([hashString(path.toString())]))\n\t\tconst onAdd = () => {\n\t\t\tconst key = keyPath.get()\n\t\t\tpath.model.set(path.push(key), DataModel.wrapLists(children.default()))\n\t\t}\n\t\tconst blockState = config.validation?.validator === 'block_state_map' ? states?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst keysSchema = blockState?.properties\n\t\t\t? StringNode(null!, { enum: Object.keys(blockState.properties ?? {}) })\n\t\t\t: keys\n\t\tif (blockState && path.last() === 'Properties') {\n\t\t\tif (typeof value !== 'object') value = {}\n\t\t\tconst properties = Object.entries(blockState.properties ?? {})\n\t\t\t\t.map(([key, values]) => [key, StringNode(null!, { enum: values })])\n\t\t\tObject.entries(blockState.properties ?? {}).forEach(([key, values]) => {\n\t\t\t\tif (typeof value[key] !== 'string') {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.expected_string')\n\t\t\t\t} else if (!values.includes(value[key])) {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.invalid_enum_option', value[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn ObjectNode(Object.fromEntries(properties)).hook(this, path, value, lang, states, ctx)\n\t\t}\n\t\tconst suffix = <>\n\t\t\t{keysSchema.hook(this, keyPath, keyPath.get() ?? '', lang, states, ctx)[1]}\n\t\t\t\n\t\t\n\t\tconst body = <>\n\t\t\t{typeof value === 'object' && Object.entries(value).map(([key, cValue]) => {\n\n\t\t\t\tconst cPath = path.modelPush(key)\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tconst cSchema = blockState\n\t\t\t\t\t? StringNode(null!, { enum: blockState.properties?.[key] ?? [] })\n\t\t\t\t\t: children\n\t\t\t\tif (blockState?.properties?.[key] && typeof cValue === 'string'\n\t\t\t\t\t&& !blockState.properties?.[key].includes(cValue)) {\n\t\t\t\t\tpath.model.errors.add(cPath, 'error.invalid_enum_option', cValue)\n\t\t\t\t}\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t})}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tnumber(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tobject({ node, getActiveFields, getChildModelPath }, path, value, lang, states, ctx) {\n\t\tlet prefix: JSX.Element | null = null\n\t\tlet suffix: JSX.Element | null = null\n\t\tif (node.optional()) {\n\t\t\tif (value === undefined) {\n\t\t\t\tconst onExpand = () => path.set(DataModel.wrapLists(node.default()))\n\t\t\t\tsuffix = \n\t\t\t} else {\n\t\t\t\tconst onCollapse = () => path.set(undefined)\n\t\t\t\tsuffix = \n\t\t\t}\n\t\t}\n\t\tconst newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)\n\t\t\t? { ...ctx, loot: value?.type } : ctx\n\t\tconst body = <>\n\t\t\t{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&\n\t\t\t\tObject.entries(getActiveFields(path))\n\t\t\t\t\t.filter(([_, child]) => child.enabled(path))\n\t\t\t\t\t.map(([key, child]) => {\n\t\t\t\t\t\tconst cPath = getChildModelPath(path, key)\n\t\t\t\t\t\tconst context = cPath.getContext().join('.')\n\t\t\t\t\t\tif (hiddenFields.includes(context)) return null\n\t\t\t\t\t\tconst [cPrefix, cSuffix, cBody] = child.hook(this, cPath, value[key], lang, states, newCtx)\n\t\t\t\t\t\tif (!cPrefix && !cSuffix && !((cBody?.props?.children?.length ?? 0) > 0)) return null\n\t\t\t\t\t\tconst isFlattened = child.type(cPath) === 'object' && flattenedFields.includes(context)\n\t\t\t\t\t\tconst isInlined = inlineFields.includes(context)\n\t\t\t\t\t\tif (isFlattened || isInlined) {\n\t\t\t\t\t\t\tprefix = <>{prefix}{cPrefix}\n\t\t\t\t\t\t\tsuffix = <>{suffix}{cSuffix}\n\t\t\t\t\t\t\treturn isFlattened ? cBody : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \n\t\t\t\t\t})\n\t\t\t}\n\t\t\n\t\treturn [prefix, suffix, body]\n\t},\n\n\tstring(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n}\n\nfunction Collapsed({ path, value }: { path: ModelPath, value: any, schema: INode }) {\n\tconst context = path.getContext().join('.')\n\tswitch (context) {\n\t\tcase 'loot_table.pools.entry':\n\t\t\treturn \n\t\tcase 'function.set_contents.entries.entry':\n\t\tcase 'loot_pool.entries.entry':\n\t\t\treturn \n\t}\n\tfor (const child of Object.values(value ?? {})) {\n\t\tif (typeof child === 'string') {\n\t\t\treturn \n\t\t}\n\t}\n\treturn null\n}\n\nfunction useToggles() {\n\tconst [toggleState, setToggleState] = useState(new Map())\n\tconst [toggleAll, setToggleAll] = useState(undefined)\n\n\tconst expand = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(true)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, true)))\n\t\t}\n\t}\n\tconst collapse = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(false)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, false)))\n\t\t}\n\t}\n\t\n\tconst isToggled = (key: string) => {\n\t\treturn toggleState.get(key) ?? toggleAll\n\t}\n\n\treturn { expand, collapse, isToggled }\n}\n\nfunction BooleanSuffix({ path, node, value, lang }: NodeProps) {\n\tconst set = (target: boolean) => {\n\t\tpath.model.set(path, node.optional() && value === target ? undefined : target)\n\t}\n\treturn <>\n\t\t\n\t\t\n\t\n}\n\nfunction NumberSuffix({ path, config, integer, value }: NodeProps) {\n\tconst [text, setText] = useState(value ?? '')\n\tconst commitTimeout = useRef()\n\tconst scheduleCommit = (value: number) => {\n\t\tif (commitTimeout.current) clearTimeout(commitTimeout.current)\n\t\tcommitTimeout.current = setTimeout(() => {\n\t\t\tpath.model.set(path, value)\n\t\t}, 500)\n\t}\n\tconst onChange = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = integer ? parseInt(value) : parseFloat(value)\n\t\tsetText(value)\n\t\tscheduleCommit(parsed)\n\t}\n\tconst onBlur = () => {\n\t\tsetText(value ?? '')\n\t}\n\tconst onColor = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = parseInt(value.slice(1), 16)\n\t\tsetText(parsed)\n\t\tscheduleCommit(parsed)\n\t}\n\treturn <>\n\t\t\n\t\t{config?.color && }\n\t\t{path.equals(new Path(['generator', 'seed'])) && }\n\t\n}\n\nfunction StringSuffix({ path, getValues, config, node, value, lang, states }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tevt.stopPropagation()\n\t\tconst newValue = (evt.target as HTMLSelectElement).value\n\t\tpath.model.set(path, newValue.length === 0 ? undefined : newValue)\n\t}\n\tconst values = getValues()\n\tconst context = path.getContext().join('.')\n\tif (nbtFields.includes(context)) {\n\t\treturn \n\t} else if ((isEnum(config) && !config.additional) || selectRegistries.includes(context)) {\n\t\tlet context = new Path([])\n\t\tif (isEnum(config) && typeof config.enum === 'string') {\n\t\t\tcontext = context.contextPush(config.enum)\n\t\t} else if (!isEnum(config) && config?.validator === 'resource' && typeof config.params.pool === 'string') {\n\t\t\tcontext = context.contextPush(config.params.pool)\n\t\t}\n\t\treturn \n\t} else if (!isEnum(config) && config?.validator === 'block_state_key') {\n\t\tconst blockState = states?.[relativePath(path, config.params.id).get()]\n\t\tconst values = Object.keys(blockState?.properties ?? {})\n\t\treturn \n\t} else {\n\t\tconst datalistId = hexId()\n\t\treturn <>\n\t\t\t 0 ? datalistId : ''} />\n\t\t\t{values.length > 0 && \n\t\t\t\t{values.map(v => }\n\t\t\n\t}\n}\n\ntype TreeNodeProps = {\n\tschema: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n\tcompare?: any,\n\tlabel?: string,\n\tchildren?: ComponentChildren,\n}\nfunction TreeNode({ label, schema, path, value, lang, states, ctx, children }: TreeNodeProps) {\n\tconst type = schema.type(path)\n\tconst category = schema.category(path)\n\tconst context = path.getContext().join('.')\n\n\tconst [active, setActive] = useFocus()\n\tconst onContextMenu = (evt: MouseEvent) => {\n\t\tevt.preventDefault()\n\t\tsetActive()\n\t}\n\n\tconst newCtx = {...ctx}\n\tdelete newCtx.index\n\tconst [prefix, suffix, body] = schema.hook(renderHtml, path, value, lang, states, newCtx)\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\t{prefix}\n\t\t\t\n\t\t\t{suffix}\n\t\t
\n\t\t{body &&
{body}
}\n\t
\n}\n\nconst MemoedTreeNode = memo(TreeNode, (prev, next) => {\n\treturn prev.schema === next.schema\n\t\t&& prev.lang === next.lang\n\t\t&& prev.path.equals(next.path)\n\t\t&& deepEqual(prev.ctx, next.ctx)\n\t\t&& deepEqual(prev.value, next.value)\n})\n\nfunction isEnum(value?: ValidationOption | EnumOption): value is EnumOption {\n\treturn !!(value as any)?.enum\n}\n\nfunction hashString(str: string) {\n\tvar hash = 0, i, chr\n\tfor (i = 0; i < str.length; i++) {\n\t\tchr = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + chr\n\t\thash |= 0\n\t}\n\treturn hash\n}\n\nfunction pathLocale(lang: string, path: Path, ...params: string[]) {\n\tconst ctx = path.getContext()\n\tfor (let i = 0; i < ctx.length; i += 1) {\n\t\tconst key = ctx.slice(i).join('.')\n\t\tconst result = locale(lang, key, ...params)\n\t\tif (key !== result) {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn ctx[ctx.length - 1]\n}\n\nfunction ErrorPopup({ lang, path, nested }: { lang: string, path: ModelPath, nested?: boolean }) {\n\tconst e = nested\n\t\t?\tpath.model.errors.getAll().filter(e => e.path.startsWith(path))\n\t\t: path.model.errors.get(path, true)\n\tif (e.length === 0) return null\n\tconst message = locale(lang, e[0].error, ...(e[0].params ?? []))\n\treturn popupIcon('node-error', 'issue_opened', message)\n}\n\nfunction HelpPopup({ lang, path }: { lang: string, path: Path }) {\n\tconst key = path.contextPush('help').getContext().join('.')\n\tconst message = locale(lang, key)\n\tif (message === key) return null\n\treturn popupIcon('node-help', 'info', message)\n}\n\nconst popupIcon = (type: string, icon: keyof typeof Octicon, popup: string) => {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t{Octicon[icon]}\n\t\t{popup}\n\t
\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useErrorBoundary, useState } from 'preact/hooks'\nimport { useModel } from '../hooks'\nimport { FullNode } from '../schema/renderHtml'\nimport type { BlockStateRegistry, VersionId } from '../Schemas'\n\ntype TreePanelProps = {\n\tlang: string,\n\tversion: VersionId,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tonError: (message: string) => unknown,\n}\nexport function Tree({ lang, model, blockStates, onError }: TreePanelProps) {\n\tif (!model || !blockStates) return <>\n\n\tconst [error] = useErrorBoundary(e => {\n\t\tonError(`Error rendering the tree: ${e.message}`)\n\t\tconsole.error(e)\n\t})\n\tif (error) return <>\n\n\tconst [, setState] = useState(0)\n\tuseModel(model, () => {\n\t\tsetState(state => state + 1)\n\t})\n\n\treturn
\n\t\t\n\t
\n}\n","import { locale } from '../Locales'\n\ntype FieldSettingsProps = {\n\tlang: string,\n\tpath?: string,\n}\nexport function FieldSettings({ lang }: FieldSettingsProps) {\n\tconst loc = locale.bind(null, lang)\n\treturn
\n\t\t
\n\t\t\t

{loc('settings.fields.description')}

\n\t\t\t
    \n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport { getCurrentUrl } from 'preact-router'\nimport { useEffect, useErrorBoundary, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Analytics } from '../Analytics'\nimport { Ad, Btn, BtnInput, BtnMenu, ErrorPanel, HasPreview, Octicon, PreviewPanel, SourcePanel, Tree } from '../components'\nimport { fetchPreset } from '../DataFetcher'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../Schemas'\nimport { checkVersion, getBlockStates, getCollections, getModel } from '../Schemas'\nimport { getGenerator } from '../Utils'\n\ntype GeneratorProps = {\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tonChangeVersion: (version: VersionId) => unknown,\n\tdefault?: true,\n}\nexport function Generator({ lang, changeTitle, version, onChangeVersion }: GeneratorProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tconst [errorBoundary, errorRetry] = useErrorBoundary()\n\tif (errorBoundary) {\n\t\treturn
\n\t}\n\n\tconst gen = getGenerator(getCurrentUrl())\n\tif (!gen) {\n\t\treturn
\n\t}\n\n\tuseEffect(() => {\n\t\tsetError(null)\n\t}, [gen.id, version])\n\n\tconst allowedVersions = config.versions\n\t\t.filter(v => checkVersion(v.id, gen.minVersion))\n\t\t.map(v => v.id as VersionId)\n\n\tchangeTitle(loc('title.generator', loc(gen.id)), allowedVersions)\n\n\tif (!checkVersion(version, gen.minVersion)) {\n\t\tsetError(`The minimum version for this generator is ${gen.minVersion}`)\n\t}\n\n\tconst [model, setModel] = useState(null)\n\tconst [blockStates, setBlockStates] = useState(null)\n\tuseEffect(() => {\n\t\tsetModel(null)\n\t\tgetBlockStates(version)\n\t\t\t.then(b => setBlockStates(b))\n\t\tgetModel(version, gen.id)\n\t\t\t.then(m => setModel(m))\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id])\n\n\tuseModel(model, () => {\n\t\tsetError(null)\n\t})\n\n\tconst reset = () => {\n\t\tAnalytics.generatorEvent('reset')\n\t\tmodel?.reset(DataModel.wrapLists(model.schema.default()), true)\n\t}\n\tconst undo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('undo', 'Menu')\n\t\tmodel?.undo()\n\t}\n\tconst redo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('redo', 'Menu')\n\t\tmodel?.redo()\n\t}\n\n\tconst onKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.ctrlKey && e.key === 'z') {\n\t\t\tAnalytics.generatorEvent('undo', 'Hotkey')\n\t\t\tmodel?.undo()\n\t\t} else if (e.ctrlKey && e.key === 'y') {\n\t\t\tAnalytics.generatorEvent('redo', 'Hotkey')\n\t\t\tmodel?.redo()\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keyup', onKeyUp)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keyup', onKeyUp)\n\t\t}\n\t}, [model])\n\n\tconst [presetFilter, setPresetFilter] = useState('')\n\tconst [presetResults, setPresetResults] = useState([])\n\tuseEffect(() => {\n\t\tgetCollections(version)\n\t\t\t.then(collections => {\n\t\t\t\tconst terms = (presetFilter ?? '').trim().split(' ')\n\t\t\t\tconst presets = collections.get(gen.id)\n\t\t\t\t\t.map(p => p.slice(10))\n\t\t\t\t\t.filter(p => terms.every(t => p.includes(t)))\n\t\t\t\tif (presets) {\n\t\t\t\t\tsetPresetResults(presets)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id, presetFilter])\n\n\tconst loadPreset = (id: string) => {\n\t\tAnalytics.generatorEvent('load-preset', id)\n\t\tfetchPreset(version, gen.path ?? gen.id, id).then(preset => {\n\t\t\tconst seed = model?.get(new Path(['generator', 'seed']))\n\t\t\tif (preset?.generator?.seed !== undefined && seed !== undefined) {\n\t\t\t\tpreset.generator.seed = seed\n\t\t\t\tif (preset.generator.biome_source?.seed !== undefined) {\n\t\t\t\t\tpreset.generator.biome_source.seed = seed\n\t\t\t\t}\n\t\t\t}\n\t\t\tmodel?.reset(DataModel.wrapLists(preset), false)\n\t\t})\n\t}\n\n\tconst [sourceShown, setSourceShown] = useState(window.innerWidth > 820)\n\tconst [doCopy, setCopy] = useState(0)\n\tconst [doDownload, setDownload] = useState(0)\n\tconst [doImport, setImport] = useState(0)\n\n\tconst copySource = () => {\n\t\tAnalytics.generatorEvent('copy')\n\t\tsetCopy(doCopy + 1)\n\t}\n\tconst downloadSource = () => {\n\t\tAnalytics.generatorEvent('download')\n\t\tsetDownload(doDownload + 1)\n\t}\n\tconst importSource = () => {\n\t\tAnalytics.generatorEvent('import')\n\t\tsetSourceShown(true)\n\t\tsetImport(doImport + 1)\n\t}\n\tconst toggleSource = () => {\n\t\tAnalytics.generatorEvent('toggle-output', !sourceShown ? 'visible' : 'hidden')\n\t\tsetSourceShown(!sourceShown)\n\t\tsetCopy(0)\n\t\tsetDownload(0)\n\t\tsetImport(0)\n\t}\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copySuccess = () => {\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000)\n\t}\n\n\tconst [previewShown, setPreviewShown] = useState(false)\n\tconst hasPreview = HasPreview.includes(gen.id)\n\tif (previewShown && !hasPreview) setPreviewShown(false)\n\tlet actionsShown = 1\n\tif (hasPreview) actionsShown += 1\n\tif (sourceShown) actionsShown += 2\n\n\tconst togglePreview = () => {\n\t\tAnalytics.generatorEvent('toggle-preview', !previewShown ? 'visible' : 'hidden')\n\t\tsetPreviewShown(!previewShown)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{presetResults.map(preset => loadPreset(preset)} />)}\n\t\t\t\t\t
\n\t\t\t\t\t{presetResults.length === 0 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{allowedVersions.reverse().map(v =>\n\t\t\t\t\t\t onChangeVersion(v)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{error && setError(null)} />}\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{previewShown ? Octicon.x_circle : Octicon.play}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{Octicon.download}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{copyActive ? Octicon.check : Octicon.clippy}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{sourceShown ? Octicon.chevron_right : Octicon.code}\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype HomeProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Home({ lang, changeTitle }: HomeProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.home'))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => !g.category).map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t

Analyse your performance reports

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Browse through and mix all the vanilla sounds

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Convert your 1.16 data packs to 1.17

\n\t\t\t
\n\t\t
\n\t
\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype WorldgenProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Worldgen({ lang, changeTitle }: WorldgenProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.generator_category', loc('worldgen')))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => g.category === 'worldgen').map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t
\n}\n","import { render } from 'preact'\nimport type { RouterOnChangeArgs } from 'preact-router'\nimport { Router } from 'preact-router'\nimport { useEffect, useState } from 'preact/hooks'\nimport config from '../config.json'\nimport '../styles/global.css'\nimport '../styles/nodes.css'\nimport { Analytics } from './Analytics'\nimport { Header } from './components'\nimport { loadLocale, locale, Locales } from './Locales'\nimport { FieldSettings, Generator, Home, Worldgen } from './pages'\nimport type { VersionId } from './Schemas'\nimport { Store } from './Store'\nimport { cleanUrl } from './Utils'\n\nconst VERSIONS_IN_TITLE = 3\n\nfunction Main() {\n\tconst [lang, setLanguage] = useState('en')\n\tconst changeLanguage = async (language: string) => {\n\t\tif (!Locales[language]) {\n\t\t\tawait loadLocale(language)\n\t\t}\n\t\tAnalytics.setLanguage(language)\n\t\tStore.setLanguage(language)\n\t\tsetLanguage(language)\n\t}\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst target = Store.getLanguage()\n\t\t\tawait Promise.all([\n\t\t\t\tloadLocale('en'),\n\t\t\t\t...(target !== 'en' ? [loadLocale(target)] : []),\n\t\t\t])\n\t\t\tsetLanguage(target)\n\t\t})()\n\t}, [])\n\n\tconst [theme, setTheme] = useState(Store.getTheme())\n\tconst changeTheme = (theme: string) => {\n\t\tAnalytics.setTheme(theme)\n\t\tStore.setTheme(theme)\n\t\tsetTheme(theme)\n\t}\n\tuseEffect(() => {\n\t\tdocument.documentElement.setAttribute('data-theme', theme)\n\t}, [theme])\n\n\tconst [version, setVersion] = useState(Store.getVersion())\n\tconst changeVersion = (version: VersionId) => {\n\t\tAnalytics.setVersion(version)\n\t\tStore.setVersion(version)\n\t\tsetVersion(version)\n\t}\n\n\tconst [title, setTitle] = useState(locale(lang, 'title.home'))\n\tconst changeTitle = (title: string, versions?: VersionId[]) => {\n\t\tversions ??= config.versions.map(v => v.id as VersionId)\n\t\tversions.splice(0, versions.length - VERSIONS_IN_TITLE)\n\t\tdocument.title = `${title} Minecraft ${versions.join(', ')}`\n\t\tsetTitle(title)\n\t}\n\n\tconst changeRoute = (e: RouterOnChangeArgs) => {\n\t\t// Needs a timeout to ensure the title is set correctly\n\t\tsetTimeout(() => Analytics.pageview(cleanUrl(e.url)))\n\t}\n\n\treturn <>\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n}\n\nrender(
, document.body)\n"],"names":["Analytics","type","id","getElementById","remove","window","load","data-ea-publisher","data-ea-type","class","icon","label","active","class_","onClick","Octicon","large","doSelect","value","onChange","onInput","e","value2","target","ref","useRef","current","select","stopPropagation","size","draw","onDrag","onHover","onLeave","inputs","canvas","dragStart","dragRequest","dragPending","dragBusy","onMouseDown","offsetX","offsetY","onMouseMove","x","clientWidth","y2","clientHeight","dx","dy","requestAnimationFrame","async","dx2","dy2","onMouseUp","onMouseLeave","addEventListener","body","removeEventListener","redraw","redrawCount","ctx","getContext","s2","width","height","img","getImageData","ownCount","putImageData","setActive","useState","hider","model","invalidated","listener","[object Object]","addListener","removeListener","relative","children","useFocus","Btn","Analytics2","ID_SITE","ID_GENERATOR","category","action","index","pageview","page","setLanguage","language","setTheme","theme","setVersion","version","setPreview","preview","generatorEvent","archive","xmlns","viewBox","fill-rule","d","arrow_left","arrow_right","check","chevron_down","chevron_right","chevron_up","clippy","code","dash","device_desktop","download","eye","eye_closed","gear","globe","history","info","issue_opened","kebab_horizontal","link","mark_github","moon","play","plus","plus_circle","search","sun","sync","tag","three_bars","trashcan","unfold","upload","x_circle","error","onDismiss","href","scriptRel","seen","__vitePreload","baseModule","deps","relList","document","createElement","supports","Promise","all","map","dep","isCss","endsWith","cssSelector","querySelector","rel","as","crossOrigin","head","appendChild","res","rej","then","Locales","fallback","English","key","params","replace","parseInt","match","slice","resolveLocaleParams","en","langConfig","config","languages","find","lang","data","__variableDynamicImportRuntime0__","schema","schemas","__variableDynamicImportRuntime1__","__spreadValues","default","dec2hex","dec","toString","substr","length","arr","Uint8Array","crypto","getRandomValues","Array","from","join","BigInt","Math","floor","random","Number","MAX_SAFE_INTEGER","seed","set","Path","url","replaceAll","trimmedUrl","generators","g2","str","h","abs","i","imul","charCodeAt","hashString","a2","b","c","max","min","lerp","Error","message","deepClone","rfdc","constructor","isArray","deepEqual","valueOf","Object","prototype","keys","hasOwnProperty","call","unwrapLists","v","node","entries","k","forEach","localStorage","removeItem","mcdataUrl","vanillaDatapackUrl","refs","hash","versionId","collectionTarget","blockStateTarget","versions","debug","JSON","stringify","dynamic","filter","getItem","r","matches","cache","caches","open","promises","request","push","delete","warn","deleteMatching","startsWith","setItem","fetchRegistries","fetchBlockStateMap","fetchDynamicRegistries","registries","checkVersion","minVersion","maxVersion","mcdata_master","getData","data2","register","path","values","properties","states","assign","vanilla_datapack_summary","registry","versionData","vanilla_datapack_data","fetch","json","fn","cacheResponse","ok","fetchResponse","responseData","put","Response","VersionIds","Versions","Models","versionGetter","1.15","java15","1.16","java16","1.17","java17","1.18","java18","collections","getCollections","blockStates","fetchData","getSchemas","minVersionId","maxVersionId","findIndex","Themes","system","dark","light","title","changeTheme","changeLanguage","loc","locale","bind","gen","getGenerator","getCurrentUrl","Link","Icons","home","BtnMenu","route","cleanUrl","name","th","fill","rx","y","report","sounds","cx","cy","clip-rule","cacheState","biomeSourceCache","climateSamplerCache","state","options","newState","octaves","FixedBiome","biome","shift","scale","numBiomes","biomes","_y","z","preset","NetherPreset18","NetherPreset","fetchPreset","generator","biome_source","OverworldPreset18","MultiNoise","fromJson","noise","config2","firstOctave","clamp","NormalNoise","Random","n","n2","sample","minDist","Infinity","minBiome","parameters","p","dist","square","altitude","temperature","humidity","weirdness","offset","getBiomeSource","settings","NoiseGeneratorSettings","noiseSampler","NoiseSampler","getClimate","biomeSource","climateSampler","biomeColors","color","VanillaColors","stringToColor","minecraft:badlands","minecraft:badlands_plateau","minecraft:bamboo_jungle","minecraft:bamboo_jungle_hills","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:birch_forest_hills","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:dark_forest_hills","minecraft:deep_cold_ocean","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:deep_warm_ocean","minecraft:desert","minecraft:desert_hills","minecraft:desert_lakes","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:giant_spruce_taiga","minecraft:giant_spruce_taiga_hills","minecraft:giant_tree_taiga","minecraft:giant_tree_taiga_hills","minecraft:gravelly_mountains","minecraft:ice_spikes","minecraft:jungle","minecraft:jungle_edge","minecraft:jungle_hills","minecraft:lukewarm_ocean","minecraft:modified_badlands_plateau","minecraft:modified_gravelly_mountains","minecraft:modified_jungle","minecraft:modified_jungle_edge","minecraft:modified_wooded_badlands_plateau","minecraft:mountain_edge","minecraft:mountains","minecraft:mushroom_field_shore","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:shattered_savanna","minecraft:shattered_savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_mountains","minecraft:snowy_taiga","minecraft:snowy_taiga_hills","minecraft:snowy_taiga_mountains","minecraft:snowy_tundra","minecraft:soul_sand_valley","minecraft:stone_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:swamp_hills","minecraft:taiga","minecraft:taiga_hills","minecraft:taiga_mountains","minecraft:tall_birch_forest","minecraft:tall_birch_hills","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:wooded_badlands_plateau","minecraft:wooded_hills","minecraft:wooded_mountains","minecraft:snowy_slopes","minecraft:lofty_peaks","minecraft:snowcapped_peaks","minecraft:stony_peaks","minecraft:grove","minecraft:meadow","minecraft:lush_caves","minecraft:dripstone_caves","altitude_noise","amplitudes","temperature_noise","humidity_noise","weirdness_noise","continentalness","erosion","depth","terrain","featureColors","placements","features","biomeInfoNoise","PerlinNoise","fork","seaLevel","nextFloat","nextInt","sampleInt","this","pos","feature","j2","base","spread","normalize","min_inclusive","max_inclusive","source","indexOf","useFeature","featureFn","Features","decorator2","decoratorFn","Decorators","decorated","getPositions","decorator","getPlacements","random_boolean_selector","feature_true","feature_false","random_selector","f","chance","simple_random_selector","count","count_extra","extra_chance","extra_count","count_multilayer","count_noise","noise_level","below_noise","above_noise","count_noise_biased","factor","noise_factor","ceil","noise_offset","noise_to_count_ratio","dark_oak_tree","_config","_","outer","flatMap","inner","depth_average","decorateY","baseline","emerald_ore","fire","glowstone","heightmap","heightmap_spread_double","heightmap_world_surface","iceberg","lava_lake","nope","range","maximum","top_offset","bottom_offset","range_biased","range_very_biased","spread_32_above","top_solid_heightmap","magma","surface_relative_threshold","water_lake","minLimitPerlinNoise","maxLimitPerlinNoise","mainPerlinNoise","depthNoise","xOffset","chunkWidth","size_horizontal","chunkHeight","size_vertical","chunkCountY","amplified","biomeDepth","biomeScale","noiseColumnCache","ox","noise1","fillNoiseColumn","noise2","yy","oy","cachedColumn","xzScale","sampling","xz_scale","yScale","y_scale","xzFactor","xz_factor","yFactor","y_factor","randomDensity","random_density_offset","getRandomDensity","sampleAndClampNoise","getOctaveNoise","zo","falloff","density_factor","density_offset","top_slide","clampedLerp","bottom_slide","x2","wrap","y22","z2","minLimitNoise","maxLimitNoise","mainNoise","colors","minecraft:air","minecraft:water","minecraft:lava","minecraft:stone","minecraft:netherrack","minecraft:end_stone","generatorCache","chunkCache","bottomSlide","topSlide","shape","biomeFactor","biomeOffset","peaks","biomePeaks","nearWater","NoiseChunkGenerator","getCached","LevelSlice","minY","generator2","state2","getBlockState","getName","OldNoiseChunkGenerator","reset","row","iterateNoiseColumn","reverse","getColor","minX","filled","chunks","cached","Chunk","ChunkPos","create","Z","chunk","chunkIndex","BiomeSourcePreview","shown","setScale","focused","setFocused","refineTimeout","get","obj","getOctaves","calculateState","useCanvas","oz","col","worldX","worldZ","getBiomeColor","getBiome","biomeMap","setTimeout","xx","zz","toWorld","changeScale","newScale","newSeed","DecoratorPreview","setSeed","randomSeed","NoiseSettingsPreview","setBiomeFactor","setBiomeOffset","setBiomePeaks","hasPeaks","worldY","min_y","BtnInput","HasPreview","setCount","transformOutput","switchNode","props","hook","blockState","validation","validator","relativePath","includes","getActiveFields","activeFields","enabled","Store","Store2","getLanguage","getTheme","getVersion","getIndent","setIndent","indent","INDENT","2_spaces","4_spaces","tabs","doCopy","doDownload","doImport","copySuccess","onError","retransform","getOutput","useCallback","model2","blockStates2","ModelPath","output","clipboard","writeText","content","encodeURIComponent","setAttribute","click","changeIndent","parse","DataModel","wrapLists","spellcheck","autocorrect","placeholder","style","selectRegistries","hiddenFields","flattenedFields","inlineFields","nbtFields","fixedLists","keysModel","MapNode","StringNode","historyMax","prefix","suffix","renderHtml","some","data-category","boolean","BooleanSuffix","__spreadProps","choices","choice","activeCase","contextPath","context","getModel","getArray","choiceContextPath","choiceContext","inject","c2","change","pathLocale","contextPush","expand","collapse","isToggled","useToggles","maxShown","setMaxShown","maxLength","ErrorPopup","modelPush","hexId","cValue","cId","cPath","canToggle","toggle","nested","Collapsed","MemoedTreeNode","disabled","keyPath","keysSchema","enum","last","errors","add","ObjectNode","fromEntries","cSchema","number","NumberSuffix","getChildModelPath","optional","newCtx","pools","loot","child","cPrefix","cSuffix","cBody","isFlattened","isInlined","HelpPopup","string","StringSuffix","toggleState","setToggleState","Map","toggleAll","setToggleAll","evt","ctrlKey","integer","text","setText","commitTimeout","scheduleCommit","parsed","parseFloat","onBlur","padStart","equals","getValues","newValue","isEnum","additional","context2","pool","datalistId","list","values2","memo","onContextMenu","preventDefault","navigator","prev","next","result","getAll","e2","message2","popupIcon","popup","useErrorBoundary","setState","FullNode","changeTitle","onChangeVersion","setError","errorBoundary","errorRetry","ErrorPanel","allowedVersions","setModel","setBlockStates","schemaName","validate","m","catch","onKeyUp","undo","redo","presetFilter","setPresetFilter","presetResults","setPresetResults","terms","trim","split","presets","every","t","sourceShown","setSourceShown","innerWidth","setCopy","setDownload","setImport","copyActive","setCopyActive","copyTimeout","previewShown","setPreviewShown","hasPreview","actionsShown","Ad","loadPreset","Tree","PreviewPanel","SourcePanel","ToolCard","loadLocale","documentElement","setTitle","title2","splice","Header","theme2","Router","Home","FieldSettings","Worldgen","Generator","version2","render","Main"],"mappings":"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"} \ No newline at end of file diff --git a/assets/index.bba0bf2b.js b/assets/index.bba0bf2b.js new file mode 100644 index 00000000..8ab19c84 --- /dev/null +++ b/assets/index.bba0bf2b.js @@ -0,0 +1,2 @@ +var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,i=(t,n,o)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,l=(e,t)=>{for(var n in t||(t={}))r.call(t,n)&&i(e,n,t[n]);if(o)for(var n of o(t))a.call(t,n)&&i(e,n,t[n]);return e},s=(e,o)=>t(e,n(o));import{y as c,a as d,s as u,l as m,r as h,b as p,j as g,c as f,d as v,e as _,g as w,L as b,f as y,C as x,M as k,_ as C,X as M,W as z,R as A,h as I,N as V,i as E,I as j,k as O,A as L,m as $,q as S,n as P,o as D}from"./vendor.6ba5b923.js";var N,T=JSON.parse('{"languages":[{"code":"de","name":"Deutsch"},{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"pl","name":"Polski"},{"code":"pt","name":"Português"},{"code":"ru","name":"Русский"},{"code":"sk","name":"Slovenčina","schemas":false},{"code":"zh-cn","name":"简体中文"},{"code":"zh-tw","name":"正體中文"}],"versions":[{"id":"1.15","refs":{"mcdata_master":"13355f7"}},{"id":"1.16","refs":{"mcdata_master":"1.16.4","vanilla_datapack_data":"1.16.4-data","vanilla_datapack_summary":"1.16.4-summary"}},{"id":"1.17","refs":{"mcdata_master":"1.17.1","vanilla_datapack_data":"1.17.1-data","vanilla_datapack_summary":"1.17.1-summary"}},{"id":"1.18","refs":{"mcdata_master":"master","vanilla_datapack_data":"data","vanilla_datapack_summary":"summary"},"dynamic":true}],"generators":[{"id":"loot_table","url":"loot-table","path":"loot_tables","schema":"loot_table","maxVersion":"1.17"},{"id":"predicate","url":"predicate","path":"predicates","schema":"predicate"},{"id":"item_modifier","url":"item-modifier","path":"item_modifiers","schema":"item_modifier","minVersion":"1.17"},{"id":"advancement","url":"advancement","path":"advancements","schema":"advancement"},{"id":"dimension","url":"dimension","schema":"dimension","category":"worldgen","minVersion":"1.16"},{"id":"dimension_type","url":"dimension-type","schema":"dimension_type","category":"worldgen","minVersion":"1.16"},{"id":"world","url":"world","schema":"world_settings","category":"worldgen","minVersion":"1.16"},{"id":"worldgen/biome","url":"worldgen/biome","category":"worldgen","schema":"biome","minVersion":"1.16"},{"id":"worldgen/configured_carver","url":"worldgen/carver","category":"worldgen","schema":"configured_carver","minVersion":"1.16"},{"id":"worldgen/configured_feature","url":"worldgen/feature","category":"worldgen","schema":"configured_feature","minVersion":"1.16"},{"id":"worldgen/noise_settings","url":"worldgen/noise-settings","category":"worldgen","schema":"noise_settings","minVersion":"1.16"},{"id":"worldgen/configured_structure_feature","url":"worldgen/structure-feature","category":"worldgen","schema":"configured_structure_feature","minVersion":"1.16"},{"id":"worldgen/configured_surface_builder","url":"worldgen/surface-builder","category":"worldgen","schema":"configured_surface_builder","minVersion":"1.16"},{"id":"worldgen/processor_list","url":"worldgen/processor-list","category":"worldgen","schema":"processor_list","minVersion":"1.16"},{"id":"worldgen/template_pool","url":"worldgen/template-pool","category":"worldgen","schema":"template_pool","minVersion":"1.16"}],"registries":[{"id":"advancement","dynamic":true},{"id":"attribute","minVersion":"1.16"},{"id":"block"},{"id":"dimension","dynamic":true},{"id":"dimension_type","dynamic":true},{"id":"enchantment"},{"id":"entity_type"},{"id":"fluid"},{"id":"function","dynamic":true},{"id":"float_provider_type","minVersion":"1.17"},{"id":"item"},{"id":"int_provider_type","minVersion":"1.17"},{"id":"height_provider_type","minVersion":"1.17"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_function_type","minVersion":"1.16"},{"id":"loot_nbt_provider_type","minVersion":"1.17"},{"id":"loot_number_provider_type","minVersion":"1.17"},{"id":"loot_pool_entry_type","minVersion":"1.16"},{"id":"loot_score_provider_type","minVersion":"1.17"},{"id":"loot_table","dynamic":true},{"id":"mob_effect"},{"id":"pos_rule_test","minVersion":"1.16"},{"id":"potion","minVersion":"1.15"},{"id":"predicate","dynamic":true},{"id":"recipe","dynamic":true},{"id":"rule_test","minVersion":"1.16"},{"id":"sound_event"},{"id":"stat_type"},{"id":"structure","dynamic":true},{"id":"tag/block","dynamic":true},{"id":"tag/entity_type","dynamic":true},{"id":"tag/fluid","dynamic":true},{"id":"tag/function","dynamic":true},{"id":"tag/item","dynamic":true},{"id":"worldgen/biome","dynamic":true},{"id":"worldgen/block_state_provider_type","minVersion":"1.16"},{"id":"worldgen/block_placer_type","minVersion":"1.16"},{"id":"worldgen/biome_source","minVersion":"1.16"},{"id":"worldgen/carver","minVersion":"1.16"},{"id":"worldgen/chunk_generator","minVersion":"1.16"},{"id":"worldgen/configured_carver","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_decorator","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_structure_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_surface_builder","minVersion":"1.16","dynamic":true},{"id":"worldgen/decorator","minVersion":"1.16"},{"id":"worldgen/feature","minVersion":"1.16"},{"id":"worldgen/feature_size_type","minVersion":"1.16"},{"id":"worldgen/foliage_placer_type","minVersion":"1.16"},{"id":"worldgen/noise_settings","minVersion":"1.16","dynamic":true},{"id":"worldgen/processor_list","minVersion":"1.16","dynamic":true},{"id":"worldgen/structure_feature","minVersion":"1.16"},{"id":"worldgen/structure_pool_element","minVersion":"1.16"},{"id":"worldgen/structure_processor","minVersion":"1.16"},{"id":"worldgen/surface_builder","minVersion":"1.16"},{"id":"worldgen/template_pool","minVersion":"1.16","dynamic":true},{"id":"worldgen/tree_decorator_type","minVersion":"1.16"},{"id":"worldgen/trunk_placer_type","minVersion":"1.16"},{"id":"biome","maxVersion":"1.15"},{"id":"worldgen/biome","minVersion":"1.16","path":"processed/reports/biomes"}]}');function B({type:e,id:t}){return c((()=>{var e;null==(e=document.getElementById("ad-placeholder"))||e.remove(),"ethicalads"in window&ðicalads.load()}),[]),d("div",{"data-ea-publisher":"misode-github-io","data-ea-type":e,class:"ad dark flat",id:t})}function H({icon:e,label:t,active:n,class:o,tooltip:r,tooltipLoc:a,onClick:i}){return d("div",{class:`btn${n?" active":""}${o?` ${o}`:""}${r?` tooltipped tip-${null!=a?a:"sw"}`:""}`,onClick:i,"aria-label":r},e&&Y[e],t&&d("span",null,t))}function R({icon:e,label:t,large:n,doSelect:o,value:r,placeholder:a,onChange:i}){const l=void 0===i?()=>{}:e=>{const t=e.target.value;null==i||i(t)},s=u(null);return c((()=>{o&&s.current&&s.current.select()}),[o]),d("div",{class:"btn btn-input "+(n?"large-input":""),onClick:e=>e.stopPropagation()},e&&Y[e],t&&d("span",null,t),d("input",{ref:s,type:"text",value:r,onChange:l,placeholder:a}))}function F({size:e,draw:t,onDrag:n,onHover:o,onLeave:r},a){const i=u(null),l=u(),s=u(),d=u([0,0]),m=u(!1);c((()=>{const e=e=>{l.current=[e.offsetX,e.offsetY]},t=e=>{if(void 0===l.current){const t=e.offsetX/i.current.clientWidth,n=e.offsetY/i.current.clientHeight;return void(null==o||o(t,n))}if(!n)return;const t=e.offsetX-l.current[0],r=e.offsetY-l.current[1];0===t&&0===r||(d.current=[d.current[0]+t,d.current[1]+r],m.current||(cancelAnimationFrame(s.current),s.current=requestAnimationFrame((async()=>{m.current=!0;const e=d.current[0]/i.current.clientWidth,t=d.current[1]/i.current.clientHeight;d.current=[0,0],await(null==n?void 0:n(e,t)),m.current=!1})))),l.current=[e.offsetX,e.offsetY]},a=()=>{l.current=void 0},c=()=>{null==r||r()};return i.current.addEventListener("mousedown",e),i.current.addEventListener("mousemove",t),i.current.addEventListener("mouseleave",c),document.body.addEventListener("mouseup",a),()=>{i.current.removeEventListener("mousedown",e),i.current.removeEventListener("mousemove",t),i.current.removeEventListener("mouseleave",c),document.body.removeEventListener("mouseup",a)}}),[...null!=a?a:[],i.current]);const h=u(),p=u(0);return h.current=async()=>{const n=i.current.getContext("2d"),o=e();i.current.width=o[0],i.current.height=o[1];const r=n.getImageData(0,0,o[0],o[1]),a=p.current+=1;await t(r),a===p.current&&n.putImageData(r,0,0)},{canvas:i,redraw:h.current}}function J(){const[e,t]=m(!1),n=()=>{t(!1)};return c((()=>(e&&(document.body.addEventListener("click",n),document.body.addEventListener("contextmenu",n)),()=>{document.body.removeEventListener("click",n),document.body.removeEventListener("contextmenu",n)})),[e]),[e,()=>t(!0)]}function W(e,t){const n={invalidated(){e&&t(e)}};c((()=>(null==e||e.addListener(n),()=>{null==e||e.removeListener(n)})),[e])}function G({icon:e,label:t,relative:n,tooltip:o,children:r}){const[a,i]=J();return d("div",{class:"btn-menu"+(!1===n?" no-relative":"")},d(H,s(l({},{icon:e,label:t,tooltip:o}),{onClick:i})),a&&d("div",{class:"btn-group"},r))}!function(e){const t="Site",n="Generator";function o(e,t,n){ga("send","event",e,t,n)}function r(e,t){ga("set",`dimension${e}`,t)}e.pageview=function(e){ga("set","page",e),ga("send","pageview")},e.setLanguage=function(e){r(4,e),o(t,"set-language",e)},e.setTheme=function(e){r(1,e),o(t,"set-theme",e)},e.setVersion=function(e){r(3,e),o(n,"set-version",e)},e.setPreview=function(e){r(5,e),o(n,"set-preview",e)},e.generatorEvent=function(e,t){o(n,e,t)}}(N||(N={}));const Y={archive:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5a.25.25 0 00-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-1.5a.25.25 0 00-.25-.25H1.75zM0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0114.25 6H1.75A1.75 1.75 0 010 4.25v-1.5zM1.75 7a.75.75 0 01.75.75v5.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25v-5.5a.75.75 0 111.5 0v5.5A1.75 1.75 0 0113.25 15H2.75A1.75 1.75 0 011 13.25v-5.5A.75.75 0 011.75 7zm4.5 1a.75.75 0 000 1.5h3.5a.75.75 0 100-1.5h-3.5z"})),arrow_left:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"})),arrow_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"})),check:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})),chevron_down:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"})),chevron_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"})),chevron_up:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"})),clippy:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"})),code:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"})),dash:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2 8a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H2.75A.75.75 0 012 8z"})),device_desktop:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"})),download:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),eye:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"})),eye_closed:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M.143 2.31a.75.75 0 011.047-.167l14.5 10.5a.75.75 0 11-.88 1.214l-2.248-1.628C11.346 13.19 9.792 14 8 14c-1.981 0-3.67-.992-4.933-2.078C1.797 10.832.88 9.577.43 8.9a1.618 1.618 0 010-1.797c.353-.533.995-1.42 1.868-2.305L.31 3.357A.75.75 0 01.143 2.31zm3.386 3.378a14.21 14.21 0 00-1.85 2.244.12.12 0 00-.022.068c0 .021.006.045.022.068.412.621 1.242 1.75 2.366 2.717C5.175 11.758 6.527 12.5 8 12.5c1.195 0 2.31-.488 3.29-1.191L9.063 9.695A2 2 0 016.058 7.52l-2.53-1.832zM8 3.5c-.516 0-1.017.09-1.499.251a.75.75 0 11-.473-1.423A6.23 6.23 0 018 2c1.981 0 3.67.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.619 1.619 0 010 1.798c-.11.166-.248.365-.41.587a.75.75 0 11-1.21-.887c.148-.201.272-.382.371-.53a.119.119 0 000-.137c-.412-.621-1.242-1.75-2.366-2.717C10.825 4.242 9.473 3.5 8 3.5z"})),gear:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"})),globe:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 00-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 004.666 5.5 11.13 11.13 0 01-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 01-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 01-.857-1.215A9.637 9.637 0 015.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 011.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0110.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 004.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 00-.353-.552 6.506 6.506 0 014.666 5.5zM8 0a8 8 0 100 16A8 8 0 008 0z"})),history:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"})),info:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"})),issue_opened:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"})),kebab_horizontal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"})),link:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})),mark_github:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})),moon:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"})),play:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"})),plus:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"})),plus_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.75 4.75a.75.75 0 00-1.5 0v2.5h-2.5a.75.75 0 000 1.5h2.5v2.5a.75.75 0 001.5 0v-2.5h2.5a.75.75 0 000-1.5h-2.5v-2.5z"})),search:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"})),sun:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"})),sync:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"})),tag:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"})),three_bars:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"})),trashcan:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"})),unfold:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8.177.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V4H5.104a.25.25 0 01-.177-.427L7.823.677a.25.25 0 01.354 0zM7.25 10.75a.75.75 0 011.5 0V12h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 12H7.25v-1.25zm-5-2a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 016 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 0112 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"})),upload:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.53 1.22a.75.75 0 00-1.06 0L3.72 4.97a.75.75 0 001.06 1.06l2.47-2.47v6.69a.75.75 0 001.5 0V3.56l2.47 2.47a.75.75 0 101.06-1.06L8.53 1.22zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),x:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"})),x_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.404 12.596a6.5 6.5 0 119.192-9.192 6.5 6.5 0 01-9.192 9.192zM2.344 2.343a8 8 0 1011.313 11.314A8 8 0 002.343 2.343zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"}))};function U({error:e,onDismiss:t}){return d("div",{class:"error"},t&&d("div",{class:"error-dismiss",onClick:t},Y.x),d("h3",null,e),d("p",null,"If you think this is a bug, you can report it ",d("a",{href:"https://github.com/misode/misode.github.io/issues/new",target:"_blank"},"on GitHub")))}let Z;const X={},q=function(e,t){if(!t)return e();if(void 0===Z){const e=document.createElement("link").relList;Z=e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}return Promise.all(t.map((e=>{if(e in X)return;X[e]=!0;const t=e.endsWith(".css"),n=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${n}`))return;const o=document.createElement("link");return o.rel=t?"stylesheet":Z,t||(o.as="script",o.crossOrigin=""),o.href=e,document.head.appendChild(o),t?new Promise(((e,t)=>{o.addEventListener("load",e),o.addEventListener("error",t)})):void 0}))).then((()=>e()))};var K=JSON.parse('{"add":"Add","add_bottom":"Add to bottom","add_top":"Add to top","advancement":"Advancement","collapse":"Collapse","collapse_all":"Hold %0% to collapse all","copy":"Copy","copied":"Copied!","copy_context":"Copy context","dimension_type":"Dimension Type","dimension":"Dimension","download":"Download","entries_hidden":"%0% entries hidden","entries_hidden.more":"Show %0% more","entries_hidden.all":"Show all","expand":"Expand","expand_all":"Hold %0% to expand all","fields":"Fields","generate_new_seed":"Generate new seed","github":"GitHub","hide_output":"Hide JSON output","hide_preview":"Hide preview","home":"Home","import":"Import","indentation.2_spaces":"2 spaces","indentation.4_spaces":"4 spaces","indentation.tabs":"Tabs","item_modifier":"Item Modifier","language":"Language","loot_table":"Loot Table","more":"More","move_down":"Move down","move_up":"Move up","not_found.description":"The page you were looking for does not exist.","no_presets":"No presets","output_settings":"JSON output settings","predicate":"Predicate","redo":"Redo","reset":"Reset","settings":"Settings","settings.fields.description":"Customize advanced field settings","settings.fields.path":"Context","settings.fields.name":"Name","share":"Share","theme":"Theme","theme.dark":"Dark","theme.light":"Light","theme.system":"System","title.generator":"%0% Generator","title.generator_category":"%0% Generators","title.home":"Data Pack Generators","presets":"Presets","preview":"Visualize","preview.scale":"Scale","preview.depth":"Depth","preview.factor":"Factor","preview.offset":"Offset","preview.peaks":"Peaks","preview.width":"Width","remove":"Remove","search":"Search","show_output":"Show JSON output","show_preview":"Show preview","source_placeholder":"Paste JSON content here","switch_generator":"Switch generator","terrain_settings":"Terrain settings","undo":"Undo","world":"World Settings","worldgen":"Worldgen","worldgen/biome":"Biome","worldgen/configured_carver":"Carver","worldgen/configured_feature":"Feature","worldgen/noise_settings":"Noise Settings","worldgen/processor_list":"Processor List","worldgen/configured_structure_feature":"Structure Feature","worldgen/configured_surface_builder":"Surface Builder","worldgen/template_pool":"Template Pool","zoom_in":"Zoom in","zoom_out":"Zoom out"}'),Q=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:K});const ee={fallback:K};function te(e,t,...n){var o,r,a,i,l;return function(e,t){return e.replace(/%\d+%/g,(e=>{const n=parseInt(e.slice(1,-1));return void 0!==(null==t?void 0:t[n])?t[n]:e}))}(null!=(l=null!=(i=null!=(a=null==(o=ee[e])?void 0:o[t])?a:null==(r=ee.en)?void 0:r[t])?i:ee.fallback[t])?l:t,n)}async function ne(e){const t=T.languages.find((t=>t.code===e));if(!t)return;const n=await function(e){switch(e){case"../locales/de.json":return q((()=>import("./de.a5527242.js")),void 0);case"../locales/en.json":return q((()=>Promise.resolve().then((function(){return Q}))),void 0);case"../locales/es.json":return q((()=>import("./es.be1c5183.js")),void 0);case"../locales/fr.json":return q((()=>import("./fr.cc0e1c18.js")),void 0);case"../locales/it.json":return q((()=>import("./it.fd9a8268.js")),void 0);case"../locales/ja.json":return q((()=>import("./ja.8c79487c.js")),void 0);case"../locales/pl.json":return q((()=>import("./pl.3a9fb38c.js")),void 0);case"../locales/pt.json":return q((()=>import("./pt.689bba1d.js")),void 0);case"../locales/ru.json":return q((()=>import("./ru.43cf4da1.js")),void 0);case"../locales/sk.json":return q((()=>import("./sk.586a2a32.js")),void 0);case"../locales/zh-cn.json":return q((()=>import("./zh-cn.97195370.js")),void 0);case"../locales/zh-tw.json":return q((()=>import("./zh-tw.a82e5245.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../locales/${e}.json`),o=!1!==t.schemas&&await function(e){switch(e){case"../../node_modules/@mcschema/locales/src/de.json":return q((()=>import("./de.f9c3209c.js")),void 0);case"../../node_modules/@mcschema/locales/src/en.json":return q((()=>import("./en.d614ad00.js")),void 0);case"../../node_modules/@mcschema/locales/src/es.json":return q((()=>import("./es.c83d9c73.js")),void 0);case"../../node_modules/@mcschema/locales/src/fr.json":return q((()=>import("./fr.9b3a1c69.js")),void 0);case"../../node_modules/@mcschema/locales/src/it.json":return q((()=>import("./it.7ff123cd.js")),void 0);case"../../node_modules/@mcschema/locales/src/ja.json":return q((()=>import("./ja.4ae430b9.js")),void 0);case"../../node_modules/@mcschema/locales/src/pl.json":return q((()=>import("./pl.01cb20df.js")),void 0);case"../../node_modules/@mcschema/locales/src/pt.json":return q((()=>import("./pt.31e14993.js")),void 0);case"../../node_modules/@mcschema/locales/src/ru.json":return q((()=>import("./ru.92df5b59.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-cn.json":return q((()=>import("./zh-cn.7cd3f35b.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-tw.json":return q((()=>import("./zh-tw.bae62b5e.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../../node_modules/@mcschema/locales/src/${e}.json`);ee[e]=l(l({},n.default),o.default)}const oe=e=>("0"+e.toString(16)).substr(-2);function re(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,oe).join("")}function ae(){return BigInt(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))}function ie(e){const t=Math.floor(4294967296*Math.random())-2147483648;e.set(new p.Path(["generator","seed"]),t,!0),e.set(new p.Path(["generator","biome_source","seed"]),t)}function le(e){return`/${e}/`.replaceAll("//","/")}function se(e){const t=e.replace(/^\//,"").replace(/\/$/,"");return T.generators.find((e=>e.url===t))}function ce(e){const t=Math.abs(function(e){let t=0;for(let n=0;n>8)%256,(t>>16)%256]}function de(e){return e*e}function ue(e,t,n){return Math.max(e,Math.min(t,n))}function me(e,t,n){return n<0?e:n>1?t:he(n,e,t)}function he(e,t,n){return t+e*(n-t)}function pe(e){return e instanceof Error?e.message:`${e}`}const ge=h();function fe(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;let n,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(o=0;ove(e.node)));if("object"==typeof e&&null!==e){const t={};return Object.entries(e).map((([e,n])=>{t[e]=ve(n)})),t}return e}["1.15","1.16","1.17"].forEach((e=>localStorage.removeItem(`cache_${e}`)));const _e="https://raw.githubusercontent.com/Arcensoth/mcdata",we="https://raw.githubusercontent.com/SPGoding/vanilla-datapack",be=[{id:"mcdata_master",hash:"2eb26a7112f2abd02b79ce5213337ef021fb1428",url:_e},{id:"vanilla_datapack_summary",hash:"e936a783bf8a3a3a3ebfe7fba8389ca10096fcba",url:we}];async function ye(e,t,n){const o=T.versions.find((t=>t.id===e));o?(console.debug(`[fetchData] ${JSON.stringify(o)}`),o.dynamic&&await Promise.all(be.filter((e=>localStorage.getItem(`cached_${e.id}`)!==e.hash)).map((async e=>{console.debug(`[deleteMatching] ${e.id} '${localStorage.getItem(`cached_${e.id}`)}' < '${e.hash}' ${e.url}/${o.refs[e.id]}`),await async function(e){try{const t=await caches.open("misode-v1");console.debug("[deleteMatching] Opened cache misode-v1");const n=[];for(const o of await t.keys())e(o.url)&&n.push(t.delete(o));console.debug(`[deleteMatching] Removing ${n.length} cache objects...`),await Promise.all(n)}catch(t){console.warn(`[deleteMatching] Failed to open cache misode-v1: ${pe(t)}`)}}((t=>t.startsWith(`${e.url}/${o.refs[e.id]}`))),console.debug(`[deleteMatching] Done! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`),localStorage.setItem(`cached_${e.id}`,e.hash),console.debug(`[deleteMatching] Set! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`)}))),await Promise.all([xe(o,t),ke(o,n),Ce(o,t)])):console.error(`[fetchData] Unknown version ${o} in ${JSON.stringify(T.versions)}`)}async function xe(e,t){console.debug(`[fetchRegistries] ${e.id}`);const n=T.registries.filter((e=>!e.dynamic)).filter((t=>Oe(e.id,t.minVersion,t.maxVersion)));if(Oe(e.id,void 0,"1.15")){const r=`${_e}/${e.refs.mcdata_master}/generated/reports/registries.json`;try{const e=await ze(r,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n.slice(10)]=Object.keys(e[n].entries)})),t}));n.forEach((n=>{var o;t.register(n.id,null!=(o=e[n.id])?o:[])}))}catch(o){console.warn("Error occurred while fetching registries:",pe(o))}}else await Promise.all(n.map((async n=>{try{const o=n.path?`${_e}/${e.refs.mcdata_master}/${n.path}/data.min.json`:`${_e}/${e.refs.mcdata_master}/processed/reports/registries/${n.id}/data.min.json`;t.register(n.id,await ze(o,(e=>e.values)))}catch(o){console.warn(`Error occurred while fetching registry ${n.id}:`,pe(o))}})))}async function ke(e,t){if(console.debug(`[fetchBlockStateMap] ${e.id}`),Oe(e.id,void 0,"1.16")){const o=Oe(e.id,void 0,"1.15")?`${_e}/${e.refs.mcdata_master}/generated/reports/blocks.json`:`${_e}/${e.refs.mcdata_master}/processed/reports/blocks/data.min.json`;try{const e=await ze(o,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n]={properties:e[n].properties,default:e[n].states.find((e=>e.default)).properties}})),t}));Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",pe(n))}}else{const o=`${_e}/${e.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`;try{const e=await ze(o);Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",pe(n))}}}async function Ce(e,t){console.debug(`[fetchDynamicRegistries] ${e.id}`);const n=T.registries.filter((e=>e.dynamic)).filter((t=>Oe(e.id,t.minVersion,t.maxVersion)));if(Oe(e.id,"1.16")){const r=`${we}/${e.refs.vanilla_datapack_summary}/summary/flattened.min.json`;try{const e=await ze(r);n.forEach((n=>{t.register(n.id,e[n.id])}))}catch(o){console.warn("Error occurred while fetching dynamic registries:",pe(o))}}}async function Me(e,t,n){console.debug(`[fetchPreset] ${t} ${n}`);const o=T.versions.find((t=>t.id===e));try{const e=`${we}/${o.refs.vanilla_datapack_data}/data/minecraft/${t}/${n}.json`,r=await fetch(e);return await r.json()}catch(r){console.warn(`Error occurred while fetching ${t} preset ${n}:`,pe(r))}}async function ze(e,t=(e=>e)){try{const n=await caches.open("misode-v1");console.debug(`[getData] Opened cache misode-v1 ${e}`);const o=await n.match(e);if(o&&o.ok)return console.debug(`[getData] Retrieving cached data ${e}`),await o.json();console.debug(`[getData] fetching data ${e}`);const r=await fetch(e),a=t(await r.json());return await n.put(e,new Response(JSON.stringify(a))),a}catch(n){console.warn(`[getData] Failed to open cache misode-v1: ${pe(n)}`),console.debug(`[getData] fetching data ${e}`);const o=await fetch(e);return t(await o.json())}}const Ae=["1.15","1.16","1.17","1.18"],Ie={},Ve={},Ee={1.15:g,1.16:f,1.17:v,1.18:_};async function je(e){return Ie[e]||(Ie[e]=(async()=>{try{const t=Ee[e].getCollections(),n={};await ye(e,t,n);const o=Ee[e].getSchemas(t);return Ie[e]={collections:t,schemas:o,blockStates:n},Ie[e]}catch(t){throw new Error(`Cannot get version "${e}": ${pe(t)}`)}})()),Ie[e]}function Oe(e,t,n){const o=T.versions.findIndex((t=>t.id===e)),r=t?T.versions.findIndex((e=>e.id===t)):0,a=n?T.versions.findIndex((e=>e.id===n)):T.versions.length-1;return r<=o&&o<=a}const Le={system:"device_desktop",dark:"moon",light:"sun"};function $e({lang:e,title:t,version:n,theme:o,changeTheme:r,language:a,changeLanguage:i}){const l=te.bind(null,e),s=se(w());return d("header",null,d("div",{class:"title"},d(b,{class:"home-link",href:"/","aria-label":l("home")},Se.home),d("h2",null,t),s&&d(G,{icon:"chevron_down",tooltip:l("switch_generator")},T.generators.filter((e=>e.category===(null==s?void 0:s.category)&&Oe(n,e.minVersion))).map((e=>d(H,{label:l(e.id),active:e.id===s.id,onClick:()=>y(le(e.url))}))))),d("nav",null,d("ul",null,d("li",null,d(G,{icon:"globe",tooltip:l("language")},T.languages.map((({code:e,name:t})=>d(H,{label:t,active:e===a,onClick:()=>i(e)}))))),d("li",null,d(G,{icon:Le[o],tooltip:l("theme")},Object.entries(Le).map((([e,t])=>d(H,{icon:t,label:l(`theme.${e}`),active:e===o,onClick:()=>r(e)}))))),d("li",{class:"dimmed"},d("a",{href:"https://github.com/misode/misode.github.io",target:"_blank",rel:"noreferrer",class:"tooltipped tip-sw","aria-label":l("github")},Y.mark_github)))))}const Se={home:d("svg",{width:"32",height:"28",viewBox:"0 0 32 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},d("rect",{width:"26",height:"6",rx:"3",fill:"#7CB45C"}),d("rect",{x:"8",width:"18",height:"6",rx:"3",fill:"#4BA041"}),d("rect",{y:"11",width:"32",height:"6",rx:"3",fill:"#AAA8A8"}),d("rect",{x:"11",y:"11",width:"21",height:"6",rx:"3",fill:"#91908F"}),d("rect",{x:"11",y:"22",width:"21",height:"6",rx:"3",fill:"#70B5C3"}),d("rect",{x:"17",y:"22",width:"15",height:"6",rx:"3",fill:"#4D989B"})),report:d("svg",{width:"30",height:"36",viewBox:"0 0 30 36",xmlns:"http://www.w3.org/2000/svg"},d("path",{d:"M0 16C0 13.7909 1.79086 12 4 12V12C6.20914 12 8 13.7909 8 16V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V16Z",fill:"#6ACC5D"}),d("path",{d:"M11 4C11 1.79086 12.7909 0 15 0V0C17.2091 0 19 1.79086 19 4V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V4Z",fill:"#FF4C4C"}),d("path",{d:"M22 10C22 7.79086 23.7909 6 26 6V6C28.2091 6 30 7.79086 30 10V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V10Z",fill:"#E5B442"}),d("path",{d:"M0 23C0 20.7909 1.79086 19 4 19V19C6.20914 19 8 20.7909 8 23V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V23Z",fill:"#2BAD1D"}),d("path",{d:"M11 15C11 12.7909 12.7909 11 15 11V11C17.2091 11 19 12.7909 19 15V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V15Z",fill:"#C10B0B"}),d("path",{d:"M22 19C22 16.7909 23.7909 15 26 15V15C28.2091 15 30 16.7909 30 19V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V19Z",fill:"#CC8E00"})),sounds:d("svg",{width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},d("circle",{cx:"10",cy:"10",r:"10",fill:"#451475"}),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.5 10C3.5 8.27609 4.18482 6.62279 5.40381 5.40381C6.62279 4.18482 8.27609 3.5 10 3.5C11.7239 3.5 13.3772 4.18482 14.5962 5.40381C15.8152 6.62279 16.5 8.27609 16.5 10C16.5 11.7239 15.8152 13.3772 14.5962 14.5962C13.3772 15.8152 11.7239 16.5 10 16.5C8.27609 16.5 6.62279 15.8152 5.40381 14.5962C4.18482 13.3772 3.5 11.7239 3.5 10V10ZM10 2C7.87827 2 5.84344 2.84285 4.34315 4.34315C2.84285 5.84344 2 7.87827 2 10C2 12.1217 2.84285 14.1566 4.34315 15.6569C5.84344 17.1571 7.87827 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 7.87827 17.1571 5.84344 15.6569 4.34315C14.1566 2.84285 12.1217 2 10 2V2ZM8.379 7.227C8.34101 7.20412 8.29762 7.19175 8.25327 7.19117C8.20892 7.19059 8.16522 7.20181 8.12664 7.2237C8.08807 7.24558 8.05601 7.27733 8.03375 7.3157C8.0115 7.35406 7.99985 7.39765 8 7.442V12.559C8.00003 12.6033 8.0118 12.6467 8.03413 12.685C8.05646 12.7232 8.08854 12.7548 8.12708 12.7765C8.16563 12.7983 8.20926 12.8095 8.25352 12.8088C8.29778 12.8082 8.34108 12.7958 8.379 12.773L12.643 10.214C12.6798 10.1917 12.7103 10.1604 12.7315 10.1229C12.7526 10.0854 12.7638 10.043 12.7638 10C12.7638 9.95695 12.7526 9.91463 12.7315 9.87714C12.7103 9.83965 12.6798 9.80825 12.643 9.786L8.379 7.227Z",fill:"#C5A5E6"}))};let Pe,De,Ne;async function Te(e,t){const n=[e,t.octaves,`${t.seed}`,t.version];if(!fe(n,Pe)){Pe=ge(n),De=await async function(e,t){var n,o,r,a,i;switch(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,"")){case"fixed":return new A(e.biome);case"checkerboard":const n=(null!=(o=e.scale)?o:2)+2,l=null!=(a=null==(r=e.biomes)?void 0:r.length)?a:0;return{getBiome(t,o,r){var a;const i=(((t>>n)+(r>>n))%l+l)%l;return null==(a=e.biomes)?void 0:a[i].node}};case"multi_noise":switch(null==(i=e.preset)?void 0:i.replace(/^minecraft:/,"")){case"nether":e="1.18"===t.version?Fe:Re;break;case"overworld":e="1.18"===t.version?await async function(){return(await Me("1.18","dimension","overworld")).generator.biome_source}():e}if(e=ve(e),"1.18"===t.version)return C.fromJson(e);{const n=["altitude","temperature","humidity","weirdness"].map(((n,o)=>{var r;const a=e[`${n}_noise`];return a.firstOctave=ue(null!=(r=a.firstOctave)?r:-7,-100,-1),new M(new z(t.seed+BigInt(o)),a)}));return Array.isArray(e.biomes)&&0!==e.biomes.length?{getBiome(t,o,r){const a=n.map((e=>e.sample(t,r,0)));let i=1/0,l="";for(const{biome:n,parameters:s}of e.biomes){const e=de(s.altitude-a[0])+de(s.temperature-a[1])+de(s.humidity-a[2])+de(s.weirdness-a[3])+de(s.offset);eo.nextFloat(),nextInt:e=>o.nextInt(e),sampleInt(e){return Ze(e,this)}};for(let i=0;i=n.size[0]||i[1]>=n.size[1]||i[2]>=n.size[2])continue;const e=i[2]*(4*t.width)+4*i[0],o=l{Ke(t,null==e?void 0:e.decorator,n).forEach((t=>qe(t,null==e?void 0:e.feature,n)))},random_boolean_selector:(e,t,n)=>{qe(t,n.nextFloat()<.5?null==e?void 0:e.feature_true:null==e?void 0:e.feature_false,n)},random_selector:(e,t,n)=>{var o,r;for(const a of null!=(o=null==e?void 0:e.features)?o:[])if(n.nextFloat()<(null!=(r=null==a?void 0:a.chance)?r:0))return void qe(t,a.feature,n);qe(t,null==e?void 0:e.default,n)},simple_random_selector:(e,t,n)=>{var o,r,a;qe(t,null==(a=null==e?void 0:e.features)?void 0:a[n.nextInt(null!=(r=null==(o=null==e?void 0:e.features)?void 0:o.length)?r:0)],n)}},et={chance:(e,t,n)=>{var o;return n.nextFloat()<1/(null!=(o=null==e?void 0:e.chance)?o:1)?[t]:[]},count:(e,t,n)=>{var o;return new Array(n.sampleInt(null!=(o=null==e?void 0:e.count)?o:1)).fill(t)},count_extra:(e,t,n)=>{var o,r;let a=null!=(o=null==e?void 0:e.count)?o:1;return n.nextFloat(){var o;return new Array(n.sampleInt(null!=(o=null==e?void 0:e.count)?o:1)).fill(t).map((e=>[e[0]+n.nextInt(16),e[1],e[2]+n.nextInt(16)]))},count_noise:(e,t,n)=>{const o=n.biomeInfoNoise.sample(t[0]/200,0,t[2]/200){var o;const r=Math.max(1,e.noise_factor),a=n.biomeInfoNoise.sample(t[0]/r,0,t[2]/r),i=Math.max(0,Math.ceil((a+(null!=(o=e.noise_offset)?o:0))*e.noise_to_count_ratio));return new Array(i).fill(t)},dark_oak_tree:(e,t,n)=>[...new Array(16)].map(((e,o)=>{const r=4*Math.floor(o/4)+1+n.nextInt(3)+t[0];return[r,Math.max(n.seaLevel,Je[ue(0,63,r)]),4*Math.floor(o%4)+1+n.nextInt(3)+t[2]]})),decorated:(e,t,n)=>Ke(t,null==e?void 0:e.outer,n).flatMap((t=>Ke(t,null==e?void 0:e.inner,n))),depth_average:(e,t,n)=>{var o,r,a,i;return Ue(t,n.nextInt(null!=(o=null==e?void 0:e.spread)?o:0)+n.nextInt(null!=(r=null==e?void 0:e.spread)?r:0)-(null!=(a=e.spread)?a:0)+(null!=(i=null==e?void 0:e.baseline)?i:0))},emerald_ore:(e,t,n)=>{const o=3+n.nextInt(6);return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),4+n.nextInt(28),t[2]+n.nextInt(16)]))},fire:(e,t,n)=>{const o=1+n.nextInt(n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},glowstone:(e,t,n)=>{const o=n.nextInt(1+n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},heightmap:(e,t,n)=>Ue(t,Math.max(n.seaLevel,Je[ue(0,63,t[0])])),heightmap_spread_double:(e,t,n)=>{const o=Math.max(n.seaLevel,Je[ue(0,63,t[0])]);return Ue(t,n.nextInt(2*o))},heightmap_world_surface:(e,t,n)=>Ue(t,Math.max(n.seaLevel,Je[ue(0,63,t[0])])),iceberg:(e,t,n)=>[[t[0]+4+n.nextInt(8),t[1],t[2]+4+n.nextInt(8)]],lava_lake:(e,t,n)=>{var o,r;if(0===n.nextInt((null!=(o=e.chance)?o:1)/10)){const o=n.nextInt(n.nextInt(248)+8);if(o[t],range:(e,t,n)=>{var o,r,a;return Ue(t,n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(r=null==e?void 0:e.top_offset)?r:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0))},range_biased:(e,t,n)=>{var o,r,a;return Ue(t,n.nextInt(n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(r=null==e?void 0:e.top_offset)?r:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0)))},range_very_biased:(e,t,n)=>{var o,r,a,i;return Ue(t,n.nextInt(n.nextInt(n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(r=null==e?void 0:e.top_offset)?r:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0))+(null!=(i=null==e?void 0:e.bottom_offset)?i:0)))},spread_32_above:(e,t,n)=>Ue(t,n.nextInt(t[1]+32)),top_solid_heightmap:(e,t)=>Ue(t,Je[ue(0,63,t[0])]),magma:(e,t,n)=>Ue(t,n.nextInt(t[1]+32)),square:(e,t,n)=>[[t[0]+n.nextInt(16),t[1],t[2]+n.nextInt(16)]],surface_relative_threshold:(e,t)=>{var n,o;const r=Je[ue(0,63,t[0])],a=r+(null!=(n=null==e?void 0:e.min_inclusive)?n:-1/0),i=r+(null!=(o=null==e?void 0:e.max_inclusive)?o:1/0);return t[1]i?[t]:[]},water_lake:(e,t,n)=>{var o;return 0===n.nextInt(null!=(o=e.chance)?o:1)?[[t[0]+n.nextInt(16),n.nextInt(256),t[2]+n.nextInt(16)]]:[]}};class tt{constructor(e){this.settings={},this.chunkWidth=4,this.chunkHeight=4,this.chunkCountY=32,this.biomeDepth=.1,this.biomeScale=.2,this.noiseColumnCache=[],this.xOffset=0;const t=new z(e);this.minLimitPerlinNoise=new I(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.maxLimitPerlinNoise=new I(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.mainPerlinNoise=new I(t,-7,[1,1,1,1,1,1,1,1]),this.depthNoise=new I(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])}reset(e,t,n,o,r){this.settings=e,this.chunkWidth=4*e.size_horizontal,this.chunkHeight=4*e.size_vertical,this.chunkCountY=Math.floor(e.height/this.chunkHeight),e.amplified&&t>0&&(t=1+2*t,n=1+4*n),this.biomeDepth=.265625*(.5*t-.125),this.biomeScale=96/(.9*n+.1),this.noiseColumnCache=Array(r).fill(null),this.xOffset=o}iterateNoiseColumn(e){const t=Array(this.chunkCountY*this.chunkHeight),n=Math.floor(e/this.chunkWidth),o=Math.floor(e%this.chunkWidth)/this.chunkWidth,r=this.fillNoiseColumn(n),a=this.fillNoiseColumn(n+1);for(let m=this.chunkCountY-1;m>=0;m-=1)for(let e=this.chunkHeight;e>=0;e-=1){const n=e/this.chunkHeight;t[m*this.chunkHeight+e]=(i=n,l=o,s=r[m],c=r[m+1],d=a[m],u=a[m+1],he(l,he(i,s,c),he(i,d,u)))}var i,l,s,c,d,u;return t}fillNoiseColumn(e){const t=this.noiseColumnCache[e-this.xOffset];if(t)return t;const n=Array(this.chunkCountY+1),o=684.412*this.settings.sampling.xz_scale,r=684.412*this.settings.sampling.y_scale,a=o/this.settings.sampling.xz_factor,i=r/this.settings.sampling.y_factor,l=this.settings.random_density_offset?this.getRandomDensity(e):0;for(let s=0;s<=this.chunkCountY;s+=1){let t=this.sampleAndClampNoise(e,s,this.mainPerlinNoise.getOctaveNoise(0).zo,o,r,a,i);const c=((1-2*s/this.chunkCountY+l)*this.settings.density_factor+this.settings.density_offset+this.biomeDepth)*this.biomeScale;t+=c*(c>0?4:1),this.settings.top_slide.size>0&&(t=me(this.settings.top_slide.target,t,(this.chunkCountY-s-this.settings.top_slide.offset)/this.settings.top_slide.size)),this.settings.bottom_slide.size>0&&(t=me(this.settings.bottom_slide.target,t,(s-this.settings.bottom_slide.offset)/this.settings.bottom_slide.size)),n[s]=t}return this.noiseColumnCache[e-this.xOffset]=n,n}getRandomDensity(e){const t=this.depthNoise.sample(200*e,10,this.depthNoise.getOctaveNoise(0).zo,1,0,!0),n=24.575625*(t<0?.3*-t:t)-2;return n<0?.009486607142857142*n:.006640625*Math.min(n,1)}sampleAndClampNoise(e,t,n,o,r,a,i){let l=0,s=0,c=0,d=1;for(let u=0;u<16;u+=1){const m=I.wrap(e*o*d),h=I.wrap(t*r*d),p=I.wrap(n*o*d),g=r*d,f=this.minLimitPerlinNoise.getOctaveNoise(u);f&&(l+=f.sample(m,h,p,g,t*g)/d);const v=this.maxLimitPerlinNoise.getOctaveNoise(u);if(v&&(s+=v.sample(m,h,p,g,t*g)/d),u<8){const o=this.mainPerlinNoise.getOctaveNoise(u);o&&(c+=o.sample(I.wrap(e*a*d),I.wrap(t*i*d),I.wrap(n*a*d),i*d,t*i*d)/d)}d/=2}return me(l/512,s/512,(c/10+1)/2)}}const nt={"minecraft:air":[150,160,170],"minecraft:water":[20,80,170],"minecraft:lava":[200,100,0],"minecraft:stone":[50,50,50],"minecraft:netherrack":[100,40,40],"minecraft:end_stone":[200,200,140]};let ot,rt,at=[];function it(e,t,n){var o;if(Oe(n.version,"1.18")){const{settings:r,generator:a}=function(e,t){const n=x.fromJson(ve(e));n.noise.bottomSlide.target*=128,n.noise.topSlide.target*=128;const o={factor:t.biomeFactor,offset:t.biomeOffset,peaks:t.biomePeaks,nearWater:!1},r=[e,o,`${t.seed}`];if(!fe(r,ot)){ot=ge(r),at=[];const e=new A("unknown");rt=new V(t.seed,e,n,o)}return{settings:n,generator:rt}}(e,n),i=new st(-n.offset,n.width,r.noise.minY,r.noise.height);i.fill(a);const l=t.data;for(let e=0;e0?0:e[t+1]>0?150:255}class st{constructor(e,t,n,o){this.minX=e,this.filled=[],this.chunks=[...Array(Math.ceil(t/16)+1)].map(((t,r)=>{const a=(e>>4)+r,i=at.find((e=>e.pos[0]===a));return i?(this.filled[r]=!0,i):new E(n,o,j.create(a,0))}))}fill(e){this.chunks.forEach(((t,n)=>{this.filled[n]||(e.fill(t),this.filled[n]=!0,at.push(t))}))}getBlockState(e){const t=(e[0]>>4)-(this.minX>>4);return this.chunks[t].getBlockState(e)}}const ct=({model:e,data:t,shown:n,lang:o,version:r})=>{var a;const[i,l]=m(2),[s,h]=m(void 0),g=u([0,0]),f=u(1),v=u(void 0),_=BigInt(e.get(new p.Path(["generator","seed"]))),w=function(e){if("string"==typeof e)switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return{temperature:{firstOctave:-9,amplitudes:[1.5,0,1,0,0,0]},humidity:{firstOctave:-7,amplitudes:[1,1,0,0,0,0]},continentalness:{firstOctave:-9,amplitudes:[1,1,2,2,2,1,1,1,1]},erosion:{firstOctave:-9,amplitudes:[1,1,0,1,1]},weirdness:{firstOctave:-7,amplitudes:[1,2,1,0,0,0]},shift:{firstOctave:-3,amplitudes:[1,1,1,0]}};case"end":case"floating_islands":return{temperature:{firstOctave:0,amplitudes:[0]},humidity:{firstOctave:0,amplitudes:[0]},continentalness:{firstOctave:0,amplitudes:[0]},erosion:{firstOctave:0,amplitudes:[0]},weirdness:{firstOctave:0,amplitudes:[0]},shift:{firstOctave:0,amplitudes:[0]}};default:return{temperature:{firstOctave:-7,amplitudes:[1,1]},humidity:{firstOctave:-7,amplitudes:[1,1]},continentalness:{firstOctave:-7,amplitudes:[1,1]},erosion:{firstOctave:-7,amplitudes:[1,1]},weirdness:{firstOctave:-7,amplitudes:[1,1]},shift:{firstOctave:0,amplitudes:[0]}}}return x.fromJson(e).octaves}(e.get(new p.Path(["generator","settings"]))),b=n?function(e,t){return JSON.stringify([e,t])}(t,w):"",y=null==(a=t.type)?void 0:a.replace(/^minecraft:/,""),{canvas:k,redraw:C}=F({size:()=>[200/f.current,200/f.current],async draw(e){const n={octaves:w,biomeColors:{},offset:g.current,scale:i,seed:_,res:f.current,version:r};await async function(e,t,n){const{biomeSource:o,climateSampler:r}=await Te(e,n),a=t.data,i=-n.offset[0]-100+n.res/2,l=-n.offset[1]-100+n.res/2,s=4*t.width/n.res,c=4/n.res;for(let d=0;d<200;d+=n.res)for(let e=0;e<200;e+=n.res){const t=e*s+d*c,u=(d+i)*n.scale,m=(e+l)*n.scale,h=Be(o.getBiome(u,64,m,r),n.biomeColors);a[t]=h[0],a[t+1]=h[1],a[t+2]=h[2],a[t+3]=255}}(t,e,n),4===f.current&&(clearTimeout(v.current),v.current=setTimeout((()=>{f.current=1,C()}),150))},async onDrag(e,t){g.current[0]=g.current[0]+200*e,g.current[1]=g.current[1]+200*t,clearTimeout(v.current),f.current="multi_noise"===y?4:1,C()},async onHover(e,n){const o={octaves:w,biomeColors:{},offset:g.current,scale:i,seed:_,res:1,version:r},a=await async function(e,t,n,o){const{biomeSource:r,climateSampler:a}=await Te(e,o),[i,l]=function([e,t],n){return[(e-n.offset[0]-100+n.res/2)*n.scale,(t-n.offset[1]-100+n.res/2)*n.scale]}([t,n],o);return r.getBiome(i,64,l,a)}(t,Math.floor(200*e),Math.floor(200*n),o);h(a)},onLeave(){h(void 0)}},[b,i,_]);c((()=>{n&&(f.current="multi_noise"===y?4:1,C())}),[b,i,_,n]);const M=e=>{g.current[0]=g.current[0]*i/e,g.current[1]=g.current[1]*i/e,l(e)};return d(O,null,d("div",{class:"controls"},s&&d(H,{label:s,class:"no-pointer"}),("multi_noise"===y||"checkerboard"===y)&&d(O,null,d(H,{icon:"dash",tooltip:te(o,"zoom_out"),onClick:()=>M(1.5*i)}),d(H,{icon:"plus",tooltip:te(o,"zoom_in"),onClick:()=>M(i/1.5)})),"multi_noise"===y&&d(H,{icon:"sync",tooltip:te(o,"generate_new_seed"),onClick:()=>ie(e)})),d("canvas",{ref:k,width:"200",height:"200"}))};const dt=({data:e,version:t,shown:n,lang:o})=>{const[r,a]=m(4),[i,l]=m(ae()),{canvas:s,redraw:u}=F({size:()=>[16*r,16*r],async draw(n){Ge(e,n,{seed:i,version:t,size:[16*r,128,16*r]})}}),h=JSON.stringify(e);return c((()=>{n&&u()}),[h,r,i,n]),d(O,null,d("div",{class:"controls"},d(H,{icon:"dash",tooltip:te(o,"zoom_out"),onClick:()=>a(Math.min(16,r+1))}),d(H,{icon:"plus",tooltip:te(o,"zoom_in"),onClick:()=>a(Math.max(1,r-1))}),d(H,{icon:"sync",tooltip:te(o,"generate_new_seed"),onClick:()=>l(ae())})),d("canvas",{ref:s,width:"64",height:"64"}))},ut=({lang:e,data:t,shown:n,version:o})=>{var r,a;const i=te.bind(null,e),[l,s]=m(ae()),[h,p]=m(.2),[g,f]=m(.1),[v,_]=m(0),[w,b]=m(void 0),y=u(0),x=JSON.stringify([t,h,g,v]),k=Oe(o,"1.18");c((()=>{p(k?600:.2),f(k?.05:.1)}),[k]);const C=null!=(a=null==(r=null==t?void 0:t.noise)?void 0:r.height)?a:256,{canvas:M,redraw:z}=F({size:()=>[C,C],async draw(e){const n={biomeOffset:g,biomeFactor:h,biomePeaks:v,offset:y.current,width:e.width,seed:l,version:o};it(t,e,n)},async onDrag(e){y.current+=e*C,z()},async onHover(e,n){var o,r;const a=C-Math.max(1,Math.ceil(n*C))+(null!=(r=null==(o=null==t?void 0:t.noise)?void 0:o.min_y)?r:0);b(`${a}`)},onLeave(){b(void 0)}},[x,l]);return c((()=>{n&&z()}),[x,l,n]),d(O,null,d("div",{class:"controls"},w&&d(H,{label:`Y = ${w}`,class:"no-pointer"}),d(G,{icon:"gear",tooltip:te(e,"terrain_settings")},k?d(O,null,d(R,{label:i("preview.factor"),value:`${h}`,onChange:e=>p(Number(e))}),d(R,{label:i("preview.offset"),value:`${g}`,onChange:e=>f(Number(e))}),d(R,{label:i("preview.peaks"),value:`${v}`,onChange:e=>_(Number(e))})):d(O,null,d(R,{label:i("preview.scale"),value:`${h}`,onChange:e=>p(Number(e))}),d(R,{label:i("preview.depth"),value:`${g}`,onChange:e=>f(Number(e))}))),d(H,{icon:"sync",tooltip:te(e,"generate_new_seed"),onClick:()=>s(ae())})),d("canvas",{ref:M,width:C,height:C}))},mt=["dimension","worldgen/noise_settings","worldgen/configured_feature"];function ht({lang:e,model:t,version:n,id:o,shown:r}){var a;const[,i]=m(0);if(W(t,(()=>{i((e=>e+1))})),"dimension"===o&&(null==(a=null==t?void 0:t.get(new p.Path(["generator","type"])))?void 0:a.endsWith("noise"))){const o=t.get(new p.Path(["generator","biome_source"]));if(o)return d(ct,l({},{lang:e,model:t,version:n,shown:r,data:o}))}if("worldgen/noise_settings"===o&&t){const o=t.get(new p.Path([]));if(o)return d(ut,l({},{lang:e,model:t,version:n,shown:r,data:o}))}if("worldgen/configured_feature"===o&&t){const o=t.get(new p.Path([]));if(o)return d(dt,l({},{lang:e,model:t,version:n,shown:r,data:o}))}return d(O,null)}const pt={base:({},e,t)=>t,choice({switchNode:e},t,n,o){return e.hook(this,t,n,o)},list({children:e},t,n,o){return Array.isArray(n)?n.map(((n,r)=>e.hook(this,t.push(r),n.node,o))):n},map({children:e,config:t},n,o,r){var a,i;if(void 0===o)return;const l="block_state_map"===(null==(a=t.validation)?void 0:a.validator)?null==(i=r.blockStates)?void 0:i[p.relativePath(n,t.validation.params.id).get()]:null,s={};return Object.keys(o).forEach((t=>{var a;l&&!Object.keys(null!=(a=l.properties)?a:{}).includes(t)||(s[t]=e.hook(this,n.push(t),o[t],r))})),s},object({getActiveFields:e},t,n,o){if(null==n||"object"!=typeof n)return n;const r={},a=e(t);return Object.keys(a).filter((e=>a[e].enabled(t))).forEach((e=>{r[e]=a[e].hook(this,t.push(e),n[e],o)})),r}};var gt,ft;(ft=gt||(gt={})).ID_LANGUAGE="language",ft.ID_THEME="theme",ft.ID_VERSION="schema_version",ft.ID_INDENT="indentation",ft.getLanguage=function(){var e;return null!=(e=localStorage.getItem(ft.ID_LANGUAGE))?e:"en"},ft.getTheme=function(){var e;return null!=(e=localStorage.getItem(ft.ID_THEME))?e:"dark"},ft.getVersion=function(){const e=localStorage.getItem(ft.ID_VERSION);return e&&Ae.includes(e)?e:"1.17"},ft.getIndent=function(){var e;return null!=(e=localStorage.getItem(ft.ID_INDENT))?e:"2_spaces"},ft.setLanguage=function(e){e&&localStorage.setItem(ft.ID_LANGUAGE,e)},ft.setTheme=function(e){e&&localStorage.setItem(ft.ID_THEME,e)},ft.setVersion=function(e){e&&localStorage.setItem(ft.ID_VERSION,e)},ft.setIndent=function(e){e&&localStorage.setItem(ft.ID_INDENT,e)};const vt={"2_spaces":2,"4_spaces":4,tabs:"\t"};function _t({lang:e,name:t,model:n,blockStates:o,doCopy:r,doDownload:a,doImport:i,copySuccess:l,onError:s}){const h=te.bind(null,e),[g,f]=m(gt.getIndent()),v=u(null),_=u(null),w=u(),b=L(((e,t)=>{const n=e.schema.hook(pt,new p.ModelPath(e),e.data,{blockStates:t});return JSON.stringify(n,null,vt[g])+"\n"}),[g]);c((()=>{w.current=()=>{if(n&&o)try{const e=b(n,o);e.length>=1e4?v.current.value=e.slice(0,1e4)+"\n\nOutput is too large to display (+10000 chars)\nExport to view complete output\n\n":v.current.value=e}catch(e){s(`Error getting JSON output: ${pe(e)}`),console.error(e),v.current.value=""}}})),W(n,(()=>{w.current()})),c((()=>{n&&w.current()}),[n]),c((()=>{w.current()}),[g]);c((()=>{r&&n&&o&&navigator.clipboard.writeText(b(n,o)).then((()=>{l()}))}),[r]),c((()=>{if(a&&v.current&&_.current){const e=encodeURIComponent(v.current.value);_.current.setAttribute("href",`data:text/json;charset=utf-8,${e}`),_.current.setAttribute("download",`${t}.json`),_.current.click()}}),[a]),c((()=>{i&&v.current&&(v.current.value="",v.current.select())}),[i]);return d(O,null,d("div",{class:"controls"},d(G,{icon:"gear",tooltip:h("output_settings")},Object.entries(vt).map((([e])=>d(H,{label:h(`indentation.${e}`),active:g===e,onClick:()=>{return t=e,gt.setIndent(t),void f(t);var t}}))))),d("textarea",{ref:v,class:"source",onChange:()=>{try{const e=JSON.parse(v.current.value);null==n||n.reset(p.DataModel.wrapLists(e),!1)}catch(e){s(`Error importing: ${pe(e)}`),console.error(e)}},spellcheck:!1,autocorrect:"off",placeholder:h("source_placeholder")}),d("a",{ref:_,style:"display: none;"}))}function wt({title:e,link:t,icon:n,children:o}){return d("a",{class:"tool-card",href:t},n&&Se[n],d("div",null,d("h3",null,e),o))}const bt=["loot_table.type","loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","dimension.generator.biome_source.preset","carver.type","feature.type","decorator.type","feature.tree.minimum_size.type","block_state_provider.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","int_provider.type","float_provider.type","height_provider.type","structure_feature.type","surface_builder.type","processor.processor_type","rule_test.predicate_type","pos_rule_test.predicate_type","template_element.element_type","block_placer.type"],yt=["number_provider.type","score_provider.type","nbt_provider.type","int_provider.type","float_provider.type","height_provider.type"],xt=["feature.config","decorator.config","int_provider.value","float_provider.value","block_state_provider.simple_state_provider.state","block_state_provider.rotated_block_provider.state","block_state_provider.weighted_state_provider.entries.entry.data","rule_test.block_state","structure_feature.config","surface_builder.config","template_pool.elements.entry.element","decorator.block_survives_filter.state"],kt=["loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","feature.type","decorator.type","block_state_provider.type","feature.tree.minimum_size.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","block_placer.type","rule_test.predicate_type","processor.processor_type","template_element.element_type","nbt_operation.op","number_provider.value","score_provider.name","score_provider.target","nbt_provider.source","nbt_provider.target","generator_biome.biome"],Ct=["function.set_nbt.tag","advancement.display.icon.nbt","text_component_object.nbt","entity.nbt","block.nbt","item.nbt"],Mt=["generator_biome.parameters.temperature","generator_biome.parameters.humidity","generator_biome.parameters.continentalness","generator_biome.parameters.erosion","generator_biome.parameters.depth","generator_biome.parameters.weirdness","feature.end_spike.crystal_beam_target","feature.end_gateway.exit","decorator.block_filter.offset"],zt=new p.DataModel(p.MapNode(p.StringNode(),p.StringNode()),{historyMax:0});function At({model:e,lang:t,blockStates:n}){var o;const r=new p.ModelPath(e),[a,i,l]=e.schema.hook(It,r,ge(e.data),t,n,{});return(null==(o=null==i?void 0:i.props)?void 0:o.children.some((e=>e)))?d("div",{class:`node ${e.schema.type(r)}-node`,"data-category":e.schema.category(r)},d("div",{class:"node-header"},a,i),d("div",{class:"node-body"},l)):l}const It={base:()=>[null,null,null],boolean:(e,t,n,o,r,a)=>[null,d(jt,l({},s(l({},e),{path:t,value:n,lang:o,states:r,ctx:a}))),null],choice({choices:e,config:t,switchNode:n},o,r,a,i,l){const s=n.activeCase(o,!0),c=(null==t?void 0:t.context)?new p.ModelPath(o.getModel(),new p.Path(o.getArray(),[t.context])):o,[u,m,h]=s.node.hook(this,c,r,a,i,l);if(1===e.length)return[u,m,h];const g=(null==t?void 0:t.choiceContext)?new p.Path([],[t.choiceContext]):(null==t?void 0:t.context)?new p.Path([],[t.context]):o,f=d("select",{value:s.type,onChange:t=>(t=>{var n;const r=null!=(n=e.find((e=>e.type===t)))?n:s;o.model.set(o,r.change?r.change(t,{wrapLists:!0}):p.DataModel.wrapLists(r.node.default()))})(t.target.value)},e.map((e=>d("option",{value:e.type},Dt(a,g.contextPush(e.type))))));return[u,d(O,null,f,m),h]},list({children:e,config:t},n,o,r,a,i){const{expand:c,collapse:u,isToggled:h}=Et(),[g,f]=m(50),v=n.getContext().join(".");if(Mt.includes(v)){return[d(O,null,[...Array(t.maxLength)].map(((e,t)=>d(Nt,{lang:r,path:n.modelPush(t)}))),d("div",{class:"fixed-list"})),d(O,null,[...Array(t.maxLength)].map(((t,l)=>{var s;return e.hook(this,n.modelPush(l),null==(s=null==o?void 0:o[l])?void 0:s.node,r,a,i)[1]}))),null]}return[null,d("button",{class:"add tooltipped tip-se","aria-label":te(r,"add_top"),onClick:()=>{Array.isArray(o)||(o=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[{node:t,id:re()},...o])}},Y.plus_circle),d(O,null,o&&Array.isArray(o)&&o.map((({node:t,id:m},p)=>{if(p===g)return d("div",{class:"node node-header"},d("label",null,te(r,"entries_hidden",""+(o.length-g))),d("button",{onClick:()=>f(Math.min(g+50,o.length))},te(r,"entries_hidden.more","50")),d("button",{onClick:()=>f(o.length)},te(r,"entries_hidden.all")));if(p>g)return null;const v=n.push(p).contextPush("entry"),_="object"===e.type(v),w=h(m);if(_&&(!1===w||void 0===w&&o.length>20))return d("div",{class:"node node-header","data-category":e.category(v)},d(Nt,{lang:r,path:v,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${te(r,"expand")}\n${te(r,"expand_all","Ctrl")}`,onClick:c(m)},Y.chevron_right),d("label",null,Dt(r,v,`${p}`)),d(Vt,{key:m,path:v,value:t,schema:e}));return d($t,{key:m,path:v,schema:e,value:t,lang:r,states:a,ctx:s(l({},i),{index:(0===p?1:0)+(p===o.length-1?2:0)})},_&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${te(r,"collapse")}\n${te(r,"collapse_all","Ctrl")}`,onClick:u(m)},Y.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":te(r,"remove"),onClick:()=>v.set(void 0)},Y.trashcan),o.length>1&&d("div",{class:"node-move"},d("button",{class:"move tooltipped tip-se","aria-label":te(r,"move_up"),onClick:()=>{const e=[...n.get()];[e[p-1],e[p]]=[e[p],e[p-1]],n.model.set(n,e)},disabled:0===p},Y.chevron_up),d("button",{class:"move tooltipped tip-se","aria-label":te(r,"move_down"),onClick:()=>{const e=[...n.get()];[e[p+1],e[p]]=[e[p],e[p+1]],n.model.set(n,e)},disabled:p===o.length-1},Y.chevron_down)))})),o&&o.length>0&&o.length<=g&&d("div",{class:"node node-header"},d("button",{class:"add tooltipped tip-se","aria-label":te(r,"add_bottom"),onClick:()=>{Array.isArray(o)||(o=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[...o,{node:t,id:re()}])}},Y.plus_circle)))]},map({children:e,keys:t,config:n},o,r,a,i,c){var u,m,h,g,f;const{expand:v,collapse:_,isToggled:w}=Et(),b=new p.ModelPath(zt,new p.Path([Pt(o.toString())])),y="block_state_map"===(null==(u=n.validation)?void 0:u.validator)?null==i?void 0:i[p.relativePath(o,n.validation.params.id).get()]:null,x=(null==y?void 0:y.properties)?p.StringNode(null,{enum:Object.keys(null!=(m=y.properties)?m:{})}):t;if(y&&"Properties"===o.last()){"object"!=typeof r&&(r={});const e=Object.entries(null!=(h=y.properties)?h:{}).map((([e,t])=>[e,p.StringNode(null,{enum:t})]));return Object.entries(null!=(g=y.properties)?g:{}).forEach((([e,t])=>{"string"!=typeof r[e]?o.model.errors.add(o.push(e),"error.expected_string"):t.includes(r[e])||o.model.errors.add(o.push(e),"error.invalid_enum_option",r[e])})),p.ObjectNode(Object.fromEntries(e)).hook(this,o,r,a,i,c)}return[null,d(O,null,x.hook(this,b,null!=(f=b.get())?f:"",a,i,c)[1],d("button",{class:"add tooltipped tip-se","aria-label":te(a,"add"),onClick:()=>{const t=b.get();o.model.set(o.push(t),p.DataModel.wrapLists(e.default()))}},Y.plus_circle)),d(O,null,"object"==typeof r&&Object.entries(r).map((([t,n])=>{var u,m,h,g;const f=o.modelPush(t),b="object"===e.type(f),x=w(t);if(b&&(!1===x||void 0===x&&r.length>20))return d("div",{class:"node node-header","data-category":e.category(f)},d(Nt,{lang:a,path:f,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${te(a,"expand")}\n${te(a,"expand_all","Ctrl")}`,onClick:v(t)},Y.chevron_right),d("label",null,t),d(Vt,{key:t,path:f,value:n,schema:e}));const k=y?p.StringNode(null,{enum:null!=(m=null==(u=y.properties)?void 0:u[t])?m:[]}):e;(null==(h=null==y?void 0:y.properties)?void 0:h[t])&&"string"==typeof n&&!(null==(g=y.properties)?void 0:g[t].includes(n))&&o.model.errors.add(f,"error.invalid_enum_option",n);return d($t,s(l({key:t,schema:k,path:f,value:n},{lang:a,states:i,ctx:c}),{label:t}),b&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${te(a,"collapse")}\n${te(a,"collapse_all","Ctrl")}`,onClick:_(t)},Y.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":te(a,"remove"),onClick:()=>f.set(void 0)},Y.trashcan))})))]},number:(e,t,n,o,r,a)=>[null,d(Ot,l({},s(l({},e),{path:t,value:n,lang:o,states:r,ctx:a}))),null],object({node:e,getActiveFields:t,getChildModelPath:n},o,r,a,i,c){var u;let m=null,h=null;if(e.optional())if(void 0===r){const t=()=>o.set(p.DataModel.wrapLists(e.default()));h=d("button",{class:"collapse closed tooltipped tip-se","aria-label":te(a,"expand"),onClick:t},Y.plus_circle)}else{const e=()=>o.set(void 0);h=d("button",{class:"collapse open tooltipped tip-se","aria-label":te(a,"remove"),onClick:e},Y.trashcan)}const g="object"==typeof r&&null!==r&&(null==(u=e.default())?void 0:u.pools)?s(l({},c),{loot:null==r?void 0:r.type}):c,f=d(O,null,"object"==typeof r&&null!==r&&!(e.optional()&&void 0===r)&&Object.entries(t(o)).filter((([e,t])=>t.enabled(o))).map((([e,t])=>{var s,c,u;const p=n(o,e),f=p.getContext().join(".");if(yt.includes(f))return null;const[v,_,w]=t.hook(this,p,r[e],a,i,g);if(!(v||_||(null!=(u=null==(c=null==(s=null==w?void 0:w.props)?void 0:s.children)?void 0:c.length)?u:0)>0))return null;const b="object"===t.type(p)&&xt.includes(f),y=kt.includes(f);return b||y?(m=d(O,null,m,d(Nt,{lang:a,path:p}),d(Tt,{lang:a,path:p}),v),h=d(O,null,h,_),b?w:null):d($t,l({key:e,schema:t,path:p,value:r[e]},{lang:a,states:i,ctx:g}))})));return[m,h,f]},string:(e,t,n,o,r,a)=>[null,d(Lt,l({},s(l({},e),{path:t,value:n,lang:o,states:r,ctx:a}))),null]};function Vt({path:e,value:t}){var n,o,r,a,i;switch(e.getContext().join(".")){case"loot_table.pools.entry":return d("label",null,null!=(o=null==(n=null==t?void 0:t.entries)?void 0:n.length)?o:0," entries");case"function.set_contents.entries.entry":case"loot_pool.entries.entry":return d("label",null,null!=(i=null==(r=null==t?void 0:t.name)?void 0:r.replace(/^minecraft:/,""))?i:null==(a=null==t?void 0:t.type)?void 0:a.replace(/^minecraft:/,""))}for(const l of Object.values(null!=t?t:{}))if("string"==typeof l)return d("label",null,l.replace(/^minecraft:/,""));return null}function Et(){const[e,t]=m(new Map),[n,o]=m(void 0);return{expand:e=>n=>{n.ctrlKey?(t(new Map),o(!0)):t((t=>new Map(t.set(e,!0))))},collapse:e=>n=>{n.ctrlKey?(t(new Map),o(!1)):t((t=>new Map(t.set(e,!1))))},isToggled:t=>{var o;return null!=(o=e.get(t))?o:n}}}function jt({path:e,node:t,value:n,lang:o}){const r=o=>{e.model.set(e,t.optional()&&n===o?void 0:o)};return d(O,null,d("button",{class:!1===n?"selected":"",onClick:()=>r(!1)},te(o,"false")),d("button",{class:!0===n?"selected":"",onClick:()=>r(!0)},te(o,"true")))}function Ot({path:e,config:t,integer:n,value:o,lang:r}){var a;const[i,l]=m(null!=o?o:""),s=u(),c=u(),h=t=>{s.current&&clearTimeout(s.current),c.current=t,s.current=setTimeout((()=>{e.model.set(e,c.current),c.current=void 0}),500)};return d(O,null,d("input",{type:"text",value:i,onChange:e=>{const t=e.target.value,o=n?parseInt(t):parseFloat(t);l(t),h(o)},onBlur:()=>{var e,t;l(null!=(t=null!=(e=c.current)?e:o)?t:"")}}),(null==t?void 0:t.color)&&d("input",{type:"color",value:"#"+(null!=(a=null==o?void 0:o.toString(16).padStart(6,"0"))?a:"000000"),onChange:e=>{const t=e.target.value,n=parseInt(t.slice(1),16);l(n),h(n)}}),e.equals(new p.Path(["generator","seed"]))&&d("button",{onClick:()=>ie(e.model),class:"tooltipped tip-se","aria-label":te(r,"generate_new_seed")},Y.sync))}function Lt({path:e,getValues:t,config:n,node:o,value:r,lang:a,states:i}){var l;const s=t=>{t.stopPropagation();const n=t.target.value;e.model.set(e,0===n.length?void 0:n)},c=t(),u=e.getContext().join(".");if(Ct.includes(u))return d("textarea",{value:null!=r?r:"",onChange:s});if(St(n)&&!n.additional||bt.includes(u)){let e=new p.Path([]);return St(n)&&"string"==typeof n.enum?e=e.contextPush(n.enum):St(n)||"resource"!==(null==n?void 0:n.validator)||"string"!=typeof n.params.pool||(e=e.contextPush(n.params.pool)),d("select",{value:null!=r?r:"",onChange:s},o.optional()&&d("option",{value:""},te(a,"unset")),c.map((t=>d("option",{value:t},Dt(a,e.contextPush(t.replace(/^minecraft:/,"")))))))}if(St(n)||"block_state_key"!==(null==n?void 0:n.validator)){const e=re();return d(O,null,d("input",{value:null!=r?r:"",onChange:s,list:c.length>0?e:""}),c.length>0&&d("datalist",{id:e},c.map((e=>d("option",{value:e})))))}{const t=null==i?void 0:i[p.relativePath(e,n.params.id).get()],o=Object.keys(null!=(l=null==t?void 0:t.properties)?l:{});return d("select",{value:null!=r?r:"",onChange:s},o.map((e=>d("option",null,e))))}}const $t=$((function({label:e,schema:t,path:n,value:o,lang:r,states:a,ctx:i,children:s}){const c=t.type(n),u=t.category(n),m=n.getContext().join("."),[h,p]=J(),g=l({},i);delete g.index;const[f,v,_]=t.hook(It,n,o,r,a,g);return d("div",{class:`node ${c}-node`,"data-category":u},d("div",{class:"node-header"},d(Nt,{lang:r,path:n}),d(Tt,{lang:r,path:n}),s,f,d("label",{onContextMenu:e=>{e.preventDefault(),p()}},null!=e?e:Dt(r,n,`${n.last()}`),h&&d("div",{class:"node-menu"},d("div",{class:"menu-item"},d(H,{icon:"clippy",tooltip:te(r,"copy_context"),tooltipLoc:"se",onClick:()=>navigator.clipboard.writeText(m)}),"Context:",d("span",{class:"menu-item-context"},m)))),v),_&&d("div",{class:"node-body"},_))}),((e,t)=>e.schema===t.schema&&e.lang===t.lang&&e.path.equals(t.path)&&fe(e.ctx,t.ctx)&&fe(e.value,t.value)));function St(e){return!!(null==e?void 0:e.enum)}function Pt(e){var t,n=0;for(t=0;te.path.startsWith(t))):t.model.errors.get(t,!0);if(0===r.length)return null;const a=te(e,r[0].error,...null!=(o=r[0].params)?o:[]);return Bt("node-error","issue_opened",a)}function Tt({lang:e,path:t}){const n=t.contextPush("help").getContext().join("."),o=te(e,n);return o===n?null:Bt("node-help","info",o)}const Bt=(e,t,n)=>{const[o,r]=J();return d("div",{class:`node-icon ${e}${o?" show":""}`,onClick:r},Y[t],d("span",{class:"icon-popup"},n))};function Ht({lang:e,model:t,blockStates:n,onError:o}){if(!t||!n)return d(O,null);const[r]=S((e=>{o(`Error rendering the tree: ${e.message}`),console.error(e)}));if(r)return d(O,null);const[,a]=m(0);return W(t,(()=>{a((e=>e+1))})),d("div",{class:"tree"},d(At,l({},{model:t,lang:e,blockStates:n})))}function Rt({lang:e}){const t=te.bind(null,e);return d("main",null,d("div",{class:"settings"},d("p",null,t("settings.fields.description")),d("ul",{class:"field-list"})))}function Ft({lang:e,changeTitle:t,version:n,onChangeVersion:o}){var r;const a=te.bind(null,e),[i,h]=m(null),[g,f]=S();if(g)return d("main",null,d(U,{error:`Something went wrong rendering the generator: ${g.message}`,onDismiss:f}));const v=se(w());if(!v)return d("main",null,d(U,{error:`Cannot find generator "${w()}"`}));c((()=>{h(null)}),[v.id,n]);const _=T.versions.filter((e=>Oe(e.id,v.minVersion))).map((e=>e.id));t(a("title.generator",a(v.id)),_),Oe(n,v.minVersion)||h(`The minimum version for this generator is ${v.minVersion}`);const[b,y]=m(null),[x,k]=m(null);c((()=>{y(null),async function(e){return(await je(e)).blockStates}(n).then((e=>k(e))),async function(e,t){var n;if(!Ve[t]||Ve[t].version!==e){const r=await je(e),a=null==(n=T.generators.find((e=>e.id===t)))?void 0:n.schema;if(!a)throw new Error(`Cannot find model ${t}`);try{const n=r.schemas.get(a),o=new p.DataModel(n,{wrapLists:!0});Ve[t]?o.reset(Ve[t].model.data,!1):(o.validate(!0),o.history=[JSON.stringify(o.data)]),Ve[t]={model:o,version:e}}catch(o){throw new Error(`Cannot get generator "${t}" for version "${e}": ${pe(o)}`)}}return Ve[t].model}(n,v.id).then((e=>y(e))).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id]),W(b,(()=>{h(null)}));const C=e=>{e.ctrlKey&&"z"===e.key?(N.generatorEvent("undo","Hotkey"),null==b||b.undo()):e.ctrlKey&&"y"===e.key&&(N.generatorEvent("redo","Hotkey"),null==b||b.redo())};c((()=>(document.addEventListener("keyup",C),()=>{document.removeEventListener("keyup",C)})),[b]);const[M,z]=m(""),[A,I]=m([]);c((()=>{(async function(e){return(await je(e)).collections})(n).then((e=>{const t=(null!=M?M:"").trim().split(" "),n=e.get(v.id).map((e=>e.slice(10))).filter((e=>t.every((t=>e.includes(t)))));n&&I(n)})).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id,M]);const[V,E]=m(window.innerWidth>820),[j,L]=m(0),[$,P]=m(0),[D,F]=m(0),[J,Z]=m(!1),X=u(void 0),[q,K]=m(!1),Q=mt.includes(v.id);q&&!Q&&K(!1);let ee=1;Q&&(ee+=1),V&&(ee+=2);return d(O,null,d("main",{class:q?"has-preview":""},d(B,{id:"data-pack-generator",type:"text"}),d("div",{class:"controls"},d(H,{icon:"upload",label:a("import"),onClick:()=>{N.generatorEvent("import"),E(!0),F(D+1)}}),d(G,{icon:"archive",label:a("presets"),relative:!1},d(R,{icon:"search",large:!0,value:M,onChange:z,doSelect:1,placeholder:a("search")}),d("div",{class:"result-list"},A.map((e=>d(H,{label:e,onClick:()=>{return t=e,N.generatorEvent("load-preset",t),void Me(n,null!=(o=v.path)?o:v.id,t).then((e=>{var t,n;const o=null==b?void 0:b.get(new p.Path(["generator","seed"]));void 0!==(null==(t=null==e?void 0:e.generator)?void 0:t.seed)&&void 0!==o&&(e.generator.seed=o,void 0!==(null==(n=e.generator.biome_source)?void 0:n.seed)&&(e.generator.biome_source.seed=o)),null==b||b.reset(p.DataModel.wrapLists(e),!1)}));var t,o}})))),0===A.length&&d(H,{label:a("no_presets")})),d(G,{icon:"tag",label:n},_.reverse().map((e=>d(H,{label:e,active:e===n,onClick:()=>o(e)})))),d(G,{icon:"kebab_horizontal",tooltip:a("more")},d(H,{icon:"history",label:a("reset"),onClick:()=>{N.generatorEvent("reset"),null==b||b.reset(p.DataModel.wrapLists(b.schema.default()),!0)}}),d(H,{icon:"arrow_left",label:a("undo"),onClick:e=>{e.stopPropagation(),N.generatorEvent("undo","Menu"),null==b||b.undo()}}),d(H,{icon:"arrow_right",label:a("redo"),onClick:e=>{e.stopPropagation(),N.generatorEvent("redo","Menu"),null==b||b.redo()}}))),i&&d(U,{error:i,onDismiss:()=>h(null)}),d(Ht,s(l({},{lang:e,model:b,version:n,blockStates:x}),{onError:h}))),d("div",{class:"popup-actions",style:`--offset: -${50*ee}px;`},d("div",{class:`popup-action action-preview${Q?" shown":""} tooltipped tip-nw`,"aria-label":a(q?"hide_preview":"show_preview"),onClick:()=>{N.generatorEvent("toggle-preview",q?"hidden":"visible"),K(!q)}},q?Y.x_circle:Y.play),d("div",{class:`popup-action action-download${V?" shown":""} tooltipped tip-nw`,"aria-label":a("download"),onClick:()=>{N.generatorEvent("download"),P($+1)}},Y.download),d("div",{class:`popup-action action-copy${V?" shown":""}${J?" active":""} tooltipped tip-nw`,"aria-label":a(J?"copied":"copy"),onClick:()=>{N.generatorEvent("copy"),L(j+1)}},J?Y.check:Y.clippy),d("div",{class:"popup-action action-code shown tooltipped tip-nw","aria-label":a(V?"hide_output":"show_output"),onClick:()=>{N.generatorEvent("toggle-output",V?"hidden":"visible"),E(!V),L(0),P(0),F(0)}},V?Y.chevron_right:Y.code)),d("div",{class:"popup-preview"+(q?" shown":"")},d(ht,s(l({},{lang:e,model:b,version:n,id:v.id}),{shown:q,onError:h}))),d("div",{class:"popup-source"+(V?" shown":"")},d(_t,s(l({},{lang:e,model:b,blockStates:x,doCopy:j,doDownload:$,doImport:D}),{name:null!=(r=v.schema)?r:"data",copySuccess:()=>{Z(!0),void 0!==X.current&&clearTimeout(X.current),X.current=setTimeout((()=>{Z(!1)}),2e3)},onError:h}))))}function Jt({lang:e,changeTitle:t}){const n=te.bind(null,e);return t(n("title.home")),d("main",null,d("div",{class:"home"},T.generators.filter((e=>!e.category)).map((e=>d(wt,{title:n(e.id),link:le(e.url)}))),d(wt,{title:n("worldgen"),link:"/worldgen/"}),d("hr",null),d(wt,{title:"Report Inspector",icon:"report",link:"https://misode.github.io/report/"},d("p",null,"Analyse your performance reports")),d(wt,{title:"Minecraft Sounds",icon:"sounds",link:"https://misode.github.io/sounds/"},d("p",null,"Browse through and mix all the vanilla sounds")),d(wt,{title:"Data Pack Upgrader",link:"https://misode.github.io/upgrader/"},d("p",null,"Convert your 1.16 data packs to 1.17"))))}function Wt({lang:e,changeTitle:t}){const n=te.bind(null,e);return t(n("title.generator_category",n("worldgen"))),d("main",null,d("div",{class:"home"},T.generators.filter((e=>"worldgen"===e.category)).map((e=>d(wt,{title:n(e.id),link:le(e.url)})))))}function Gt(){const[e,t]=m("en");c((()=>{(async()=>{const e=gt.getLanguage();await Promise.all([ne("en"),..."en"!==e?[ne(e)]:[]]),t(e)})()}),[]);const[n,o]=m(gt.getTheme());c((()=>{document.documentElement.setAttribute("data-theme",n)}),[n]);const[r,a]=m(gt.getVersion()),[i,u]=m(te(e,"title.home")),h=(e,t)=>{null!=t||(t=T.versions.map((e=>e.id))),t.splice(0,t.length-3),document.title=`${e} Minecraft ${t.join(", ")}`,u(e)};return d(O,null,d($e,l({},{lang:e,title:i,version:r,theme:n,language:e,changeLanguage:async e=>{ee[e]||await ne(e),N.setLanguage(e),gt.setLanguage(e),t(e)},changeTheme:e=>{N.setTheme(e),gt.setTheme(e),o(e)}})),d(D,{onChange:e=>{setTimeout((()=>N.pageview(le(e.url))))}},d(Jt,l({path:"/"},{lang:e,changeTitle:h})),d(Rt,l({path:"/settings/fields"},{lang:e,changeTitle:h})),d(Wt,l({path:"/worldgen"},{lang:e,changeTitle:h})),d(Ft,s(l({default:!0},{lang:e,version:r,changeTitle:h}),{onChangeVersion:e=>{N.setVersion(e),gt.setVersion(e),a(e)}}))))}P(d(Gt,null),document.body); +//# sourceMappingURL=index.bba0bf2b.js.map diff --git a/assets/index.bba0bf2b.js.map b/assets/index.bba0bf2b.js.map new file mode 100644 index 00000000..acc4ee0e --- /dev/null +++ b/assets/index.bba0bf2b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.bba0bf2b.js","sources":["../../src/app/Analytics.ts","../../src/app/components/Ad.tsx","../../src/app/components/Btn.tsx","../../src/app/components/BtnInput.tsx","../../src/app/hooks/useCanvas.ts","../../src/app/hooks/useFocus.ts","../../src/app/hooks/useModel.ts","../../src/app/components/BtnMenu.tsx","../../src/app/components/Octicon.tsx","../../src/app/components/ErrorPanel.tsx","../../vite/preload-helper","../../src/app/Locales.ts","../../src/app/Utils.ts","../../src/app/DataFetcher.ts","../../src/app/Schemas.ts","../../src/app/components/Header.tsx","../../src/app/components/Icons.tsx","../../src/app/previews/BiomeSource.ts","../../src/app/previews/Decorator.ts","../../src/app/previews/noise/NoiseChunkGenerator.ts","../../src/app/previews/NoiseSettings.ts","../../src/app/components/previews/BiomeSourcePreview.tsx","../../src/app/components/previews/DecoratorPreview.tsx","../../src/app/components/previews/NoiseSettingsPreview.tsx","../../src/app/components/PreviewPanel.tsx","../../src/app/schema/transformOutput.ts","../../src/app/Store.ts","../../src/app/components/SourcePanel.tsx","../../src/app/components/ToolCard.tsx","../../src/app/schema/renderHtml.tsx","../../src/app/components/Tree.tsx","../../src/app/pages/FieldSettings.tsx","../../src/app/pages/Generator.tsx","../../src/app/pages/Home.tsx","../../src/app/pages/Worldgen.tsx","../../src/app/Main.tsx"],"sourcesContent":["export namespace Analytics {\n\tconst ID_SITE = 'Site'\n\tconst ID_GENERATOR = 'Generator'\n\n\tconst DIM_THEME = 1\n\tconst DIM_VERSION = 3\n\tconst DIM_LANGUAGE = 4\n\tconst DIM_PREVIEW = 5\n\n\tfunction event(category: string, action: string, label?: string) {\n\t\tga('send', 'event', category, action, label)\n\t}\n\n\tfunction dimension(index: number, value: string) {\n\t\tga('set', `dimension${index}`, value)\n\t}\n\n\texport function pageview(page: string) {\n\t\tga('set', 'page', page)\n\t\tga('send', 'pageview')\n\t}\n\n\texport function setLanguage(language: string) {\n\t\tdimension(DIM_LANGUAGE, language)\n\t\tevent(ID_SITE, 'set-language', language)\n\t}\n\n\texport function setTheme(theme: string) {\n\t\tdimension(DIM_THEME, theme)\n\t\tevent(ID_SITE, 'set-theme', theme)\n\t}\n\n\texport function setVersion(version: string) {\n\t\tdimension(DIM_VERSION, version)\n\t\tevent(ID_GENERATOR, 'set-version', version)\n\t}\n\n\texport function setPreview(preview: string) {\n\t\tdimension(DIM_PREVIEW, preview)\n\t\tevent(ID_GENERATOR, 'set-preview', preview)\n\t}\n\n\texport function generatorEvent(action: string, label?: string) {\n\t\tevent(ID_GENERATOR, action, label)\n\t}\n}\n","import { useEffect } from 'preact/hooks'\n\ndeclare const ethicalads: any\n\ntype AdProps = {\n\ttype: 'text' | 'image',\n\tid: string,\n}\nexport function Ad({ type, id }: AdProps) {\n\tuseEffect(() => {\n\t\tdocument.getElementById('ad-placeholder')?.remove()\n\t\tif ('ethicalads' in window) {\n\t\t\tethicalads.load()\n\t\t}\n\t}, [])\n\n\treturn
\n}\n","import { Octicon } from '.'\n\ntype BtnProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tactive?: boolean,\n\ttooltip?: string,\n\ttooltipLoc?: 'se' | 'sw' | 'nw',\n\tclass?: string,\n\tonClick?: (event: MouseEvent) => unknown,\n}\nexport function Btn({ icon, label, active, class: clazz, tooltip, tooltipLoc, onClick }: BtnProps) {\n\treturn
\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t
\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Octicon } from '.'\n\ntype BtnInputProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tlarge?: boolean,\n\tdoSelect?: number,\n\tvalue?: string,\n\tplaceholder?: string,\n\tonChange?: (value: string) => unknown,\n}\nexport function BtnInput({ icon, label, large, doSelect, value, placeholder, onChange }: BtnInputProps) {\n\tconst onInput = onChange === undefined ? () => {} : (e: any) => {\n\t\tconst value = (e.target as HTMLInputElement).value\n\t\tonChange?.(value)\n\t}\n\n\tconst ref = useRef(null)\n\tuseEffect(() => {\n\t\tif (doSelect && ref.current) {\n\t\t\tref.current.select()\n\t\t}\n\t}, [doSelect])\n\n\treturn
e.stopPropagation()}>\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t\t\n\t
\n}\n","import type { Inputs } from 'preact/hooks'\nimport { useEffect, useRef } from 'preact/hooks'\n\ntype Vec2 = [number, number]\n\nexport function useCanvas({ size, draw, onDrag, onHover, onLeave }: {\n\tsize: () => Vec2,\n\tdraw: (img: ImageData) => Promise,\n\tonDrag?: (dx: number, dy: number) => Promise,\n\tonHover?: (x: number, y: number) => unknown,\n\tonLeave?: () => unknown,\n}, inputs?: Inputs) {\n\tconst canvas = useRef(null)\n\n\tconst dragStart = useRef()\n\tconst dragRequest = useRef()\n\tconst dragPending = useRef([0, 0])\n\tconst dragBusy = useRef(false)\n\n\tuseEffect(() => {\n\t\tconst onMouseDown = (e: MouseEvent) => {\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseMove = (e: MouseEvent) => {\n\t\t\tif (dragStart.current === undefined) {\n\t\t\t\tconst x = e.offsetX / canvas.current.clientWidth\n\t\t\t\tconst y = e.offsetY / canvas.current.clientHeight\n\t\t\t\tonHover?.(x, y)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!onDrag) return\n\t\t\tconst dx = e.offsetX - dragStart.current[0]\n\t\t\tconst dy = e.offsetY - dragStart.current[1]\n\t\t\tif (!(dx === 0 && dy === 0)) {\n\t\t\t\tdragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]\n\t\t\t\tif (!dragBusy.current) {\n\t\t\t\t\tcancelAnimationFrame(dragRequest.current)\n\t\t\t\t\tdragRequest.current = requestAnimationFrame(async () => {\n\t\t\t\t\t\tdragBusy.current = true\n\t\t\t\t\t\tconst dx = dragPending.current[0] / canvas.current.clientWidth\n\t\t\t\t\t\tconst dy = dragPending.current[1] / canvas.current.clientHeight\n\t\t\t\t\t\tdragPending.current = [0, 0]\n\t\t\t\t\t\tawait onDrag?.(dx, dy)\n\t\t\t\t\t\tdragBusy.current = false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseUp = () => {\n\t\t\tdragStart.current = undefined\n\t\t}\n\t\tconst onMouseLeave = () => {\n\t\t\tonLeave?.()\n\t\t}\n\n\t\tcanvas.current.addEventListener('mousedown', onMouseDown)\n\t\tcanvas.current.addEventListener('mousemove', onMouseMove)\n\t\tcanvas.current.addEventListener('mouseleave', onMouseLeave)\n\t\tdocument.body.addEventListener('mouseup', onMouseUp)\n\n\t\treturn () => {\n\t\t\tcanvas.current.removeEventListener('mousedown', onMouseDown)\n\t\t\tcanvas.current.removeEventListener('mousemove', onMouseMove)\n\t\t\tcanvas.current.removeEventListener('mouseleave', onMouseLeave)\n\t\t\tdocument.body.removeEventListener('mouseup', onMouseUp)\n\t\t}\n\t}, [...inputs ?? [], canvas.current])\n\n\tconst redraw = useRef<() => Promise>()\n\tconst redrawCount = useRef(0)\n\tredraw.current = async () => {\n\t\tconst ctx = canvas.current.getContext('2d')!\n\t\tconst s = size()\n\t\tcanvas.current.width = s[0]\n\t\tcanvas.current.height = s[1]\n\t\tconst img = ctx.getImageData(0, 0, s[0], s[1])\n\t\tconst ownCount = redrawCount.current += 1\n\t\tawait draw(img)\n\t\tif (ownCount === redrawCount.current) {\n\t\t\tctx.putImageData(img, 0, 0)\n\t\t}\n\t}\n\n\treturn {\n\t\tcanvas,\n\t\tredraw: redraw.current,\n\t}\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nexport function useFocus(): [boolean, () => unknown] {\n\tconst [active, setActive] = useState(false)\n\n\tconst hider = () => {\n\t\tsetActive(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (active) {\n\t\t\tdocument.body.addEventListener('click', hider)\n\t\t\tdocument.body.addEventListener('contextmenu', hider)\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener('click', hider)\n\t\t\tdocument.body.removeEventListener('contextmenu', hider)\n\t\t}\n\t}, [active])\n\n\treturn [active, () => setActive(true)]\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useEffect } from 'preact/hooks'\n\nexport function useModel(model: DataModel | undefined | null, invalidated: (model: DataModel) => unknown) {\n\tconst listener = {\n\t\tinvalidated() {\n\t\t\tif (model) {\n\t\t\t\tinvalidated(model)\n\t\t\t}\n\t\t},\n\t}\n\n\tuseEffect(() => {\n\t\tmodel?.addListener(listener)\n\t\treturn () => {\n\t\t\tmodel?.removeListener(listener)\n\t\t}\n\t}, [model])\n}\n","import type { ComponentChildren } from 'preact'\nimport type { Octicon } from '.'\nimport { Btn } from '.'\nimport { useFocus } from '../hooks'\n\ntype BtnMenuProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\trelative?: boolean,\n\ttooltip?: string,\n\tchildren: ComponentChildren,\n}\nexport function BtnMenu({ icon, label, relative, tooltip, children }: BtnMenuProps) {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t\n\t\t{active &&
\n\t\t\t{children}\n\t\t
}\n\t
\n}\n","export const Octicon = {\n\tarchive: ,\n\tarrow_left: ,\n\tarrow_right: ,\n\tcheck: ,\n\tchevron_down: ,\n\tchevron_right: ,\n\tchevron_up: ,\n\tclippy: ,\n\tcode: ,\n\tdash: ,\n\tdevice_desktop: ,\n\tdownload: ,\n\teye: ,\n\teye_closed: ,\n\tgear: ,\n\tglobe: ,\n\thistory: ,\n\tinfo: ,\n\tissue_opened: ,\n\tkebab_horizontal: ,\n\tlink: ,\n\tmark_github: ,\n\tmoon: ,\n\tplay: ,\n\tplus: ,\n\tplus_circle: ,\n\tsearch: ,\n\tsun: ,\n\tsync: ,\n\ttag: ,\n\tthree_bars: ,\n\ttrashcan: ,\n\tunfold: ,\n\tupload: ,\n\tx: ,\n\tx_circle: ,\n}\n","import { Octicon } from './Octicon'\n\ntype ErrorPanelProps = {\n\terror: string,\n\tonDismiss?: () => unknown,\n}\nexport function ErrorPanel({ error, onDismiss }: ErrorPanelProps) {\n\treturn
\n\t\t{onDismiss &&
{Octicon.x}
}\n\t\t

{error}

\n\t\t

If you think this is a bug, you can report it on GitHub

\n\t
\n}\n","let scriptRel;const seen = {};export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps) {\n return baseModule();\n }\n // @ts-ignore\n if (scriptRel === undefined) {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n scriptRel =\n relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import config from '../config.json'\nimport English from '../locales/en.json'\n\nexport type Localize = (key: string, ...params: string[]) => string\n\ninterface Locale {\n\t[key: string]: string\n}\n\nexport const Locales: {\n\t[key: string]: Locale,\n} = {\n\tfallback: English,\n}\n\nfunction resolveLocaleParams(value: string, params?: string[]): string {\n\treturn value.replace(/%\\d+%/g, match => {\n\t\tconst index = parseInt(match.slice(1, -1))\n\t\treturn params?.[index] !== undefined ? params[index] : match\n\t})\n}\n\nexport function locale(language: string, key: string, ...params: string[]): string {\n\tconst value: string | undefined = Locales[language]?.[key]\n\t\t?? Locales.en?.[key] ?? Locales.fallback[key] ?? key\n\treturn resolveLocaleParams(value, params)\n}\n\nexport async function loadLocale(language: string) {\n\tconst langConfig = config.languages.find(lang => lang.code === language)\n\tif (!langConfig) return\n\tconst data = await import(`../locales/${language}.json`)\n\tconst schema = langConfig.schemas !== false\n\t\t&& await import(`../../node_modules/@mcschema/locales/src/${language}.json`)\n\tLocales[language] = { ...data.default, ...schema.default }\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport rfdc from 'rfdc'\nimport config from '../config.json'\n\nexport function isPromise(obj: any): obj is Promise {\n\treturn typeof (obj as any)?.then === 'function' \n}\n\nconst dec2hex = (dec: number) => ('0' + dec.toString(16)).substr(-2)\n\nexport function hexId(length = 12) {\n\tvar arr = new Uint8Array(length / 2)\n\twindow.crypto.getRandomValues(arr)\n\treturn Array.from(arr, dec2hex).join('')\n}\n\nexport function randomSeed() {\n\treturn BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n}\n\nexport function newSeed(model: DataModel) {\n\tconst seed = Math.floor(Math.random() * (4294967296)) - 2147483648\n\tmodel.set(new Path(['generator', 'seed']), seed, true)\n\tmodel.set(new Path(['generator', 'biome_source', 'seed']), seed)\n}\n\nexport function htmlEncode(str: string) {\n\treturn str.replace(/&/g, '&').replace(//g, '>')\n\t\t.replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/')\n}\n\nexport function hashString(s: string) {\n\tlet h = 0\n\tfor(let i = 0; i < s.length; i++)\n\t\th = Math.imul(31, h) + s.charCodeAt(i) | 0\n\treturn h\n}\n\nexport function cleanUrl(url: string) {\n\treturn `/${url}/`.replaceAll('//', '/')\n}\n\nexport function getGenerator(url: string) {\n\tconst trimmedUrl = url.replace(/^\\//, '').replace(/\\/$/, '')\n\treturn config.generators.find(g => g.url === trimmedUrl)\n}\n\nexport function stringToColor(str: string): [number, number, number] {\n\tconst h = Math.abs(hashString(str))\n\treturn [h % 256, (h >> 8) % 256, (h >> 16) % 256]\n}\n\nexport function square(a: number) {\n\treturn a * a\n}\n\nexport function clamp(a: number, b: number, c: number) {\n\treturn Math.max(a, Math.min(b, c))\n}\n\nexport function clampedLerp(a: number, b: number, c: number): number {\n\tif (c < 0) {\n\t\treturn a\n\t} else if (c > 1) {\n\t\treturn b\n\t} else {\n\t\treturn lerp(c, a, b)\n\t}\n}\n\nexport function lerp(a: number, b: number, c: number): number {\n\treturn b + a * (c - b)\n}\n\nexport function lerp2(a: number, b: number, c: number, d: number, e: number, f: number): number {\n\treturn lerp(b, lerp(a, c, d), lerp(a, e, f))\n}\n\nexport function lerp3(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) {\n\treturn lerp(c, lerp2(a, b, d, e, f, g), lerp2(a, b, h, i, j, k))\n}\n\nexport function smoothstep(x: number): number {\n\treturn x * x * x * (x * (x * 6 - 15) + 10)\n}\n\nexport function message(e: unknown): string {\n\tif (e instanceof Error) return e.message\n\treturn `${e}`\n}\n\nexport const deepClone = rfdc()\n\n/**\n * MIT License\n * \n * Copyright (c) 2017 Evgeny Poberezkin\n * \n * https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE\n */\nexport function deepEqual(a: any, b: any) {\n\tif (a === b) return true\n\n\tif (a && b && typeof a == 'object' && typeof b == 'object') {\n\t\tif (a.constructor !== b.constructor) return false\n\t\tlet length, i\n\t\tif (Array.isArray(a)) {\n\t\t\tlength = a.length\n\t\t\tif (length != b.length) return false\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tif (!deepEqual(a[i], b[i])) return false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\t\tconst keys = Object.keys(a)\n\t\tlength = keys.length\n\t\tif (length !== Object.keys(b).length) return false\n\t\tfor (i = length; i-- !== 0;)\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\t\tfor (i = length; i-- !== 0;) {\n\t\t\tconst key = keys[i]\n\t\t\tif (!deepEqual(a[key], b[key])) return false\n\t\t}\n\t\treturn true\n\t}\n\treturn a !== a && b !== b\n}\n\nexport function unwrapLists(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(v => unwrapLists(v.node))\n\t} else if (typeof value === 'object' && value !== null) {\n\t\tconst res: Record = {}\n\t\tObject.entries(value).map(([k, v]) => {\n\t\t\tres[k] = unwrapLists(v)\n\t\t})\n\t\treturn res\n\t} else {\n\t\treturn value\n\t}\n}\n","import type { CollectionRegistry } from '@mcschema/core'\nimport config from '../config.json'\nimport type { BlockStateRegistry, VersionId } from './Schemas'\nimport { checkVersion } from './Schemas'\nimport { message } from './Utils'\n\n['1.15', '1.16', '1.17'].forEach(v => localStorage.removeItem(`cache_${v}`))\n\nconst CACHE_NAME = 'misode-v1'\n\ntype VersionRef = 'mcdata_master' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'\n\ntype Version = {\n\tid: string,\n\trefs: Partial<{ [key in VersionRef]: string }>,\n\tdynamic?: boolean,\n}\n\ndeclare var __MCDATA_MASTER_HASH__: string\ndeclare var __VANILLA_DATAPACK_SUMMARY_HASH__: string\n\nconst mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'\nconst vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'\n\nconst refs: {\n\tid: VersionRef,\n\thash: string,\n\turl: string,\n}[] = [\n\t{\n\t\tid: 'mcdata_master',\n\t\thash: __MCDATA_MASTER_HASH__,\n\t\turl: mcdataUrl,\n\t},\n\t{\n\t\tid: 'vanilla_datapack_summary',\n\t\thash: __VANILLA_DATAPACK_SUMMARY_HASH__,\n\t\turl: vanillaDatapackUrl,\n\t},\n]\n\nexport async function fetchData(versionId: string, collectionTarget: CollectionRegistry, blockStateTarget: BlockStateRegistry) {\n\tconst version = config.versions.find(v => v.id === versionId) as Version | undefined\n\tif (!version) {\n\t\tconsole.error(`[fetchData] Unknown version ${version} in ${JSON.stringify(config.versions)}`)\n\t\treturn\n\t}\n\tconsole.debug(`[fetchData] ${JSON.stringify(version)}`)\n\n\tif (version.dynamic) {\n\t\tawait Promise.all(refs\n\t\t\t.filter(r => localStorage.getItem(`cached_${r.id}`) !== r.hash)\n\t\t\t.map(async r => {\n\t\t\t\tconsole.debug(`[deleteMatching] ${r.id} '${localStorage.getItem(`cached_${r.id}`)}' < '${r.hash}' ${r.url}/${version.refs[r.id]}`)\n\t\t\t\tawait deleteMatching(url => url.startsWith(`${r.url}/${version.refs[r.id]}`))\n\t\t\t\tconsole.debug(`[deleteMatching] Done! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t\tlocalStorage.setItem(`cached_${r.id}`, r.hash)\n\t\t\t\tconsole.debug(`[deleteMatching] Set! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t}))\n\t}\n\n\tawait Promise.all([\n\t\tfetchRegistries(version, collectionTarget),\n\t\tfetchBlockStateMap(version, blockStateTarget),\n\t\tfetchDynamicRegistries(version, collectionTarget),\n\t])\n}\n\nasync function fetchRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => !r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, undefined, '1.15')) {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/registries.json`\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: {[id: string]: string[]} = {}\n\t\t\t\tObject.keys(data).forEach(k => {\n\t\t\t\t\tres[k.slice(10)] = Object.keys(data[k].entries)\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id] ?? [])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching registries:', message(e))\n\t\t}\n\t} else {\n\t\tawait Promise.all(registries.map(async r => {\n\t\t\ttry {\n\t\t\t\tconst url = r.path\n\t\t\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/${r.path}/data.min.json`\n\t\t\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/registries/${r.id}/data.min.json`\n\t\t\t\ttarget.register(r.id, await getData(url, v => v.values))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(`Error occurred while fetching registry ${r.id}:`, message(e))\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function fetchBlockStateMap(version: Version, target: BlockStateRegistry) {\n\tconsole.debug(`[fetchBlockStateMap] ${version.id}`)\n\tif (checkVersion(version.id, undefined, '1.16')) {\n\t\tconst url = (checkVersion(version.id, undefined, '1.15'))\n\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/blocks.json`\n\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/data.min.json`\n\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: BlockStateRegistry = {}\n\t\t\t\tObject.keys(data).forEach(b => {\n\t\t\t\t\tres[b] = {\n\t\t\t\t\t\tproperties: data[b].properties,\n\t\t\t\t\t\tdefault: data[b].states.find((s: any) => s.default).properties,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t} else {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t}\n}\n\nasync function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchDynamicRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, '1.16')) {\n\t\tconst url = `${vanillaDatapackUrl}/${version.refs.vanilla_datapack_summary}/summary/flattened.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching dynamic registries:', message(e))\n\t\t}\n\t}\n}\n\nexport async function fetchPreset(version: VersionId, registry: string, id: string) {\n\tconsole.debug(`[fetchPreset] ${registry} ${id}`)\n\tconst versionData = config.versions.find(v => v.id === version)!\n\ttry {\n\t\tconst url = `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`\n\t\tconst res = await fetch(url)\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tconsole.warn(`Error occurred while fetching ${registry} preset ${id}:`, message(e))\n\t}\n}\n\nasync function getData(url: string, fn: (v: any) => T = (v: any) => v): Promise {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[getData] Opened cache ${CACHE_NAME} ${url}`)\n\t\tconst cacheResponse = await cache.match(url)\n \n\t\tif (cacheResponse && cacheResponse.ok) {\n\t\t\tconsole.debug(`[getData] Retrieving cached data ${url}`)\n\t\t\treturn await cacheResponse.json()\n\t\t}\n \n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\tawait cache.put(url, new Response(JSON.stringify(responseData)))\n\t\treturn responseData\n\t} catch (e) {\n\t\tconsole.warn(`[getData] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\treturn responseData\n\t}\n}\n\nasync function deleteMatching(matches: (url: string) => boolean) {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[deleteMatching] Opened cache ${CACHE_NAME}`)\n\t\tconst promises: Promise[] = []\n \n\t\tfor (const request of await cache.keys()) {\n\t\t\tif (matches(request.url)) {\n\t\t\t\tpromises.push(cache.delete(request))\n\t\t\t}\n\t\t}\n\t\tconsole.debug(`[deleteMatching] Removing ${promises.length} cache objects...`)\n\t\tawait Promise.all(promises)\n\t} catch (e) {\n\t\tconsole.warn(`[deleteMatching] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\t}\n}\n","import type { CollectionRegistry, SchemaRegistry } from '@mcschema/core'\nimport { DataModel } from '@mcschema/core'\nimport * as java15 from '@mcschema/java-1.15'\nimport * as java16 from '@mcschema/java-1.16'\nimport * as java17 from '@mcschema/java-1.17'\nimport * as java18 from '@mcschema/java-1.18'\nimport config from '../config.json'\nimport { fetchData } from './DataFetcher'\nimport { message } from './Utils'\n\nexport const VersionIds = ['1.15', '1.16', '1.17', '1.18'] as const\nexport type VersionId = typeof VersionIds[number]\n\nexport type BlockStateRegistry = {\n\t[block: string]: {\n\t\tproperties?: {\n\t\t\t[key: string]: string[],\n\t\t},\n\t\tdefault?: {\n\t\t\t[key: string]: string,\n\t\t},\n\t},\n}\n\ntype VersionData = {\n\tcollections: CollectionRegistry,\n\tschemas: SchemaRegistry,\n\tblockStates: BlockStateRegistry,\n}\nconst Versions: Record> = {}\n\ntype ModelData = {\n\tmodel: DataModel,\n\tversion: VersionId,\n}\nconst Models: Record = {}\n\nconst versionGetter: {\n\t[versionId in VersionId]: {\n\t\tgetCollections: () => CollectionRegistry,\n\t\tgetSchemas: (collections: CollectionRegistry) => SchemaRegistry,\n\t}\n} = {\n\t1.15: java15,\n\t1.16: java16,\n\t1.17: java17,\n\t1.18: java18,\n}\n\nasync function getVersion(id: VersionId): Promise {\n\tif (!Versions[id]) {\n\t\tVersions[id] = (async () => {\n\t\t\ttry {\n\t\t\t\tconst collections = versionGetter[id].getCollections()\n\t\t\t\tconst blockStates: BlockStateRegistry = {}\n\t\t\t\tawait fetchData(id, collections, blockStates)\n\t\t\t\tconst schemas = versionGetter[id].getSchemas(collections)\n\t\t\t\tVersions[id] = { collections, schemas, blockStates }\n\t\t\t\treturn Versions[id]\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error(`Cannot get version \"${id}\": ${message(e)}`)\n\t\t\t}\n\t\t})()\n\t\treturn Versions[id]\n\t}\n\treturn Versions[id]\n}\n\nexport async function getModel(version: VersionId, id: string): Promise {\n\tif (!Models[id] || Models[id].version !== version) {\n\t\tconst versionData = await getVersion(version)\n\t\tconst schemaName = config.generators.find(g => g.id === id)?.schema\n\t\tif (!schemaName) {\n\t\t\tthrow new Error(`Cannot find model ${id}`)\n\t\t}\n\t\ttry {\n\t\t\tconst schema = versionData.schemas.get(schemaName)\n\t\t\tconst model = new DataModel(schema, { wrapLists: true })\n\t\t\tif (Models[id]) {\n\t\t\t\tmodel.reset(Models[id].model.data, false)\n\t\t\t} else {\n\t\t\t\tmodel.validate(true)\n\t\t\t\tmodel.history = [JSON.stringify(model.data)]\n\t\t\t}\n\t\t\tModels[id] = { model, version }\n\t\t} catch (e) {\n\t\t\tthrow new Error(`Cannot get generator \"${id}\" for version \"${version}\": ${message(e)}`)\n\t\t}\n\t}\n\treturn Models[id].model\n}\n\nexport async function getCollections(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.collections\n}\n\nexport async function getBlockStates(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.blockStates\n}\n\nexport function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {\n\tconst version = config.versions.findIndex(v => v.id === versionId)\n\tconst minVersion = minVersionId ? config.versions.findIndex(v => v.id === minVersionId) : 0\n\tconst maxVersion = maxVersionId ? config.versions.findIndex(v => v.id === maxVersionId) : config.versions.length - 1\n\treturn minVersion <= version && version <= maxVersion\n}\n","import { getCurrentUrl, Link, route } from 'preact-router'\nimport { Btn, BtnMenu, Icons, Octicon } from '.'\nimport config from '../../config.json'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { cleanUrl, getGenerator } from '../Utils'\n\nconst Themes: Record = {\n\tsystem: 'device_desktop',\n\tdark: 'moon',\n\tlight: 'sun',\n}\n\ntype HeaderProps = {\n\tlang: string,\n\ttitle: string,\n\tversion: VersionId,\n\ttheme: string,\n\tchangeTheme: (theme: string) => unknown,\n\tlanguage: string,\n\tchangeLanguage: (language: string) => unknown,\n}\nexport function Header({ lang, title, version, theme, changeTheme, language, changeLanguage }: HeaderProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst gen = getGenerator(getCurrentUrl())\n\n\treturn
\n\t\t
\n\t\t\t{Icons.home}\n\t\t\t

{title}

\n\t\t\t{gen && \n\t\t\t\t{config.generators\n\t\t\t\t\t.filter(g => g.category === gen?.category && checkVersion(version, g.minVersion))\n\t\t\t\t\t.map(g =>\n\t\t\t\t\t\t route(cleanUrl(g.url))} />\n\t\t\t\t\t)}\n\t\t\t}\n\t\t
\n\t\t\n\t
\n}\n","export const Icons = {\n\thome: ,\n\treport: ,\n\tsounds: ,\n}\n","import type { BiomeSource, Climate, NoiseOctaves } from 'deepslate'\nimport { FixedBiome, MultiNoise, NoiseGeneratorSettings, NoiseSampler, NormalNoise, Random } from 'deepslate'\nimport { fetchPreset } from '../DataFetcher'\nimport type { VersionId } from '../Schemas'\nimport { clamp, deepClone, deepEqual, square, stringToColor, unwrapLists } from '../Utils'\n\ntype BiomeColors = Record\ntype BiomeSourceOptions = {\n\toctaves: NoiseOctaves,\n\tbiomeColors: BiomeColors,\n\toffset: [number, number],\n\tscale: number,\n\tres: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nlet cacheState: any\nlet biomeSourceCache: BiomeSource\nlet climateSamplerCache: Climate.Sampler\n\nexport async function biomeMap(state: any, img: ImageData, options: BiomeSourceOptions) {\n\tconst { biomeSource, climateSampler } = await getCached(state, options)\n\n\tconst data = img.data\n\tconst ox = -options.offset[0] - 100 + options.res / 2\n\tconst oz = -options.offset[1] - 100 + options.res / 2\n\tconst row = img.width * 4 / options.res\n\tconst col = 4 / options.res\n\tfor (let x = 0; x < 200; x += options.res) {\n\t\tfor (let z = 0; z < 200; z += options.res) {\n\t\t\tconst i = z * row + x * col\n\t\t\tconst worldX = (x + ox) * options.scale\n\t\t\tconst worldZ = (z + oz) * options.scale\n\t\t\tconst b = biomeSource.getBiome(worldX, 64, worldZ, climateSampler)\n\t\t\tconst color = getBiomeColor(b, options.biomeColors)\n\t\t\tdata[i] = color[0]\n\t\t\tdata[i + 1] = color[1]\n\t\t\tdata[i + 2] = color[2]\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nexport async function getBiome(state: any, x: number, z: number, options: BiomeSourceOptions): Promise {\n\tconst { biomeSource, climateSampler } = await getCached(state, options)\n\n\tconst [xx, zz] = toWorld([x, z], options)\n\treturn biomeSource.getBiome(xx, 64, zz, climateSampler)\n}\n\nasync function getCached(state: any, options: BiomeSourceOptions): Promise<{ biomeSource: BiomeSource, climateSampler: Climate.Sampler }> {\n\tconst newState = [state, options.octaves, `${options.seed}`, options.version]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\n\t\tbiomeSourceCache = await getBiomeSource(state, options)\n\n\t\tconst settings = NoiseGeneratorSettings.fromJson({ octaves: options.octaves })\n\t\tconst noiseSampler = new NoiseSampler(4, 4, 32, biomeSourceCache, settings.noise, options.octaves, options.seed)\n\t\tclimateSamplerCache = noiseSampler.getClimate.bind(noiseSampler)\n\t}\n\treturn {\n\t\tbiomeSource: biomeSourceCache,\n\t\tclimateSampler: climateSamplerCache,\n\t} \n}\n\nasync function getBiomeSource(state: any, options: BiomeSourceOptions): Promise {\n\tswitch (state?.type?.replace(/^minecraft:/, '')) {\n\t\tcase 'fixed':\n\t\t\treturn new FixedBiome(state.biome as string)\n\n\t\tcase 'checkerboard':\n\t\t\tconst shift = (state.scale ?? 2) + 2\n\t\t\tconst numBiomes = state.biomes?.length ?? 0\n\t\t\treturn {\n\t\t\t\tgetBiome(x: number, _y: number, z: number) {\n\t\t\t\t\tconst i = (((x >> shift) + (z >> shift)) % numBiomes + numBiomes) % numBiomes\n\t\t\t\t\treturn (state.biomes?.[i].node as string)\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase 'multi_noise':\n\t\t\tswitch(state.preset?.replace(/^minecraft:/, '')) {\n\t\t\t\tcase 'nether':\n\t\t\t\t\tstate = options.version === '1.18' ? NetherPreset18 : NetherPreset\n\t\t\t\t\tbreak\n\t\t\t\tcase 'overworld':\n\t\t\t\t\tstate = options.version === '1.18' ? await OverworldPreset18() : state\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t\tstate = unwrapLists(state)\n\t\t\tif (options.version === '1.18') {\n\t\t\t\treturn MultiNoise.fromJson(state)\n\t\t\t} else {\n\t\t\t\tconst noise = ['altitude', 'temperature', 'humidity', 'weirdness']\n\t\t\t\t\t.map((id, i) => {\n\t\t\t\t\t\tconst config = state[`${id}_noise`]\n\t\t\t\t\t\tconfig.firstOctave = clamp(config.firstOctave ?? -7, -100, -1)\n\t\t\t\t\t\treturn new NormalNoise(new Random(options.seed + BigInt(i)), config)\n\t\t\t\t\t})\n\t\t\t\tif (!Array.isArray(state.biomes) || state.biomes.length === 0) {\n\t\t\t\t\treturn new FixedBiome('unknown')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x: number, _y: number, z: number): string {\n\t\t\t\t\t\tconst n = noise.map(n => n.sample(x, z, 0))\n\t\t\t\t\t\tlet minDist = Infinity\n\t\t\t\t\t\tlet minBiome = ''\n\t\t\t\t\t\tfor (const { biome, parameters: p } of state.biomes) {\n\t\t\t\t\t\t\tconst dist = square(p.altitude - n[0]) + square(p.temperature - n[1]) + square(p.humidity - n[2]) + square(p.weirdness - n[3]) + square(p.offset)\n\t\t\t\t\t\t\tif (dist < minDist) {\n\t\t\t\t\t\t\t\tminDist = dist\n\t\t\t\t\t\t\t\tminBiome = biome\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn minBiome\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t}\n\tthrow new Error('Unknown biome source')\n}\n\nfunction getBiomeColor(biome: string, biomeColors: BiomeColors) {\n\tif (!biome) {\n\t\treturn [128, 128, 128]\n\t}\n\tconst color = biomeColors[biome] ?? VanillaColors[biome]\n\tif (color === undefined) {\n\t\treturn stringToColor(biome)\n\t}\n\treturn color\n}\n\nfunction toWorld([x, z]: [number, number], options: BiomeSourceOptions) {\n\tconst xx = (x - options.offset[0] - 100 + options.res / 2) * options.scale\n\tconst zz = (z - options.offset[1] - 100 + options.res / 2) * options.scale\n\treturn [xx, zz]\n}\n\nconst VanillaColors: Record = {\n\t'minecraft:badlands': [217,69,21],\n\t'minecraft:badlands_plateau': [202,140,101],\n\t'minecraft:bamboo_jungle': [118,142,20],\n\t'minecraft:bamboo_jungle_hills': [59,71,10],\n\t'minecraft:basalt_deltas': [64,54,54],\n\t'minecraft:beach': [250,222,85],\n\t'minecraft:birch_forest': [48,116,68],\n\t'minecraft:birch_forest_hills': [31,95,50],\n\t'minecraft:cold_ocean': [32,32,112],\n\t'minecraft:crimson_forest': [221,8,8],\n\t'minecraft:dark_forest': [64,81,26],\n\t'minecraft:dark_forest_hills': [104,121,66],\n\t'minecraft:deep_cold_ocean': [32,32,56],\n\t'minecraft:deep_frozen_ocean': [64,64,144],\n\t'minecraft:deep_lukewarm_ocean': [0,0,64],\n\t'minecraft:deep_ocean': [0,0,48],\n\t'minecraft:deep_warm_ocean': [0,0,80],\n\t'minecraft:desert': [250,148,24],\n\t'minecraft:desert_hills': [210,95,18],\n\t'minecraft:desert_lakes': [255,188,64],\n\t'minecraft:end_barrens': [128,128,255],\n\t'minecraft:end_highlands': [128,128,255],\n\t'minecraft:end_midlands': [128,128,255],\n\t'minecraft:eroded_badlands': [255,109,61],\n\t'minecraft:flower_forest': [45,142,73],\n\t'minecraft:forest': [5,102,33],\n\t'minecraft:frozen_ocean': [112,112,214],\n\t'minecraft:frozen_river': [160,160,255],\n\t'minecraft:giant_spruce_taiga': [129,142,121],\n\t'minecraft:giant_spruce_taiga_hills': [109,119,102],\n\t'minecraft:giant_tree_taiga': [89,102,81],\n\t'minecraft:giant_tree_taiga_hills': [69,79,62],\n\t'minecraft:gravelly_mountains': [136,136,136],\n\t'minecraft:ice_spikes': [180,220,220],\n\t'minecraft:jungle': [83,123,9],\n\t'minecraft:jungle_edge': [98,139,23],\n\t'minecraft:jungle_hills': [44,66,5],\n\t'minecraft:lukewarm_ocean': [0,0,144],\n\t'minecraft:modified_badlands_plateau': [242,180,141],\n\t'minecraft:modified_gravelly_mountains': [120,152,120],\n\t'minecraft:modified_jungle': [123,163,49],\n\t'minecraft:modified_jungle_edge': [138,179,63],\n\t'minecraft:modified_wooded_badlands_plateau': [216,191,141],\n\t'minecraft:mountain_edge': [114,120,154],\n\t'minecraft:mountains': [96,96,96],\n\t'minecraft:mushroom_field_shore': [160,0,255],\n\t'minecraft:mushroom_fields': [255,0,255],\n\t'minecraft:nether_wastes': [191,59,59],\n\t'minecraft:ocean': [0,0,112],\n\t'minecraft:plains': [141,179,96],\n\t'minecraft:river': [0,0,255],\n\t'minecraft:savanna': [189,178,95],\n\t'minecraft:savanna_plateau': [167,157,100],\n\t'minecraft:shattered_savanna': [229,218,135],\n\t'minecraft:shattered_savanna_plateau': [207,197,140],\n\t'minecraft:small_end_islands': [128,128,255],\n\t'minecraft:snowy_beach': [250,240,192],\n\t'minecraft:snowy_mountains': [160,160,160],\n\t'minecraft:snowy_taiga': [49,85,74],\n\t'minecraft:snowy_taiga_hills': [36,63,54],\n\t'minecraft:snowy_taiga_mountains': [89,125,114],\n\t'minecraft:snowy_tundra': [255,255,255],\n\t'minecraft:soul_sand_valley': [94,56,48],\n\t'minecraft:stone_shore': [162,162,132],\n\t'minecraft:sunflower_plains': [181,219,136],\n\t'minecraft:swamp': [7,249,178],\n\t'minecraft:swamp_hills': [47,255,218],\n\t'minecraft:taiga': [11,102,89],\n\t'minecraft:taiga_hills': [22,57,51],\n\t'minecraft:taiga_mountains': [51,142,129],\n\t'minecraft:tall_birch_forest': [88,156,108],\n\t'minecraft:tall_birch_hills': [71,135,90],\n\t'minecraft:the_end': [128,128,255],\n\t'minecraft:the_void': [0,0,0],\n\t'minecraft:warm_ocean': [0,0,172],\n\t'minecraft:warped_forest': [73,144,123],\n\t'minecraft:wooded_badlands_plateau': [176,151,101],\n\t'minecraft:wooded_hills': [34,85,28],\n\t'minecraft:wooded_mountains': [80,112,80],\n\t'minecraft:snowy_slopes': [140, 195, 222],\n\t'minecraft:lofty_peaks': [196, 168, 193],\n\t'minecraft:snowcapped_peaks': [200, 198, 200],\n\t'minecraft:stony_peaks': [82, 92, 103],\n\t'minecraft:grove': [150, 150, 189],\n\t'minecraft:meadow': [169, 197, 80],\n\t'minecraft:lush_caves': [112, 255, 79],\n\t'minecraft:dripstone_caves': [140, 124, 0],\n}\n\nconst NetherPreset = {type:'minecraft:multi_noise',seed:0,altitude_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},humidity_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{biome:'minecraft:nether_wastes',parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{altitude:0,temperature:0,humidity:-0.5,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{altitude:0,temperature:0.4,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{altitude:0,temperature:0,humidity:0.5,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{altitude:0,temperature:-0.5,humidity:0,weirdness:0,offset:0.175}}]}\n\nconst NetherPreset18 = {type:'minecraft:multi_noise',biomes:[{biome:'minecraft:nether_wastes',parameters:{temperature:0,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{temperature:0,humidity:-0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{temperature:0.4,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{temperature:0,humidity:0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{temperature:-0.5,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.175}}]}\n\nasync function OverworldPreset18() {\n\tconst overworld = await fetchPreset('1.18', 'dimension', 'overworld')\n\treturn overworld.generator.biome_source\n}\n","import { PerlinNoise, Random } from 'deepslate'\nimport type { VersionId } from '../Schemas'\nimport { clamp, stringToColor, unwrapLists } from '../Utils'\n\ntype BlockPos = [number, number, number]\ntype Placement = [BlockPos, number]\n\ntype PlacementContext = {\n\tplacements: Placement[],\n\tfeatures: string[],\n\trandom: Random,\n\tbiomeInfoNoise: PerlinNoise,\n\tseaLevel: number,\n\tversion: VersionId,\n\tnextFloat(): number,\n\tnextInt(max: number): number,\n\tsampleInt(provider: any): number,\n}\n\nconst terrain = [50, 50, 51, 51, 52, 52, 53, 54, 56, 57, 57, 58, 58, 59, 60, 60, 60, 59, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 64, 65, 65, 66, 66, 65, 65, 66, 66, 67, 67, 67, 68, 69, 71, 73, 74, 76, 79, 80, 81, 81, 82, 83, 83, 82, 82, 81, 81, 80, 80, 80, 81, 81, 82, 82] \n\nconst featureColors = [\n\t[255, 77, 54], // red\n\t[59, 118, 255], // blue\n\t[91, 207, 25], // green\n\t[217, 32, 245], // magenta\n\t[255, 209, 41], // yellow\n\t[52, 204, 209], // cyan\n]\n\nexport type DecoratorOptions = {\n\tsize: [number, number, number],\n\tseed: bigint,\n\tversion: VersionId,\n}\nexport function decorator(state: any, img: ImageData, options: DecoratorOptions) {\n\tconst random = new Random(options.seed)\n\tconst ctx: PlacementContext = {\n\t\tplacements: [],\n\t\tfeatures: [],\n\t\trandom,\n\t\tbiomeInfoNoise: new PerlinNoise(random.fork(), 0, [1]),\n\t\tseaLevel: 63,\n\t\tversion: options.version,\n\t\tnextFloat: () => random.nextFloat(),\n\t\tnextInt: (max: number) => random.nextInt(max),\n\t\tsampleInt(value) { return sampleInt(value, this) },\n\t}\n\n\tfor (let x = 0; x < options.size[0] / 16; x += 1) {\n\t\tfor (let z = 0; z < options.size[2] / 16; z += 1) {\n\t\t\tgetPlacements([x * 16, 0, z * 16], unwrapLists(state), ctx)\n\t\t}\n\t}\n\n\tconst data = img.data\n\timg.data.fill(255)\n\n\tfor (const [pos, feature] of ctx.placements) {\n\t\tif (pos[0] < 0 || pos[1] < 0 || pos[2] < 0 || pos[0] >= options.size[0] || pos[1] >= options.size[1] || pos[2] >= options.size[2]) continue\n\t\tconst i = (pos[2] * (img.width * 4)) + (pos[0] * 4)\n\t\tconst color = feature < featureColors.length ? featureColors[feature] : stringToColor(ctx.features[feature])\n\t\tdata[i] = clamp(50, 205, color[0])\n\t\tdata[i + 1] = clamp(50, 205, color[1])\n\t\tdata[i + 2] = clamp(50, 205, color[2])\n\t\tdata[i + 3] = 255\n\t}\n\n\tfor (let x = 0; x < options.size[0]; x += 1) {\n\t\tfor (let y = 0; y < options.size[2]; y += 1) {\n\t\t\tif ((Math.floor(x / 16) + Math.floor(y / 16)) % 2 === 0) continue\n\t\t\tconst i = (y * (img.width * 4)) + (x * 4)\n\t\t\tfor (let j = 0; j < 3; j += 1) {\n\t\t\t\tdata[i + j] = 0.85 * data[i + j] \n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction normalize(id: string) {\n\treturn id.startsWith('minecraft:') ? id.slice(10) : id\n}\n\nfunction decorateY(pos: BlockPos, y: number): BlockPos[] {\n\treturn [[ pos[0], y, pos[2] ]]\n}\n\nfunction sampleInt(value: any, ctx: PlacementContext): number {\n\tif (typeof value === 'number') {\n\t\treturn value\n\t} else if (value.base) {\n\t\treturn value.base ?? 1 + ctx.nextInt(1 + (value.spread ?? 0))\n\t} else {\n\t\tswitch (normalize(value.type)) {\n\t\t\tcase 'constant': return value.value\n\t\t\tcase 'uniform': return value.value.min_inclusive + ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1)\n\t\t\tcase 'biased_to_bottom': return value.value.min_inclusive + ctx.nextInt(ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1) + 1)\n\t\t\tcase 'clamped': return Math.max(value.value.min_inclusive, Math.min(value.value.max_inclusive, sampleInt(value.value.source, ctx)))\n\t\t}\n\t\treturn 1\n\t}\n}\n\nfunction useFeature(s: string, ctx: PlacementContext) {\n\tconst i = ctx.features.indexOf(s)\n\tif (i != -1) return i\n\tctx.features.push(s)\n\treturn ctx.features.length - 1\n}\n\nfunction getPlacements(pos: BlockPos, feature: any, ctx: PlacementContext): void {\n\tif (typeof feature === 'string') {\n\t\tctx.placements.push([pos, useFeature(feature, ctx)])\n\t\treturn\n\t}\n\tconst type = normalize(feature?.type ?? 'no_op')\n\tconst featureFn = Features[type]\n\tif (featureFn) {\n\t\tfeatureFn(feature.config, pos, ctx)\n\t} else {\n\t\tctx.placements.push([pos, useFeature(JSON.stringify(feature), ctx)])\n\t}\n}\n\nfunction getPositions(pos: BlockPos, decorator: any, ctx: PlacementContext): BlockPos[] {\n\tconst type = normalize(decorator?.type ?? 'nope')\n\tconst decoratorFn = Decorators[type]\n\tif (!decoratorFn) {\n\t\treturn [pos]\n\t}\n\treturn decoratorFn(decorator?.config, pos, ctx)\n}\n\nconst Features: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => void,\n} = {\n\tdecorated: (config, pos, ctx) => {\n\t\tconst positions = getPositions(pos, config?.decorator, ctx)\n\t\tpositions.forEach(p => getPlacements(p, config?.feature, ctx))\n\t},\n\trandom_boolean_selector: (config, pos, ctx) => {\n\t\tconst feature = ctx.nextFloat() < 0.5 ? config?.feature_true : config?.feature_false\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n\trandom_selector: (config, pos, ctx) => {\n\t\tfor (const f of config?.features ?? []) {\n\t\t\tif (ctx.nextFloat() < (f?.chance ?? 0)) {\n\t\t\t\tgetPlacements(pos, f.feature, ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tgetPlacements(pos, config?.default, ctx)\n\t},\n\tsimple_random_selector: (config, pos, ctx) => {\n\t\tconst feature = config?.features?.[ctx.nextInt(config?.features?.length ?? 0)]\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n}\n\nconst Decorators: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => BlockPos[],\n} = {\n\tchance: (config, pos, ctx) => {\n\t\treturn ctx.nextFloat() < 1 / (config?.chance ?? 1) ? [pos] : []\n\t},\n\tcount: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t},\n\tcount_extra: (config, pos, ctx) => {\n\t\tlet count = config?.count ?? 1\n\t\tif (ctx.nextFloat() < config.extra_chance ?? 0){\n\t\t\tcount += config.extra_count ?? 0\n\t\t}\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_multilayer: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t\t\t.map(p => [\n\t\t\t\tp[0] + ctx.nextInt(16),\n\t\t\t\tp[1], \n\t\t\t\tp[2] + ctx.nextInt(16),\n\t\t\t])\n\t},\n\tcount_noise: (config, pos, ctx) => {\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / 200, 0, pos[2] / 200)\n\t\tconst count = noise < config.noise_level ? config.below_noise : config.above_noise\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_noise_biased: (config, pos, ctx) => {\n\t\tconst factor = Math.max(1, config.noise_factor)\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / factor, 0, pos[2] / factor)\n\t\tconst count = Math.max(0, Math.ceil((noise + (config.noise_offset ?? 0)) * config.noise_to_count_ratio))\n\t\treturn new Array(count).fill(pos)\n\t},\n\tdark_oak_tree: (_config, pos, ctx) => {\n\t\treturn [...new Array(16)].map((_, i) => {\n\t\t\tconst x = Math.floor(i / 4) * 4 + 1 + ctx.nextInt(3) + pos[0]\n\t\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, x)])\n\t\t\tconst z = Math.floor(i % 4) * 4 + 1 + ctx.nextInt(3) + pos[2]\n\t\t\treturn [x, y, z]\n\t\t})\n\t},\n\tdecorated: (config, pos, ctx) => {\n\t\treturn getPositions(pos, config?.outer, ctx).flatMap(p => {\n\t\t\treturn getPositions(p, config?.inner, ctx)\n\t\t})\n\t},\n\tdepth_average: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(config?.spread ?? 0) + ctx.nextInt(config?.spread ?? 0) - (config.spread ?? 0) + (config?.baseline ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\temerald_ore: (_config, pos, ctx) => {\n\t\tconst count = 3 + ctx.nextInt(6)\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t4 + ctx.nextInt(28),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tfire: (config, pos, ctx) => {\n\t\tconst count = 1 + ctx.nextInt(ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tglowstone: (config, pos, ctx) => {\n\t\tconst count = ctx.nextInt(1 + ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\theightmap: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\theightmap_spread_double: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, ctx.nextInt(y * 2))\n\t},\n\theightmap_world_surface: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\ticeberg: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + 4 + ctx.nextInt(8),\n\t\t\tpos[1],\n\t\t\tpos[2] + 4 + ctx.nextInt(8),\n\t\t]]\n\t},\n\tlava_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt((config.chance ?? 1) / 10) === 0) {\n\t\t\tconst y = ctx.nextInt(ctx.nextInt(256 - 8) + 8)\n\t\t\tif (y < ctx.seaLevel || ctx.nextInt((config?.chance ?? 1) / 8) == 0) {\n\t\t\t\tconst x = ctx.nextInt(16) + pos[0]\n\t\t\t\tconst z = ctx.nextInt(16) + pos[2]\n\t\t\t\treturn [[x, y, z]]\n\t\t\t}\n\t\t}\n\t\treturn []\n\t},\n\tnope: (_config, pos) => {\n\t\treturn [pos]\n\t},\n\trange: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\trange_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\trange_very_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\tspread_32_above: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\ttop_solid_heightmap: (_config, pos) => {\n\t\tconst y = terrain[clamp(0, 63, pos[0])]\n\t\treturn decorateY(pos, y)\n\t},\n\tmagma: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\tsquare: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tpos[1],\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t]]\n\t},\n\tsurface_relative_threshold: (config, pos) => {\n\t\tconst height = terrain[clamp(0, 63, pos[0])]\n\t\tconst min = height + (config?.min_inclusive ?? -Infinity)\n\t\tconst max = height + (config?.max_inclusive ?? Infinity)\n\t\treturn (pos[1] < min || pos[1] > max) ? [pos] : []\n\t},\n\twater_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt(config.chance ?? 1) === 0) {\n\t\t\treturn [[\n\t\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t\tctx.nextInt(256),\n\t\t\t\tpos[2] + ctx.nextInt(16),\n\t\t\t]]\n\t\t}\n\t\treturn []\n\t},\n}\n","import { PerlinNoise, Random } from 'deepslate'\nimport { clampedLerp, lerp2 } from '../../Utils'\n\nexport class NoiseChunkGenerator {\n\tprivate readonly minLimitPerlinNoise: PerlinNoise\n\tprivate readonly maxLimitPerlinNoise: PerlinNoise\n\tprivate readonly mainPerlinNoise: PerlinNoise\n\tprivate readonly depthNoise: PerlinNoise\n\n\tprivate settings: any = {}\n\tprivate chunkWidth: number = 4\n\tprivate chunkHeight: number = 4\n\tprivate chunkCountY: number = 32\n\tprivate biomeDepth: number = 0.1\n\tprivate biomeScale: number = 0.2\n\n\tprivate noiseColumnCache: (number[] | null)[] = []\n\tprivate xOffset: number = 0\n\n\tconstructor(seed: bigint) {\n\t\tconst random = new Random(seed)\n\t\tthis.minLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.maxLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.mainPerlinNoise = new PerlinNoise(random, -7, [1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.depthNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t}\n\n\tpublic reset(settings: any, depth: number, scale: number, xOffset: number, width: number) {\n\t\tthis.settings = settings\n\t\tthis.chunkWidth = settings.size_horizontal * 4\n\t\tthis.chunkHeight = settings.size_vertical * 4\n\t\tthis.chunkCountY = Math.floor(settings.height / this.chunkHeight)\n\n\t\tif (settings.amplified && depth > 0) {\n\t\t\tdepth = 1 + depth * 2\n\t\t\tscale = 1 + scale * 4\n\t\t}\n\t\tthis.biomeDepth = 0.265625 * (depth * 0.5 - 0.125)\n\t\tthis.biomeScale = 96.0 / (scale * 0.9 + 0.1)\n\n\t\tthis.noiseColumnCache = Array(width).fill(null)\n\t\tthis.xOffset = xOffset\n\t}\n \n\tpublic iterateNoiseColumn(x: number): number[] {\n\t\tconst data = Array(this.chunkCountY * this.chunkHeight)\n\t\tconst cx = Math.floor(x / this.chunkWidth)\n\t\tconst ox = Math.floor(x % this.chunkWidth) / this.chunkWidth\n\t\tconst noise1 = this.fillNoiseColumn(cx)\n\t\tconst noise2 = this.fillNoiseColumn(cx + 1)\n\n\t\tfor (let y = this.chunkCountY - 1; y >= 0; y -= 1) {\n\t\t\tfor (let yy = this.chunkHeight; yy >= 0; yy -= 1) {\n\t\t\t\tconst oy = yy / this.chunkHeight\n\t\t\t\tconst i = y * this.chunkHeight + yy\n\t\t\t\tdata[i] = lerp2(oy, ox, noise1[y], noise1[y+1], noise2[y], noise2[y+1])\n\t\t\t}\n\t\t}\n\t\treturn data\n\t}\n\n\tprivate fillNoiseColumn(x: number): number[] {\n\t\tconst cachedColumn = this.noiseColumnCache[x - this.xOffset]\n\t\tif (cachedColumn) return cachedColumn\n\n\t\tconst data = Array(this.chunkCountY + 1)\n\n\t\tconst xzScale = 684.412 * this.settings.sampling.xz_scale\n\t\tconst yScale = 684.412 * this.settings.sampling.y_scale\n\t\tconst xzFactor = xzScale / this.settings.sampling.xz_factor\n\t\tconst yFactor = yScale / this.settings.sampling.y_factor\n\t\tconst randomDensity = this.settings.random_density_offset ? this.getRandomDensity(x) : 0\n\n\t\tfor (let y = 0; y <= this.chunkCountY; y += 1) {\n\t\t\tlet noise = this.sampleAndClampNoise(x, y, this.mainPerlinNoise.getOctaveNoise(0)!.zo, xzScale, yScale, xzFactor, yFactor)\n\t\t\tconst yOffset = 1 - y * 2 / this.chunkCountY + randomDensity\n\t\t\tconst density = yOffset * this.settings.density_factor + this.settings.density_offset\n\t\t\tconst falloff = (density + this.biomeDepth) * this.biomeScale\n\t\t\tnoise += falloff * (falloff > 0 ? 4 : 1)\n\n\t\t\tif (this.settings.top_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.top_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(this.chunkCountY - y - (this.settings.top_slide.offset)) / (this.settings.top_slide.size)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.settings.bottom_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.bottom_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(y - (this.settings.bottom_slide.offset)) / (this.settings.bottom_slide.size)\n\t\t\t\t)\n\t\t\t}\n\t\t\tdata[y] = noise\n\t\t}\n\n\t\tthis.noiseColumnCache[x - this.xOffset] = data\n\t\treturn data\n\t}\n\n\tprivate getRandomDensity(x: number): number {\n\t\tconst noise = this.depthNoise.sample(x * 200, 10, this.depthNoise.getOctaveNoise(0)!.zo, 1, 0, true)\n\t\tconst a = (noise < 0) ? -noise * 0.3 : noise\n\t\tconst b = a * 24.575625 - 2\n\t\treturn (b < 0) ? b * 0.009486607142857142 : Math.min(b, 1) * 0.006640625\n\t}\n\n\tprivate sampleAndClampNoise(x: number, y: number, z: number, xzScale: number, yScale: number, xzFactor: number, yFactor: number): number {\n\t\tlet a = 0\n\t\tlet b = 0\n\t\tlet c = 0\n\t\tlet d = 1\n\n\t\tfor (let i = 0; i < 16; i += 1) {\n\t\t\tconst x2 = PerlinNoise.wrap(x * xzScale * d)\n\t\t\tconst y2 = PerlinNoise.wrap(y * yScale * d)\n\t\t\tconst z2 = PerlinNoise.wrap(z * xzScale * d)\n\t\t\tconst e = yScale * d\n\n\t\t\tconst minLimitNoise = this.minLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (minLimitNoise) {\n\t\t\t\ta += minLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tconst maxLimitNoise = this.maxLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (maxLimitNoise) {\n\t\t\t\tb += maxLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tif (i < 8) {\n\t\t\t\tconst mainNoise = this.mainPerlinNoise.getOctaveNoise(i)\n\t\t\t\tif (mainNoise) {\n\t\t\t\t\tc += mainNoise.sample(\n\t\t\t\t\t\tPerlinNoise.wrap(x * xzFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(y * yFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(z * xzFactor * d),\n\t\t\t\t\t\tyFactor * d,\n\t\t\t\t\t\ty * yFactor * d \n\t\t\t\t\t) / d\n\t\t\t\t}\n\t\t\t}\n\n\t\t\td /= 2\n\t\t}\n\n\t\treturn clampedLerp(a / 512, b / 512, (c / 10 + 1) / 2)\n\t}\n}\n","import type { BlockPos, BlockState } from 'deepslate'\nimport { Chunk, ChunkPos, FixedBiome, NoiseChunkGenerator, NoiseGeneratorSettings } from 'deepslate'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { deepClone, deepEqual, unwrapLists } from '../Utils'\nimport { NoiseChunkGenerator as OldNoiseChunkGenerator } from './noise/NoiseChunkGenerator'\n\nexport type NoiseSettingsOptions = {\n\tbiomeFactor: number,\n\tbiomeOffset: number,\n\tbiomePeaks: number,\n\toffset: number,\n\twidth: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nconst Z = 0\n\nconst colors: Record = {\n\t'minecraft:air': [150, 160, 170],\n\t'minecraft:water': [20, 80, 170],\n\t'minecraft:lava': [200, 100, 0],\n\t'minecraft:stone': [50, 50, 50],\n\t'minecraft:netherrack': [100, 40, 40],\n\t'minecraft:end_stone': [200, 200, 140],\n}\n\nlet cacheState: any\nlet generatorCache: NoiseChunkGenerator\nlet chunkCache: Chunk[] = []\n\nexport function noiseSettings(state: any, img: ImageData, options: NoiseSettingsOptions) {\n\tif (checkVersion(options.version, '1.18')) {\n\t\tconst { settings, generator } = getCached(state, options)\n\n\t\tconst slice = new LevelSlice(-options.offset, options.width, settings.noise.minY, settings.noise.height)\n\t\tslice.fill(generator)\n\n\t\tconst data = img.data\n\t\tfor (let x = 0; x < options.width; x += 1) {\n\t\t\tfor (let y = 0; y < settings.noise.height; y += 1) {\n\t\t\t\tconst i = x * 4 + (settings.noise.height-y-1) * 4 * img.width\n\t\t\t\tconst state = slice.getBlockState([x - options.offset, y, Z])\n\t\t\t\tconst color = colors[state.getName()] ?? [0, 0, 0]\n\t\t\t\tdata[i] = color[0]\n\t\t\t\tdata[i + 1] = color[1]\n\t\t\t\tdata[i + 2] = color[2]\n\t\t\t\tdata[i + 3] = 255\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tconst generator = new OldNoiseChunkGenerator(options.seed)\n\tgenerator.reset(state.noise, options.biomeOffset, options.biomeFactor, options.offset, 200)\n\tconst data = img.data\n\tconst row = img.width * 4\n\tfor (let x = 0; x < options.width; x += 1) {\n\t\tconst noise = generator.iterateNoiseColumn(x - options.offset).reverse()\n\t\tfor (let y = 0; y < state.noise.height; y += 1) {\n\t\t\tconst i = y * row + x * 4\n\t\t\tconst color = getColor(noise, y)\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nfunction getCached(state: unknown, options: NoiseSettingsOptions) {\n\tconst settings = NoiseGeneratorSettings.fromJson(unwrapLists(state))\n\t// Temporary fix for slides\n\tsettings.noise.bottomSlide.target *= 128\n\tsettings.noise.topSlide.target *= 128\n\tconst shape = { factor: options.biomeFactor, offset: options.biomeOffset, peaks: options.biomePeaks, nearWater: false }\n\n\tconst newState = [state, shape, `${options.seed}`]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\t\tchunkCache = []\n\t\tconst biomeSource = new FixedBiome('unknown')\n\t\tgeneratorCache = new NoiseChunkGenerator(options.seed, biomeSource, settings, shape)\n\t}\n\treturn {\n\t\tsettings,\n\t\tgenerator: generatorCache,\n\t}\n}\n\nfunction getColor(noise: number[], y: number): number {\n\tif (noise[y] > 0) {\n\t\treturn 0\n\t}\n\tif (noise[y+1] > 0) {\n\t\treturn 150\n\t}\n\treturn 255\n}\n\nclass LevelSlice {\n\tprivate readonly chunks: Chunk[]\n\tprivate readonly filled: boolean[]\n\n\tconstructor(\n\t\tprivate readonly minX: number,\n\t\twidth: number,\n\t\tminY: number,\n\t\theight: number,\n\t) {\n\t\tthis.filled = []\n\t\tthis.chunks = [...Array(Math.ceil(width / 16) + 1)]\n\t\t\t.map((_, i) => {\n\t\t\t\tconst x = (minX >> 4) + i\n\t\t\t\tconst cached = chunkCache.find(c => c.pos[0] === x)\n\t\t\t\tif (cached) {\n\t\t\t\t\tthis.filled[i] = true\n\t\t\t\t\treturn cached\n\t\t\t\t}\n\t\t\t\treturn new Chunk(minY, height, ChunkPos.create(x, Z >> 4))\n\t\t\t})\n\t}\n\n\tpublic fill(generator: NoiseChunkGenerator) {\n\t\tthis.chunks.forEach((chunk, i) => {\n\t\t\tif (!this.filled[i]) {\n\t\t\t\tgenerator.fill(chunk)\n\t\t\t\tthis.filled[i] = true\n\t\t\t\tchunkCache.push(chunk)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic getBlockState(pos: BlockPos): BlockState {\n\t\tconst chunkIndex = (pos[0] >> 4) - (this.minX >> 4)\n\t\treturn this.chunks[chunkIndex].getBlockState(pos)\n\t}\n}\n","import { Path } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { NoiseGeneratorSettings } from 'deepslate'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { biomeMap, getBiome } from '../../previews'\nimport { newSeed } from '../../Utils'\n\nexport const BiomeSourcePreview = ({ model, data, shown, lang, version }: PreviewProps) => {\n\tconst [scale, setScale] = useState(2)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst res = useRef(1)\n\tconst refineTimeout = useRef(undefined)\n\n\tconst seed = BigInt(model.get(new Path(['generator', 'seed'])))\n\tconst octaves = getOctaves(model.get(new Path(['generator', 'settings'])))\n\tconst state = shown ? calculateState(data, octaves) : ''\n\tconst type: string = data.type?.replace(/^minecraft:/, '')\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [200 / res.current, 200 / res.current]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { octaves, biomeColors: {}, offset: offset.current, scale, seed, res: res.current, version }\n\t\t\tawait biomeMap(data, img, options)\n\t\t\tif (res.current === 4) {\n\t\t\t\tclearTimeout(refineTimeout.current)\n\t\t\t\trefineTimeout.current = setTimeout(() => {\n\t\t\t\t\tres.current = 1\n\t\t\t\t\tredraw()\n\t\t\t\t}, 150)\n\t\t\t}\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 200\n\t\t\toffset.current[1] = offset.current[1] + dy * 200\n\t\t\tclearTimeout(refineTimeout.current)\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(x, y) {\n\t\t\tconst options = { octaves, biomeColors: {}, offset: offset.current, scale, seed, res: 1, version }\n\t\t\tconst biome = await getBiome(data, Math.floor(x * 200), Math.floor(y * 200), options)\n\t\t\tsetFocused(biome)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, scale, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{(type === 'multi_noise' || type === 'checkerboard') && <>\n\t\t\t\t changeScale(scale * 1.5)} />\n\t\t\t\t changeScale(scale / 1.5)} />\n\t\t\t}\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t newSeed(model)} />}\n\t\t
\n\t\t\n\t\n}\n\nfunction calculateState(data: any, octaves: NoiseOctaves) {\n\treturn JSON.stringify([data, octaves])\n}\n\nfunction getOctaves(obj: any): NoiseOctaves {\n\tif (typeof obj === 'string') {\n\t\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\t\tcase 'overworld':\n\t\t\tcase 'amplified':\n\t\t\t\treturn {\n\t\t\t\t\ttemperature: { firstOctave: -9, amplitudes: [1.5, 0, 1, 0, 0, 0] },\n\t\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1, 0, 0, 0, 0] },\n\t\t\t\t\tcontinentalness: { firstOctave: -9, amplitudes: [1, 1, 2, 2, 2, 1, 1, 1, 1] },\n\t\t\t\t\terosion: { firstOctave: -9, amplitudes: [1, 1, 0, 1, 1] },\n\t\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 2, 1, 0, 0, 0] },\n\t\t\t\t\tshift: { firstOctave: -3, amplitudes: [1, 1, 1, 0] },\n\t\t\t\t}\n\t\t\tcase 'end':\n\t\t\tcase 'floating_islands':\n\t\t\t\treturn {\n\t\t\t\t\ttemperature: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\thumidity: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\tcontinentalness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\terosion: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\tweirdness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ttemperature: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\tcontinentalness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\terosion: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\t}\n\t\t}\n\t}\n\treturn NoiseGeneratorSettings.fromJson(obj).octaves\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { decorator } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const DecoratorPreview = ({ data, version, shown, lang }: PreviewProps) => {\n\tconst [scale, setScale] = useState(4)\n\tconst [seed, setSeed] = useState(randomSeed())\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [scale * 16, scale * 16]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tdecorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })\n\t\t},\n\t})\n\n\tconst state = JSON.stringify(data)\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t setScale(Math.min(16, scale + 1))} />\n\t\t\t setScale(Math.max(1, scale - 1))} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnInput, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { noiseSettings } from '../../previews'\nimport { checkVersion } from '../../Schemas'\nimport { randomSeed } from '../../Utils'\n\nexport const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst loc = locale.bind(null, lang)\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [biomeFactor, setBiomeFactor] = useState(0.2)\n\tconst [biomeOffset, setBiomeOffset] = useState(0.1)\n\tconst [biomePeaks, setBiomePeaks] = useState(0)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef(0)\n\tconst state = JSON.stringify([data, biomeFactor, biomeOffset, biomePeaks])\n\n\tconst hasPeaks = checkVersion(version, '1.18')\n\tuseEffect(() => {\n\t\tsetBiomeFactor(hasPeaks ? 600 : 0.2)\n\t\tsetBiomeOffset(hasPeaks ? 0.05 : 0.1)\n\t}, [hasPeaks])\n\n\tconst size = data?.noise?.height ?? 256\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [size, size]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { biomeOffset, biomeFactor, biomePeaks, offset: offset.current, width: img.width, seed, version }\n\t\t\tnoiseSettings(data, img, options)\n\t\t},\n\t\tasync onDrag(dx) {\n\t\t\toffset.current += dx * size\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(_, y) {\n\t\t\tconst worldY = size - Math.max(1, Math.ceil(y * size)) + (data?.noise?.min_y ?? 0)\n\t\t\tsetFocused(`${worldY}`)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t\n\t\t\t\t{hasPeaks ? <>\n\t\t\t\t\t setBiomeFactor(Number(v))} />\n\t\t\t\t\t setBiomeOffset(Number(v))} />\n\t\t\t\t\t setBiomePeaks(Number(v))} />\n\t\t\t\t : <>\n\t\t\t\t\t setBiomeFactor(Number(v))} />\n\t\t\t\t\t setBiomeOffset(Number(v))} />\n\t\t\t\t}\n\t\t\t\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { useState } from 'preact/hooks'\nimport { useModel } from '../hooks'\nimport type { VersionId } from '../Schemas'\nimport { BiomeSourcePreview, DecoratorPreview, NoiseSettingsPreview } from './previews'\n\nexport const HasPreview = ['dimension', 'worldgen/noise_settings', 'worldgen/configured_feature']\n\ntype PreviewPanelProps = {\n\tlang: string,\n\tmodel: DataModel | null,\n\tversion: VersionId,\n\tid: string,\n\tshown: boolean,\n\tonError: (message: string) => unknown,\n}\nexport function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {\n\tconst [, setCount] = useState(0)\n\n\tuseModel(model, () => {\n\t\tsetCount(count => count + 1)\n\t})\n\n\tif (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {\n\t\tconst data = model.get(new Path(['generator', 'biome_source']))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise_settings' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/configured_feature' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\treturn <>\n}\n","import type { Hook } from '@mcschema/core'\nimport { relativePath } from '@mcschema/core'\nimport type { BlockStateRegistry } from '../Schemas'\n\nexport type OutputProps = {\n\tblockStates: BlockStateRegistry,\n}\nexport const transformOutput: Hook<[any, OutputProps], any> = {\n\tbase({}, _, value) {\n\t\treturn value\n\t},\n\n\tchoice({ switchNode }, path, value, props) {\n\t\treturn switchNode.hook(this, path, value, props)\n\t},\n\n\tlist({ children }, path, value, props) {\n\t\tif (!Array.isArray(value)) return value\n\t\treturn value.map((obj, index) =>\n\t\t\tchildren.hook(this, path.push(index), obj.node, props)\n\t\t)\n\t},\n\n\tmap({ children, config }, path, value, props) {\n\t\tif (value === undefined) return undefined\n\t\tconst blockState = config.validation?.validator === 'block_state_map'? props.blockStates?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst res: any = {}\n\t\tObject.keys(value).forEach(f => {\n\t\t\tif (blockState) {\n\t\t\t\tif (!Object.keys(blockState.properties ?? {}).includes(f)) return\n\t\t\t}\n\t\t\tres[f] = children.hook(this, path.push(f), value[f], props)\n\t\t})\n\t\treturn res\n\t},\n\n\tobject({ getActiveFields }, path, value, props) {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn value\n\t\t}\n\t\tconst res: any = {}\n\t\tconst activeFields = getActiveFields(path)\n\t\tObject.keys(activeFields)\n\t\t\t.filter(k => activeFields[k].enabled(path))\n\t\t\t.forEach(f => {\n\t\t\t\tres[f] = activeFields[f].hook(this, path.push(f), value[f], props)\n\t\t\t})\n\t\treturn res\n\t},\n}\n","import type { VersionId } from './Schemas'\nimport { VersionIds } from './Schemas'\n\nexport namespace Store {\n\texport const ID_LANGUAGE = 'language'\n\texport const ID_THEME = 'theme'\n\texport const ID_VERSION = 'schema_version'\n\texport const ID_INDENT = 'indentation'\n\n\texport function getLanguage() {\n\t\treturn localStorage.getItem(ID_LANGUAGE) ?? 'en'\n\t}\n\n\texport function getTheme() {\n\t\treturn localStorage.getItem(ID_THEME) ?? 'dark'\n\t}\n\n\texport function getVersion(): VersionId {\n\t\tconst version = localStorage.getItem(ID_VERSION)\n\t\tif (version && VersionIds.includes(version as VersionId)) {\n\t\t\treturn version as VersionId\n\t\t}\n\t\treturn '1.17'\n\t}\n\n\texport function getIndent() {\n\t\treturn localStorage.getItem(ID_INDENT) ?? '2_spaces'\n\t}\n\n\texport function setLanguage(language: string | undefined) {\n\t\tif (language) localStorage.setItem(ID_LANGUAGE, language)\n\t}\n\n\texport function setTheme(theme: string | undefined) {\n\t\tif (theme) localStorage.setItem(ID_THEME, theme)\n\t}\n\n\texport function setVersion(version: VersionId | undefined) {\n\t\tif (version) localStorage.setItem(ID_VERSION, version)\n\t}\n\n\texport function setIndent(indent: string | undefined) {\n\t\tif (indent) localStorage.setItem(ID_INDENT, indent)\n\t}\n}\n","import { DataModel, ModelPath } from '@mcschema/core'\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, BtnMenu } from '.'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport { transformOutput } from '../schema/transformOutput'\nimport type { BlockStateRegistry } from '../Schemas'\nimport { Store } from '../Store'\nimport { message } from '../Utils'\n\nconst OUTPUT_CHARS_LIMIT = 10000\n\nconst INDENT: Record = {\n\t'2_spaces': 2,\n\t'4_spaces': 4,\n\ttabs: '\\t',\n}\n\ntype SourcePanelProps = {\n\tlang: string,\n\tname: string,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tdoCopy?: number,\n\tdoDownload?: number,\n\tdoImport?: number,\n\tcopySuccess: () => unknown,\n\tonError: (message: string) => unknown,\n}\nexport function SourcePanel({ lang, name, model, blockStates, doCopy, doDownload, doImport, copySuccess, onError }: SourcePanelProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [indent, setIndent] = useState(Store.getIndent())\n\tconst source = useRef(null)\n\tconst download = useRef(null)\n\tconst retransform = useRef()\n\n\tconst getOutput = useCallback((model: DataModel, blockStates: BlockStateRegistry) => {\n\t\tconst data = model.schema.hook(transformOutput, new ModelPath(model), model.data, { blockStates })\n\t\treturn JSON.stringify(data, null, INDENT[indent]) + '\\n'\n\t}, [indent])\n\n\tuseEffect(() => {\n\t\tretransform.current = () => {\n\t\t\tif (!model || !blockStates) return\n\t\t\ttry {\n\t\t\t\tconst output = getOutput(model, blockStates)\n\t\t\t\tif (output.length >= OUTPUT_CHARS_LIMIT) {\n\t\t\t\t\tsource.current.value = output.slice(0, OUTPUT_CHARS_LIMIT) + `\\n\\nOutput is too large to display (+${OUTPUT_CHARS_LIMIT} chars)\\nExport to view complete output\\n\\n`\n\t\t\t\t} else {\n\t\t\t\t\tsource.current.value = output\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tonError(`Error getting JSON output: ${message(e)}`)\n\t\t\t\tconsole.error(e)\n\t\t\t\tsource.current.value = ''\n\t\t\t}\n\t\t}\n\t})\n\n\tuseModel(model, () => {\n\t\tretransform.current()\n\t})\n\tuseEffect(() => {\n\t\tif (model) retransform.current()\n\t}, [model])\n\n\tuseEffect(() => {\n\t\tretransform.current()\n\t}, [indent])\n\n\tconst onImport = () => {\n\t\ttry {\n\t\t\tconst data = JSON.parse(source.current.value)\n\t\t\tmodel?.reset(DataModel.wrapLists(data), false)\n\t\t} catch (e) {\n\t\t\tonError(`Error importing: ${message(e)}`)\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (doCopy && model && blockStates) {\n\t\t\tnavigator.clipboard.writeText(getOutput(model, blockStates)).then(() => {\n\t\t\t\tcopySuccess()\n\t\t\t})\n\t\t}\n\t}, [doCopy])\n\n\tuseEffect(() => {\n\t\tif (doDownload && source.current && download.current) {\n\t\t\tconst content = encodeURIComponent(source.current.value)\n\t\t\tdownload.current.setAttribute('href', `data:text/json;charset=utf-8,${content}`)\n\t\t\tdownload.current.setAttribute('download', `${name}.json`)\n\t\t\tdownload.current.click()\n\t\t}\n\t}, [doDownload])\n\n\tuseEffect(() => {\n\t\tif (doImport && source.current) {\n\t\t\tsource.current.value = ''\n\t\t\tsource.current.select()\n\t\t}\n\t}, [doImport])\n\n\tconst changeIndent = (value: string) => {\n\t\tStore.setIndent(value)\n\t\tsetIndent(value)\n\t}\n\n\treturn <> \n\t\t
\n\t\t\t\n\t\t\t\t{Object.entries(INDENT).map(([key]) =>\n\t\t\t\t\t changeIndent(key)}/>\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\n}\n","import type { ComponentChildren } from 'preact'\nimport { Icons } from './Icons'\n\ntype ToolCardProps = {\n\ttitle: string,\n\tlink: string,\n\ticon?: keyof typeof Icons,\n\tchildren?: ComponentChildren,\n}\nexport function ToolCard({ title, link, icon, children }: ToolCardProps) {\n\treturn \n\t\t{icon && Icons[icon]}\n\t\t
\n\t\t\t

{title}

\n\t\t\t{children}\n\t\t
\n\t
\n}\n","import type { BooleanHookParams, EnumOption, Hook, INode, NumberHookParams, StringHookParams, ValidationOption } from '@mcschema/core'\nimport { DataModel, MapNode, ModelPath, ObjectNode, Path, relativePath, StringNode } from '@mcschema/core'\nimport type { ComponentChildren, JSX } from 'preact'\nimport { memo } from 'preact/compat'\nimport { useRef, useState } from 'preact/hooks'\nimport { Btn } from '../components'\nimport { Octicon } from '../components/Octicon'\nimport { useFocus } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry } from '../Schemas'\nimport { deepClone, deepEqual, hexId, newSeed } from '../Utils'\n\nconst selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type']\nconst hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type']\nconst flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state']\nconst inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome']\nconst nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt']\nconst fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset']\n\n/**\n * Secondary model used to remember the keys of a map\n */\nconst keysModel = new DataModel(MapNode(\n\tStringNode(),\n\tStringNode()\n), { historyMax: 0 })\n\ntype JSXTriple = [JSX.Element | null, JSX.Element | null, JSX.Element | null]\ntype RenderHook = Hook<[any, string, BlockStateRegistry, Record], JSXTriple>\n\ntype NodeProps = T & {\n\tnode: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n}\n\nexport function FullNode({ model, lang, blockStates }: { model: DataModel, lang: string, blockStates: BlockStateRegistry }) {\n\tconst path = new ModelPath(model)\n\tconst [prefix, suffix, body] = model.schema.hook(renderHtml, path, deepClone(model.data), lang, blockStates, {})\n\treturn suffix?.props?.children.some((c: any) => c) ?
\n\t\t
{prefix}{suffix}
\n\t\t
{body}
\n\t
: body\n}\n\nconst renderHtml: RenderHook = {\n\tbase() {\n\t\treturn [null, null, null]\n\t},\n\n\tboolean(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tchoice({ choices, config, switchNode }, path, value, lang, states, ctx) {\n\t\tconst choice = switchNode.activeCase(path, true) as typeof choices[number]\n\t\tconst contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path\n\t\tconst [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx)\n\t\tif (choices.length === 1) {\n\t\t\treturn [prefix, suffix, body]\n\t\t}\n\t\tconst choiceContextPath = config?.choiceContext ? new Path([], [config.choiceContext]) : config?.context ? new Path([], [config.context]) : path\n\t\tconst set = (value: string) => {\n\t\t\tconst c = choices.find(c => c.type === value) ?? choice\n\t\t\tpath.model.set(path, c.change ? c.change(value, { wrapLists: true }) : DataModel.wrapLists(c.node.default()))\n\t\t}\n\t\tconst inject = \n\t\treturn [prefix, <>{inject}{suffix}, body]\n\t},\n\n\tlist({ children, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\t\tconst [maxShown, setMaxShown] = useState(50)\n\n\t\tconst context = path.getContext().join('.')\n\t\tif (fixedLists.includes(context)) {\n\t\t\tconst prefix = <>\n\t\t\t\t{[...Array(config.maxLength!)].map((_, i) =>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\tconst suffix = <>{[...Array(config.maxLength)].map((_, i) => {\n\t\t\t\tconst child = children.hook(this, path.modelPush(i), value?.[i]?.node, lang, states, ctx)\n\t\t\t\treturn child[1]\n\t\t\t})}\n\t\t\treturn [prefix, suffix, null]\n\t\t}\n\n\t\tconst onAdd = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [{ node, id: hexId() }, ...value])\n\t\t}\n\t\tconst onAddBottom = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [...value, { node, id: hexId() }])\n\t\t}\n\t\tconst suffix = \n\t\tconst body = <>\n\t\t\t{(value && Array.isArray(value)) && value.map(({ node: cValue, id: cId }, index) => {\n\t\t\t\tif (index === maxShown) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tif (index > maxShown) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tconst cPath = path.push(index).contextPush('entry')\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(cId)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\tconst onMoveUp = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index - 1], v[index]] = [v[index], v[index - 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst onMoveDown = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index + 1], v[index]] = [v[index], v[index + 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\t{value.length > 1 &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t})}\n\t\t\t{(value && value.length > 0 && value.length <= maxShown) &&
\n\t\t\t\t\n\t\t\t
}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tmap({ children, keys, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tconst keyPath = new ModelPath(keysModel, new Path([hashString(path.toString())]))\n\t\tconst onAdd = () => {\n\t\t\tconst key = keyPath.get()\n\t\t\tpath.model.set(path.push(key), DataModel.wrapLists(children.default()))\n\t\t}\n\t\tconst blockState = config.validation?.validator === 'block_state_map' ? states?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst keysSchema = blockState?.properties\n\t\t\t? StringNode(null!, { enum: Object.keys(blockState.properties ?? {}) })\n\t\t\t: keys\n\t\tif (blockState && path.last() === 'Properties') {\n\t\t\tif (typeof value !== 'object') value = {}\n\t\t\tconst properties = Object.entries(blockState.properties ?? {})\n\t\t\t\t.map(([key, values]) => [key, StringNode(null!, { enum: values })])\n\t\t\tObject.entries(blockState.properties ?? {}).forEach(([key, values]) => {\n\t\t\t\tif (typeof value[key] !== 'string') {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.expected_string')\n\t\t\t\t} else if (!values.includes(value[key])) {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.invalid_enum_option', value[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn ObjectNode(Object.fromEntries(properties)).hook(this, path, value, lang, states, ctx)\n\t\t}\n\t\tconst suffix = <>\n\t\t\t{keysSchema.hook(this, keyPath, keyPath.get() ?? '', lang, states, ctx)[1]}\n\t\t\t\n\t\t\n\t\tconst body = <>\n\t\t\t{typeof value === 'object' && Object.entries(value).map(([key, cValue]) => {\n\n\t\t\t\tconst cPath = path.modelPush(key)\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tconst cSchema = blockState\n\t\t\t\t\t? StringNode(null!, { enum: blockState.properties?.[key] ?? [] })\n\t\t\t\t\t: children\n\t\t\t\tif (blockState?.properties?.[key] && typeof cValue === 'string'\n\t\t\t\t\t&& !blockState.properties?.[key].includes(cValue)) {\n\t\t\t\t\tpath.model.errors.add(cPath, 'error.invalid_enum_option', cValue)\n\t\t\t\t}\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t})}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tnumber(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tobject({ node, getActiveFields, getChildModelPath }, path, value, lang, states, ctx) {\n\t\tlet prefix: JSX.Element | null = null\n\t\tlet suffix: JSX.Element | null = null\n\t\tif (node.optional()) {\n\t\t\tif (value === undefined) {\n\t\t\t\tconst onExpand = () => path.set(DataModel.wrapLists(node.default()))\n\t\t\t\tsuffix = \n\t\t\t} else {\n\t\t\t\tconst onCollapse = () => path.set(undefined)\n\t\t\t\tsuffix = \n\t\t\t}\n\t\t}\n\t\tconst newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)\n\t\t\t? { ...ctx, loot: value?.type } : ctx\n\t\tconst body = <>\n\t\t\t{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&\n\t\t\t\tObject.entries(getActiveFields(path))\n\t\t\t\t\t.filter(([_, child]) => child.enabled(path))\n\t\t\t\t\t.map(([key, child]) => {\n\t\t\t\t\t\tconst cPath = getChildModelPath(path, key)\n\t\t\t\t\t\tconst context = cPath.getContext().join('.')\n\t\t\t\t\t\tif (hiddenFields.includes(context)) return null\n\t\t\t\t\t\tconst [cPrefix, cSuffix, cBody] = child.hook(this, cPath, value[key], lang, states, newCtx)\n\t\t\t\t\t\tif (!cPrefix && !cSuffix && !((cBody?.props?.children?.length ?? 0) > 0)) return null\n\t\t\t\t\t\tconst isFlattened = child.type(cPath) === 'object' && flattenedFields.includes(context)\n\t\t\t\t\t\tconst isInlined = inlineFields.includes(context)\n\t\t\t\t\t\tif (isFlattened || isInlined) {\n\t\t\t\t\t\t\tprefix = <>{prefix}{cPrefix}\n\t\t\t\t\t\t\tsuffix = <>{suffix}{cSuffix}\n\t\t\t\t\t\t\treturn isFlattened ? cBody : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \n\t\t\t\t\t})\n\t\t\t}\n\t\t\n\t\treturn [prefix, suffix, body]\n\t},\n\n\tstring(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n}\n\nfunction Collapsed({ path, value }: { path: ModelPath, value: any, schema: INode }) {\n\tconst context = path.getContext().join('.')\n\tswitch (context) {\n\t\tcase 'loot_table.pools.entry':\n\t\t\treturn \n\t\tcase 'function.set_contents.entries.entry':\n\t\tcase 'loot_pool.entries.entry':\n\t\t\treturn \n\t}\n\tfor (const child of Object.values(value ?? {})) {\n\t\tif (typeof child === 'string') {\n\t\t\treturn \n\t\t}\n\t}\n\treturn null\n}\n\nfunction useToggles() {\n\tconst [toggleState, setToggleState] = useState(new Map())\n\tconst [toggleAll, setToggleAll] = useState(undefined)\n\n\tconst expand = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(true)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, true)))\n\t\t}\n\t}\n\tconst collapse = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(false)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, false)))\n\t\t}\n\t}\n\t\n\tconst isToggled = (key: string) => {\n\t\treturn toggleState.get(key) ?? toggleAll\n\t}\n\n\treturn { expand, collapse, isToggled }\n}\n\nfunction BooleanSuffix({ path, node, value, lang }: NodeProps) {\n\tconst set = (target: boolean) => {\n\t\tpath.model.set(path, node.optional() && value === target ? undefined : target)\n\t}\n\treturn <>\n\t\t\n\t\t\n\t\n}\n\nfunction NumberSuffix({ path, config, integer, value, lang }: NodeProps) {\n\tconst [text, setText] = useState(value ?? '')\n\tconst commitTimeout = useRef()\n\tconst commitValue = useRef()\n\tconst scheduleCommit = (newValue: number) => {\n\t\tif (commitTimeout.current) clearTimeout(commitTimeout.current)\n\t\tcommitValue.current = newValue\n\t\tcommitTimeout.current = setTimeout(() => {\n\t\t\tpath.model.set(path, commitValue.current)\n\t\t\tcommitValue.current = undefined\n\t\t}, 500)\n\t}\n\tconst onChange = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = integer ? parseInt(value) : parseFloat(value)\n\t\tsetText(value)\n\t\tscheduleCommit(parsed)\n\t}\n\tconst onBlur = () => {\n\t\tsetText(commitValue.current ?? value ?? '')\n\t}\n\tconst onColor = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = parseInt(value.slice(1), 16)\n\t\tsetText(parsed)\n\t\tscheduleCommit(parsed)\n\t}\n\treturn <>\n\t\t\n\t\t{config?.color && }\n\t\t{path.equals(new Path(['generator', 'seed'])) && }\n\t\n}\n\nfunction StringSuffix({ path, getValues, config, node, value, lang, states }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tevt.stopPropagation()\n\t\tconst newValue = (evt.target as HTMLSelectElement).value\n\t\tpath.model.set(path, newValue.length === 0 ? undefined : newValue)\n\t}\n\tconst values = getValues()\n\tconst context = path.getContext().join('.')\n\tif (nbtFields.includes(context)) {\n\t\treturn \n\t} else if ((isEnum(config) && !config.additional) || selectRegistries.includes(context)) {\n\t\tlet context = new Path([])\n\t\tif (isEnum(config) && typeof config.enum === 'string') {\n\t\t\tcontext = context.contextPush(config.enum)\n\t\t} else if (!isEnum(config) && config?.validator === 'resource' && typeof config.params.pool === 'string') {\n\t\t\tcontext = context.contextPush(config.params.pool)\n\t\t}\n\t\treturn \n\t} else if (!isEnum(config) && config?.validator === 'block_state_key') {\n\t\tconst blockState = states?.[relativePath(path, config.params.id).get()]\n\t\tconst values = Object.keys(blockState?.properties ?? {})\n\t\treturn \n\t} else {\n\t\tconst datalistId = hexId()\n\t\treturn <>\n\t\t\t 0 ? datalistId : ''} />\n\t\t\t{values.length > 0 && \n\t\t\t\t{values.map(v => }\n\t\t\n\t}\n}\n\ntype TreeNodeProps = {\n\tschema: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n\tcompare?: any,\n\tlabel?: string,\n\tchildren?: ComponentChildren,\n}\nfunction TreeNode({ label, schema, path, value, lang, states, ctx, children }: TreeNodeProps) {\n\tconst type = schema.type(path)\n\tconst category = schema.category(path)\n\tconst context = path.getContext().join('.')\n\n\tconst [active, setActive] = useFocus()\n\tconst onContextMenu = (evt: MouseEvent) => {\n\t\tevt.preventDefault()\n\t\tsetActive()\n\t}\n\n\tconst newCtx = {...ctx}\n\tdelete newCtx.index\n\tconst [prefix, suffix, body] = schema.hook(renderHtml, path, value, lang, states, newCtx)\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\t{prefix}\n\t\t\t\n\t\t\t{suffix}\n\t\t
\n\t\t{body &&
{body}
}\n\t
\n}\n\nconst MemoedTreeNode = memo(TreeNode, (prev, next) => {\n\treturn prev.schema === next.schema\n\t\t&& prev.lang === next.lang\n\t\t&& prev.path.equals(next.path)\n\t\t&& deepEqual(prev.ctx, next.ctx)\n\t\t&& deepEqual(prev.value, next.value)\n})\n\nfunction isEnum(value?: ValidationOption | EnumOption): value is EnumOption {\n\treturn !!(value as any)?.enum\n}\n\nfunction hashString(str: string) {\n\tvar hash = 0, i, chr\n\tfor (i = 0; i < str.length; i++) {\n\t\tchr = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + chr\n\t\thash |= 0\n\t}\n\treturn hash\n}\n\nfunction pathLocale(lang: string, path: Path, ...params: string[]) {\n\tconst ctx = path.getContext()\n\tfor (let i = 0; i < ctx.length; i += 1) {\n\t\tconst key = ctx.slice(i).join('.')\n\t\tconst result = locale(lang, key, ...params)\n\t\tif (key !== result) {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn ctx[ctx.length - 1]\n}\n\nfunction ErrorPopup({ lang, path, nested }: { lang: string, path: ModelPath, nested?: boolean }) {\n\tconst e = nested\n\t\t?\tpath.model.errors.getAll().filter(e => e.path.startsWith(path))\n\t\t: path.model.errors.get(path, true)\n\tif (e.length === 0) return null\n\tconst message = locale(lang, e[0].error, ...(e[0].params ?? []))\n\treturn popupIcon('node-error', 'issue_opened', message)\n}\n\nfunction HelpPopup({ lang, path }: { lang: string, path: Path }) {\n\tconst key = path.contextPush('help').getContext().join('.')\n\tconst message = locale(lang, key)\n\tif (message === key) return null\n\treturn popupIcon('node-help', 'info', message)\n}\n\nconst popupIcon = (type: string, icon: keyof typeof Octicon, popup: string) => {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t{Octicon[icon]}\n\t\t{popup}\n\t
\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useErrorBoundary, useState } from 'preact/hooks'\nimport { useModel } from '../hooks'\nimport { FullNode } from '../schema/renderHtml'\nimport type { BlockStateRegistry, VersionId } from '../Schemas'\n\ntype TreePanelProps = {\n\tlang: string,\n\tversion: VersionId,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tonError: (message: string) => unknown,\n}\nexport function Tree({ lang, model, blockStates, onError }: TreePanelProps) {\n\tif (!model || !blockStates) return <>\n\n\tconst [error] = useErrorBoundary(e => {\n\t\tonError(`Error rendering the tree: ${e.message}`)\n\t\tconsole.error(e)\n\t})\n\tif (error) return <>\n\n\tconst [, setState] = useState(0)\n\tuseModel(model, () => {\n\t\tsetState(state => state + 1)\n\t})\n\n\treturn
\n\t\t\n\t
\n}\n","import { locale } from '../Locales'\n\ntype FieldSettingsProps = {\n\tlang: string,\n\tpath?: string,\n}\nexport function FieldSettings({ lang }: FieldSettingsProps) {\n\tconst loc = locale.bind(null, lang)\n\treturn
\n\t\t
\n\t\t\t

{loc('settings.fields.description')}

\n\t\t\t
    \n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport { getCurrentUrl } from 'preact-router'\nimport { useEffect, useErrorBoundary, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Analytics } from '../Analytics'\nimport { Ad, Btn, BtnInput, BtnMenu, ErrorPanel, HasPreview, Octicon, PreviewPanel, SourcePanel, Tree } from '../components'\nimport { fetchPreset } from '../DataFetcher'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../Schemas'\nimport { checkVersion, getBlockStates, getCollections, getModel } from '../Schemas'\nimport { getGenerator } from '../Utils'\n\ntype GeneratorProps = {\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tonChangeVersion: (version: VersionId) => unknown,\n\tdefault?: true,\n}\nexport function Generator({ lang, changeTitle, version, onChangeVersion }: GeneratorProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tconst [errorBoundary, errorRetry] = useErrorBoundary()\n\tif (errorBoundary) {\n\t\treturn
\n\t}\n\n\tconst gen = getGenerator(getCurrentUrl())\n\tif (!gen) {\n\t\treturn
\n\t}\n\n\tuseEffect(() => {\n\t\tsetError(null)\n\t}, [gen.id, version])\n\n\tconst allowedVersions = config.versions\n\t\t.filter(v => checkVersion(v.id, gen.minVersion))\n\t\t.map(v => v.id as VersionId)\n\n\tchangeTitle(loc('title.generator', loc(gen.id)), allowedVersions)\n\n\tif (!checkVersion(version, gen.minVersion)) {\n\t\tsetError(`The minimum version for this generator is ${gen.minVersion}`)\n\t}\n\n\tconst [model, setModel] = useState(null)\n\tconst [blockStates, setBlockStates] = useState(null)\n\tuseEffect(() => {\n\t\tsetModel(null)\n\t\tgetBlockStates(version)\n\t\t\t.then(b => setBlockStates(b))\n\t\tgetModel(version, gen.id)\n\t\t\t.then(m => setModel(m))\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id])\n\n\tuseModel(model, () => {\n\t\tsetError(null)\n\t})\n\n\tconst reset = () => {\n\t\tAnalytics.generatorEvent('reset')\n\t\tmodel?.reset(DataModel.wrapLists(model.schema.default()), true)\n\t}\n\tconst undo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('undo', 'Menu')\n\t\tmodel?.undo()\n\t}\n\tconst redo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('redo', 'Menu')\n\t\tmodel?.redo()\n\t}\n\n\tconst onKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.ctrlKey && e.key === 'z') {\n\t\t\tAnalytics.generatorEvent('undo', 'Hotkey')\n\t\t\tmodel?.undo()\n\t\t} else if (e.ctrlKey && e.key === 'y') {\n\t\t\tAnalytics.generatorEvent('redo', 'Hotkey')\n\t\t\tmodel?.redo()\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keyup', onKeyUp)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keyup', onKeyUp)\n\t\t}\n\t}, [model])\n\n\tconst [presetFilter, setPresetFilter] = useState('')\n\tconst [presetResults, setPresetResults] = useState([])\n\tuseEffect(() => {\n\t\tgetCollections(version)\n\t\t\t.then(collections => {\n\t\t\t\tconst terms = (presetFilter ?? '').trim().split(' ')\n\t\t\t\tconst presets = collections.get(gen.id)\n\t\t\t\t\t.map(p => p.slice(10))\n\t\t\t\t\t.filter(p => terms.every(t => p.includes(t)))\n\t\t\t\tif (presets) {\n\t\t\t\t\tsetPresetResults(presets)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id, presetFilter])\n\n\tconst loadPreset = (id: string) => {\n\t\tAnalytics.generatorEvent('load-preset', id)\n\t\tfetchPreset(version, gen.path ?? gen.id, id).then(preset => {\n\t\t\tconst seed = model?.get(new Path(['generator', 'seed']))\n\t\t\tif (preset?.generator?.seed !== undefined && seed !== undefined) {\n\t\t\t\tpreset.generator.seed = seed\n\t\t\t\tif (preset.generator.biome_source?.seed !== undefined) {\n\t\t\t\t\tpreset.generator.biome_source.seed = seed\n\t\t\t\t}\n\t\t\t}\n\t\t\tmodel?.reset(DataModel.wrapLists(preset), false)\n\t\t})\n\t}\n\n\tconst [sourceShown, setSourceShown] = useState(window.innerWidth > 820)\n\tconst [doCopy, setCopy] = useState(0)\n\tconst [doDownload, setDownload] = useState(0)\n\tconst [doImport, setImport] = useState(0)\n\n\tconst copySource = () => {\n\t\tAnalytics.generatorEvent('copy')\n\t\tsetCopy(doCopy + 1)\n\t}\n\tconst downloadSource = () => {\n\t\tAnalytics.generatorEvent('download')\n\t\tsetDownload(doDownload + 1)\n\t}\n\tconst importSource = () => {\n\t\tAnalytics.generatorEvent('import')\n\t\tsetSourceShown(true)\n\t\tsetImport(doImport + 1)\n\t}\n\tconst toggleSource = () => {\n\t\tAnalytics.generatorEvent('toggle-output', !sourceShown ? 'visible' : 'hidden')\n\t\tsetSourceShown(!sourceShown)\n\t\tsetCopy(0)\n\t\tsetDownload(0)\n\t\tsetImport(0)\n\t}\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copySuccess = () => {\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000)\n\t}\n\n\tconst [previewShown, setPreviewShown] = useState(false)\n\tconst hasPreview = HasPreview.includes(gen.id)\n\tif (previewShown && !hasPreview) setPreviewShown(false)\n\tlet actionsShown = 1\n\tif (hasPreview) actionsShown += 1\n\tif (sourceShown) actionsShown += 2\n\n\tconst togglePreview = () => {\n\t\tAnalytics.generatorEvent('toggle-preview', !previewShown ? 'visible' : 'hidden')\n\t\tsetPreviewShown(!previewShown)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{presetResults.map(preset => loadPreset(preset)} />)}\n\t\t\t\t\t
\n\t\t\t\t\t{presetResults.length === 0 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{allowedVersions.reverse().map(v =>\n\t\t\t\t\t\t onChangeVersion(v)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{error && setError(null)} />}\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{previewShown ? Octicon.x_circle : Octicon.play}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{Octicon.download}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{copyActive ? Octicon.check : Octicon.clippy}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{sourceShown ? Octicon.chevron_right : Octicon.code}\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype HomeProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Home({ lang, changeTitle }: HomeProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.home'))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => !g.category).map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t

Analyse your performance reports

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Browse through and mix all the vanilla sounds

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Convert your 1.16 data packs to 1.17

\n\t\t\t
\n\t\t
\n\t
\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype WorldgenProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Worldgen({ lang, changeTitle }: WorldgenProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.generator_category', loc('worldgen')))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => g.category === 'worldgen').map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t
\n}\n","import { render } from 'preact'\nimport type { RouterOnChangeArgs } from 'preact-router'\nimport { Router } from 'preact-router'\nimport { useEffect, useState } from 'preact/hooks'\nimport config from '../config.json'\nimport '../styles/global.css'\nimport '../styles/nodes.css'\nimport { Analytics } from './Analytics'\nimport { Header } from './components'\nimport { loadLocale, locale, Locales } from './Locales'\nimport { FieldSettings, Generator, Home, Worldgen } from './pages'\nimport type { VersionId } from './Schemas'\nimport { Store } from './Store'\nimport { cleanUrl } from './Utils'\n\nconst VERSIONS_IN_TITLE = 3\n\nfunction Main() {\n\tconst [lang, setLanguage] = useState('en')\n\tconst changeLanguage = async (language: string) => {\n\t\tif (!Locales[language]) {\n\t\t\tawait loadLocale(language)\n\t\t}\n\t\tAnalytics.setLanguage(language)\n\t\tStore.setLanguage(language)\n\t\tsetLanguage(language)\n\t}\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst target = Store.getLanguage()\n\t\t\tawait Promise.all([\n\t\t\t\tloadLocale('en'),\n\t\t\t\t...(target !== 'en' ? [loadLocale(target)] : []),\n\t\t\t])\n\t\t\tsetLanguage(target)\n\t\t})()\n\t}, [])\n\n\tconst [theme, setTheme] = useState(Store.getTheme())\n\tconst changeTheme = (theme: string) => {\n\t\tAnalytics.setTheme(theme)\n\t\tStore.setTheme(theme)\n\t\tsetTheme(theme)\n\t}\n\tuseEffect(() => {\n\t\tdocument.documentElement.setAttribute('data-theme', theme)\n\t}, [theme])\n\n\tconst [version, setVersion] = useState(Store.getVersion())\n\tconst changeVersion = (version: VersionId) => {\n\t\tAnalytics.setVersion(version)\n\t\tStore.setVersion(version)\n\t\tsetVersion(version)\n\t}\n\n\tconst [title, setTitle] = useState(locale(lang, 'title.home'))\n\tconst changeTitle = (title: string, versions?: VersionId[]) => {\n\t\tversions ??= config.versions.map(v => v.id as VersionId)\n\t\tversions.splice(0, versions.length - VERSIONS_IN_TITLE)\n\t\tdocument.title = `${title} Minecraft ${versions.join(', ')}`\n\t\tsetTitle(title)\n\t}\n\n\tconst changeRoute = (e: RouterOnChangeArgs) => {\n\t\t// Needs a timeout to ensure the title is set correctly\n\t\tsetTimeout(() => Analytics.pageview(cleanUrl(e.url)))\n\t}\n\n\treturn <>\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n}\n\nrender(
, document.body)\n"],"names":["Analytics","type","id","getElementById","remove","window","load","data-ea-publisher","data-ea-type","class","icon","label","active","clazz","tooltip","tooltipLoc","onClick","aria-label","Octicon","large","doSelect","value","placeholder","onChange","onInput","e","value2","target","ref","useRef","current","select","stopPropagation","size","draw","onDrag","onHover","onLeave","inputs","canvas","dragStart","dragRequest","dragPending","dragBusy","onMouseDown","offsetX","offsetY","onMouseMove","x","clientWidth","y2","clientHeight","dx","dy","requestAnimationFrame","async","dx2","dy2","onMouseUp","onMouseLeave","addEventListener","body","removeEventListener","redraw","redrawCount","ctx","getContext","s2","width","height","img","getImageData","ownCount","putImageData","setActive","useState","hider","model","invalidated","listener","[object Object]","addListener","removeListener","relative","children","useFocus","Btn","__spreadProps","Analytics2","ID_SITE","ID_GENERATOR","category","action","index","pageview","page","setLanguage","language","setTheme","theme","setVersion","version","setPreview","preview","generatorEvent","archive","xmlns","viewBox","fill-rule","d","arrow_left","arrow_right","check","chevron_down","chevron_right","chevron_up","clippy","code","dash","device_desktop","download","eye","eye_closed","gear","globe","history","info","issue_opened","kebab_horizontal","link","mark_github","moon","play","plus","plus_circle","search","sun","sync","tag","three_bars","trashcan","unfold","upload","x_circle","error","onDismiss","href","scriptRel","seen","__vitePreload","baseModule","deps","relList","document","createElement","supports","Promise","all","map","dep","isCss","endsWith","cssSelector","querySelector","rel","as","crossOrigin","head","appendChild","res","rej","then","Locales","fallback","English","key","params","replace","parseInt","match","slice","resolveLocaleParams","en","langConfig","config","languages","find","lang","data","__variableDynamicImportRuntime0__","schema","schemas","__variableDynamicImportRuntime1__","__spreadValues","default","dec2hex","dec","toString","substr","length","arr","Uint8Array","crypto","getRandomValues","Array","from","join","BigInt","Math","floor","random","Number","MAX_SAFE_INTEGER","seed","set","Path","url","replaceAll","trimmedUrl","generators","g2","str","h","abs","i","imul","charCodeAt","hashString","a2","b","c","max","min","lerp","Error","message","deepClone","rfdc","constructor","isArray","deepEqual","valueOf","Object","prototype","keys","hasOwnProperty","call","unwrapLists","v","node","entries","k","forEach","localStorage","removeItem","mcdataUrl","vanillaDatapackUrl","refs","hash","versionId","collectionTarget","blockStateTarget","versions","debug","JSON","stringify","dynamic","filter","getItem","r","matches","cache","caches","open","promises","request","push","delete","warn","deleteMatching","startsWith","setItem","fetchRegistries","fetchBlockStateMap","fetchDynamicRegistries","registries","checkVersion","minVersion","maxVersion","mcdata_master","getData","data2","register","path","values","properties","states","assign","vanilla_datapack_summary","registry","versionData","vanilla_datapack_data","fetch","json","fn","cacheResponse","ok","fetchResponse","responseData","put","Response","VersionIds","Versions","Models","versionGetter","1.15","java15","1.16","java16","1.17","java17","1.18","java18","collections","getCollections","blockStates","fetchData","getSchemas","minVersionId","maxVersionId","findIndex","Themes","system","dark","light","title","changeTheme","changeLanguage","loc","locale","bind","gen","getGenerator","getCurrentUrl","Link","Icons","home","BtnMenu","route","cleanUrl","name","th","fill","rx","y","report","sounds","cx","cy","clip-rule","cacheState","biomeSourceCache","climateSamplerCache","state","options","newState","octaves","FixedBiome","biome","shift","scale","numBiomes","biomes","_y","z","preset","NetherPreset18","NetherPreset","fetchPreset","generator","biome_source","OverworldPreset18","MultiNoise","fromJson","noise","config2","firstOctave","clamp","NormalNoise","Random","n","n2","sample","minDist","Infinity","minBiome","parameters","p","dist","square","altitude","temperature","humidity","weirdness","offset","getBiomeSource","settings","NoiseGeneratorSettings","noiseSampler","NoiseSampler","getClimate","biomeSource","climateSampler","biomeColors","color","VanillaColors","stringToColor","minecraft:badlands","minecraft:badlands_plateau","minecraft:bamboo_jungle","minecraft:bamboo_jungle_hills","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:birch_forest_hills","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:dark_forest_hills","minecraft:deep_cold_ocean","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:deep_warm_ocean","minecraft:desert","minecraft:desert_hills","minecraft:desert_lakes","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:giant_spruce_taiga","minecraft:giant_spruce_taiga_hills","minecraft:giant_tree_taiga","minecraft:giant_tree_taiga_hills","minecraft:gravelly_mountains","minecraft:ice_spikes","minecraft:jungle","minecraft:jungle_edge","minecraft:jungle_hills","minecraft:lukewarm_ocean","minecraft:modified_badlands_plateau","minecraft:modified_gravelly_mountains","minecraft:modified_jungle","minecraft:modified_jungle_edge","minecraft:modified_wooded_badlands_plateau","minecraft:mountain_edge","minecraft:mountains","minecraft:mushroom_field_shore","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:shattered_savanna","minecraft:shattered_savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_mountains","minecraft:snowy_taiga","minecraft:snowy_taiga_hills","minecraft:snowy_taiga_mountains","minecraft:snowy_tundra","minecraft:soul_sand_valley","minecraft:stone_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:swamp_hills","minecraft:taiga","minecraft:taiga_hills","minecraft:taiga_mountains","minecraft:tall_birch_forest","minecraft:tall_birch_hills","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:wooded_badlands_plateau","minecraft:wooded_hills","minecraft:wooded_mountains","minecraft:snowy_slopes","minecraft:lofty_peaks","minecraft:snowcapped_peaks","minecraft:stony_peaks","minecraft:grove","minecraft:meadow","minecraft:lush_caves","minecraft:dripstone_caves","altitude_noise","amplitudes","temperature_noise","humidity_noise","weirdness_noise","continentalness","erosion","depth","terrain","featureColors","placements","features","biomeInfoNoise","PerlinNoise","fork","seaLevel","nextFloat","nextInt","sampleInt","this","pos","feature","j2","base","spread","normalize","min_inclusive","max_inclusive","source","indexOf","useFeature","featureFn","Features","decorator2","decoratorFn","Decorators","decorated","getPositions","decorator","getPlacements","random_boolean_selector","feature_true","feature_false","random_selector","f","chance","simple_random_selector","count","count_extra","extra_chance","extra_count","count_multilayer","count_noise","noise_level","below_noise","above_noise","count_noise_biased","factor","noise_factor","ceil","noise_offset","noise_to_count_ratio","dark_oak_tree","_config","_","outer","flatMap","inner","depth_average","decorateY","baseline","emerald_ore","fire","glowstone","heightmap","heightmap_spread_double","heightmap_world_surface","iceberg","lava_lake","nope","range","maximum","top_offset","bottom_offset","range_biased","range_very_biased","spread_32_above","top_solid_heightmap","magma","surface_relative_threshold","water_lake","minLimitPerlinNoise","maxLimitPerlinNoise","mainPerlinNoise","depthNoise","xOffset","chunkWidth","size_horizontal","chunkHeight","size_vertical","chunkCountY","amplified","biomeDepth","biomeScale","noiseColumnCache","ox","noise1","fillNoiseColumn","noise2","yy","oy","cachedColumn","xzScale","sampling","xz_scale","yScale","y_scale","xzFactor","xz_factor","yFactor","y_factor","randomDensity","random_density_offset","getRandomDensity","sampleAndClampNoise","getOctaveNoise","zo","falloff","density_factor","density_offset","top_slide","clampedLerp","bottom_slide","x2","wrap","y22","z2","minLimitNoise","maxLimitNoise","mainNoise","colors","minecraft:air","minecraft:water","minecraft:lava","minecraft:stone","minecraft:netherrack","minecraft:end_stone","generatorCache","chunkCache","bottomSlide","topSlide","shape","biomeFactor","biomeOffset","peaks","biomePeaks","nearWater","NoiseChunkGenerator","getCached","LevelSlice","minY","generator2","state2","getBlockState","getName","OldNoiseChunkGenerator","reset","row","iterateNoiseColumn","reverse","getColor","minX","filled","chunks","cached","Chunk","ChunkPos","create","Z","chunk","chunkIndex","BiomeSourcePreview","shown","setScale","focused","setFocused","refineTimeout","get","obj","getOctaves","calculateState","useCanvas","oz","col","worldX","worldZ","getBiomeColor","getBiome","biomeMap","setTimeout","xx","zz","toWorld","changeScale","newScale","newSeed","DecoratorPreview","setSeed","randomSeed","NoiseSettingsPreview","setBiomeFactor","setBiomeOffset","setBiomePeaks","hasPeaks","worldY","min_y","BtnInput","HasPreview","setCount","transformOutput","switchNode","props","hook","blockState","validation","validator","relativePath","includes","getActiveFields","activeFields","enabled","Store","Store2","getLanguage","getTheme","getVersion","getIndent","setIndent","indent","INDENT","2_spaces","4_spaces","tabs","doCopy","doDownload","doImport","copySuccess","onError","retransform","getOutput","useCallback","model2","blockStates2","ModelPath","output","clipboard","writeText","content","encodeURIComponent","setAttribute","click","changeIndent","parse","DataModel","wrapLists","spellcheck","autocorrect","style","selectRegistries","hiddenFields","flattenedFields","inlineFields","nbtFields","fixedLists","keysModel","MapNode","StringNode","historyMax","prefix","suffix","renderHtml","some","data-category","boolean","BooleanSuffix","choices","choice","activeCase","contextPath","context","getModel","getArray","choiceContextPath","choiceContext","inject","c2","change","pathLocale","contextPush","expand","collapse","isToggled","useToggles","maxShown","setMaxShown","maxLength","ErrorPopup","modelPush","hexId","cValue","cId","cPath","canToggle","toggle","nested","Collapsed","MemoedTreeNode","disabled","keyPath","keysSchema","enum","last","errors","add","ObjectNode","fromEntries","cSchema","number","NumberSuffix","getChildModelPath","optional","onExpand","onCollapse","newCtx","pools","loot","child","cPrefix","cSuffix","cBody","isFlattened","isInlined","HelpPopup","string","StringSuffix","toggleState","setToggleState","Map","toggleAll","setToggleAll","evt","ctrlKey","integer","text","setText","commitTimeout","commitValue","scheduleCommit","newValue","parsed","parseFloat","onBlur","padStart","equals","getValues","isEnum","additional","context2","pool","datalistId","list","values2","memo","onContextMenu","preventDefault","navigator","prev","next","result","getAll","e2","message2","popupIcon","popup","useErrorBoundary","setState","FullNode","changeTitle","onChangeVersion","setError","errorBoundary","errorRetry","ErrorPanel","allowedVersions","setModel","setBlockStates","schemaName","validate","m","catch","onKeyUp","undo","redo","presetFilter","setPresetFilter","presetResults","setPresetResults","terms","trim","split","presets","every","t","sourceShown","setSourceShown","innerWidth","setCopy","setDownload","setImport","copyActive","setCopyActive","copyTimeout","previewShown","setPreviewShown","hasPreview","actionsShown","Ad","loadPreset","Tree","PreviewPanel","SourcePanel","ToolCard","loadLocale","documentElement","setTitle","title2","splice","Header","theme2","Router","Home","FieldSettings","Worldgen","Generator","version2","render","Main"],"mappings":"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"} \ No newline at end of file diff --git a/dimension/index.html b/dimension/index.html index 4882a2ba..7b786605 100644 --- a/dimension/index.html +++ b/dimension/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/dimension_type/index.html b/dimension_type/index.html index 4882a2ba..7b786605 100644 --- a/dimension_type/index.html +++ b/dimension_type/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/index.html b/index.html index a8854812..6a375fb3 100644 --- a/index.html +++ b/index.html @@ -20,9 +20,9 @@ Data Pack Generators Minecraft 1.15, 1.16, 1.17 - + - +
diff --git a/item_modifier/index.html b/item_modifier/index.html index 398b29ba..29b087d9 100644 --- a/item_modifier/index.html +++ b/item_modifier/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.17, 1.18 - + - +
diff --git a/loot_table/index.html b/loot_table/index.html index 8139cd0a..1f14eb61 100644 --- a/loot_table/index.html +++ b/loot_table/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.15, 1.16, 1.17, 1.18 - + - +
diff --git a/predicate/index.html b/predicate/index.html index 8139cd0a..1f14eb61 100644 --- a/predicate/index.html +++ b/predicate/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.15, 1.16, 1.17, 1.18 - + - +
diff --git a/world/index.html b/world/index.html index 4882a2ba..7b786605 100644 --- a/world/index.html +++ b/world/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/biome/index.html b/worldgen/biome/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/biome/index.html +++ b/worldgen/biome/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/configured_carver/index.html b/worldgen/configured_carver/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/configured_carver/index.html +++ b/worldgen/configured_carver/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/configured_feature/index.html b/worldgen/configured_feature/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/configured_feature/index.html +++ b/worldgen/configured_feature/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/configured_structure_feature/index.html b/worldgen/configured_structure_feature/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/configured_structure_feature/index.html +++ b/worldgen/configured_structure_feature/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/configured_surface_builder/index.html b/worldgen/configured_surface_builder/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/configured_surface_builder/index.html +++ b/worldgen/configured_surface_builder/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/noise_settings/index.html b/worldgen/noise_settings/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/noise_settings/index.html +++ b/worldgen/noise_settings/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/processor_list/index.html b/worldgen/processor_list/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/processor_list/index.html +++ b/worldgen/processor_list/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +
diff --git a/worldgen/template_pool/index.html b/worldgen/template_pool/index.html index 4882a2ba..7b786605 100644 --- a/worldgen/template_pool/index.html +++ b/worldgen/template_pool/index.html @@ -20,9 +20,9 @@ undefined Generator Minecraft 1.16, 1.17, 1.18 - + - +