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 154dfdf4..8866719f 100644 Binary files a/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png and b/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png differ diff --git a/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png.mcmeta b/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png.mcmeta new file mode 100644 index 00000000..b107cc6d --- /dev/null +++ b/src/main/resources/assets/dimdoors/textures/block/unravelled_fabric.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { "frametime": 5 } +}