From b6a496ed99808273bd47cc5e02396f1b5371c7a3 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 27 Oct 2018 12:24:12 +0200 Subject: [PATCH] update to forEachMatcher in Patchouli --- .../naturesaura/blocks/Multiblocks.java | 25 ------------------- .../blocks/tiles/TileEntityWoodStand.java | 3 ++- .../naturesaura/events/TerrainGenEvents.java | 3 ++- .../book/en_us/entries/collecting/altar.json | 2 +- .../en_us/entries/practices/tree_ritual.json | 2 +- 5 files changed, 6 insertions(+), 29 deletions(-) diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/Multiblocks.java b/src/main/java/de/ellpeck/naturesaura/blocks/Multiblocks.java index 6fb54735..34e7c56f 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/Multiblocks.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/Multiblocks.java @@ -1,16 +1,12 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.NaturesAura; -import net.minecraft.block.Block; import net.minecraft.block.BlockLog; import net.minecraft.block.BlockSapling; import net.minecraft.block.BlockStoneBrick; import net.minecraft.block.BlockStoneBrick.EnumType; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import vazkii.patchouli.common.multiblock.Multiblock; import vazkii.patchouli.common.multiblock.Multiblock.StateMatcher; import vazkii.patchouli.common.multiblock.MultiblockRegistry; @@ -40,25 +36,4 @@ public final class Multiblocks { '0', StateMatcher.fromPredicate(Blocks.SAPLING, state -> state.getBlock() instanceof BlockSapling || state.getBlock() instanceof BlockLog), ' ', StateMatcher.ANY) ).setSymmetrical(true); - - public static boolean validateLoosely(Multiblock mb, World world, BlockPos pos, Block ignored) { - return validateLoosely(mb, pos, - (start, x, y, z, matcher) -> matcher.displayState.getBlock() == ignored || mb.test(world, start, x, y, z, Rotation.NONE)); - } - - public static boolean validateLoosely(Multiblock mb, BlockPos pos, LooseValidator validator) { - BlockPos start = pos.add(-mb.offX, -mb.offY, -mb.offZ); - for (int x = 0; x < mb.sizeX; x++) - for (int y = 0; y < mb.sizeY; y++) - for (int z = 0; z < mb.sizeZ; z++) { - if (!validator.works(start, x, y, z, mb.stateTargets[x][y][z])) { - return false; - } - } - return true; - } - - public interface LooseValidator { - boolean works(BlockPos start, int x, int y, int z, StateMatcher matcher); - } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java index c7b2092c..8849078e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java @@ -136,7 +136,8 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { } private boolean isRitualOkay() { - if (!Multiblocks.validateLoosely(Multiblocks.TREE_RITUAL, this.world, this.ritualPos, ModBlocks.WOOD_STAND)) { + if (!Multiblocks.TREE_RITUAL.forEachMatcher(this.world, this.ritualPos, Rotation.NONE, (char) 0, (start, actionPos, x, y, z, ch, matcher) -> + matcher.displayState.getBlock() == ModBlocks.WOOD_STAND || Multiblocks.TREE_RITUAL.test(this.world, start, x, y, z, Rotation.NONE))) { return false; } if (this.timer < this.recipe.time / 2) { diff --git a/src/main/java/de/ellpeck/naturesaura/events/TerrainGenEvents.java b/src/main/java/de/ellpeck/naturesaura/events/TerrainGenEvents.java index 1991ff9c..dc9f0e18 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/TerrainGenEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/TerrainGenEvents.java @@ -27,7 +27,8 @@ public class TerrainGenEvents { World world = event.getWorld(); BlockPos pos = event.getPos(); if (!world.isRemote) { - if (Multiblocks.validateLoosely(Multiblocks.TREE_RITUAL, world, pos, ModBlocks.WOOD_STAND)) { + if (Multiblocks.TREE_RITUAL.forEachMatcher(world, pos, Rotation.NONE, (char) 0, (start, actionPos, x, y, z, ch, matcher) -> + matcher.displayState.getBlock() == ModBlocks.WOOD_STAND || Multiblocks.TREE_RITUAL.test(world, start, x, y, z, Rotation.NONE))) { IBlockState sapling = world.getBlockState(pos); ItemStack saplingStack = sapling.getBlock().getItem(world, pos, sapling); if (!saplingStack.isEmpty()) { diff --git a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/collecting/altar.json b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/collecting/altar.json index 1cdf6c07..331c09d3 100644 --- a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/collecting/altar.json +++ b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/collecting/altar.json @@ -11,7 +11,7 @@ }, { "type": "multiblock", - "multiblock": "naturesaura:altar", + "multiblock_id": "naturesaura:altar", "text": "How to assemble the $(item)Natural Altar$()" }, { diff --git a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/practices/tree_ritual.json b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/practices/tree_ritual.json index b337e9fd..eea3d91d 100644 --- a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/practices/tree_ritual.json +++ b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/practices/tree_ritual.json @@ -15,7 +15,7 @@ }, { "type": "multiblock", - "multiblock": "naturesaura:tree_ritual", + "multiblock_id": "naturesaura:tree_ritual", "text": "Preparing the $(item)Ritual of the Forest$(). It is not required to have all $(item)Wood Stands$() present." }, {