From e0d34e07d5aea4c3f3e61f79779dc0ff1505f15b Mon Sep 17 00:00:00 2001 From: chelsea Date: Tue, 2 Dec 2025 21:40:50 -0600 Subject: [PATCH] Improve cabin ladders and paths --- worldgen-c/bin/worldgen | Bin 135936 -> 135936 bytes worldgen-c/src/worldgen.c | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/worldgen-c/bin/worldgen b/worldgen-c/bin/worldgen index 11f274d18c15a0c78d4f52c4940f987eb675a06f..a1e349682019458651883ad00c57eab437c1b580 100755 GIT binary patch delta 16930 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 delta 16914 zcmb7s4SbDdAOE?|cGxiY8JkAK;>Zrh6yUl=dpU-rp)x5Am2)gLRJMup|NgG~oHftC=l}WqeLh@ozw7Py{`=k6 zvHFdu)o(;?i(=8QFJT7y^LlA48xlRLuV@%Xl{(m^*sX{4vDR|?RO1*H=NlTeE&tHL z_HoSj=3qgd;7;9WvpxI<0};7{u@fG zR}5i)Fa34J7?xc+Y~>&}sC4$qV)kO`&nqXe>7}+OGFU|EQ%{UFdV7~1d}0QhT{>vh z1lFx|>8cE)uUF~5Rq1S1spOi#ZZ5ssRmNT@{l&H0cp|ZM+v?%$&C(xN-^B7uyBCZy zp6OMZS@3VRuC(2nF>HM4xHZd-pY_;Yv8H`zV|AzP`!`&)GS~K9AH^~D;PxXQCo^W> z{>RQ9jNQ2Xx?T4$OKLX6o!KDc@9X)d z&TKNfi=XMt3Ydk@li2<25&pTv#<0O$GPA9$fbTTpM6dF*W;TUI@R6}>nDO9xzA%>E zW32G-&tlnhc0KRYh26#C`0_3+lg;Ocy0C0^A0OBit&ezNSN1oys(g1>*4@b7D?b*` z?v7;Hd{_^5k}c)ku4kF9ETh4oc#14(Xusih5A?Y_@E`7ULokcgdbI%O+8u zzAJK^N8S}R&g0zG$&+J=lGS6fwL(^F(^;Kt-J8x1**=xDhv+0LEs=#)on>2y7|R!=!{n-un)!ai^4otHOQ>Rki?gCUP^>d6LNNA#Sd42%;5mfTO>h{*-jS^QW} z*6Y@VprZ$SV6|k~gFR&1Ua90M%mxu6f$AJ5hBK^ncIz>m&8}7{xw1v(gL|?0H{>`9 zYa*Stm6im_op&V|RMhhzdX9p1Qk|GTf`8nL^>lRtIu$hMdZxvBR+!Z*(mO3`ndK*J zqD{Yz6|^*?CY5}66-SwtphkpPPE4xx$&p1|f zGQGB1X-cL0u;i#yJnfa-BOuiV>?M1O%LHkqclIdSG8a?SCZ)okRDJT}0bbwbtUc7m znD26S4gQ*D{2e=J3jx+hV7?WD8e2hS^*u`z)(pdT$KJlngS;|?!(MomNktz(F&FL> zKt|8bG9tB9wD!-=2$$rZZ2>-u%7{H=l*C^Uv|8MdaAj81R8LtMF@?6&hz-BMfHwB3 zZO^J0Z9D^{-VuZ}Q|)#w&TOlcCRf@nNX|W>VMsllQ>iJkj6g|$?CMz=$aF=@ph^@b z(}s{fTEn-(9P=VK7~Ec|tjO|D%qVPPRCS7~QTkw~s8ZLzL{|h==b|coP$o**dReyq zj^nM-~u>M9mK6)Dy(vv|=VM$D)HDe;Lwiqo@Gs7hSw3v@eC)=>!|fkw**!GP@% z=&=>teFGI$aTJ)_o%>#)5ZCCZc02}`B{L~T-cT4Yq% zUhC&j&}Gzj46>et9Y{c|N1$HQRLGM0ovbCsVkf${=DKQ^-l>$eVF|J}C!w7t#~O)M z6^ua@mXN}O`bgUmG+=+yBuRE#wJc4km$me(b}ij#w|S)!iMG3}fC@Ny0vg0Aksn52 zV;OrUE7m43P?T)FsHm0dUfJ3>4m&EjKD)Ka+ANbsm(`=Bo6JremP$VO5fB`!fF?wN8$%Eo_pO zo=vy?;QC>bdO}wH0K3i=R%)YhBg4{mdG?xiCPUEcDA;2lsj_*O{P5>OOI{CFDZxrx z4r!*j;6@qhC)uvHkW!Lu$EA{*5P}41WZOBZ`}3paO9@iZNIJh3a8A`?qas9u3Q(1larkgQl-5&G!jV1`If3*wJ|tS@6}kx zP;gbyC^Ao0Zw>BI3TlW#wx5@r36Hmk@eX-*TkPVtz1%M>`{xtu2zq}j0L2UKE2SgU6$6b z=m}W;M&SD-a8|Ok{)=t~gOC_$-9A)_)v_=hMq(HW{8^no)QeVJs70IBqniL{p^w@I zl(I{mV=nj5C-`d?b|s8DVPR-4@uQjM;N(f<;gQlMLj(uoHGy%dH`K(a zu8JCv)%t5)mOq(P0e3=4tx6xO#U)3(T8J~xLO`b`@(No_`CsM9w&hWa zKM#7rZ_A@X(_H(n;mb4w6hfg7TJN~aEqmxLI9&qq4rB#)ATBBM_7Mu(@MMvt4i}M% z){|<%q5V*z24D&|BjX90ktt1w>#^RJAV`!Bb)vkUf18Yr$37~2gp$MY*JE?{Q zEsI&3f_s6-W!OIrH4qt)ff(TEniCsjseDzU{Vx0TJMDMcGhNf@z;o>xGWaKp_#Q_e z1#O*1(xUiXaO9N2>JhCI1pKW32|tD4v0?^I@-4U4VY_9$+RiSsyoQ6>?*I^F>@EZq zXkN3aU9C_n{O$f?=hnG6D~TmdwX6HWvq1}S=ua2$s$^z~)_`WRs|ma@nOR-p${Fd} za&mpPVd^xTVO9oRnvk$Cyo^``%lgMIxaRVq4Kws<0%8C6JQ?#kV4iSq2?^PPhLu|f!e*Pg(xdP8#pAHm1{5R+GbLjUa1 z`AjfU$#OW*VDIc3U3u=~`Ek`1E6k2GUvs9{*F0pewC;m=ozLu^<kdjqTj>;= zb)7dYD8nUO4^I}3rtk#eh)G2)X3`M@@h|whs5(}6^W3kZ0x(i#kWcbIK1rsT&>Nm& zm#!681Z_v9DJ`}`c5PZvy$s7oLM}}?hJB{g+SPAuH7fk?8c;Hd%$W7ET|I#nB4zag z(5O~NSAtl{I4dMqTDz3C)DLTivcqzuBS}jsY^SbcSea0YE*eb2po|XEnFLUez3sL- zsc2JsVx_S5dkQUFgidCM9b5k@#SnigL23O)bQD1Kkj0VKUTFyi11@xt`A8+sBr$cW zzmp=EMT!7^%pl0AAjDtNVKff3dZ*A2P!JFE-2+*Yi-HP@5UMMd53wuKno)F&Fc}a) zKi>|w(Bii|jYE`=8jI>vs6yl{V-Y$CKUrGWo+cp-)9fsyvXh`&l-#Yt!B%p04?AQg zm|s{6ttbKN*=2wcT{%8VQT^)Y)E}%-7&y6n`uM0kTg&1oeOPT#a*G6t6}3i8zh)If zUb;F*Oppp!ifB&XgVpKN0}r4xWWw$0g*GUJas&=T=mYiwuj491z4pQuqx7OT=q2_5 zP06U*b_z=?t-sU>lp{ZPrzKzS4{>87D55DrnBJiJr8K$5uI{nzmrCA-j-be+jtKdI z9tOSdeOdoQ(94Q$q;3CI2J_=S)+iL)wFikgqI>#6hccb zHCdg)YNPElsbn8rbgQr(X;N8DdeL!x&2MU|&*E2&Oeo(Y6jJJDqpCnzJBEa<@QR*bAD3pOrW%*WU*I zTF|`0%W!rtfnE-mD%P9Ce#;wgn~qi1yxg&M6=~fUfFak^$u8uj+vLnBsjvcFU>ei| zAD|lI4JCJ_B~@*bqwC?wOY6SGNb3!z;RbM{a08wHM2shHplGh55#kDVHD^4oFuUy) z9J$^$6BMm2sD6b7bUX^}5HqqSoDjS(t=ZI}%?+FcLjD?S3E#kmuFwqzlU{(6EE8*h zsVEcz&x9C?+!$ggD00D2w)cduhp^!?E{$=~fNmpTXQf|YfFoRxc%b@XX8I;8T|7OrD4i`8Y9NGp}CvP)|<50zVlh~JFP-62n z-l*19q;+2j@}2>M9wqX+z@Swj^17k|J6frWE3{$HI`rEMLYFun4OQmIJ%WfBchGsI zk_y416ST4}VGafRyU!q~XuX3YSELmbCg86HZOfrz*vSs#h&fnfO}DmJa9(v0i`L@~ zwR8utaABB5$43PQ_Z^6p8UK{Z?J3jId)GqT;J!L4=L zG9y_Q1;Yvwgiwjd#mHK&QP!p*t42xUT%>a6AT&l+2ic&7;*Qovgt_KO$O1y$P{0HH zlR>8gX>vlOc6Sh`q?=)<5!PDaI?sX)EcA-7i=<9i5%LYKwQR4=CzTu}r@(2+w>d2f zrIHNTUUH@;jQ|(#m)3SMVRSl+dDoE+XIL6P8ClW#)iX#$+0A)OXV|qICCo}Yn>1P9&=Qj zjGU|$cN82nUd@>Ts|@9vzt#bIJ78p?bcx=JL9k$D-gp%)?BRYGO$1C>(HyKuS1)RD z9qqQSByAx2NerK@Xw|MII1U+*VaY@_!VM+e%}%uuH$zA*bR&YxxbeW*tOje_i*0yz zIP31JT6v4xySzSKZL~+jej^cc64yw#P^6ujhun7uisf1fUe^YBMS5BeEw4KSypxw&^-laz}%YDF|CONezJ5t=?M~in4LEG;-IIv%vEEB;kl2yoCfryCt!G7ZMY6T`l0yh-z z3f!Q6AB*S}xH5IYyKScV3fG;TQEDlT}gEYwe%&5g0 z;9RIQxZ%CQ_LvdWyQhH2pgHWq4nW%U{Pq%(_9(P*ky>Cv?B#s48juy0;H1vU@j$P z7ZO{M5)im2Q73Ue8qSI-4|$Q|x~R-M>;;Tnt)sM;w$q#ja_g}stJwkWpnR6~0@7DK z$P8L*?bgE#>fuYf+IzpEwy6GwE~Mq4Mhf&qnyog!zgi(jSMcq(GK=Cva*GlcdD|Rg{!sc@= zqN#LpCAX4pWyM#8&3f981jkzE)TWzj70&?Kq6nSEDtAO;Ntom+>k;-Tuoh+AYyHg5 zyiWD7>W9$s)gxG(%ey2HtZ^X6_1%&>B^W-jUON6}hs+mY9lOUK=kP?Qd#0M9@_xd? zfigb~F2zvVEY>RIi~beO?C(q7?--(1hBYNd~87!c@y>zbjCknv;-zn>qgv{T+W7@UYXZ@ZVGaKpvfRWcOxi4KH??d?M(z>%~2>+iP_OJ^jeDc5Y z*>?gua2h*?NgrA=6E|vIasnD5ugnjR#-+yr!j1YXFDsF-VaM$xa)WVr!X1c`hT@X} zboK(4TIWM*Y_?ja|JO_^uJX zNV*5BknLMFpHv+wc1P|(MT@gJa{mxcB6;VERyHz}70*<^)6T zBeh!e|C7+g{lgjEK9KkC>saUQm8@*vHrWNLp6)spX?9e9fzT zQqkk&Kk2y*vq6v-|*f44Q_Q>QffJ@G}~cGRhUCpjx^71HD)@frWl3}iw{%fJQ|i=?2FlC99g z%b-{0_?JwhR33Ve%1Z(mHvBqWt+!h#2^DF#dhwD#j&^w|Bwafi`ho1JAu#$o@SO;O z`xDnzgrkQXiXP(71>J*sAeu%&doq4XF4C99;yaLC{aNIE$l5DsBZ1sz8Y2;%s!&ImBl8kC6+KjTt zz+93xXasJ86!THw7aw`%qnmUtl>K1(jy5r@2I%vSFq@8`&*sa|SHIT3>YSOB+auj} zV%2xZ=P?-;KWAlzqvCYrB-TL16m4??vF{Wu@m^Zbb?wI*`rsCU4{nu?f-15ecH0+A zzE4+g3ao^Of}DF|u*wniVpV*i8I3NH9l{5P)?xmIdl<45DS%%VCo-3!_nJu$bHBi*~=ZbvmvgR zNKp%k3OqxDKxzgd72oc(ha&8|BCw@0Pkapf5SN0_5>OD8q^!mO#Vt{k%ReKld&rB8 zy!5U0p!M@~wHmITS@mD4lN28~)a|8Ji07QSdnm~-D33VMgo2{v@) zl&DTi-XzZ&N!ZWs%)C7VViyt{2vk^dT7{+s?j^}f;4SzRI6UrPro+<{p(Oeinb2@U zh!@BmlWmRpE7ZzMUrS1@?a-2+$7!RWlv<)M(5IPt63z@XL++oGRSKtILT;Qfqzpe1 z7oZGM3*`!vNOeMqkEGLwZ$!7q#4Vl<--6Wz`oe5eW;7w_3+@4{;K7WW(mfOo)hh*% zB$78V!5-XW5Bdt5hf4070TI{@?;tD~&{9G@A?ZSTht;W7=-Py-c2*tIXodAx3h@rY zJ%_vsJylat-`iEu)Vr|09cJiDV8khQ)SpxULI;ppeMsd6-h*)jSlbP?EK-Z1C6Lt& zY!EPIBu>cqw0#v4DEx+|izgwNFpADg9420hyeDSh!3aGk(PkR)QiQ$=0t7}QMjJ<8 zO{k@fr3WLmJXVGeN*#fDSQVs2bf|yb)4%-IyNO+$E0wSiBv1L3oYgG|wLo2K_sKz8b_A zS-M~#9wcpZh&GvuK%s85DO@7;7f3yiwEj-ved-ZmHPj5{AYP+W=az}bC?e$3ii|ke zyijsGumy0s!tWEn3~->H&zw&AObK03FQ^A1sVWS^%^^5FYbfB7{)CICYMUol8~EyU zb{m__cjHl{am+bBW*mE(<&+;9$JR5vBb=q+`QO`oo5FHf29I&Dgu&86dQy~aYA?#z zXAGx+msh6ioyG-JnnfqFai$A=nuDp)jj1r+R~8JP%YSgNiEJ|;I)VM8!`O!faEfsO z|9%3yiM_$Eo5*I}dH)^2iCRZ{RL%!PMP?AGifUT!KWK{-HqugOlL%r1)~G&NHDJH* zVwP5a659Z*?<1IYF6 zvP}=5R6L(#(T(~}f`-$YXoZuR$7yu=1LC;x=O1c?!e;&Mt1U4eaTxp3(#S)~PHtc8Lyb`Z7;n@&~?bD(l(n9WHP! zH<3Bz$*z9_nLAPle zys+?Qo%Ib~7ku=OaTw6oN$xA=_q;kw!0z?9GiZ~G*)h|x1jy7#hyhZ+1we{`4jq4( z*g19!A<&;mD_+hXZz`vCa8&9=89#-fPG|T01^waGfY%LZIz3wm>$2yW9Vnb0_coe? zttQUqM>5$Eb_b8hVpHN?xfe?`52=vW-GoSlj%J?C^RieP`>p)VEVhqD=Om&3%7UI> z@a1>oMXo7{@4FkruksG};Cb!qe8fG>I`GI0EYqN)z6N#wgJUTN*!;*ZgumZt6v<8B zk?fd5y!akA$i9-gE@uxf%K3BRT=Zeis!RTMn2pi+Jd8S3tYPk1g{sH>1>K?{D}GWA zZ@z~OwC%79KvM!O1ECf81@tztY<7Hx-v4@7tQzm3?Xu#%d`1qlvV(kG4x84s2lWah z{D5GKknkiwN8@jnUpIplGGm{6_~x0+cKw;Val+HfJ9?w>BC!q^c4yFmF3&W5#v5m{ z?mf1*1@NkFGw5x%eJhoGUEcRzb|Yhp`Gi?)v~hSgS7+gI@m%hk#in(5ue-o;%%B|J zXEt6SPvt9Tv$Y+c$`t3qx9G=t%zb$O9CH_U+{gOojJk`i8@pv0?H*#8WWDd1)#&q2 z{2KrS6RstOcd7)o*RHvj{iI)TjSj7gW@v>+(C3fk2kv9TQu1m1bhc^wowQR{1^&8q zBxakEMPIgQn?7dB;wia!g>C2WfgNg{cNat5PGv`y1n^B)7{@o?qz(|{p_D?ChwTX`mwEi zXde5$?|Z|smv(>MJ@y>?4Es#`y)zuz{f+h+fz6*@C8;t+PUjOIV9C*UcNIh#eVDI! zfH{m&UHP5|*a%~{sn5=3LvQ{UmZ58Q%s{y>^LM)jQ`npO%<)TMNvSq4nU#1JE68ZGh9Df+Yle@+9sdzSM5%w^UaS!ko#fFg-HM?1_HQ?g7>QD&R+ zIh)7g2d+iN0K@MKN_{%RORM*QEh248CC&fCSCt);GL_pgVbExr0LiSbcxZrlnVUij zlBk9i@h3Xf&GAS0nt3eKc>QF4d>*jbvz$H1erD_(Z+r;qAcqf~&w3agPCjWq>)+um zVI8teij%LJ&ytL{P2n%iXWhE}7zLbO&W<@aF|-Zv-64Y?n9mZiL|{G}I-@d`&YNxO zLm=lf_u)SMZlpTI+bg6k%hXP^v-Pqe`wQH!5+{bBOiK}vVGO_on@!#c=xZKQg(n?+ z>BFp7kHrA;xYI}%V*}Y*@4HBv|=c(;d}Tov>F2$TCHsSEsV73Dpb8Uto^~WCwci9A4@edP7Sc3T8~Wy-Jo{3EQN@s=q(VF4Q)I}T)3 zJZ`cD3IeF2>v-k@Hl_Pb2{`5ZZ=u(2yCiAt@d7iw=$uq^mG54_hV?4|73X zZ!csC(btJ1XPe6TK{N-iCx|0iZ--6fT0!HiEkq__PkQdrZ(fM-^LX4MHW1!j+9Lcm zW8g%7&mxx6?N=f+Sm!5{{_%rEqvsj^!Xnn6x%i$%toPu1$(A-JW3kxx1p`2f(vJQY zDzB3C3kwY;MV8tB6z}>dyMZdf+5E^6nzNB$pk1C5Yvh z?2$@0xR@QEtb0Z#QGywh#_`FIvA(xNpr35s@c~*AUFP@zVTp-f>jn9;O?4>A*|_2# z++V-fLH_1r%xWzo004^ea;)%Sal@anNENO>IzO~PK5u@E_34vMP3#jD+Q&d8rrSbb zL(}=_rO=E$(|Pt%c1wrRJBiP7;!WxN?@QVBcV>Mo_)a6$2CS~a9%eVW&;F}oBqwE$ zK&4qgga^UCZ_~~E-2p_z_!PlI%;pd=%6RlLmKgnA$T>R72QOpe**gB%GB%Ud@-LS$ z%ivO49dU`TN?gnIJP7Ad>HUEa0smr*Be&pG&!~I+&+`7uSypFv8liOy@rR#%%<){X zd%KzF^Pl8fm$M%2ZlihyKS1?fRDYTOw46Pd@&iFv`pcZoYp%v_Aqj_|ByOqqy;$I_o5(Z%D%yfLTi@`c6wlTct z6YN`~@dN(H6YQ~@Z@P_gQGZ^)1D@AhV;ExvKsqtITVUSLUth%@>G|Py+)e$(|1L@h zkGRC^qVJ4<3r}^iJ?tvKLC38`RQIaG2&iJQO=@EKyw^@*0SHJWBbrsmyBZS=ZqfnM^5&WFS0HKTI!>+dT z9|^Tz676x3{>o4X$&6hc7v*Q~@^7BRb?2O=>-IH{Im^eWY$^BJCQG+!@lR6Oko5)lZojn7{XMOjZQ7{MkKZ_ysA+zi*ahX5R8eMC z`x$y_}-flxu#+K?L?R_ z(Zc)mGUg;or|0dtSXV0g9Eo9H)6#&44}Fe}H+H&#KmHv2s=0jgb8N!Qk)MJJw%7ec zypqpw(ZCAO1;J;0C%md6hh=L|+;2clFt}qi9M%szLvI9@elB2Q%oy_>&)FAv4APB< z(6ah7Xz4Hb4!nUhQ8SmHXEzNTho)lNLiAcvuXwhQvIx}d#Z3wV;`t07yt=1j+dv(E z`FS?c)p1CG4&+$Nb6z zTk!kqV|>^PY*2I&^}^5|;PYNU>Z6gLdx1U49^j9?$ev&U{_Bfu5Iewcc!@obG(Qob z&B=Z;OLX`-Xv3%T)l;(3JpBIhw_alH8GPJrFGG_car!b_!FbO zgHW35gTb`&Km{x8+?l@Ptp;!WG$9zQvhv4kq0={*_=~mdde^NTI&U(K?fjC--uW$* z+wgY>>R!|M&U;PwcHV&Y{~n)%@rnOqd;;b_@c)=k;}3UsZ7>-p{Pz*;ID!*LNC(J$ zf3buTIwFnF#rWj^Is(mCLi1-~JpI4M+svP8n$j`id{+S2+u(o}jhGzKrZ*j!nT=ip zndUzvgCT8kFbL;K{6V;3Fk@gP`r>%^!|e8y95fd~QYu0qG;JaN83eKUhf(i@%U~!% z-`;ZdFngfW#t3tH;|W$5!#0)g`-#07!M2t!YGhJ-W0kdh%_Yj&zf~UF%pPE{1j}3S z{{w6)Ki@*lRG$3@nj83`KiDtPNcxNQF66ItHV%&7^twL2 ui6851tYJI(%aUwRV>C2|ByiqbHMIQ+L=MD$TyPJ(?jQ= CHUNK_HEIGHT - 4) break; for (int wz = z0 + 1; wz <= z1 - 1; ++wz) { for (int wx = x0 + 1; wx <= x1 - 1; ++wx) { + if (story > 0 && wx == ladder_hole_x && wz == ladder_hole_z) continue; int lx = wx - chunk_origin_x; int lz = wz - chunk_origin_z; if (lx < 0 || lx >= CHUNK_SIZE || lz < 0 || lz >= CHUNK_SIZE) continue; @@ -1952,11 +1953,24 @@ static void connect_cabin_to_trail(worldgen_ctx *ctx, int chunk_x, int chunk_z, int step_z = (door_side == 0) ? -1 : (door_side == 1) ? 1 : 0; int start_x = door_x + step_x; int start_z = door_z + step_z; - int spur_len = 6; + int spur_len = 12; if (path_width < 2) path_width = 2; carve_cabin_path(ctx, chunk_x, chunk_z, chunk, columns, start_x, start_z, step_x, step_z, spur_len, path_width); int target_x = 0, target_z = 0; if (!find_nearest_trail_block(columns, chunk, chunk_x, chunk_z, start_x, start_z, 48, &target_x, &target_z)) { + /* Fallback: extend a spur toward chunk edge */ + int edge_len = 32; + int fallback_x = start_x + step_x * edge_len; + int fallback_z = start_z + step_z * edge_len; + int chunk_min_x = chunk_x * CHUNK_SIZE; + int chunk_max_x = chunk_min_x + CHUNK_SIZE - 1; + int chunk_min_z = chunk_z * CHUNK_SIZE; + int chunk_max_z = chunk_min_z + CHUNK_SIZE - 1; + if (fallback_x < chunk_min_x + 1) fallback_x = chunk_min_x + 1; + if (fallback_x > chunk_max_x - 1) fallback_x = chunk_max_x - 1; + if (fallback_z < chunk_min_z + 1) fallback_z = chunk_min_z + 1; + if (fallback_z > chunk_max_z - 1) fallback_z = chunk_max_z - 1; + carve_trail_span(ctx, chunk_x, chunk_z, chunk, columns, start_x, start_z, fallback_x, fallback_z, path_width); return; } carve_trail_span(ctx, chunk_x, chunk_z, chunk, columns, start_x, start_z, target_x, target_z, path_width > 0 ? path_width : 2);