diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/ArrayFilterBlock.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/ArrayFilterBlock.java index 8e72068c7..316caba0d 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/ArrayFilterBlock.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/ArrayFilterBlock.java @@ -1,9 +1,14 @@ package com.boydti.fawe.beta; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockTypes; import javax.annotation.Nullable; @@ -88,4 +93,26 @@ public class ArrayFilterBlock extends SimpleFilterBlock { public int getZ() { return z; } + + @Override + public > boolean setBlock(BlockVector3 position, T block) + throws WorldEditException { + return getExtent().setBlock(position.getX(),position.getY(), position.getZ(), block); + } + + @Override + public > boolean setBlock(int x, int y, int z, T block) + throws WorldEditException { + return getExtent().setBlock(x,y, z, block); + } + + @Override + public boolean setBiome(BlockVector2 position, BiomeType biome) { + return getExtent().setBiome(position.getX(),0, position.getZ(), biome); + } + + @Override + public boolean setBiome(int x, int y, int z, BiomeType biome) { + return getExtent().setBiome(x,y, z,biome); + } } diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/CharFilterBlock.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/CharFilterBlock.java index 25a037169..9f4fabea4 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/CharFilterBlock.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/CharFilterBlock.java @@ -4,11 +4,15 @@ import static com.sk89q.worldedit.world.block.BlockTypes.states; import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockTypes; import com.sk89q.worldedit.world.registry.BlockMaterial; import javax.annotation.Nullable; @@ -406,6 +410,23 @@ public class CharFilterBlock extends ChunkFilterBlock { return getExtent().getBiomeType(x, z); } + @Override + public > boolean setBlock(BlockVector3 position, T block) + throws WorldEditException { + return false; + } + + @Override + public > boolean setBlock(int x, int y, int z, T block) + throws WorldEditException { + return false; + } + + @Override + public boolean setBiome(BlockVector2 position, BiomeType biome) { + return false; + } + @Override public boolean setBiome(int x, int y, int z, BiomeType biome) { if (x >> 4 == chunkX && z >> 4 == chunkZ) { diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/SingleFilterBlock.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/SingleFilterBlock.java index 51d718c4d..7c3d1d52d 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/SingleFilterBlock.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/SingleFilterBlock.java @@ -3,9 +3,12 @@ package com.boydti.fawe.beta; import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockStateHolder; import javax.annotation.Nullable; public class SingleFilterBlock extends FilterBlock { @@ -95,4 +98,26 @@ public class SingleFilterBlock extends FilterBlock { public BlockVector3 getMaximumPoint() { return BlockVector3.at(x, y, z); } + + @Override + public > boolean setBlock(BlockVector3 position, T block) + throws WorldEditException { + return getExtent().setBlock(position.getX(),position.getY(), position.getZ(), block); + } + + @Override + public > boolean setBlock(int x, int y, int z, T block) + throws WorldEditException { + return getExtent().setBlock(x,y, z, block); + } + + @Override + public boolean setBiome(BlockVector2 position, BiomeType biome) { + return getExtent().setBiome(position.getX(),0, position.getZ(), biome); + } + + @Override + public boolean setBiome(int x, int y, int z, BiomeType biome) { + return getExtent().setBiome(x,y, z,biome); + } } diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/QueueHandler.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/QueueHandler.java index 9090d128f..435ae93f9 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/QueueHandler.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/QueueHandler.java @@ -2,7 +2,6 @@ package com.boydti.fawe.beta.implementation; import com.boydti.fawe.Fawe; import com.boydti.fawe.FaweCache; -import com.boydti.fawe.beta.ChunkFilterBlock; import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkSet; @@ -14,7 +13,6 @@ import com.boydti.fawe.util.MemUtil; import com.boydti.fawe.util.TaskManager; import com.boydti.fawe.wrappers.WorldWrapper; import com.google.common.util.concurrent.Futures; -import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.world.World; import java.lang.ref.WeakReference; import java.util.HashMap; @@ -33,6 +31,7 @@ import java.util.function.Supplier; /** * Class which handles all the queues {@link IQueueExtent} */ +@SuppressWarnings("UnstableApiUsage") public abstract class QueueHandler implements Trimable, Runnable { private ForkJoinPool forkJoinPoolPrimary = new ForkJoinPool(); @@ -77,7 +76,6 @@ public abstract class QueueHandler implements Trimable, Runnable { // TODO reduce mem usage } - long taskAllocate = currentAllocate; boolean wait = false; do { Runnable task = syncTasks.poll(); @@ -100,7 +98,7 @@ public abstract class QueueHandler implements Trimable, Runnable { task.run(); wait = true; } - } while (System.currentTimeMillis() - now < taskAllocate); + } while (System.currentTimeMillis() - now < currentAllocate); } while (!syncTasks.isEmpty()) { final FutureTask task = syncTasks.poll(); diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/SingleThreadQueueExtent.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/SingleThreadQueueExtent.java index d8bc114e2..53632ef9b 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/SingleThreadQueueExtent.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/SingleThreadQueueExtent.java @@ -14,7 +14,12 @@ import com.boydti.fawe.config.Settings; import com.boydti.fawe.util.MathMan; import com.boydti.fawe.util.MemUtil; import com.google.common.util.concurrent.Futures; +import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.world.biome.BiomeType; +import com.sk89q.worldedit.world.block.BlockStateHolder; import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; import java.util.concurrent.ConcurrentLinkedQueue; @@ -306,4 +311,16 @@ public class SingleThreadQueueExtent implements IQueueExtent { public ChunkFilterBlock initFilterBlock() { return new CharFilterBlock(this); } + + @Override + public > boolean setBlock(BlockVector3 position, T block) + throws WorldEditException { + return setBlock(position.getX(),position.getY(), position.getZ(), block); + + } + + @Override + public boolean setBiome(BlockVector2 position, BiomeType biome) { + return setBiome(position.getX(),0, position.getZ(), biome); + } } diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/BitSetBlocks.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/BitSetBlocks.java index 02642433f..dd52778c9 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/BitSetBlocks.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/BitSetBlocks.java @@ -4,6 +4,9 @@ import com.boydti.fawe.FaweCache; import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.object.collection.MemBlockSet; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.WorldEditException; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockStateHolder; @@ -40,11 +43,22 @@ public class BitSetBlocks implements IChunkSet { return row.isEmpty(); } + @Override + public > boolean setBlock(BlockVector3 position, T block) + throws WorldEditException { + return setBlock(position.getX(), position.getY(), position.getZ(), block); + } + @Override public boolean setTile(int x, int y, int z, CompoundTag tile) { return false; } + @Override + public boolean setBiome(BlockVector2 position, BiomeType biome) { + return setBiome(position.getX(),0, position.getZ(), biome); + } + @Override public void setEntity(CompoundTag tag) { } diff --git a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/CharSetBlocks.java b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/CharSetBlocks.java index ee71ccf56..cddb22ae8 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/CharSetBlocks.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/beta/implementation/blocks/CharSetBlocks.java @@ -5,6 +5,9 @@ import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.config.Settings; import com.boydti.fawe.util.MathMan; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.WorldEditException; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockStateHolder; @@ -78,6 +81,12 @@ public class CharSetBlocks extends CharBlocks implements IChunkSet { return true; } + @Override + public > boolean setBlock(BlockVector3 position, T block) + throws WorldEditException { + return setBlock(position.getX(), position.getY(), position.getZ(), block); + } + @Override public boolean setTile(int x, int y, int z, CompoundTag tile) { if (tiles == null) { @@ -88,6 +97,11 @@ public class CharSetBlocks extends CharBlocks implements IChunkSet { return true; } + @Override + public boolean setBiome(BlockVector2 position, BiomeType biome) { + return setBiome(position.getX(),0, position.getZ(), biome); + } + @Override public void setEntity(CompoundTag tag) { if (entities == null) { diff --git a/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/AbstractClipboardFormat.java b/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/AbstractClipboardFormat.java deleted file mode 100644 index 7ebf9bcbb..000000000 --- a/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/AbstractClipboardFormat.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.boydti.fawe.object.clipboard; - -import java.util.Arrays; -import java.util.HashSet; - -public abstract class AbstractClipboardFormat implements IClipboardFormat { - private final String name; - private final HashSet aliases; - - public AbstractClipboardFormat(String name, String... aliases) { - this.name = name; - this.aliases = new HashSet<>(Arrays.asList(aliases)); - } - - @Override - public String getName() { - return name; - } - - @Override - public HashSet getAliases() { - return aliases; - } -} diff --git a/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/EmptyClipboard.java b/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/EmptyClipboard.java index 8a933d9f4..3cee79a4a 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/EmptyClipboard.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/EmptyClipboard.java @@ -69,6 +69,12 @@ public class EmptyClipboard implements Clipboard { return false; } + @Override + public > boolean setBlock(int x, int y, int z, T block) + throws WorldEditException { + return false; + } + @Override public boolean setTile(int x, int y, int z, CompoundTag tile) throws WorldEditException { return false; @@ -79,4 +85,9 @@ public class EmptyClipboard implements Clipboard { return false; } + @Override + public boolean setBiome(int x, int y, int z, BiomeType biome) { + return false; + } + } diff --git a/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/IClipboardFormat.java b/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/IClipboardFormat.java deleted file mode 100644 index 70a46e41e..000000000 --- a/worldedit-core/src/main/java/com/boydti/fawe/object/clipboard/IClipboardFormat.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.boydti.fawe.object.clipboard; - -import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; -import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Set; - -public interface IClipboardFormat { - /** - * Returns the name of this format. - * - * @return The name of the format - */ - String getName(); - - /** - * Create a reader. - * - * @param inputStream the input stream - * @return a reader - * @throws java.io.IOException thrown on I/O error - */ - ClipboardReader getReader(InputStream inputStream) throws IOException; - - /** - * Create a writer. - * - * @param outputStream the output stream - * @return a writer - * @throws IOException thrown on I/O error - */ - ClipboardWriter getWriter(OutputStream outputStream) throws IOException; - - /** - * Return whether the given file is of this format. - * - * @param file the file - * @return true if the given file is of this format - */ - boolean isFormat(File file); - - /** - * Get the default extension - * - * @return - */ - String getExtension(); - - /** - * Get a set of aliases. - * - * @return a set of aliases - */ - Set getAliases(); -} \ No newline at end of file diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java index 2c5c42fbe..97d722462 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java @@ -254,6 +254,11 @@ public class BlockArrayClipboard implements Clipboard, Closeable { return IMP.setBiome(x, z, biome); } + @Override + public boolean setBiome(int x, int y, int z, BiomeType biome) { + return IMP.setBiome(x, z, biome); + } + @Nullable @Override public Operation commit() {