From c9b2c83dc4f7e674e238d510a91c660fac901a21 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 6 Dec 2020 01:45:43 -0700 Subject: [PATCH] Fix structure location issue. --- build.gradle.kts | 2 +- ...{Tectonic-1.0.2.jar => Tectonic-1.0.3.jar} | Bin 32194 -> 32192 bytes .../dfsek/terra/async/AsyncFeatureFinder.java | 16 ++++++++-------- .../terra/async/AsyncStructureFinder.java | 9 +++++---- .../terra/carving/UserDefinedCarver.java | 9 ++++----- 5 files changed, 18 insertions(+), 18 deletions(-) rename lib/{Tectonic-1.0.2.jar => Tectonic-1.0.3.jar} (84%) diff --git a/build.gradle.kts b/build.gradle.kts index 484bc0d60..75e5d180e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,7 +55,7 @@ dependencies { implementation("net.jafama:jafama:2.3.2") - implementation(name = "Tectonic-1.0.2", group = "") + implementation(name = "Tectonic-1.0.3", group = "") // JUnit. diff --git a/lib/Tectonic-1.0.2.jar b/lib/Tectonic-1.0.3.jar similarity index 84% rename from lib/Tectonic-1.0.2.jar rename to lib/Tectonic-1.0.3.jar index f78f2ab6f3d596ad9cef0c767cf053d1f1570a04..cd2e323201bad5598f664b2d317f7a0b8f52e085 100644 GIT binary patch delta 2873 zcmY+Gc{tSV+s64O>sZT-wUBw4iDHawW8cTV#F$W$ofzxbnyew3@(qQMUCNRnBs?Pu zrLtsKb}1y=6!NR-c{+~w{^$Oj=XqWCaUJ(x7j>7heV38b(&P{mI|BnND}z~O!Y$6t zL%%NYyE`1LX62|uGkS6I{xYm`lw^&nSQ!|Q{0s~#pcSJ8_?AnA^qnMZ&wJ2{d*9Qq zYL>fTsVl5VN&YfoHz8u?=DMuPMK~el^+i?L@+BTWF5HW+#jAuOt~K>oVc9A0n5nDA zUg8OMUAz=Vofu$R`t~l8=VjS}wwIhjWrhsm@ri5Pnx0`(<0@?m{!>w#RFb&{#|4GH zrgyPyY->TTy#M!r^fq-zVT+ONcyLED8@EQhnmSERgGwf2X?NnEN=8kjc~7h)rdr62 z^Rn$2(Td|Onrb0OPDN#Z*lDgkx+5RbCag$<1Rcu=c$GGE=VPabI!$Etk}S6o@h#_Z z|6XF!aqf+8Ni5`#R?Zq-&e6_Pm?KT1TFQx*E_`KT@gD+))JHyTLZrqq3E1xYH-0)l_X6~lo20O%B?~y<lef=`r&y2ejLE zlpY(P#*|m-QARElIFUI$j|a1)m;T{XY4S!qD- zKVEV#`{pq_QsJ|d`|D#XOQ>|8x8En+qw>%C{wM~03P~z|(*&qOu-N1{($3*#zdB=^>&!ZvwZ%<)ke%`q z>(cxmoOO>6q3%leYh8V@s3mcp7aqG~H%-0Rel1!WcbMK|5KjB4mKTnPeg$N)FONG{TX?5CaTI^aYX9GdDpFSKC^|3d?WbF_jeY0 zZ%H6>Noa_o0skV(uXv$d!dJy*H(fsiZJSP!H($H)>fCB-r)`n?14%w_3E1PqVOe}_ zT{9B$4mtW)M=~An@Y`cx&I7S^ru;{Sx5~A2n_hl_hcaIhgSxRa4jm<$e?Ug4E;T)~ z)svmi;zmplP+FyDGSln-$%UC+CTz+!B)`|OAi-8$L!MN`Uo#%`h6Vc>8=bqipTpPc z=42nNpzh;@=f)CmT;^d6t1?GCBG(5q#m(E>_^hwzaojf1Ev7Ab5CX$K8=rW%`nC}s zVKT{q&BWsSHIQrHqp$2~b#br9wl{wh65UD*e=1Ov{-Pyt`)9!g)|Q-f{GjT}$x!Lr z$w_YpqY0fxY#phm z{DqAYilN|X`5$dv{^etCd(bv;J#tUGizG`c(%RR-H?(Ju7Bu3b1m~i!DF(e9Zkl{z z*OecTh<`O!K)!K1Rde<<>Sqe9F8Q>t63TfY+cR6O9oZts%8fyE1s4xV&yr+* zc7Hg4*L>nLP;6Fmuk^Gy5KqrJh+44VN2~TV4;pvmU0g0E5M0PStTHvjmg6!nai4VY zj~RcqvAiynA1;|Mbe?|Wf5QPy(-5)ddpaaPkln%kwqB?Xn&t6*qd;o)?9X)092Q!{ zf&LofQ$~j`{Mh(~XNl=LC2KO7fk@JNqfjp^bSGx(sMah;)Cbr39JB$<^x>ZbvXZwM{r)LvunlHp*2KYw%%V?D6 z8ctG$DT;`@-H)cuqdo<3Rv+VANrjujp>~T$^L)l!pWZcV9_-N;sr)1%C{ zKI_bOpfyr3Va3+Nwged8gV}8)sKHI9++MfYJ#Z`@c&vA+!O*(TGb{_c;vQa+Jy%$t z_?;;~Z!geuxG3s}!czEtN!#G|j5oUIFyLQsp7V_e12U=9B_U7g-Gd?gA(Q1&vE_c; zpi)AL$46qyHuV0zyge3%8g>#FvG$&{N(Y(iOTm)@ad#;~O;ucRWvt3_UZSgRG<(MG zXLB6XW6RNatx`t46;l1^T7~(9@2AXK4)K}Q9*5a`la#s_-@H$+OvXk_TG*XDW(dd3 zy@X=YWgni7G3gAw!9LGV;W(}OynaM{ zZv>&UbhM+9*`Tu%9SOL{w0bILSfn>{@6pM7ur3)t-J0-2|b?cfPep_)9(G^(zF#^c-h+Q~Z)r z#*UsVnC5ZmciTUU^ZG1WigBap`}w(~&ILa=GBmK3>Q*+MitAjg)uXCO3Mj-E+UV%S zBE;{Gf^zKQ(_brbyGZE07g#n|%D#|ikBBC>19e4@=B^!Zcp{PZ^nBl6L{gXtYnm6!+TS+5qO?EdYPFVdaf>y(f^{se@4*4^d+`C={e|ip zVOX2rTTk6#A8|(d`r{NOT&L$Ne2DY^tv;ZyKM}YC19`FhU=08PSprlTyFl##51?P{ zmnjOq2tWdy;&kL8r~+ydbo3%%02b6QgoCdLNC5i>MFTN_9U8n9BnMs(L;}Tsa4}E~ z*gHdau}ZukCYT2d2@+zo1#brV099)AKsHzfVAY`GonTc!UW<+-EgpJ#jt&om;on1v zxvoPG141ysydE8=Lev2+L;5s2p>lxzAIvrsqIYWsLclknTtK<;uL@ZZ5{3jeexnXO zO$ieM#LVf5kNFY0wH+qJI1Ta=eE<&oUx6sdLtp~)iOK*s?w8~TNjP?pMnnRp|49Ux z8UX<>haUsD@P8{Fg=+#m=l)902wldTpjCt$;CP;HlFy6M+r&bcz~3V>M{)rIF7&7` zk_ALXA_43FBqw+^QV9@u`#04Grv5_~P{3UjG><|8%kF=kjXDD$JpM%pxD=%bgn0gy VTG1Gw+3T;&j}~R#^#1*`{{w!YB((ql delta 2858 zcmY+Gc{tSDAIE3DjI5L0Wh_~yJ4Pe>Iuc`z7%7n}TZ|#gSclZKNZE?{T1SJj4qa=O zGF(f_QrRV?3>8wgiYZIi)xG_m-}&df-mmj{&U4Ox@3swS#|BgYZ^OaK3xRNRLwL*L z(geP6>}=q=FA}Wc=Bv|!5(R{Igu@$pj!ZQ-1cDKRK=eVD3>qAVi&D1ST?t}84he?h znyND^i(MvZ5g-?D(Y?C?95~71O!xy{E1#eVo6t)y<6n`(a5m?2rb`?N_5KlmK65Iq zT{JhGye#TwI9Xyh8JqKYE6~4w(Kx$;{OsvbtD(cVEjDh^s6VX#Ti)|o>?}CD9roQC za+IBg(DgL!*z*e2VMb9t6(ZpnWy3B&*x9DDa80HBa*r(8D-JyCN7&hMxS;fznV@bq zXPr#uvNcaWb(yG}>Dh5radSHvVYA{=vKUqpJFfqJ4X+539V@x`*eH1w#`Ab` zd9@)~WRtCMaBmjNhI}#0-M6AufmNYuyZYTk!tMdfn|%a(oDzR+h1*y*W4T`A?&Igk zTj)+M?0yzPH5P1?jbicWMsKFZan{-0uYtXxs$p37;v}IbtpqAM6B)cC;jpg`6hBnS z;^$odff2=119D>-sp67rjSFe=flWzH<%0*N&JHTjUZC+GE9NCa?k&ihHr=sFDl?oZ zyiz_`${$ZGrPSK&MYAq+4Uhwa4W0;L_J`mOo$vK{qLp62m=~ht9-W=5R2%Wc_?BCQ zT6$Df1ypI2useAr{mXEkz~}W8%hC5&v0hw=Fq8hAs>efq$zY@>@7-JWa$Udvs8O}> zPUC^G$x+h2G7FbfO$$`H2D%!{a2?*Fr}@45Sl^IvTRuNj`>IENvhBlFb)>ZYhEg?S zz;vlUouar;`8QpDZBwyXjZaojMUo19;sR~Z<#Bk^p+|ZxhScEun!*k#Yt_O@jGB9W zPEE}jb6>?J5_%^7;JhB#)8#@kA70c}HRwC8?%=kUZ$v^W$L--WsAOW?3rLW*OXhIn zbSpe2=;^G34eK3lUo36xJ^2;2Q78K|wdd*A)-HKq?>SS zV8q&z6?y1E-CT@;_v9ask++Hi%-ZOcjz<0df8%@Kc2G%PBbUKnU11pT)1i6J=ZP=`yf7C3v=q%@9LU9YVo?+ zUDJ|DcWntcv&nN1pXAbcqk+{QUU_B{cCe4Fa@y9%xOujljgYXI*^EX;-4m3#f?v}I zSEAs(-(g18J_%2jy+&_IcZln%Qr`z&{IO)BNq7=LBvzedYvg*PrDEl7plawJpu@Dz;KBfHFHEKF3L!49>E!oS zowKr23$aKsC3UHg$JiSA=r+)#-F= zU^3C?SM8I&&KU?5Cl@LG-e}iW zHYVSpTV7S88IpY^=RB1|D~2XIgyONK=M(eG9NIHQf`UAAgv>z38_bBJOhh1b=C! z-H;?RCn^FGjTHj}dI$ppy_B)z0gDyGYmhkN z_)qVt;|P$4?iL`|SVW!aSpAB*3(@@*pfkALy3Z#Q``s$R{fT#)hDQ zk$oW4Tn6k4K|}X~%OTEyk;1MZkgx!c#ttIEUJ@Fx{fUTBEa0rQW7WWfP&82T6PLAw zKuoA0$g3;J2l;p1yR;3;hn)qS^mnHV^aa8GFf>qYxEoc%^#R^PyOc5Xe1R+}{Ql7hmdwutSYUj|v z@&Cm{PZ2O_M=ARJnsD(E1#M%0UbTKs3YhxuNNGo-fsejmnx8zFvx6#xU3?#_4Mh3v XpeBevj|P~;T}wYN!?ouB&oll8xtb implements Runnable { - private final TerraBiomeGrid grid; - private final T target; - private final int startRadius; - private final int maxRadius; - private final int centerX; - private final int centerZ; - private final World world; + protected final TerraBiomeGrid grid; + protected final T target; + protected final int startRadius; + protected final int maxRadius; + protected final int centerX; + protected final int centerZ; + protected final World world; private final Consumer callback; - private int searchSize = 1; + protected int searchSize = 1; public AsyncFeatureFinder(TerraBiomeGrid grid, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback) { this.grid = grid; diff --git a/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java b/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java index 59058cce0..bda8bf6c5 100644 --- a/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java +++ b/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java @@ -3,6 +3,7 @@ package com.dfsek.terra.async; import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.grid.TerraBiomeGrid; import com.dfsek.terra.generation.items.TerraStructure; +import com.dfsek.terra.procgen.GridSpawn; import com.dfsek.terra.structure.Rotation; import com.dfsek.terra.structure.Structure; import org.bukkit.Location; @@ -33,12 +34,11 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { public boolean isValid(int x, int z, TerraStructure target) { World world = getWorld(); Location spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); - if(!((UserDefinedBiome) getGrid().getBiome(spawn)).getConfig().getStructures().contains(target)) - return false; + if(!((UserDefinedBiome) grid.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random r2 = new FastRandom(spawn.hashCode()); Structure struc = target.getStructures().get(r2); Rotation rotation = Rotation.fromDegrees(r2.nextInt(4) * 90); - for(int y = target.getSpawnStart().get(r2); y > 0; y--) { + for(int y = target.getSpawnStart().get(r2); y > target.getBound().getMin(); y--) { if(!target.getBound().isInRange(y)) return false; spawn.setY(y); if(!struc.checkSpawns(spawn, rotation)) continue; @@ -49,6 +49,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { @Override public Vector finalizeVector(Vector orig) { - return getTarget().getSpawn().getNearestSpawn(orig.getBlockX() * getSearchSize(), orig.getBlockZ() * getSearchSize(), getWorld().getSeed()); + GridSpawn spawn = target.getSpawn(); + return spawn.getChunkSpawn(orig.getBlockX(), orig.getBlockZ(), world.getSeed()); } } diff --git a/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index 5c8e8db84..4cc1659cd 100644 --- a/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -77,16 +77,15 @@ public class UserDefinedCarver extends Carver { return new UserDefinedWorm(length.get(r) / 2, r, vector, topCut, bottomCut); } - public Variable getSeedVar() { + protected Variable getSeedVar() { return seedVar; } - - public Variable getLengthVar() { + protected Variable getLengthVar() { return lengthVar; } - public Variable getPosition() { + protected Variable getPosition() { return position; } @@ -106,7 +105,7 @@ public class UserDefinedCarver extends Carver { for(int z = chunkZ - carvingRadius; z <= chunkZ + carvingRadius; z++) { cache.getPoints(x, z, this).forEach(point -> { Vector origin = point.getOrigin(); - if(FastMath.floorDiv(origin.getBlockX(), 16) != chunkX && FastMath.floorDiv(origin.getBlockZ(), 16) != chunkZ) + if(FastMath.floorDiv(origin.getBlockX(), 16) != chunkX && FastMath.floorDiv(origin.getBlockZ(), 16) != chunkZ) // We only want to carve this chunk. return; point.carve(chunkX, chunkZ, consumer); });