From 3dbd77dfa18a4d36a07594e1a23054f0992077a4 Mon Sep 17 00:00:00 2001 From: Waterpicker Date: Sat, 9 Oct 2021 19:07:03 -0500 Subject: [PATCH] Added a bit of tweaking to limbo decay via CreepyCree's suggestion. --- .../java/org/dimdev/dimdoors/ModConfig.java | 2 +- .../dimdoors/block/UnravelledFabricBlock.java | 17 +--------- .../dimdoors/world/decay/DecayPattern.java | 11 +++---- .../dimdoors/world/decay/LimboDecay.java | 31 +++++++----------- .../textures/block/unravelled_fabric.png | Bin 391 -> 2529 bytes .../block/unravelled_fabric.png.mcmeta | 3 ++ 6 files changed, 21 insertions(+), 43 deletions(-) create mode 100644 src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png.mcmeta diff --git a/src/main/java/org/dimdev/dimdoors/ModConfig.java b/src/main/java/org/dimdev/dimdoors/ModConfig.java index 9b8f521c..c2fc4e57 100644 --- a/src/main/java/org/dimdev/dimdoors/ModConfig.java +++ b/src/main/java/org/dimdev/dimdoors/ModConfig.java @@ -168,7 +168,7 @@ public final class ModConfig implements ConfigData { public static class Limbo { @Tooltip public boolean universalLimbo = false; @Tooltip public boolean hardcoreLimbo = false; - @Tooltip public double decaySpreadChance = 0.5; + @Tooltip public double decaySpreadChance = 1.0; @Tooltip public float limboBlocksCorruptingOverworldAmount = 5; } diff --git a/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java b/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java index ea14164a..229f63ec 100644 --- a/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java +++ b/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java @@ -22,24 +22,9 @@ public class UnravelledFabricBlock extends Block { @SuppressWarnings("deprecation") @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { + public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { if (ModDimensions.isLimboDimension(world)) { LimboDecay.applySpreadDecay(world, pos); } } - - @SuppressWarnings("deprecation") - @Override - public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { - this.scheduledTick(state, world, pos, random); - } - - @SuppressWarnings("deprecation") - @Override - public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { - if (world instanceof ServerWorld) { - world.getBlockTickScheduler().schedule(pos, this, 10, TickPriority.NORMAL); - } - return state; - } } diff --git a/src/main/java/org/dimdev/dimdoors/world/decay/DecayPattern.java b/src/main/java/org/dimdev/dimdoors/world/decay/DecayPattern.java index b749f06c..6fbd06b1 100644 --- a/src/main/java/org/dimdev/dimdoors/world/decay/DecayPattern.java +++ b/src/main/java/org/dimdev/dimdoors/world/decay/DecayPattern.java @@ -30,13 +30,12 @@ public class DecayPattern { return DecayPattern.builder().predicate(predicate).processor(processor).create(); } - public boolean run(World world, BlockPos pos, BlockState origin, BlockState target) { - if(predicate.test(world, pos, origin, target)) { - ENTROPY_EVENT.invoker().entropy(world, pos, processor.process(world, pos, origin, target)); - return true; - } + public boolean test(World world, BlockPos pos, BlockState origin, BlockState target) { + return predicate.test(world, pos, origin, target); + } - return false; + public void process(World world, BlockPos pos, BlockState origin, BlockState target) { + ENTROPY_EVENT.invoker().entropy(world, pos, processor.process(world, pos, origin, target)); } public static DecayPattern.Builder builder() { diff --git a/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java b/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java index 377de0a6..815e19de 100644 --- a/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java +++ b/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java @@ -54,38 +54,29 @@ public final class LimboDecay { BlockState origin = world.getBlockState(pos); //Apply decay to the blocks above, below, and on all four sides. - //World.getBlockId() implements bounds checking, so we don't have to worry about reaching out of the world/* - /*boolean flag = */decayBlock(world, pos.up(), origin); - /*flag = flag && */decayBlock(world, pos.down(), origin); - /*flag = flag && */decayBlock(world, pos.north(), origin); - /*flag = flag && */decayBlock(world, pos.south(), origin); - /*flag = flag && */decayBlock(world, pos.west(), origin); - /*flag = flag && */decayBlock(world, pos.east(), origin); -// if (flag) { -// LOGGER.debug("Applied limbo decay to block at all six sides at position {} in dimension {}", pos, world.getRegistryKey().getValue()); -// } + decayBlock(world, pos.up(), origin); + decayBlock(world, pos.down(), origin); + decayBlock(world, pos.north(), origin); + decayBlock(world, pos.south(), origin); + decayBlock(world, pos.west(), origin); + decayBlock(world, pos.east(), origin); } } /** * Checks if a block can be decayed and, if so, changes it to the next block ID along the decay sequence. */ - private static boolean decayBlock(World world, BlockPos pos, BlockState origin) { + private static void decayBlock(World world, BlockPos pos, BlockState origin) { @NotNull Collection patterns = DecayLoader.getInstance().getPatterns(); - if(patterns.isEmpty()) return false; + if(patterns.isEmpty()) return; BlockState target = world.getBlockState(pos); - for (DecayPattern pattern : DecayLoader.getInstance().getPatterns()) { - if(pattern.run(world, pos, origin, target)) return true; - } - - return false; + patterns.stream().filter(decayPattern -> decayPattern.test(world, pos, origin, target)).findAny().ifPresent(pattern -> pattern.process(world, pos, origin, target)); } public static class DecayLoader implements SimpleSynchronousResourceReloadListener { - private static final Logger LOGGER = LogManager.getLogger(); private static final Gson GSON = new GsonBuilder().setLenient().setPrettyPrinting().create(); private static final DecayLoader INSTANCE = new DecayLoader(); private List patterns = new ArrayList<>(); @@ -112,7 +103,7 @@ public final class LimboDecay { Collection ids = manager.findResources(startingPath, str -> str.endsWith(".json")); return CompletableFuture.supplyAsync(() -> { List tree = new ArrayList<>(); - ids.parallelStream().unordered().map( + ids.parallelStream().unordered().map( id -> { try { JsonElement json = GSON.fromJson(new InputStreamReader(manager.getResource(id).getInputStream()), JsonElement.class); @@ -120,7 +111,7 @@ public final class LimboDecay { } catch (IOException e) { throw new RuntimeException("Error loading resource: " + id); } - }).forEach(tree::add); + }).sequential().forEach(tree::add); return tree; }); } diff --git a/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png b/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png index 154dfdf4542ca06e717546fc4a59faad83b4ecf1..8866719f098038482462cbfe513c44deb6575a08 100644 GIT binary patch literal 2529 zcmV<72_E)|P)EK|0007;dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3pra@-&chW~Sl9szwJI1ZmPy+M!P7u)OIq-m1Q z6wNNS5R%X%9Okc|EBx3a8wWMdsiYJ!v}oaqha8_{Uh}D=sK@{H5+4r~UKj2s#w?iS zRJvZPa_JxT>7L=}g9Wm88{`hduYtW@dXD@iqajeej{N+sHS${XJYCgP8pF0!ITNk2wOgt@Rh-LWUU@iBO;uhF80Wa zcfpayCb$1#1|YO9Zgv#-A@>L`Uw-wA#@=UAy(vz2{zf9Xw>{u#tw3Jj$q(CR!;> zoi@|-nP-`Gq1ToyUAEHll~-ByrbgGbeJ}q&jV@|@klJ>BQ-juhJ33s@{?6ED24buP z;=T!>p?NclnN)d`+stBN+zMkPX`9WUSOX;>)JbfMZgx*{-{uxj>#w-+cgTf}?mv*@ zFy$S$52%g(CF}>W^A_%!M#1e{vF$wO(%}1hiELvZ_r|AeJKlYI%p%ZmeeQDoV-6vvxfqGg6mvty_B6$oCqR2-VXB>IIoGZJ@@IlRVz(}YK_fLkDS(VpZ?Ksw0Xn3qcsLJZ?JE? z=8#4;lQm!WtqPLCl`O?E629%jtHX5ain-DI7QtmUrSSqXETXu=F&U<*^7u;f6J=*A zS47Z$ZcDv8Rli&Y0Bpkw-d}mO5nu^y+|R|_o#x*;9O_WeqszNr0?oDDJh*vq^Wf&e z&4ZftRTXMf0pb>VkBNGYOGi$aUPTH$amRYi(iEFtDYf)culkV*3iM+DAK zb29PNDuR1ME4VkP2^A4=Jww<%EHM_4EP*@`TDDlko`xk1d47KOM|F}`pzDWTcswAh zDwZAFu0>XG&=$A-5|WgHj;}8~kRgGTg0RQ^04G3G11j`}Epek#{6zLTS%hMXIn@zs z?~tapovXQ6EHvuF&MPIA8Q!+|%Ji8d0^NPOw1`lM`)-}AN;gCM=@Uf+EsA{o^Q#|# zd&C2O5Yoq0QbBXikk6M%kv||+>f!4Hcki%XoF1d3;CClMP3Jt;$q7WX%^AhzM;c&s$>~ zG_w5uRi|dg);BEK35z9HxGdZ(-du;YHxF(e+&s8>aP#2i!OeqD%Y(MJYca9#;9`xp zJh=M@cmLq-AKd-KyPtUT;O4>2gPR984{jcOY97SkZ+KZOQRQ6$A|hus%UCFl>Rl_N z{PkeMb~Yd09#$Mz&UNU@J<53xaI7#fGprd!{=nU%6totQu^#<{D-W1%d=e?Pc=Qi4 z;P!-NzxEHP32BRhvcSI7)eoFXLxZFf_(koSO1x|*HFIl;0v1fr?A4*_7_qrl(l=cxb%tr zXw1mV%Zs~*3m>hZ)elrN3Q=FL3QQF-A6=Z9&dDY0X%g|U?~N|~vV~ZDi?)~{(`+IF zJqFhjR)hA*6fEoD1Vm+eei%@{{=iSiyqTo=7D?rbso&?5f8lamGbdc(6v~!GkQtaT0d)Q%ix~F>%CU-y4?SI8YY6Z#euLcpxHd_AN4S zkw|6A@|%Mn@W8d4=L@zOo@^@f$cdyZU2IhnAwkaZ!)G-!%<{;Omgek1rxq#05L10#NAMwDoTzF8;AjM=e`#BGuy#GBOJYvG( zTx;lm$b-BbgRBcr6Bg)sCpZ6&x045(e?vS1M}EWuGPd(E4-jU4U~gdR*^zMup`g=j zsya<|IbY~LJ<-gN^?bpbPadp5Jqk`-S8m~-VS`rgJZiF9*}s)11b zT>jNI^8WM#9xQ_&@j#2x^Nu$Ej_`xsmVCTYvOMdW6JUBx8pXLFn-uc0uAKdxDC&~{#>K`17{WL$g`v-Ub;O-xM rn*PB*)=#|87w+?g`+VWQe!lR3-Q+NKMTE9P00000NkvXXu0mjfEp5_a delta 378 zcmV-=0fqkI6Ndwk7JmQ`2nGNE03Y-JVE_OC0drDELIAGL9O(c60YOPbK~y-6ZIi)v z>@WyJufU$Z_5A;bzSai1NSsWXu=2665D4r2eiuNO_{ju75>-WJVrEF9t1)UG_sze^ z8W?+wDgg2zF-(mUpJ+du88g1ObL|gTWiulpXmVs5;mRrCWq)>%LySvQhf_`Q(3WA0A#*U|fmu0}*`Z`~pCqGW|hP)y7W`v50_*)ij7sCI3q zd&lH{NQ%4gQ-vDc+6M`Ym{`vF*t_~^VO0?|nYEEwZ)65liA4ma{->^B?8&=bRS6Ul z