diff --git a/BauSystem_15/src/de/steamwar/bausystem/utils/FlatteningWrapper15.java b/BauSystem_15/src/de/steamwar/bausystem/utils/FlatteningWrapper15.java index b1d4ddf2..fb02039e 100644 --- a/BauSystem_15/src/de/steamwar/bausystem/utils/FlatteningWrapper15.java +++ b/BauSystem_15/src/de/steamwar/bausystem/utils/FlatteningWrapper15.java @@ -43,6 +43,7 @@ import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockTypes; +import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.region.Color; import de.steamwar.bausystem.region.PasteOptions; import de.steamwar.bausystem.region.Point; @@ -143,8 +144,9 @@ public class FlatteningWrapper15 implements FlatteningWrapper { changeColor(clipboard, pasteOptions.getColor()); } + Set blocks = new HashSet<>(); - if (pasteOptions.isOnlyColors()) { + { blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_wool"); blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_terracotta"); blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_glazed_terracotta"); @@ -154,13 +156,15 @@ public class FlatteningWrapper15 implements FlatteningWrapper { blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_concrete_powder"); blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_carpet"); } + e.setMask(new Mask() { @Override public boolean test(BlockVector3 blockVector3) { BaseBlock block = clipboard.getFullBlock(blockVector3); String blockName = block.toString().toLowerCase(); - if (pasteOptions.isTestBlock() && blockName.equals("minecraft.water")) return true; - return blocks.contains(blockName); + if (blocks.contains(blockName) && pasteOptions.isOnlyColors()) return true; + if (pasteOptions.isTestBlock() && blockName.startsWith("minecraft:water")) return false; + return true; } @Nullable @@ -168,6 +172,9 @@ public class FlatteningWrapper15 implements FlatteningWrapper { public Mask2D toMask2D() { return null; } + public Mask copy() { + return this; + } }); ClipboardHolder ch = new ClipboardHolder(clipboard); @@ -182,7 +189,7 @@ public class FlatteningWrapper15 implements FlatteningWrapper { } if (pasteOptions.isReset()) { - e.setBlocks((Region) new CuboidRegion(toBlockVector3(pasteOptions.getMinPoint()), toBlockVector3(pasteOptions.getMaxPoint())), Objects.requireNonNull(BlockTypes.AIR).getDefaultState().toBaseBlock()); + e.setBlocks(new CuboidRegion(toBlockVector3(pasteOptions.getMinPoint()), toBlockVector3(pasteOptions.getMaxPoint())), Objects.requireNonNull(BlockTypes.AIR).getDefaultState().toBaseBlock()); if (pasteOptions.getWaterLevel() != 0) { e.setBlocks((Region) new CuboidRegion(toBlockVector3(pasteOptions.getMinPoint()), toBlockVector3(pasteOptions.getMaxPoint()).withY(pasteOptions.getWaterLevel())), Objects.requireNonNull(BlockTypes.WATER).getDefaultState().toBaseBlock()); }