'Islands are mostly just one type with a color phenotype plus decor' — now the island BODY itself is a vocabulary: - MASS_FAMILIES in islands.ts: 'cliff' (nature voxels, full shaping vocabulary — untouched code path) vs 'block' families (Platformer Kit voxels, measured: clean 1.0 full / 0.5 low courses, bottom-center, cosmetic 0.082 lip overhang, INTEGRATED tops — no cap tile). - BiomeSpec.massFamily: winter is BUILT OF SNOW now (block-snow body, tinted-cliff phenotype retired); new 'grove' biome (block-grass body, forest decor). Ten biomes total. - proxies blockHeight knows platformer courses (1x1 boxes per course, lip is cosmetic); islandRender treats block masses as occluders with value-jitter-only coloring (pre-textured tops must not be hue-tinted). - Platformer Kit imported + joined DECOR_PACKS / GOLDEN_PACKS / test manifests. - MEASURED RULINGS on the record: Space Kit terrain_* is a SURFACE kit (flat top + 0.5 skirts, hollow underside, off-origin authoring) — wrong for void islands seen from below, deferred again; block corner rim-rounding awaits a mesh-orientation measure. - Corpus: grove+winter block islands emerge across biome scan; 21.9k block voxels / 30 seeds. 205 green, endless goldens re-pinned, genVersion unchanged.
- commit
- 416d6ab4e8c96bec8d9705859ff7da66797301dd
- parent
- 3b979a648b28c0ad022a69e44977f0d0fb89898e
- author
- Dami <dami.etoile@gmail.com>
| A | assets/ | bin | |
| A | assets/ | 5366 | ++++++++++++++++++++++++++++++ |
| M | src/ | 2 | + |
| M | src/ | 15 | +- |
| M | src/ | 95 | +- |
| M | src/ | 5 | + |
| M | tests/ | 9 | +- |
| M | tests/ | 40 | +- |
| M | tools/ | 2 | + |
| M | tools/ | 1 | + |
Binary file.
@@ -0,0 +1,5366 @@
1+{2+ "version": 1,3+ "pack": "Platformer Kit",4+ "slug": "platformer-kit",5+ "license": "CC0",6+ "glbPath": "assets/platformer-kit.glb",7+ "glbBytes": 1735260,8+ "pieceCount": 153,9+ "pieces": [10+ {11+ "id": "arrow",12+ "family": "unknown",13+ "solid": false,14+ "hole": false,15+ "wide": false,16+ "long": false,17+ "short": false,18+ "double": false,19+ "color": false,20+ "high": false,21+ "low": false,22+ "tier": null,23+ "size": null,24+ "chirality": null,25+ "span": null,26+ "count": null,27+ "segment": null,28+ "bboxMin": [29+ -0.20285,30+ 0,31+ -0.05632+ ],33+ "bboxMax": [34+ 0.25285,35+ 0.6,36+ 0.08627237+ ],38+ "footprint": [39+ 1,40+ 141+ ],42+ "vertices": 118,43+ "triangles": 6444+ },45+ {46+ "id": "arrows",47+ "family": "unknown",48+ "solid": false,49+ "hole": false,50+ "wide": false,51+ "long": false,52+ "short": false,53+ "double": false,54+ "color": false,55+ "high": false,56+ "low": false,57+ "tier": null,58+ "size": null,59+ "chirality": null,60+ "span": null,61+ "count": null,62+ "segment": null,63+ "bboxMin": [64+ -0.25143,65+ 0,66+ -0.05667+ ],68+ "bboxMax": [69+ 0.250901,70+ 0.9,71+ 0.08627272+ ],73+ "footprint": [74+ 1,75+ 176+ ],77+ "vertices": 164,78+ "triangles": 8879+ },80+ {81+ "id": "barrel",82+ "family": "unknown",83+ "solid": false,84+ "hole": false,85+ "wide": false,86+ "long": false,87+ "short": false,88+ "double": false,89+ "color": false,90+ "high": false,91+ "low": false,92+ "tier": null,93+ "size": null,94+ "chirality": null,95+ "span": null,96+ "count": null,97+ "segment": null,98+ "bboxMin": [99+ -0.258813,100+ 0,101+ -0.258813102+ ],103+ "bboxMax": [104+ 0.258813,105+ 0.47619,106+ 0.258813107+ ],108+ "footprint": [109+ 1,110+ 1111+ ],112+ "vertices": 248,113+ "triangles": 148114+ },115+ {116+ "id": "block-grass-corner-low",117+ "family": "unknown",118+ "solid": false,119+ "hole": false,120+ "wide": false,121+ "long": false,122+ "short": false,123+ "double": false,124+ "color": false,125+ "high": false,126+ "low": true,127+ "tier": null,128+ "size": null,129+ "chirality": null,130+ "span": null,131+ "count": null,132+ "segment": null,133+ "bboxMin": [134+ -0.527218,135+ 0,136+ -0.527218137+ ],138+ "bboxMax": [139+ 0.527218,140+ 0.5,141+ 0.527218142+ ],143+ "footprint": [144+ 2,145+ 2146+ ],147+ "vertices": 154,148+ "triangles": 84149+ },150+ {151+ "id": "block-grass-corner-overhang-low",152+ "family": "unknown",153+ "solid": false,154+ "hole": false,155+ "wide": false,156+ "long": false,157+ "short": false,158+ "double": false,159+ "color": false,160+ "high": false,161+ "low": true,162+ "tier": null,163+ "size": null,164+ "chirality": null,165+ "span": null,166+ "count": null,167+ "segment": null,168+ "bboxMin": [169+ -0.527218,170+ 0,171+ -0.527218172+ ],173+ "bboxMax": [174+ 0.527218,175+ 0.5,176+ 0.527218177+ ],178+ "footprint": [179+ 2,180+ 2181+ ],182+ "vertices": 197,183+ "triangles": 110184+ },185+ {186+ "id": "block-grass-corner-overhang",187+ "family": "unknown",188+ "solid": false,189+ "hole": false,190+ "wide": false,191+ "long": false,192+ "short": false,193+ "double": false,194+ "color": false,195+ "high": false,196+ "low": false,197+ "tier": null,198+ "size": null,199+ "chirality": null,200+ "span": null,201+ "count": null,202+ "segment": null,203+ "bboxMin": [204+ -0.527218,205+ 0,206+ -0.527218207+ ],208+ "bboxMax": [209+ 0.527218,210+ 1,211+ 0.527218212+ ],213+ "footprint": [214+ 2,215+ 2216+ ],217+ "vertices": 197,218+ "triangles": 110219+ },220+ {221+ "id": "block-grass-corner",222+ "family": "unknown",223+ "solid": false,224+ "hole": false,225+ "wide": false,226+ "long": false,227+ "short": false,228+ "double": false,229+ "color": false,230+ "high": false,231+ "low": false,232+ "tier": null,233+ "size": null,234+ "chirality": null,235+ "span": null,236+ "count": null,237+ "segment": null,238+ "bboxMin": [239+ -0.527218,240+ 0,241+ -0.527218242+ ],243+ "bboxMax": [244+ 0.527218,245+ 1,246+ 0.527218247+ ],248+ "footprint": [249+ 2,250+ 2251+ ],252+ "vertices": 154,253+ "triangles": 84254+ },255+ {256+ "id": "block-grass-curve-half",257+ "family": "unknown",258+ "solid": false,259+ "hole": false,260+ "wide": false,261+ "long": false,262+ "short": false,263+ "double": false,264+ "color": false,265+ "high": false,266+ "low": false,267+ "tier": null,268+ "size": null,269+ "chirality": null,270+ "span": null,271+ "count": null,272+ "segment": null,273+ "bboxMin": [274+ -1,275+ 0,276+ 0277+ ],278+ "bboxMax": [279+ 0,280+ 1,281+ 1282+ ],283+ "footprint": [284+ 1,285+ 1286+ ],287+ "vertices": 186,288+ "triangles": 112289+ },290+ {291+ "id": "block-grass-curve-low",292+ "family": "unknown",293+ "solid": false,294+ "hole": false,295+ "wide": false,296+ "long": false,297+ "short": false,298+ "double": false,299+ "color": false,300+ "high": false,301+ "low": true,302+ "tier": null,303+ "size": null,304+ "chirality": null,305+ "span": null,306+ "count": null,307+ "segment": null,308+ "bboxMin": [309+ -1,310+ 0,311+ -0.5312+ ],313+ "bboxMax": [314+ 1,315+ 0.5,316+ 0.5317+ ],318+ "footprint": [319+ 2,320+ 1321+ ],322+ "vertices": 246,323+ "triangles": 156324+ },325+ {326+ "id": "block-grass-curve",327+ "family": "unknown",328+ "solid": false,329+ "hole": false,330+ "wide": false,331+ "long": false,332+ "short": false,333+ "double": false,334+ "color": false,335+ "high": false,336+ "low": false,337+ "tier": null,338+ "size": null,339+ "chirality": null,340+ "span": null,341+ "count": null,342+ "segment": null,343+ "bboxMin": [344+ -1,345+ 0,346+ -0.5347+ ],348+ "bboxMax": [349+ 1,350+ 1,351+ 0.5352+ ],353+ "footprint": [354+ 2,355+ 1356+ ],357+ "vertices": 334,358+ "triangles": 204359+ },360+ {361+ "id": "block-grass-edge",362+ "family": "unknown",363+ "solid": false,364+ "hole": false,365+ "wide": false,366+ "long": false,367+ "short": false,368+ "double": false,369+ "color": false,370+ "high": false,371+ "low": false,372+ "tier": null,373+ "size": null,374+ "chirality": null,375+ "span": null,376+ "count": null,377+ "segment": null,378+ "bboxMin": [379+ -0.541062,380+ 0,381+ -0.541062382+ ],383+ "bboxMax": [384+ 0.541062,385+ 1,386+ 0.541062387+ ],388+ "footprint": [389+ 2,390+ 2391+ ],392+ "vertices": 200,393+ "triangles": 112394+ },395+ {396+ "id": "block-grass-hexagon",397+ "family": "unknown",398+ "solid": false,399+ "hole": false,400+ "wide": false,401+ "long": false,402+ "short": false,403+ "double": false,404+ "color": false,405+ "high": false,406+ "low": false,407+ "tier": null,408+ "size": null,409+ "chirality": null,410+ "span": null,411+ "count": null,412+ "segment": null,413+ "bboxMin": [414+ -0.55,415+ 0,416+ -0.635085417+ ],418+ "bboxMax": [419+ 0.55,420+ 1,421+ 0.635085422+ ],423+ "footprint": [424+ 2,425+ 2426+ ],427+ "vertices": 84,428+ "triangles": 44429+ },430+ {431+ "id": "block-grass-large-slope-narrow",432+ "family": "unknown",433+ "solid": false,434+ "hole": false,435+ "wide": false,436+ "long": false,437+ "short": false,438+ "double": false,439+ "color": false,440+ "high": false,441+ "low": false,442+ "tier": null,443+ "size": "large",444+ "chirality": null,445+ "span": null,446+ "count": null,447+ "segment": null,448+ "bboxMin": [449+ -0.541062,450+ 0,451+ -1.005589452+ ],453+ "bboxMax": [454+ 0.541062,455+ 0.75912,456+ 1.005589457+ ],458+ "footprint": [459+ 2,460+ 3461+ ],462+ "vertices": 180,463+ "triangles": 102464+ },465+ {466+ "id": "block-grass-large-slope-steep-narrow",467+ "family": "unknown",468+ "solid": false,469+ "hole": false,470+ "wide": false,471+ "long": false,472+ "short": false,473+ "double": false,474+ "color": false,475+ "high": false,476+ "low": false,477+ "tier": null,478+ "size": "large",479+ "chirality": null,480+ "span": null,481+ "count": null,482+ "segment": null,483+ "bboxMin": [484+ -0.541062,485+ 0,486+ -0.928525487+ ],488+ "bboxMax": [489+ 0.541062,490+ 1.216506,491+ 0.928525492+ ],493+ "footprint": [494+ 2,495+ 2496+ ],497+ "vertices": 180,498+ "triangles": 102499+ },500+ {501+ "id": "block-grass-large-slope-steep",502+ "family": "unknown",503+ "solid": false,504+ "hole": false,505+ "wide": false,506+ "long": false,507+ "short": false,508+ "double": false,509+ "color": false,510+ "high": false,511+ "low": false,512+ "tier": null,513+ "size": "large",514+ "chirality": null,515+ "span": null,516+ "count": null,517+ "segment": null,518+ "bboxMin": [519+ -1.041062,520+ 0,521+ -0.928525522+ ],523+ "bboxMax": [524+ 1.041062,525+ 1.216507,526+ 0.928525527+ ],528+ "footprint": [529+ 3,530+ 2531+ ],532+ "vertices": 180,533+ "triangles": 102534+ },535+ {536+ "id": "block-grass-large-slope",537+ "family": "unknown",538+ "solid": false,539+ "hole": false,540+ "wide": false,541+ "long": false,542+ "short": false,543+ "double": false,544+ "color": false,545+ "high": false,546+ "low": false,547+ "tier": null,548+ "size": "large",549+ "chirality": null,550+ "span": null,551+ "count": null,552+ "segment": null,553+ "bboxMin": [554+ -1.041062,555+ 0,556+ -1.007311557+ ],558+ "bboxMax": [559+ 1.041062,560+ 0.75912,561+ 1.003867562+ ],563+ "footprint": [564+ 3,565+ 3566+ ],567+ "vertices": 180,568+ "triangles": 102569+ },570+ {571+ "id": "block-grass-large-tall",572+ "family": "unknown",573+ "solid": false,574+ "hole": false,575+ "wide": false,576+ "long": false,577+ "short": false,578+ "double": false,579+ "color": false,580+ "high": false,581+ "low": false,582+ "tier": null,583+ "size": "large",584+ "chirality": null,585+ "span": null,586+ "count": null,587+ "segment": null,588+ "bboxMin": [589+ -1.041062,590+ 0,591+ -1.041062592+ ],593+ "bboxMax": [594+ 1.041062,595+ 2,596+ 1.041062597+ ],598+ "footprint": [599+ 3,600+ 3601+ ],602+ "vertices": 168,603+ "triangles": 92604+ },605+ {606+ "id": "block-grass-large",607+ "family": "unknown",608+ "solid": false,609+ "hole": false,610+ "wide": false,611+ "long": false,612+ "short": false,613+ "double": false,614+ "color": false,615+ "high": false,616+ "low": false,617+ "tier": null,618+ "size": "large",619+ "chirality": null,620+ "span": null,621+ "count": null,622+ "segment": null,623+ "bboxMin": [624+ -1.041062,625+ 0,626+ -1.041062627+ ],628+ "bboxMax": [629+ 1.041062,630+ 1,631+ 1.041062632+ ],633+ "footprint": [634+ 3,635+ 3636+ ],637+ "vertices": 168,638+ "triangles": 92639+ },640+ {641+ "id": "block-grass-long",642+ "family": "unknown",643+ "solid": false,644+ "hole": false,645+ "wide": false,646+ "long": true,647+ "short": false,648+ "double": false,649+ "color": false,650+ "high": false,651+ "low": false,652+ "tier": null,653+ "size": null,654+ "chirality": null,655+ "span": null,656+ "count": null,657+ "segment": null,658+ "bboxMin": [659+ -1.041062,660+ 0,661+ -0.541062662+ ],663+ "bboxMax": [664+ 1.041062,665+ 1,666+ 0.541062667+ ],668+ "footprint": [669+ 3,670+ 2671+ ],672+ "vertices": 168,673+ "triangles": 92674+ },675+ {676+ "id": "block-grass-low-hexagon",677+ "family": "unknown",678+ "solid": false,679+ "hole": false,680+ "wide": false,681+ "long": false,682+ "short": false,683+ "double": false,684+ "color": false,685+ "high": false,686+ "low": true,687+ "tier": null,688+ "size": null,689+ "chirality": null,690+ "span": null,691+ "count": null,692+ "segment": null,693+ "bboxMin": [694+ -0.55,695+ 0,696+ -0.635085697+ ],698+ "bboxMax": [699+ 0.55,700+ 0.5,701+ 0.635085702+ ],703+ "footprint": [704+ 2,705+ 2706+ ],707+ "vertices": 84,708+ "triangles": 44709+ },710+ {711+ "id": "block-grass-low-large",712+ "family": "unknown",713+ "solid": false,714+ "hole": false,715+ "wide": false,716+ "long": false,717+ "short": false,718+ "double": false,719+ "color": false,720+ "high": false,721+ "low": true,722+ "tier": null,723+ "size": "large",724+ "chirality": null,725+ "span": null,726+ "count": null,727+ "segment": null,728+ "bboxMin": [729+ -1.041062,730+ 0,731+ -1.041062732+ ],733+ "bboxMax": [734+ 1.041062,735+ 0.5,736+ 1.041062737+ ],738+ "footprint": [739+ 3,740+ 3741+ ],742+ "vertices": 168,743+ "triangles": 92744+ },745+ {746+ "id": "block-grass-low-long",747+ "family": "unknown",748+ "solid": false,749+ "hole": false,750+ "wide": false,751+ "long": true,752+ "short": false,753+ "double": false,754+ "color": false,755+ "high": false,756+ "low": true,757+ "tier": null,758+ "size": null,759+ "chirality": null,760+ "span": null,761+ "count": null,762+ "segment": null,763+ "bboxMin": [764+ -1.041062,765+ 0,766+ -0.541062767+ ],768+ "bboxMax": [769+ 1.041062,770+ 0.5,771+ 0.541062772+ ],773+ "footprint": [774+ 3,775+ 2776+ ],777+ "vertices": 168,778+ "triangles": 92779+ },780+ {781+ "id": "block-grass-low-narrow",782+ "family": "unknown",783+ "solid": false,784+ "hole": false,785+ "wide": false,786+ "long": false,787+ "short": false,788+ "double": false,789+ "color": false,790+ "high": false,791+ "low": true,792+ "tier": null,793+ "size": null,794+ "chirality": null,795+ "span": null,796+ "count": null,797+ "segment": null,798+ "bboxMin": [799+ -0.391062,800+ 0,801+ -0.391062802+ ],803+ "bboxMax": [804+ 0.391062,805+ 0.5,806+ 0.391062807+ ],808+ "footprint": [809+ 1,810+ 1811+ ],812+ "vertices": 168,813+ "triangles": 92814+ },815+ {816+ "id": "block-grass-low",817+ "family": "unknown",818+ "solid": false,819+ "hole": false,820+ "wide": false,821+ "long": false,822+ "short": false,823+ "double": false,824+ "color": false,825+ "high": false,826+ "low": true,827+ "tier": null,828+ "size": null,829+ "chirality": null,830+ "span": null,831+ "count": null,832+ "segment": null,833+ "bboxMin": [834+ -0.541062,835+ 0,836+ -0.541062837+ ],838+ "bboxMax": [839+ 0.541062,840+ 0.5,841+ 0.541062842+ ],843+ "footprint": [844+ 2,845+ 2846+ ],847+ "vertices": 168,848+ "triangles": 92849+ },850+ {851+ "id": "block-grass-narrow",852+ "family": "unknown",853+ "solid": false,854+ "hole": false,855+ "wide": false,856+ "long": false,857+ "short": false,858+ "double": false,859+ "color": false,860+ "high": false,861+ "low": false,862+ "tier": null,863+ "size": null,864+ "chirality": null,865+ "span": null,866+ "count": null,867+ "segment": null,868+ "bboxMin": [869+ -0.391062,870+ 0,871+ -0.391062872+ ],873+ "bboxMax": [874+ 0.391062,875+ 1,876+ 0.391062877+ ],878+ "footprint": [879+ 1,880+ 1881+ ],882+ "vertices": 168,883+ "triangles": 92884+ },885+ {886+ "id": "block-grass-overhang-corner",887+ "family": "unknown",888+ "solid": false,889+ "hole": false,890+ "wide": false,891+ "long": false,892+ "short": false,893+ "double": false,894+ "color": false,895+ "high": false,896+ "low": false,897+ "tier": null,898+ "size": null,899+ "chirality": null,900+ "span": null,901+ "count": null,902+ "segment": null,903+ "bboxMin": [904+ -0.541062,905+ 0,906+ -0.541062907+ ],908+ "bboxMax": [909+ 0.541062,910+ 1,911+ 0.541062912+ ],913+ "footprint": [914+ 2,915+ 2916+ ],917+ "vertices": 220,918+ "triangles": 120919+ },920+ {921+ "id": "block-grass-overhang-edge",922+ "family": "unknown",923+ "solid": false,924+ "hole": false,925+ "wide": false,926+ "long": false,927+ "short": false,928+ "double": false,929+ "color": false,930+ "high": false,931+ "low": false,932+ "tier": null,933+ "size": null,934+ "chirality": null,935+ "span": null,936+ "count": null,937+ "segment": null,938+ "bboxMin": [939+ -0.541062,940+ 0,941+ -0.541062942+ ],943+ "bboxMax": [944+ 0.541062,945+ 1,946+ 0.541062947+ ],948+ "footprint": [949+ 2,950+ 2951+ ],952+ "vertices": 252,953+ "triangles": 140954+ },955+ {956+ "id": "block-grass-overhang-hexagon",957+ "family": "unknown",958+ "solid": false,959+ "hole": false,960+ "wide": false,961+ "long": false,962+ "short": false,963+ "double": false,964+ "color": false,965+ "high": false,966+ "low": false,967+ "tier": null,968+ "size": null,969+ "chirality": null,970+ "span": null,971+ "count": null,972+ "segment": null,973+ "bboxMin": [974+ -0.55,975+ 0,976+ -0.635085977+ ],978+ "bboxMax": [979+ 0.55,980+ 1,981+ 0.635085982+ ],983+ "footprint": [984+ 2,985+ 2986+ ],987+ "vertices": 114,988+ "triangles": 62989+ },990+ {991+ "id": "block-grass-overhang-large-slope-narrow",992+ "family": "unknown",993+ "solid": false,994+ "hole": false,995+ "wide": false,996+ "long": false,997+ "short": false,998+ "double": false,999+ "color": false,1000+ "high": false,1001+ "low": false,1002+ "tier": null,1003+ "size": "large",1004+ "chirality": null,1005+ "span": null,1006+ "count": null,1007+ "segment": null,1008+ "bboxMin": [1009+ -0.541063,1010+ 0,1011+ -1.0766891012+ ],1013+ "bboxMax": [1014+ 0.541063,1015+ 0.914356,1016+ 1.0055891017+ ],1018+ "footprint": [1019+ 2,1020+ 31021+ ],1022+ "vertices": 248,1023+ "triangles": 1421024+ },1025+ {1026+ "id": "block-grass-overhang-large-slope-steep-narrow",1027+ "family": "unknown",1028+ "solid": false,1029+ "hole": false,1030+ "wide": false,1031+ "long": false,1032+ "short": false,1033+ "double": false,1034+ "color": false,1035+ "high": false,1036+ "low": false,1037+ "tier": null,1038+ "size": "large",1039+ "chirality": null,1040+ "span": null,1041+ "count": null,1042+ "segment": null,1043+ "bboxMin": [1044+ -0.541063,1045+ 0,1046+ -1.0389411047+ ],1048+ "bboxMax": [1049+ 0.541063,1050+ 1.36669,1051+ 0.9285251052+ ],1053+ "footprint": [1054+ 2,1055+ 21056+ ],1057+ "vertices": 248,1058+ "triangles": 1421059+ },1060+ {1061+ "id": "block-grass-overhang-large-slope-steep",1062+ "family": "unknown",1063+ "solid": false,1064+ "hole": false,1065+ "wide": false,1066+ "long": false,1067+ "short": false,1068+ "double": false,1069+ "color": false,1070+ "high": false,1071+ "low": false,1072+ "tier": null,1073+ "size": "large",1074+ "chirality": null,1075+ "span": null,1076+ "count": null,1077+ "segment": null,1078+ "bboxMin": [1079+ -1.041062,1080+ 0,1081+ -1.0389411082+ ],1083+ "bboxMax": [1084+ 1.041062,1085+ 1.36669,1086+ 0.9285251087+ ],1088+ "footprint": [1089+ 3,1090+ 21091+ ],1092+ "vertices": 264,1093+ "triangles": 1541094+ },1095+ {1096+ "id": "block-grass-overhang-large-slope",1097+ "family": "unknown",1098+ "solid": false,1099+ "hole": false,1100+ "wide": false,1101+ "long": false,1102+ "short": false,1103+ "double": false,1104+ "color": false,1105+ "high": false,1106+ "low": false,1107+ "tier": null,1108+ "size": "large",1109+ "chirality": null,1110+ "span": null,1111+ "count": null,1112+ "segment": null,1113+ "bboxMin": [1114+ -1.041062,1115+ 0,1116+ -1.0784111117+ ],1118+ "bboxMax": [1119+ 1.041062,1120+ 0.914356,1121+ 1.0038671122+ ],1123+ "footprint": [1124+ 3,1125+ 31126+ ],1127+ "vertices": 264,1128+ "triangles": 1541129+ },1130+ {1131+ "id": "block-grass-overhang-large-tall",1132+ "family": "unknown",1133+ "solid": false,1134+ "hole": false,1135+ "wide": false,1136+ "long": false,1137+ "short": false,1138+ "double": false,1139+ "color": false,1140+ "high": false,1141+ "low": false,1142+ "tier": null,1143+ "size": "large",1144+ "chirality": null,1145+ "span": null,1146+ "count": null,1147+ "segment": null,1148+ "bboxMin": [1149+ -1.041062,1150+ 0,1151+ -1.0410621152+ ],1153+ "bboxMax": [1154+ 1.041062,1155+ 2,1156+ 1.0410621157+ ],1158+ "footprint": [1159+ 3,1160+ 31161+ ],1162+ "vertices": 252,1163+ "triangles": 1441164+ },1165+ {1166+ "id": "block-grass-overhang-large",1167+ "family": "unknown",1168+ "solid": false,1169+ "hole": false,1170+ "wide": false,1171+ "long": false,1172+ "short": false,1173+ "double": false,1174+ "color": false,1175+ "high": false,1176+ "low": false,1177+ "tier": null,1178+ "size": "large",1179+ "chirality": null,1180+ "span": null,1181+ "count": null,1182+ "segment": null,1183+ "bboxMin": [1184+ -1.041062,1185+ 0,1186+ -1.0410621187+ ],1188+ "bboxMax": [1189+ 1.041062,1190+ 1,1191+ 1.0410621192+ ],1193+ "footprint": [1194+ 3,1195+ 31196+ ],1197+ "vertices": 252,1198+ "triangles": 1441199+ },1200+ {1201+ "id": "block-grass-overhang-long",1202+ "family": "unknown",1203+ "solid": false,1204+ "hole": false,1205+ "wide": false,1206+ "long": true,1207+ "short": false,1208+ "double": false,1209+ "color": false,1210+ "high": false,1211+ "low": false,1212+ "tier": null,1213+ "size": null,1214+ "chirality": null,1215+ "span": null,1216+ "count": null,1217+ "segment": null,1218+ "bboxMin": [1219+ -1.041062,1220+ 0,1221+ -0.5410621222+ ],1223+ "bboxMax": [1224+ 1.041062,1225+ 1,1226+ 0.5410621227+ ],1228+ "footprint": [1229+ 3,1230+ 21231+ ],1232+ "vertices": 236,1233+ "triangles": 1321234+ },1235+ {1236+ "id": "block-grass-overhang-low-hexagon",1237+ "family": "unknown",1238+ "solid": false,1239+ "hole": false,1240+ "wide": false,1241+ "long": false,1242+ "short": false,1243+ "double": false,1244+ "color": false,1245+ "high": false,1246+ "low": true,1247+ "tier": null,1248+ "size": null,1249+ "chirality": null,1250+ "span": null,1251+ "count": null,1252+ "segment": null,1253+ "bboxMin": [1254+ -0.55,1255+ 0,1256+ -0.6350851257+ ],1258+ "bboxMax": [1259+ 0.55,1260+ 0.5,1261+ 0.6350851262+ ],1263+ "footprint": [1264+ 2,1265+ 21266+ ],1267+ "vertices": 114,1268+ "triangles": 621269+ },1270+ {1271+ "id": "block-grass-overhang-low-large",1272+ "family": "unknown",1273+ "solid": false,1274+ "hole": false,1275+ "wide": false,1276+ "long": false,1277+ "short": false,1278+ "double": false,1279+ "color": false,1280+ "high": false,1281+ "low": true,1282+ "tier": null,1283+ "size": "large",1284+ "chirality": null,1285+ "span": null,1286+ "count": null,1287+ "segment": null,1288+ "bboxMin": [1289+ -1.041062,1290+ 0,1291+ -1.0410621292+ ],1293+ "bboxMax": [1294+ 1.041062,1295+ 0.5,1296+ 1.0410621297+ ],1298+ "footprint": [1299+ 3,1300+ 31301+ ],1302+ "vertices": 252,1303+ "triangles": 1441304+ },1305+ {1306+ "id": "block-grass-overhang-low-long",1307+ "family": "unknown",1308+ "solid": false,1309+ "hole": false,1310+ "wide": false,1311+ "long": true,1312+ "short": false,1313+ "double": false,1314+ "color": false,1315+ "high": false,1316+ "low": true,1317+ "tier": null,1318+ "size": null,1319+ "chirality": null,1320+ "span": null,1321+ "count": null,1322+ "segment": null,1323+ "bboxMin": [1324+ -1.041062,1325+ 0,1326+ -0.5410621327+ ],1328+ "bboxMax": [1329+ 1.041062,1330+ 0.5,1331+ 0.5410621332+ ],1333+ "footprint": [1334+ 3,1335+ 21336+ ],1337+ "vertices": 236,1338+ "triangles": 1321339+ },1340+ {1341+ "id": "block-grass-overhang-low-narrow",1342+ "family": "unknown",1343+ "solid": false,1344+ "hole": false,1345+ "wide": false,1346+ "long": false,1347+ "short": false,1348+ "double": false,1349+ "color": false,1350+ "high": false,1351+ "low": true,1352+ "tier": null,1353+ "size": null,1354+ "chirality": null,1355+ "span": null,1356+ "count": null,1357+ "segment": null,1358+ "bboxMin": [1359+ -0.391063,1360+ 0,1361+ -0.3910621362+ ],1363+ "bboxMax": [1364+ 0.391063,1365+ 0.5,1366+ 0.3910631367+ ],1368+ "footprint": [1369+ 1,1370+ 11371+ ],1372+ "vertices": 220,1373+ "triangles": 1201374+ },1375+ {1376+ "id": "block-grass-overhang-low",1377+ "family": "unknown",1378+ "solid": false,1379+ "hole": false,1380+ "wide": false,1381+ "long": false,1382+ "short": false,1383+ "double": false,1384+ "color": false,1385+ "high": false,1386+ "low": true,1387+ "tier": null,1388+ "size": null,1389+ "chirality": null,1390+ "span": null,1391+ "count": null,1392+ "segment": null,1393+ "bboxMin": [1394+ -0.541062,1395+ 0,1396+ -0.5410621397+ ],1398+ "bboxMax": [1399+ 0.541062,1400+ 0.5,1401+ 0.5410621402+ ],1403+ "footprint": [1404+ 2,1405+ 21406+ ],1407+ "vertices": 220,1408+ "triangles": 1201409+ },1410+ {1411+ "id": "block-grass-overhang-narrow",1412+ "family": "unknown",1413+ "solid": false,1414+ "hole": false,1415+ "wide": false,1416+ "long": false,1417+ "short": false,1418+ "double": false,1419+ "color": false,1420+ "high": false,1421+ "low": false,1422+ "tier": null,1423+ "size": null,1424+ "chirality": null,1425+ "span": null,1426+ "count": null,1427+ "segment": null,1428+ "bboxMin": [1429+ -0.391063,1430+ 0,1431+ -0.3910621432+ ],1433+ "bboxMax": [1434+ 0.391063,1435+ 1,1436+ 0.3910631437+ ],1438+ "footprint": [1439+ 1,1440+ 11441+ ],1442+ "vertices": 220,1443+ "triangles": 1201444+ },1445+ {1446+ "id": "block-grass",1447+ "family": "unknown",1448+ "solid": false,1449+ "hole": false,1450+ "wide": false,1451+ "long": false,1452+ "short": false,1453+ "double": false,1454+ "color": false,1455+ "high": false,1456+ "low": false,1457+ "tier": null,1458+ "size": null,1459+ "chirality": null,1460+ "span": null,1461+ "count": null,1462+ "segment": null,1463+ "bboxMin": [1464+ -0.541062,1465+ 0,1466+ -0.5410621467+ ],1468+ "bboxMax": [1469+ 0.541062,1470+ 1,1471+ 0.5410621472+ ],1473+ "footprint": [1474+ 2,1475+ 21476+ ],1477+ "vertices": 168,1478+ "triangles": 921479+ },1480+ {1481+ "id": "block-moving-blue",1482+ "family": "unknown",1483+ "solid": false,1484+ "hole": false,1485+ "wide": false,1486+ "long": false,1487+ "short": false,1488+ "double": false,1489+ "color": false,1490+ "high": false,1491+ "low": false,1492+ "tier": null,1493+ "size": null,1494+ "chirality": null,1495+ "span": null,1496+ "count": null,1497+ "segment": null,1498+ "bboxMin": [1499+ -0.5,1500+ 0,1501+ -0.51502+ ],1503+ "bboxMax": [1504+ 0.5,1505+ 0.5,1506+ 0.51507+ ],1508+ "footprint": [1509+ 1,1510+ 11511+ ],1512+ "vertices": 416,1513+ "triangles": 2561514+ },1515+ {1516+ "id": "block-moving-large",1517+ "family": "unknown",1518+ "solid": false,1519+ "hole": false,1520+ "wide": false,1521+ "long": false,1522+ "short": false,1523+ "double": false,1524+ "color": false,1525+ "high": false,1526+ "low": false,1527+ "tier": null,1528+ "size": "large",1529+ "chirality": null,1530+ "span": null,1531+ "count": null,1532+ "segment": null,1533+ "bboxMin": [1534+ -0.5,1535+ 0,1536+ -0.51537+ ],1538+ "bboxMax": [1539+ 0.5,1540+ 0.5,1541+ 0.51542+ ],1543+ "footprint": [1544+ 1,1545+ 11546+ ],1547+ "vertices": 216,1548+ "triangles": 1361549+ },1550+ {1551+ "id": "block-moving",1552+ "family": "unknown",1553+ "solid": false,1554+ "hole": false,1555+ "wide": false,1556+ "long": false,1557+ "short": false,1558+ "double": false,1559+ "color": false,1560+ "high": false,1561+ "low": false,1562+ "tier": null,1563+ "size": null,1564+ "chirality": null,1565+ "span": null,1566+ "count": null,1567+ "segment": null,1568+ "bboxMin": [1569+ -0.5,1570+ 0,1571+ -0.51572+ ],1573+ "bboxMax": [1574+ 0.5,1575+ 0.3,1576+ 0.51577+ ],1578+ "footprint": [1579+ 1,1580+ 11581+ ],1582+ "vertices": 216,1583+ "triangles": 1361584+ },1585+ {1586+ "id": "block-snow-corner-low",1587+ "family": "unknown",1588+ "solid": false,1589+ "hole": false,1590+ "wide": false,1591+ "long": false,1592+ "short": false,1593+ "double": false,1594+ "color": false,1595+ "high": false,1596+ "low": true,1597+ "tier": null,1598+ "size": null,1599+ "chirality": null,1600+ "span": null,1601+ "count": null,1602+ "segment": null,1603+ "bboxMin": [1604+ -0.527218,1605+ 0,1606+ -0.5272181607+ ],1608+ "bboxMax": [1609+ 0.527218,1610+ 0.5,1611+ 0.5272181612+ ],1613+ "footprint": [1614+ 2,1615+ 21616+ ],1617+ "vertices": 154,1618+ "triangles": 841619+ },1620+ {1621+ "id": "block-snow-corner-overhang-low",1622+ "family": "unknown",1623+ "solid": false,1624+ "hole": false,1625+ "wide": false,1626+ "long": false,1627+ "short": false,1628+ "double": false,1629+ "color": false,1630+ "high": false,1631+ "low": true,1632+ "tier": null,1633+ "size": null,1634+ "chirality": null,1635+ "span": null,1636+ "count": null,1637+ "segment": null,1638+ "bboxMin": [1639+ -0.527218,1640+ 0,1641+ -0.5272181642+ ],1643+ "bboxMax": [1644+ 0.527218,1645+ 0.5,1646+ 0.5272181647+ ],1648+ "footprint": [1649+ 2,1650+ 21651+ ],1652+ "vertices": 182,1653+ "triangles": 1041654+ },1655+ {1656+ "id": "block-snow-corner-overhang",1657+ "family": "unknown",1658+ "solid": false,1659+ "hole": false,1660+ "wide": false,1661+ "long": false,1662+ "short": false,1663+ "double": false,1664+ "color": false,1665+ "high": false,1666+ "low": false,1667+ "tier": null,1668+ "size": null,1669+ "chirality": null,1670+ "span": null,1671+ "count": null,1672+ "segment": null,1673+ "bboxMin": [1674+ -0.527218,1675+ 0,1676+ -0.5272181677+ ],1678+ "bboxMax": [1679+ 0.527218,1680+ 1,1681+ 0.5272181682+ ],1683+ "footprint": [1684+ 2,1685+ 21686+ ],1687+ "vertices": 182,1688+ "triangles": 1041689+ },1690+ {1691+ "id": "block-snow-corner",1692+ "family": "unknown",1693+ "solid": false,1694+ "hole": false,1695+ "wide": false,1696+ "long": false,1697+ "short": false,1698+ "double": false,1699+ "color": false,1700+ "high": false,1701+ "low": false,1702+ "tier": null,1703+ "size": null,1704+ "chirality": null,1705+ "span": null,1706+ "count": null,1707+ "segment": null,1708+ "bboxMin": [1709+ -0.527218,1710+ 0,1711+ -0.5272181712+ ],1713+ "bboxMax": [1714+ 0.527218,1715+ 1,1716+ 0.5272181717+ ],1718+ "footprint": [1719+ 2,1720+ 21721+ ],1722+ "vertices": 154,1723+ "triangles": 841724+ },1725+ {1726+ "id": "block-snow-curve-half",1727+ "family": "unknown",1728+ "solid": false,1729+ "hole": false,1730+ "wide": false,1731+ "long": false,1732+ "short": false,1733+ "double": false,1734+ "color": false,1735+ "high": false,1736+ "low": false,1737+ "tier": null,1738+ "size": null,1739+ "chirality": null,1740+ "span": null,1741+ "count": null,1742+ "segment": null,1743+ "bboxMin": [1744+ -1,1745+ 0,1746+ 01747+ ],1748+ "bboxMax": [1749+ 0,1750+ 1,1751+ 11752+ ],1753+ "footprint": [1754+ 1,1755+ 11756+ ],1757+ "vertices": 186,1758+ "triangles": 1121759+ },1760+ {1761+ "id": "block-snow-curve-low",1762+ "family": "unknown",1763+ "solid": false,1764+ "hole": false,1765+ "wide": false,1766+ "long": false,1767+ "short": false,1768+ "double": false,1769+ "color": false,1770+ "high": false,1771+ "low": true,1772+ "tier": null,1773+ "size": null,1774+ "chirality": null,1775+ "span": null,1776+ "count": null,1777+ "segment": null,1778+ "bboxMin": [1779+ -1,1780+ 0,1781+ -0.51782+ ],1783+ "bboxMax": [1784+ 1,1785+ 0.5,1786+ 0.51787+ ],1788+ "footprint": [1789+ 2,1790+ 11791+ ],1792+ "vertices": 246,1793+ "triangles": 1561794+ },1795+ {1796+ "id": "block-snow-curve",1797+ "family": "unknown",1798+ "solid": false,1799+ "hole": false,1800+ "wide": false,1801+ "long": false,1802+ "short": false,1803+ "double": false,1804+ "color": false,1805+ "high": false,1806+ "low": false,1807+ "tier": null,1808+ "size": null,1809+ "chirality": null,1810+ "span": null,1811+ "count": null,1812+ "segment": null,1813+ "bboxMin": [1814+ -1,1815+ 0,1816+ -0.51817+ ],1818+ "bboxMax": [1819+ 1,1820+ 1,1821+ 0.51822+ ],1823+ "footprint": [1824+ 2,1825+ 11826+ ],1827+ "vertices": 334,1828+ "triangles": 2041829+ },1830+ {1831+ "id": "block-snow-edge",1832+ "family": "unknown",1833+ "solid": false,1834+ "hole": false,1835+ "wide": false,1836+ "long": false,1837+ "short": false,1838+ "double": false,1839+ "color": false,1840+ "high": false,1841+ "low": false,1842+ "tier": null,1843+ "size": null,1844+ "chirality": null,1845+ "span": null,1846+ "count": null,1847+ "segment": null,1848+ "bboxMin": [1849+ -0.541062,1850+ 0,1851+ -0.5410621852+ ],1853+ "bboxMax": [1854+ 0.541062,1855+ 1,1856+ 0.5410621857+ ],1858+ "footprint": [1859+ 2,1860+ 21861+ ],1862+ "vertices": 200,1863+ "triangles": 1121864+ },1865+ {1866+ "id": "block-snow-hexagon",1867+ "family": "unknown",1868+ "solid": false,1869+ "hole": false,1870+ "wide": false,1871+ "long": false,1872+ "short": false,1873+ "double": false,1874+ "color": false,1875+ "high": false,1876+ "low": false,1877+ "tier": null,1878+ "size": null,1879+ "chirality": null,1880+ "span": null,1881+ "count": null,1882+ "segment": null,1883+ "bboxMin": [1884+ -0.55,1885+ 0,1886+ -0.6350851887+ ],1888+ "bboxMax": [1889+ 0.55,1890+ 1,1891+ 0.6350851892+ ],1893+ "footprint": [1894+ 2,1895+ 21896+ ],1897+ "vertices": 84,1898+ "triangles": 441899+ },1900+ {1901+ "id": "block-snow-large-slope-narrow",1902+ "family": "unknown",1903+ "solid": false,1904+ "hole": false,1905+ "wide": false,1906+ "long": false,1907+ "short": false,1908+ "double": false,1909+ "color": false,1910+ "high": false,1911+ "low": false,1912+ "tier": null,1913+ "size": "large",1914+ "chirality": null,1915+ "span": null,1916+ "count": null,1917+ "segment": null,1918+ "bboxMin": [1919+ -0.541062,1920+ 0,1921+ -1.0055891922+ ],1923+ "bboxMax": [1924+ 0.541062,1925+ 0.75912,1926+ 1.0055891927+ ],1928+ "footprint": [1929+ 2,1930+ 31931+ ],1932+ "vertices": 180,1933+ "triangles": 1021934+ },1935+ {1936+ "id": "block-snow-large-slope-steep-narrow",1937+ "family": "unknown",1938+ "solid": false,1939+ "hole": false,1940+ "wide": false,1941+ "long": false,1942+ "short": false,1943+ "double": false,1944+ "color": false,1945+ "high": false,1946+ "low": false,1947+ "tier": null,1948+ "size": "large",1949+ "chirality": null,1950+ "span": null,1951+ "count": null,1952+ "segment": null,1953+ "bboxMin": [1954+ -0.541062,1955+ 0,1956+ -0.9285251957+ ],1958+ "bboxMax": [1959+ 0.541062,1960+ 1.216506,1961+ 0.9285251962+ ],1963+ "footprint": [1964+ 2,1965+ 21966+ ],1967+ "vertices": 180,1968+ "triangles": 1021969+ },1970+ {1971+ "id": "block-snow-large-slope-steep",1972+ "family": "unknown",1973+ "solid": false,1974+ "hole": false,1975+ "wide": false,1976+ "long": false,1977+ "short": false,1978+ "double": false,1979+ "color": false,1980+ "high": false,1981+ "low": false,1982+ "tier": null,1983+ "size": "large",1984+ "chirality": null,1985+ "span": null,1986+ "count": null,1987+ "segment": null,1988+ "bboxMin": [1989+ -1.041062,1990+ 0,1991+ -0.9285251992+ ],1993+ "bboxMax": [1994+ 1.041062,1995+ 1.216507,1996+ 0.9285251997+ ],1998+ "footprint": [1999+ 3,2000+ 22001+ ],2002+ "vertices": 180,2003+ "triangles": 1022004+ },2005+ {2006+ "id": "block-snow-large-slope",2007+ "family": "unknown",2008+ "solid": false,2009+ "hole": false,2010+ "wide": false,2011+ "long": false,2012+ "short": false,2013+ "double": false,2014+ "color": false,2015+ "high": false,2016+ "low": false,2017+ "tier": null,2018+ "size": "large",2019+ "chirality": null,2020+ "span": null,2021+ "count": null,2022+ "segment": null,2023+ "bboxMin": [2024+ -1.041062,2025+ 0,2026+ -1.0073112027+ ],2028+ "bboxMax": [2029+ 1.041062,2030+ 0.75912,2031+ 1.0038672032+ ],2033+ "footprint": [2034+ 3,2035+ 32036+ ],2037+ "vertices": 180,2038+ "triangles": 1022039+ },2040+ {2041+ "id": "block-snow-large-tall",2042+ "family": "unknown",2043+ "solid": false,2044+ "hole": false,2045+ "wide": false,2046+ "long": false,2047+ "short": false,2048+ "double": false,2049+ "color": false,2050+ "high": false,2051+ "low": false,2052+ "tier": null,2053+ "size": "large",2054+ "chirality": null,2055+ "span": null,2056+ "count": null,2057+ "segment": null,2058+ "bboxMin": [2059+ -1.041062,2060+ 0,2061+ -1.0410622062+ ],2063+ "bboxMax": [2064+ 1.041062,2065+ 2,2066+ 1.0410622067+ ],2068+ "footprint": [2069+ 3,2070+ 32071+ ],2072+ "vertices": 168,2073+ "triangles": 922074+ },2075+ {2076+ "id": "block-snow-large",2077+ "family": "unknown",2078+ "solid": false,2079+ "hole": false,2080+ "wide": false,2081+ "long": false,2082+ "short": false,2083+ "double": false,2084+ "color": false,2085+ "high": false,2086+ "low": false,2087+ "tier": null,2088+ "size": "large",2089+ "chirality": null,2090+ "span": null,2091+ "count": null,2092+ "segment": null,2093+ "bboxMin": [2094+ -1.041062,2095+ 0,2096+ -1.0410622097+ ],2098+ "bboxMax": [2099+ 1.041062,2100+ 1,2101+ 1.0410622102+ ],2103+ "footprint": [2104+ 3,2105+ 32106+ ],2107+ "vertices": 168,2108+ "triangles": 922109+ },2110+ {2111+ "id": "block-snow-long",2112+ "family": "unknown",2113+ "solid": false,2114+ "hole": false,2115+ "wide": false,2116+ "long": true,2117+ "short": false,2118+ "double": false,2119+ "color": false,2120+ "high": false,2121+ "low": false,2122+ "tier": null,2123+ "size": null,2124+ "chirality": null,2125+ "span": null,2126+ "count": null,2127+ "segment": null,2128+ "bboxMin": [2129+ -1.041062,2130+ 0,2131+ -0.5410622132+ ],2133+ "bboxMax": [2134+ 1.041062,2135+ 1,2136+ 0.5410622137+ ],2138+ "footprint": [2139+ 3,2140+ 22141+ ],2142+ "vertices": 168,2143+ "triangles": 922144+ },2145+ {2146+ "id": "block-snow-low-hexagon",2147+ "family": "unknown",2148+ "solid": false,2149+ "hole": false,2150+ "wide": false,2151+ "long": false,2152+ "short": false,2153+ "double": false,2154+ "color": false,2155+ "high": false,2156+ "low": true,2157+ "tier": null,2158+ "size": null,2159+ "chirality": null,2160+ "span": null,2161+ "count": null,2162+ "segment": null,2163+ "bboxMin": [2164+ -0.55,2165+ 0,2166+ -0.6350852167+ ],2168+ "bboxMax": [2169+ 0.55,2170+ 0.5,2171+ 0.6350852172+ ],2173+ "footprint": [2174+ 2,2175+ 22176+ ],2177+ "vertices": 84,2178+ "triangles": 442179+ },2180+ {2181+ "id": "block-snow-low-large",2182+ "family": "unknown",2183+ "solid": false,2184+ "hole": false,2185+ "wide": false,2186+ "long": false,2187+ "short": false,2188+ "double": false,2189+ "color": false,2190+ "high": false,2191+ "low": true,2192+ "tier": null,2193+ "size": "large",2194+ "chirality": null,2195+ "span": null,2196+ "count": null,2197+ "segment": null,2198+ "bboxMin": [2199+ -1.041062,2200+ 0,2201+ -1.0410622202+ ],2203+ "bboxMax": [2204+ 1.041062,2205+ 0.5,2206+ 1.0410622207+ ],2208+ "footprint": [2209+ 3,2210+ 32211+ ],2212+ "vertices": 168,2213+ "triangles": 922214+ },2215+ {2216+ "id": "block-snow-low-long",2217+ "family": "unknown",2218+ "solid": false,2219+ "hole": false,2220+ "wide": false,2221+ "long": true,2222+ "short": false,2223+ "double": false,2224+ "color": false,2225+ "high": false,2226+ "low": true,2227+ "tier": null,2228+ "size": null,2229+ "chirality": null,2230+ "span": null,2231+ "count": null,2232+ "segment": null,2233+ "bboxMin": [2234+ -1.041062,2235+ 0,2236+ -0.5410622237+ ],2238+ "bboxMax": [2239+ 1.041062,2240+ 0.5,2241+ 0.5410622242+ ],2243+ "footprint": [2244+ 3,2245+ 22246+ ],2247+ "vertices": 168,2248+ "triangles": 922249+ },2250+ {2251+ "id": "block-snow-low-narrow",2252+ "family": "unknown",2253+ "solid": false,2254+ "hole": false,2255+ "wide": false,2256+ "long": false,2257+ "short": false,2258+ "double": false,2259+ "color": false,2260+ "high": false,2261+ "low": true,2262+ "tier": null,2263+ "size": null,2264+ "chirality": null,2265+ "span": null,2266+ "count": null,2267+ "segment": null,2268+ "bboxMin": [2269+ -0.391062,2270+ 0,2271+ -0.3910622272+ ],2273+ "bboxMax": [2274+ 0.391062,2275+ 0.5,2276+ 0.3910622277+ ],2278+ "footprint": [2279+ 1,2280+ 12281+ ],2282+ "vertices": 168,2283+ "triangles": 922284+ },2285+ {2286+ "id": "block-snow-low",2287+ "family": "unknown",2288+ "solid": false,2289+ "hole": false,2290+ "wide": false,2291+ "long": false,2292+ "short": false,2293+ "double": false,2294+ "color": false,2295+ "high": false,2296+ "low": true,2297+ "tier": null,2298+ "size": null,2299+ "chirality": null,2300+ "span": null,2301+ "count": null,2302+ "segment": null,2303+ "bboxMin": [2304+ -0.541062,2305+ 0,2306+ -0.5410622307+ ],2308+ "bboxMax": [2309+ 0.541062,2310+ 0.5,2311+ 0.5410622312+ ],2313+ "footprint": [2314+ 2,2315+ 22316+ ],2317+ "vertices": 168,2318+ "triangles": 922319+ },2320+ {2321+ "id": "block-snow-narrow",2322+ "family": "unknown",2323+ "solid": false,2324+ "hole": false,2325+ "wide": false,2326+ "long": false,2327+ "short": false,2328+ "double": false,2329+ "color": false,2330+ "high": false,2331+ "low": false,2332+ "tier": null,2333+ "size": null,2334+ "chirality": null,2335+ "span": null,2336+ "count": null,2337+ "segment": null,2338+ "bboxMin": [2339+ -0.391062,2340+ 0,2341+ -0.3910622342+ ],2343+ "bboxMax": [2344+ 0.391062,2345+ 1,2346+ 0.3910622347+ ],2348+ "footprint": [2349+ 1,2350+ 12351+ ],2352+ "vertices": 168,2353+ "triangles": 922354+ },2355+ {2356+ "id": "block-snow-overhang-corner",2357+ "family": "unknown",2358+ "solid": false,2359+ "hole": false,2360+ "wide": false,2361+ "long": false,2362+ "short": false,2363+ "double": false,2364+ "color": false,2365+ "high": false,2366+ "low": false,2367+ "tier": null,2368+ "size": null,2369+ "chirality": null,2370+ "span": null,2371+ "count": null,2372+ "segment": null,2373+ "bboxMin": [2374+ -0.541062,2375+ 0,2376+ -0.5410622377+ ],2378+ "bboxMax": [2379+ 0.541062,2380+ 1,2381+ 0.5410622382+ ],2383+ "footprint": [2384+ 2,2385+ 22386+ ],2387+ "vertices": 196,2388+ "triangles": 1122389+ },2390+ {2391+ "id": "block-snow-overhang-edge",2392+ "family": "unknown",2393+ "solid": false,2394+ "hole": false,2395+ "wide": false,2396+ "long": false,2397+ "short": false,2398+ "double": false,2399+ "color": false,2400+ "high": false,2401+ "low": false,2402+ "tier": null,2403+ "size": null,2404+ "chirality": null,2405+ "span": null,2406+ "count": null,2407+ "segment": null,2408+ "bboxMin": [2409+ -0.541062,2410+ 0,2411+ -0.5410622412+ ],2413+ "bboxMax": [2414+ 0.541062,2415+ 1,2416+ 0.5410622417+ ],2418+ "footprint": [2419+ 2,2420+ 22421+ ],2422+ "vertices": 228,2423+ "triangles": 1322424+ },2425+ {2426+ "id": "block-snow-overhang-hexagon",2427+ "family": "unknown",2428+ "solid": false,2429+ "hole": false,2430+ "wide": false,2431+ "long": false,2432+ "short": false,2433+ "double": false,2434+ "color": false,2435+ "high": false,2436+ "low": false,2437+ "tier": null,2438+ "size": null,2439+ "chirality": null,2440+ "span": null,2441+ "count": null,2442+ "segment": null,2443+ "bboxMin": [2444+ -0.55,2445+ 0,2446+ -0.6350852447+ ],2448+ "bboxMax": [2449+ 0.55,2450+ 1,2451+ 0.6350852452+ ],2453+ "footprint": [2454+ 2,2455+ 22456+ ],2457+ "vertices": 112,2458+ "triangles": 642459+ },2460+ {2461+ "id": "block-snow-overhang-large-slope-narrow",2462+ "family": "unknown",2463+ "solid": false,2464+ "hole": false,2465+ "wide": false,2466+ "long": false,2467+ "short": false,2468+ "double": false,2469+ "color": false,2470+ "high": false,2471+ "low": false,2472+ "tier": null,2473+ "size": "large",2474+ "chirality": null,2475+ "span": null,2476+ "count": null,2477+ "segment": null,2478+ "bboxMin": [2479+ -0.541063,2480+ 0,2481+ -1.0055892482+ ],2483+ "bboxMax": [2484+ 0.541063,2485+ 0.7751,2486+ 1.0055892487+ ],2488+ "footprint": [2489+ 2,2490+ 32491+ ],2492+ "vertices": 222,2493+ "triangles": 1322494+ },2495+ {2496+ "id": "block-snow-overhang-large-slope-steep-narrow",2497+ "family": "unknown",2498+ "solid": false,2499+ "hole": false,2500+ "wide": false,2501+ "long": false,2502+ "short": false,2503+ "double": false,2504+ "color": false,2505+ "high": false,2506+ "low": false,2507+ "tier": null,2508+ "size": "large",2509+ "chirality": null,2510+ "span": null,2511+ "count": null,2512+ "segment": null,2513+ "bboxMin": [2514+ -0.541063,2515+ 0,2516+ -0.9285252517+ ],2518+ "bboxMax": [2519+ 0.541063,2520+ 1.216506,2521+ 0.9285252522+ ],2523+ "footprint": [2524+ 2,2525+ 22526+ ],2527+ "vertices": 222,2528+ "triangles": 1322529+ },2530+ {2531+ "id": "block-snow-overhang-large-slope-steep",2532+ "family": "unknown",2533+ "solid": false,2534+ "hole": false,2535+ "wide": false,2536+ "long": false,2537+ "short": false,2538+ "double": false,2539+ "color": false,2540+ "high": false,2541+ "low": false,2542+ "tier": null,2543+ "size": "large",2544+ "chirality": null,2545+ "span": null,2546+ "count": null,2547+ "segment": null,2548+ "bboxMin": [2549+ -1.041062,2550+ 0,2551+ -1.0389412552+ ],2553+ "bboxMax": [2554+ 1.041062,2555+ 1.36669,2556+ 0.9285252557+ ],2558+ "footprint": [2559+ 3,2560+ 22561+ ],2562+ "vertices": 264,2563+ "triangles": 1622564+ },2565+ {2566+ "id": "block-snow-overhang-large-slope",2567+ "family": "unknown",2568+ "solid": false,2569+ "hole": false,2570+ "wide": false,2571+ "long": false,2572+ "short": false,2573+ "double": false,2574+ "color": false,2575+ "high": false,2576+ "low": false,2577+ "tier": null,2578+ "size": "large",2579+ "chirality": null,2580+ "span": null,2581+ "count": null,2582+ "segment": null,2583+ "bboxMin": [2584+ -1.041062,2585+ 0,2586+ -1.0784112587+ ],2588+ "bboxMax": [2589+ 1.041062,2590+ 0.914356,2591+ 1.0038672592+ ],2593+ "footprint": [2594+ 3,2595+ 32596+ ],2597+ "vertices": 264,2598+ "triangles": 1622599+ },2600+ {2601+ "id": "block-snow-overhang-large-tall",2602+ "family": "unknown",2603+ "solid": false,2604+ "hole": false,2605+ "wide": false,2606+ "long": false,2607+ "short": false,2608+ "double": false,2609+ "color": false,2610+ "high": false,2611+ "low": false,2612+ "tier": null,2613+ "size": "large",2614+ "chirality": null,2615+ "span": null,2616+ "count": null,2617+ "segment": null,2618+ "bboxMin": [2619+ -1.041062,2620+ 0,2621+ -1.0410622622+ ],2623+ "bboxMax": [2624+ 1.041062,2625+ 2,2626+ 1.0410622627+ ],2628+ "footprint": [2629+ 3,2630+ 32631+ ],2632+ "vertices": 252,2633+ "triangles": 1522634+ },2635+ {2636+ "id": "block-snow-overhang-large",2637+ "family": "unknown",2638+ "solid": false,2639+ "hole": false,2640+ "wide": false,2641+ "long": false,2642+ "short": false,2643+ "double": false,2644+ "color": false,2645+ "high": false,2646+ "low": false,2647+ "tier": null,2648+ "size": "large",2649+ "chirality": null,2650+ "span": null,2651+ "count": null,2652+ "segment": null,2653+ "bboxMin": [2654+ -1.041062,2655+ 0,2656+ -1.0410622657+ ],2658+ "bboxMax": [2659+ 1.041062,2660+ 1,2661+ 1.0410622662+ ],2663+ "footprint": [2664+ 3,2665+ 32666+ ],2667+ "vertices": 252,2668+ "triangles": 1522669+ },2670+ {2671+ "id": "block-snow-overhang-long",2672+ "family": "unknown",2673+ "solid": false,2674+ "hole": false,2675+ "wide": false,2676+ "long": true,2677+ "short": false,2678+ "double": false,2679+ "color": false,2680+ "high": false,2681+ "low": false,2682+ "tier": null,2683+ "size": null,2684+ "chirality": null,2685+ "span": null,2686+ "count": null,2687+ "segment": null,2688+ "bboxMin": [2689+ -1.041062,2690+ 0,2691+ -0.5410622692+ ],2693+ "bboxMax": [2694+ 1.041062,2695+ 1,2696+ 0.5410622697+ ],2698+ "footprint": [2699+ 3,2700+ 22701+ ],2702+ "vertices": 210,2703+ "triangles": 1222704+ },2705+ {2706+ "id": "block-snow-overhang-low-hexagon",2707+ "family": "unknown",2708+ "solid": false,2709+ "hole": false,2710+ "wide": false,2711+ "long": false,2712+ "short": false,2713+ "double": false,2714+ "color": false,2715+ "high": false,2716+ "low": true,2717+ "tier": null,2718+ "size": null,2719+ "chirality": null,2720+ "span": null,2721+ "count": null,2722+ "segment": null,2723+ "bboxMin": [2724+ -0.55,2725+ 0,2726+ -0.6350852727+ ],2728+ "bboxMax": [2729+ 0.55,2730+ 0.5,2731+ 0.6350852732+ ],2733+ "footprint": [2734+ 2,2735+ 22736+ ],2737+ "vertices": 112,2738+ "triangles": 642739+ },2740+ {2741+ "id": "block-snow-overhang-low-large",2742+ "family": "unknown",2743+ "solid": false,2744+ "hole": false,2745+ "wide": false,2746+ "long": false,2747+ "short": false,2748+ "double": false,2749+ "color": false,2750+ "high": false,2751+ "low": true,2752+ "tier": null,2753+ "size": "large",2754+ "chirality": null,2755+ "span": null,2756+ "count": null,2757+ "segment": null,2758+ "bboxMin": [2759+ -1.041062,2760+ 0,2761+ -1.0410622762+ ],2763+ "bboxMax": [2764+ 1.041062,2765+ 0.5,2766+ 1.0410622767+ ],2768+ "footprint": [2769+ 3,2770+ 32771+ ],2772+ "vertices": 252,2773+ "triangles": 1522774+ },2775+ {2776+ "id": "block-snow-overhang-low-long",2777+ "family": "unknown",2778+ "solid": false,2779+ "hole": false,2780+ "wide": false,2781+ "long": true,2782+ "short": false,2783+ "double": false,2784+ "color": false,2785+ "high": false,2786+ "low": true,2787+ "tier": null,2788+ "size": null,2789+ "chirality": null,2790+ "span": null,2791+ "count": null,2792+ "segment": null,2793+ "bboxMin": [2794+ -1.041062,2795+ 0,2796+ -0.5410622797+ ],2798+ "bboxMax": [2799+ 1.041062,2800+ 0.5,2801+ 0.5410622802+ ],2803+ "footprint": [2804+ 3,2805+ 22806+ ],2807+ "vertices": 210,2808+ "triangles": 1222809+ },2810+ {2811+ "id": "block-snow-overhang-low-narrow",2812+ "family": "unknown",2813+ "solid": false,2814+ "hole": false,2815+ "wide": false,2816+ "long": false,2817+ "short": false,2818+ "double": false,2819+ "color": false,2820+ "high": false,2821+ "low": true,2822+ "tier": null,2823+ "size": null,2824+ "chirality": null,2825+ "span": null,2826+ "count": null,2827+ "segment": null,2828+ "bboxMin": [2829+ -0.391063,2830+ 0,2831+ -0.3910622832+ ],2833+ "bboxMax": [2834+ 0.391063,2835+ 0.5,2836+ 0.3910632837+ ],2838+ "footprint": [2839+ 1,2840+ 12841+ ],2842+ "vertices": 188,2843+ "triangles": 1042844+ },2845+ {2846+ "id": "block-snow-overhang-low",2847+ "family": "unknown",2848+ "solid": false,2849+ "hole": false,2850+ "wide": false,2851+ "long": false,2852+ "short": false,2853+ "double": false,2854+ "color": false,2855+ "high": false,2856+ "low": true,2857+ "tier": null,2858+ "size": null,2859+ "chirality": null,2860+ "span": null,2861+ "count": null,2862+ "segment": null,2863+ "bboxMin": [2864+ -0.541062,2865+ 0,2866+ -0.5410622867+ ],2868+ "bboxMax": [2869+ 0.541062,2870+ 0.5,2871+ 0.5410622872+ ],2873+ "footprint": [2874+ 2,2875+ 22876+ ],2877+ "vertices": 196,2878+ "triangles": 1122879+ },2880+ {2881+ "id": "block-snow-overhang-narrow",2882+ "family": "unknown",2883+ "solid": false,2884+ "hole": false,2885+ "wide": false,2886+ "long": false,2887+ "short": false,2888+ "double": false,2889+ "color": false,2890+ "high": false,2891+ "low": false,2892+ "tier": null,2893+ "size": null,2894+ "chirality": null,2895+ "span": null,2896+ "count": null,2897+ "segment": null,2898+ "bboxMin": [2899+ -0.391063,2900+ 0,2901+ -0.3910622902+ ],2903+ "bboxMax": [2904+ 0.391063,2905+ 1,2906+ 0.3910632907+ ],2908+ "footprint": [2909+ 1,2910+ 12911+ ],2912+ "vertices": 188,2913+ "triangles": 1042914+ },2915+ {2916+ "id": "block-snow",2917+ "family": "unknown",2918+ "solid": false,2919+ "hole": false,2920+ "wide": false,2921+ "long": false,2922+ "short": false,2923+ "double": false,2924+ "color": false,2925+ "high": false,2926+ "low": false,2927+ "tier": null,2928+ "size": null,2929+ "chirality": null,2930+ "span": null,2931+ "count": null,2932+ "segment": null,2933+ "bboxMin": [2934+ -0.541062,2935+ 0,2936+ -0.5410622937+ ],2938+ "bboxMax": [2939+ 0.541062,2940+ 1,2941+ 0.5410622942+ ],2943+ "footprint": [2944+ 2,2945+ 22946+ ],2947+ "vertices": 168,2948+ "triangles": 922949+ },2950+ {2951+ "id": "bomb",2952+ "family": "unknown",2953+ "solid": false,2954+ "hole": false,2955+ "wide": false,2956+ "long": false,2957+ "short": false,2958+ "double": false,2959+ "color": false,2960+ "high": false,2961+ "low": false,2962+ "tier": null,2963+ "size": null,2964+ "chirality": null,2965+ "span": null,2966+ "count": null,2967+ "segment": null,2968+ "bboxMin": [2969+ -0.246591,2970+ 0,2971+ -0.2465912972+ ],2973+ "bboxMax": [2974+ 0.246591,2975+ 0.542029,2976+ 0.2465912977+ ],2978+ "footprint": [2979+ 1,2980+ 12981+ ],2982+ "vertices": 292,2983+ "triangles": 1482984+ },2985+ {2986+ "id": "brick",2987+ "family": "unknown",2988+ "solid": false,2989+ "hole": false,2990+ "wide": false,2991+ "long": false,2992+ "short": false,2993+ "double": false,2994+ "color": false,2995+ "high": false,2996+ "low": false,2997+ "tier": null,2998+ "size": null,2999+ "chirality": null,3000+ "span": null,diff truncated
@@ -23,6 +23,8 @@ export const DECOR_PACKS = [
2323 "survival-kit",2424 // M18b void decor.2525 "space-kit",26+ // Island mass families (block voxel bodies).27+ "platformer-kit",2628 ] as const;2729 2830 export interface Assets {@@ -256,7 +256,11 @@ export function buildIslandInstanced(
256256 continue;257257 }258258 const isBlock = pieceId.includes("cliff_block");259- const isCap = !isBlock && pieceId.includes("ground_");259+ // Block mass families (Platformer voxels): occluders like cliff260+ // masses, but their tops/sides are PRE-TEXTURED — value jitter only,261+ // never a hue tint (a green multiply over snow reads mossy).262+ const isMassBlock = pieceId.startsWith("platformer-kit:block-");263+ const isCap = !isBlock && !isMassBlock && pieceId.includes("ground_");260264 for (const sub of subMeshesOf(template)) {261265 const mat = sub.material.clone();262266 // Cap tiles lie EXACTLY coplanar with the cliff-block tops beneath@@ -299,6 +303,13 @@ export function buildIslandInstanced(
299303 p.pos[1],300304 p.pos[2],301305 )306+ : isMassBlock307+ ? tmpC.setHSL(308+ 0,309+ 0,310+ clamp(0.92 + (hash01(p.pos[0], p.pos[1], p.pos[2], 131) - 0.5) *311+ 0.12, 0.8, 1),312+ ).clone()302313 : isCap303314 ? capColor(island.biome, p.pos[0], p.pos[2])304315 : decorColor(islandLean, sub.foliage, p.pos[0], p.pos[1], p.pos[2]);@@ -311,7 +322,7 @@ export function buildIslandInstanced(
311322 // Camera occluders are the MASSES only (cliff blocks + caps) —312323 // pulling the boom in for a tree frond crossing the sightline313324 // read as a camera jump (user report).314- imesh.userData.occluder = isBlock || isCap;325+ imesh.userData.occluder = isBlock || isMassBlock || isCap;315326 group.add(imesh);316327 meshes.push(imesh);317328 }@@ -54,8 +54,41 @@ export interface BiomeSpec {
5454 /** Uniform scale on landmark placements (pack size normalization);5555 * omitted = unscaled, byte-identical to the pre-M18a canon. */5656 landmarkScale?: number;57+ /** Island MASS FAMILY (user directive: other packs as other island58+ * types, not just color phenotypes). Omitted = "cliff" (the nature59+ * voxel family with the full shaping vocabulary). */60+ massFamily?: string;5761 }5862 63+/** A mass family: what an island's body is BUILT from. The cliff family64+ * keeps the whole nature shaping vocabulary (wedges, trims, caves,65+ * waterfalls, strata); "block" families are simpler voxel stacks with66+ * INTEGRATED tops (no cap tile) — measured: Platformer blocks are clean67+ * 1.0 full / 0.5 low courses, bottom-center, with a cosmetic 0.082 lip68+ * overhang that reads as authored trim. Families without quarter courses69+ * bottom out up to 0.45 shallow — the underside faces the void.70+ * RESIDUAL: block-*-corner rim rounding awaits a mesh-orientation71+ * measure (bbox alone cannot orient the rounded edge). */72+interface MassFamily {73+ kind: "cliff" | "block";74+ block?: string;75+ half?: string;76+}77+78+const MASS_FAMILIES: Record<string, MassFamily> = {79+ cliff: { kind: "cliff" },80+ blockGrass: {81+ kind: "block",82+ block: "platformer-kit:block-grass",83+ half: "platformer-kit:block-grass-low",84+ },85+ blockSnow: {86+ kind: "block",87+ block: "platformer-kit:block-snow",88+ half: "platformer-kit:block-snow-low",89+ },90+};91+5992 /** Island families. Emergent variety comes from (biome × size × run shape ×6093 * depth noise); new packs slot in as new rows. */6194 export const BIOMES: readonly BiomeSpec[] = [@@ -116,8 +149,11 @@ export const BIOMES: readonly BiomeSpec[] = [
116149 name: "winter",117150 weight: 1.2,118151 material: "stone",119- capId: "nature-kit:ground_grass",120- capChance: 0.9,152+ // Mass-family round: winter islands are BUILT of snow now (Platformer153+ // block-snow voxels, integrated snow top) — the tinted-cliff + white154+ // cap phenotype retired.155+ capId: null,156+ capChance: 0,121157 setting: "winter",122158 decorDensity: 0.5,123159 landmarks: [@@ -127,6 +163,7 @@ export const BIOMES: readonly BiomeSpec[] = [
127163 "holiday-kit:nutcracker",128164 ],129165 landmarkScale: 1.1,166+ massFamily: "blockSnow",130167 },131168 {132169 name: "spooky",@@ -177,6 +214,18 @@ export const BIOMES: readonly BiomeSpec[] = [
177214 ],178215 landmarkScale: 1.5,179216 },217+ // Mass-family round: a whole-different island BODY — chunky grass218+ // voxels with the platformer lip, integrated green top.219+ {220+ name: "grove",221+ weight: 1.0,222+ material: "stone",223+ capId: null,224+ capChance: 0,225+ setting: "forest",226+ decorDensity: 0.6,227+ massFamily: "blockGrass",228+ },180229 ];181230 182231 export interface Island {@@ -238,6 +287,8 @@ export function buildIsland(
238287 return top;239288 };240289 const biome = rng.weighted(BIOMES.map((b) => [b, b.weight] as const));290+ const family = MASS_FAMILIES[biome.massFamily ?? "cliff"] ??291+ MASS_FAMILIES.cliff;241292 const placements: Placement[] = [];242293 243294 // The run's WORLD patch: each track cell covers a 2×2 set of world cells@@ -543,6 +594,46 @@ export function buildIsland(
543594 ? nearTrimRun(c.wx, c.wz)544595 : open.length === 1 && trimKeep.has(k));545596 597+ // BLOCK mass families (user directive): a simpler voxel body — full598+ // + half courses only, integrated top, no cliff shaping. The cliff599+ // path below is untouched (byte-identical for cliff biomes).600+ if (family.kind === "block") {601+ let remB = c.depth;602+ let yB = c.topWorld;603+ while (remB >= 1 - 1e-9) {604+ placements.push({605+ pieceId: family.block!,606+ pos: [c.wx, yB - 1, c.wz],607+ rotation: cellRng.int(0, 4) as Placement["rotation"],608+ role: "support",609+ });610+ yB -= 1;611+ remB -= 1;612+ }613+ if (remB >= 0.5 - 1e-9 && family.half) {614+ placements.push({615+ pieceId: family.half,616+ pos: [c.wx, yB - 0.5, c.wz],617+ rotation: cellRng.int(0, 4) as Placement["rotation"],618+ role: "support",619+ });620+ }621+ topCells.push(k);622+ if (k === landmarkCell && !shaped.has(k)) {623+ placements.push({624+ pieceId: rng.child(`landmark/${k}`).pick(LANDMARKS as string[]),625+ pos: [c.wx, c.topWorld, c.wz],626+ rotation: cellRng.int(0, 4) as Placement["rotation"],627+ role: "decor",628+ ...(biome.landmarkScale !== undefined629+ ? { scale: biome.landmarkScale }630+ : {}),631+ });632+ shaped.add(k);633+ }634+ continue;635+ }636+546637 // One face per waterfall column — water can't zigzag around the547638 // corner course to course (the old per-course re-pick did).548639 const fallFace = isFall ? cellRng.pick(open) : null;@@ -1441,6 +1441,11 @@ function blockHeight(pieceId: string): number | null {
14411441 if (pieceId.includes("cliff_blockQuarter")) return 0.25;14421442 if (pieceId.includes("cliff_blockHalf")) return 0.5;14431443 if (pieceId.includes("cliff_block")) return 1;1444+ // Island mass families: Platformer block voxels (measured 1.0 full /1445+ // 0.5 low courses; the 0.082 grass-lip overhang is cosmetic — the1446+ // box stays the 1x1 course like every mass family).1447+ if (/^platformer-kit:block-(grass|snow)-low/.test(pieceId)) return 0.5;1448+ if (/^platformer-kit:block-(grass|snow)/.test(pieceId)) return 1;14441449 return null;14451450 }14461451 @@ -198,7 +198,14 @@ Deno.test("themed biomes: every island placement resolves, caps stay 1x1", () =>
198198 const cat = catalog;199199 const known = new Map(cat.packs.map((p) => [p.slug, new Set(p.ids)]));200200 const manifests = new Map(201- ["nature-kit", "holiday-kit", "graveyard-kit", "pirate-kit", "survival-kit"]201+ [202+ "nature-kit",203+ "holiday-kit",204+ "graveyard-kit",205+ "pirate-kit",206+ "survival-kit",207+ "platformer-kit",208+ ]202209 .map((slug) => [203210 slug,204211 JSON.parse(Deno.readTextFileSync(@@ -1,37 +1,37 @@
11 {22 "__version": "g555803244402",33 "alpha": [4- "57ffc533ec8d9cd6",5- "bc238a46934c67e1",6- "721fc506c55827b3",4+ "76c97aa76c8a4856",5+ "d7667831de561db6",6+ "6605054aa23955fe",77 "56a60f71540070a3",8- "fa11ce6f24876d10",9- "4753ec196247059c",8+ "421ae921a35230d8",9+ "58524ce5390ed8ca",1010 "5e2cc6bfef74ca65",1111 "3ea7f45732d55eee",1212 "a8cc3cb074cdd426",13- "3614bd0a00898560",14- "25c495c16c7e686a",15- "147c3d090efddb99"13+ "34981e4da464882a",14+ "a01cf395a6f5e9ad",15+ "9269ceea5ac033f7"1616 ],1717 "zx9k2m4p1q": [18- "4f301318b921d736",18+ "953000cc72c006de",1919 "e4cff0ba37438341",2020 "f42849d9719de86a",21- "91ed1e1fb57cf853",21+ "6c530245a512d370",2222 "152008334da2dac6",2323 "ca3c912955f256ed",2424 "509409b6fd771230",25- "4ed82fb13b24dc73",26- "6b6184fc9a642961",25+ "f23d4f4c1f28aa33",26+ "3c80215d656b7cbe",2727 "36d1abddc25b9ef3",2828 "08fadf7911b07e85",29- "1f0686c06916f55f"29+ "a2305d416d01cf22"3030 ],3131 "dami": [32- "3d6b9971a9f81e73",32+ "6f7c2df67230b331",3333 "5b341ee6e4d55e9a",34- "7f8b098959be3ffa",34+ "6d04ac92e60004d4",3535 "0854f062a74a4797",3636 "56daa31fbe30f013",3737 "2b9204f2a1c38639",@@ -43,16 +43,16 @@
4343 "b87bcda9bf82596f"4444 ],4545 "marbles": [46- "2c2040556134a62e",46+ "b3f1ebd2ebe09abd",4747 "e79e59f656a205c1",48- "446bfb98d3746d5f",48+ "0fb0ab7baa391c4e",4949 "a9d82f47ee723d6e",5050 "58d7465e7448a844",51- "6187b38749531e8b",52- "ee96d613b9344a51",51+ "9d2ede8ea762b69f",52+ "aca84c6d86c9f416",5353 "e77b8633d9e2015a",5454 "1445cf669ab83d34",55- "ae7e93c04de083b3",55+ "5fe7a07bab775cdf",5656 "0d5e85ca411aa200",5757 "df8f0b5182c73dc9"5858 ]@@ -41,6 +41,7 @@ export const GOLDEN_PACKS = [
4141 "pirate-kit",4242 "survival-kit",4343 "space-kit",44+ "platformer-kit",4445 ] as const;4546 4647 export function goldenCatalog(): DecorCatalog {