Limit processing

This commit is contained in:
Jesse Boyd 2019-11-02 12:13:42 +01:00
parent 0b2bd862a0
commit df9e9e510a
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
102 changed files with 1339 additions and 501 deletions

View File

@ -2,11 +2,10 @@ package com.boydti.fawe.bukkit;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.IFawe; import com.boydti.fawe.IFawe;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.beta.preloader.AsyncPreloader; import com.boydti.fawe.beta.implementation.cache.preloader.AsyncPreloader;
import com.boydti.fawe.beta.preloader.Preloader; import com.boydti.fawe.beta.implementation.cache.preloader.Preloader;
import com.boydti.fawe.bukkit.adapter.BukkitQueueHandler; import com.boydti.fawe.bukkit.adapter.BukkitQueueHandler;
import com.boydti.fawe.bukkit.adapter.mc1_14.test.TestChunkPacketSend;
import com.boydti.fawe.bukkit.listener.BrushListener; import com.boydti.fawe.bukkit.listener.BrushListener;
import com.boydti.fawe.bukkit.listener.BukkitImageListener; import com.boydti.fawe.bukkit.listener.BukkitImageListener;
import com.boydti.fawe.bukkit.listener.ChunkListener_8; import com.boydti.fawe.bukkit.listener.ChunkListener_8;

View File

@ -1,7 +1,7 @@
package com.boydti.fawe.bukkit.adapter; package com.boydti.fawe.bukkit.adapter;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.bukkit.listener.ChunkListener; import com.boydti.fawe.bukkit.listener.ChunkListener;
import java.lang.reflect.Field; import java.lang.reflect.Field;

View File

@ -3,11 +3,10 @@ package com.boydti.fawe.bukkit.adapter.mc1_14;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks; import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks;
import com.boydti.fawe.bukkit.adapter.DelegateLock; import com.boydti.fawe.bukkit.adapter.DelegateLock;
import com.boydti.fawe.object.collection.AdaptedMap; import com.boydti.fawe.object.collection.AdaptedMap;
import com.boydti.fawe.object.collection.AdaptedSetCollection;
import com.boydti.fawe.object.collection.BitArray4096; import com.boydti.fawe.object.collection.BitArray4096;
import com.boydti.fawe.util.ReflectionUtils; import com.boydti.fawe.util.ReflectionUtils;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@ -22,7 +21,6 @@ import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.internal.Constants;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.block.BlockTypes; import com.sk89q.worldedit.world.block.BlockTypes;
import net.minecraft.server.v1_14_R1.BiomeBase; import net.minecraft.server.v1_14_R1.BiomeBase;
import net.minecraft.server.v1_14_R1.BlockPosition; import net.minecraft.server.v1_14_R1.BlockPosition;

View File

@ -1,9 +1,7 @@
package com.boydti.fawe.bukkit.adapter.mc1_14; package com.boydti.fawe.bukkit.adapter.mc1_14;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.util.ReflectionUtils;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import net.minecraft.server.v1_14_R1.NBTBase; import net.minecraft.server.v1_14_R1.NBTBase;

View File

@ -21,7 +21,7 @@ package com.boydti.fawe.bukkit.adapter.mc1_14;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;

View File

@ -23,7 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.bukkit.FaweBukkit; import com.boydti.fawe.bukkit.FaweBukkit;
import com.boydti.fawe.bukkit.adapter.mc1_14.BukkitGetBlocks_1_14; import com.boydti.fawe.bukkit.adapter.mc1_14.BukkitGetBlocks_1_14;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
@ -35,7 +35,6 @@ import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.BaseEntity;
import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.platform.PlayerProxy;
import com.sk89q.worldedit.history.change.BlockChange; import com.sk89q.worldedit.history.change.BlockChange;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
@ -58,7 +57,6 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.bukkit.Bukkit;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.TreeType; import org.bukkit.TreeType;
import org.bukkit.World; import org.bukkit.World;

View File

@ -20,7 +20,7 @@
package com.sk89q.worldedit.bukkit.adapter; package com.sk89q.worldedit.bukkit.adapter;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.bukkit.FaweBukkit; import com.boydti.fawe.bukkit.FaweBukkit;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.Tag; import com.sk89q.jnbt.Tag;

View File

@ -1,6 +1,6 @@
package com.boydti.fawe; package com.boydti.fawe;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.BBC;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.brush.visualization.VisualQueue; import com.boydti.fawe.object.brush.visualization.VisualQueue;
@ -16,7 +16,6 @@ import com.boydti.fawe.util.TextureUtil;
import com.boydti.fawe.util.WEManager; import com.boydti.fawe.util.WEManager;
import com.github.luben.zstd.util.Native; import com.github.luben.zstd.util.Native;
import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.factory.DefaultTransformParser; import com.sk89q.worldedit.extension.factory.DefaultTransformParser;
import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.session.request.Request; import com.sk89q.worldedit.session.request.Request;
@ -30,12 +29,9 @@ import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean; import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryUsage; import java.lang.management.MemoryUsage;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceAlreadyExistsException;

View File

@ -7,7 +7,6 @@ import com.boydti.fawe.object.RegionWrapper;
import com.boydti.fawe.object.changeset.DiskStorageHistory; import com.boydti.fawe.object.changeset.DiskStorageHistory;
import com.boydti.fawe.object.exception.FaweException; import com.boydti.fawe.object.exception.FaweException;
import com.boydti.fawe.object.extent.LightingExtent; import com.boydti.fawe.object.extent.LightingExtent;
import com.boydti.fawe.object.schematic.Schematic;
import com.boydti.fawe.regions.FaweMaskManager; import com.boydti.fawe.regions.FaweMaskManager;
import com.boydti.fawe.util.EditSessionBuilder; import com.boydti.fawe.util.EditSessionBuilder;
import com.boydti.fawe.util.MainUtil; import com.boydti.fawe.util.MainUtil;
@ -192,7 +191,7 @@ public class FaweAPI {
* @see ClipboardFormat * @see ClipboardFormat
* @see Schematic * @see Schematic
*/ */
public static Schematic load(File file) throws IOException { public static Clipboard load(File file) throws IOException {
return ClipboardFormats.findByFile(file).load(file); return ClipboardFormats.findByFile(file).load(file);
} }

View File

@ -203,6 +203,7 @@ public enum FaweCache implements Trimable {
public static final FaweException LOW_MEMORY = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_LOW_MEMORY); public static final FaweException LOW_MEMORY = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_LOW_MEMORY);
public static final FaweException MAX_ENTITIES = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_ENTITIES); public static final FaweException MAX_ENTITIES = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_ENTITIES);
public static final FaweException MAX_TILES = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_TILES); public static final FaweException MAX_TILES = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_TILES);
public static final FaweException MAX_ITERATIONS = new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_ITERATIONS);
/* /*
thread cache thread cache

View File

@ -1,13 +1,11 @@
package com.boydti.fawe; package com.boydti.fawe;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.beta.preloader.AsyncPreloader; import com.boydti.fawe.beta.implementation.cache.preloader.Preloader;
import com.boydti.fawe.beta.preloader.Preloader;
import com.boydti.fawe.object.FaweCommand; import com.boydti.fawe.object.FaweCommand;
import com.boydti.fawe.regions.FaweMaskManager; import com.boydti.fawe.regions.FaweMaskManager;
import com.boydti.fawe.util.TaskManager; import com.boydti.fawe.util.TaskManager;
import com.boydti.fawe.util.image.ImageViewer; import com.boydti.fawe.util.image.ImageViewer;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import java.io.File; import java.io.File;

View File

@ -1,5 +1,6 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.jetbrains.annotations.Range; import org.jetbrains.annotations.Range;

View File

@ -1,5 +1,7 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
public interface FilterBlockMask { public interface FilterBlockMask {
boolean applyBlock(FilterBlock block); boolean applyBlock(FilterBlock block);

View File

@ -1,7 +1,7 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.util.MathMan; import com.boydti.fawe.util.MathMan;
import com.sk89q.worldedit.util.Direction; import com.sk89q.worldedit.util.Direction;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;

View File

@ -1,8 +1,8 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.implementation.EmptyBatchProcessor; import com.boydti.fawe.beta.implementation.processors.EmptyBatchProcessor;
import com.boydti.fawe.beta.implementation.MultiBatchProcessor; import com.boydti.fawe.beta.implementation.processors.MultiBatchProcessor;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;

View File

@ -1,5 +1,6 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
@ -27,12 +28,6 @@ public interface IChunk<T extends Future<T>> extends Trimable, Callable<T>, IChu
*/ */
void init(IQueueExtent extent, int x, int z); void init(IQueueExtent extent, int x, int z);
/**
* Get the queue
* @return
*/
IQueueExtent getQueue();
/** /**
* Get chunkX * Get chunkX
* @return * @return

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.Trimable; import com.boydti.fawe.beta.Trimable;

View File

@ -1,5 +1,6 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
@ -38,11 +39,6 @@ public interface IDelegateChunk<U extends IChunk> extends IChunk {
return getParent().call(set, finalize); return getParent().call(set, finalize);
} }
@Override
default IQueueExtent getQueue() {
return getParent().getQueue();
}
@Override @Override
default CompoundTag getTag(int x, int y, int z) { default CompoundTag getTag(int x, int y, int z) {
return getParent().getTag(x, y, z); return getParent().getTag(x, y, z);

View File

@ -1,5 +1,6 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View File

@ -1,13 +1,11 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.implementation.IChunkCache; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.implementation.MultiBatchProcessor;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.BaseEntity;
import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard; import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.function.generator.GenBase; import com.sk89q.worldedit.function.generator.GenBase;

View File

@ -1,12 +1,10 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.implementation.IBatchProcessorHolder; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.implementation.IChunkCache; import com.boydti.fawe.beta.implementation.processors.IBatchProcessorHolder;
import com.boydti.fawe.beta.implementation.MultiBatchProcessor;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.function.operation.Operation; import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
@ -19,8 +17,6 @@ import com.sk89q.worldedit.world.block.BlockStateHolder;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.io.Flushable; import java.io.Flushable;
import java.util.Iterator;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.Future; import java.util.concurrent.Future;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.blocks;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.blocks;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.IBlocks; import com.boydti.fawe.beta.IBlocks;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.blocks;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.IBlocks; import com.boydti.fawe.beta.IBlocks;

View File

@ -1,9 +1,8 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.cache;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkCache;
import com.boydti.fawe.beta.Trimable; import com.boydti.fawe.beta.Trimable;
import com.boydti.fawe.util.MathMan; import com.boydti.fawe.util.MathMan;
import com.sk89q.worldedit.world.World;
import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.objects.ObjectIterator; import it.unimi.dsi.fastutil.objects.ObjectIterator;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.preloader; package com.boydti.fawe.beta.implementation.cache.preloader;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.object.collection.MutablePair; import com.boydti.fawe.object.collection.MutablePair;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.preloader; package com.boydti.fawe.beta.implementation.cache.preloader;
import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.entity.Player;

View File

@ -1,7 +1,7 @@
package com.boydti.fawe.beta.implementation.holder; package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.ChunkFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlockMask; import com.boydti.fawe.beta.FilterBlockMask;
import com.boydti.fawe.beta.Flood; import com.boydti.fawe.beta.Flood;
@ -59,11 +59,6 @@ public class ChunkHolder<T extends Future<T>> implements IChunk {
return delegate; return delegate;
} }
@Override
public IQueueExtent getQueue() {
return extent;
}
@Override @Override
public boolean setTile(int x, int y, int z, CompoundTag tag) { public boolean setTile(int x, int y, int z, CompoundTag tag) {
return false; return false;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation.holder; package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IDelegateChunk; import com.boydti.fawe.beta.IDelegateChunk;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation.holder; package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;

View File

@ -0,0 +1,137 @@
package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlockMask;
import com.boydti.fawe.beta.Flood;
import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.beta.IQueueExtent;
import com.sk89q.jnbt.CompoundTag;
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 javax.annotation.Nullable;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.Future;
public enum NullChunk implements IChunk {
INSTANCE;
@Override
public void init(IQueueExtent extent, int x, int z) {}
@Override
public int getX() {
return 0;
}
@Override
public int getZ() {
return 0;
}
@Override
public boolean isEmpty() {
return true;
}
@Override
public Future call() {
return null;
}
@Override
public void filterBlocks(Filter filter, ChunkFilterBlock block, @Nullable Region region) {
}
@Override
public void flood(Flood flood, FilterBlockMask mask, ChunkFilterBlock block) {
}
@Override
public boolean setBiome(int x, int y, int z, BiomeType biome) {
return false;
}
@Override
public boolean setTile(int x, int y, int z, CompoundTag tag) {
return false;
}
@Override
public boolean setBlock(int x, int y, int z, BlockStateHolder block) {
return false;
}
@Override
public BiomeType getBiomeType(int x, int z) {
return null;
}
@Override
public boolean hasSection(int layer) {
return false;
}
@Override
public char[] getArray(int layer) {
return null;
}
@Override
public BlockState getBlock(int x, int y, int z) {
return BlockTypes.__RESERVED__.getDefaultState();
}
@Override
public BaseBlock getFullBlock(int x, int y, int z) {
return BlockTypes.__RESERVED__.getDefaultState().toBaseBlock();
}
@Override
public CompoundTag getTag(int x, int y, int z) {
return null;
}
@Override
public Map<BlockVector3, CompoundTag> getTiles() {
return Collections.emptyMap();
}
@Override
public Set<CompoundTag> getEntities() {
return Collections.emptySet();
}
@Override
public char[] load(int layer) {
return null;
}
@Override
public CompoundTag getEntity(UUID uuid) {
return null;
}
@Override
public Future call(IChunkSet set, Runnable finalize) {
return null;
}
@Override
public boolean trim(boolean aggressive) {
return true;
}
}

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation.holder; package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IDelegateChunk; import com.boydti.fawe.beta.IDelegateChunk;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation.holder; package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;

View File

@ -1,16 +1,10 @@
package com.boydti.fawe.beta.implementation.holder; package com.boydti.fawe.beta.implementation.chunk;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.biome.BiomeType;
import java.lang.ref.Reference; import java.lang.ref.Reference;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
/** /**
* A {@link ReferenceChunk} using {@link WeakReference} to hold the chunk. * A {@link ReferenceChunk} using {@link WeakReference} to hold the chunk.

View File

@ -1,6 +1,6 @@
package com.boydti.fawe.beta.filters; package com.boydti.fawe.beta.implementation.filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.boydti.fawe.beta.FilterBlockMask; import com.boydti.fawe.beta.FilterBlockMask;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;

View File

@ -1,6 +1,6 @@
package com.boydti.fawe.beta.filters; package com.boydti.fawe.beta.implementation.filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
public class CountFilter extends ForkedFilter<CountFilter> { public class CountFilter extends ForkedFilter<CountFilter> {

View File

@ -1,6 +1,6 @@
package com.boydti.fawe.beta.filters; package com.boydti.fawe.beta.implementation.filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.function.mask.ABlockMask; import com.sk89q.worldedit.function.mask.ABlockMask;
import com.sk89q.worldedit.util.Countable; import com.sk89q.worldedit.util.Countable;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.filters; package com.boydti.fawe.beta.implementation.filter;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import java.util.Map; import java.util.Map;

View File

@ -1,7 +1,7 @@
package com.boydti.fawe.beta.filters; package com.boydti.fawe.beta.implementation.filter;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockState;
public class SetFilter implements Filter { public class SetFilter implements Filter {

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;

View File

@ -1,10 +1,9 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.boydti.fawe.beta.Filter;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent; 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.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockState;

View File

@ -1,7 +1,13 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import static com.sk89q.worldedit.world.block.BlockTypes.states; import static com.sk89q.worldedit.world.block.BlockTypes.states;
import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlockMask;
import com.boydti.fawe.beta.Flood;
import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks; import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;

View File

@ -1,5 +1,10 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlockMask;
import com.boydti.fawe.beta.Flood;
import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;

View File

@ -1,4 +1,7 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IDelegateFilter;
public abstract class DelegateFilter<T extends Filter> implements IDelegateFilter { public abstract class DelegateFilter<T extends Filter> implements IDelegateFilter {

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.MaxChangedBlocksException;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.StringTag; import com.sk89q.jnbt.StringTag;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta; package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.packet;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.IBlocks; import com.boydti.fawe.beta.IBlocks;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;

View File

@ -1,10 +1,10 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.google.common.base.Suppliers; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;

View File

@ -0,0 +1,634 @@
package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.implementation.filter.block.ExtentFilterBlock;
import com.boydti.fawe.object.FaweLimit;
import com.boydti.fawe.object.changeset.FaweChangeSet;
import com.boydti.fawe.object.exception.FaweException;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.entity.BaseEntity;
import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.PassthroughExtent;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.function.generator.GenBase;
import com.sk89q.worldedit.function.generator.Resource;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.session.ClipboardHolder;
import com.sk89q.worldedit.util.Countable;
import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.biome.BiomeTypes;
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.BlockType;
import com.sk89q.worldedit.world.block.BlockTypes;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.UUID;
public class LimitExtent extends PassthroughExtent {
private final FaweLimit limit;
/**
* Create a new instance.
*
* @param extent the extent
*/
public LimitExtent(Extent extent, FaweLimit limit) {
super(extent);
this.limit = limit;
}
public List<? extends Entity> getEntities(Region region) {
limit.THROW_MAX_CHECKS(region.getArea());
try {
return getExtent().getEntities(region);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return Collections.emptyList();
}
}
public List<? extends Entity> getEntities() {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getEntities();
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return Collections.emptyList();
}
}
@Nullable
public Entity createEntity(Location location, BaseEntity entity) {
limit.THROW_MAX_CHANGES();
limit.THROW_MAX_ENTITIES();
try {
return getExtent().createEntity(location, entity);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return null;
}
}
@Override
@Nullable
public void removeEntity(int x, int y, int z, UUID uuid) {
limit.THROW_MAX_CHANGES();
limit.THROW_MAX_ENTITIES();
try {
getExtent().removeEntity(x, y, z, uuid);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public boolean regenerateChunk(int x, int z, @Nullable BiomeType type, @Nullable Long seed) {
limit.THROW_MAX_CHANGES(Character.MAX_VALUE);
try {
return getExtent().regenerateChunk(x, z, type, seed);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return false;
}
}
@Override
public int getHighestTerrainBlock(int x, int z, int minY, int maxY) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getHighestTerrainBlock(x, z, minY, maxY);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getHighestTerrainBlock(int x, int z, int minY, int maxY, Mask filter) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getHighestTerrainBlock(x, z, minY, maxY, filter);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getNearestSurfaceLayer(int x, int z, int y, int minY, int maxY) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getNearestSurfaceLayer(x, z, y, minY, maxY);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getNearestSurfaceTerrainBlock(int x, int z, int y, int minY, int maxY, boolean ignoreAir) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getNearestSurfaceTerrainBlock(x, z, y, minY, maxY, ignoreAir);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getNearestSurfaceTerrainBlock(int x, int z, int y, int minY, int maxY) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getNearestSurfaceTerrainBlock(x, z, y, minY, maxY);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getNearestSurfaceTerrainBlock(int x, int z, int y, int minY, int maxY, int failedMin, int failedMax) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getNearestSurfaceTerrainBlock(x, z, y, minY, maxY, failedMin, failedMax);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getNearestSurfaceTerrainBlock(int x, int z, int y, int minY, int maxY, int failedMin, int failedMax, Mask mask) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getNearestSurfaceTerrainBlock(x, z, y, minY, maxY, failedMin, failedMax, mask);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int getNearestSurfaceTerrainBlock(int x, int z, int y, int minY, int maxY, int failedMin, int failedMax, boolean ignoreAir) {
limit.THROW_MAX_CHECKS(FaweCache.IMP.WORLD_HEIGHT);
try {
return getExtent().getNearestSurfaceTerrainBlock(x, z, y, minY, maxY, failedMin, failedMax, ignoreAir);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public void addCaves(Region region) throws WorldEditException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
getExtent().addCaves(region);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public void generate(Region region, GenBase gen) throws WorldEditException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
getExtent().generate(region, gen);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public void addSchems(Region region, Mask mask, List<ClipboardHolder> clipboards, int rarity, boolean rotate) throws WorldEditException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
getExtent().addSchems(region, mask, clipboards, rarity, rotate);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public void spawnResource(Region region, Resource gen, int rarity, int frequency) throws WorldEditException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
getExtent().spawnResource(region, gen, rarity, frequency);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public void addOre(Region region, Mask mask, Pattern material, int size, int frequency, int rarity, int minY, int maxY) throws WorldEditException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
getExtent().addOre(region, mask, material, size, frequency, rarity, minY, maxY);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public void addOres(Region region, Mask mask) throws WorldEditException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
getExtent().addOres(region, mask);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
}
}
@Override
public List<Countable<BlockType>> getBlockDistribution(Region region) {
limit.THROW_MAX_CHECKS(region.getArea());
try {
return getExtent().getBlockDistribution(region);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return Collections.emptyList();
}
}
@Override
public List<Countable<BlockState>> getBlockDistributionWithData(Region region) {
limit.THROW_MAX_CHECKS(region.getArea());
try {
return getExtent().getBlockDistributionWithData(region);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return Collections.emptyList();
}
}
@Override
public int countBlocks(Region region, Set<BaseBlock> searchBlocks) {
limit.THROW_MAX_CHECKS(region.getArea());
try {
return getExtent().countBlocks(region, searchBlocks);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int countBlocks(Region region, Mask searchMask) {
limit.THROW_MAX_CHECKS(region.getArea());
try {
return getExtent().countBlocks(region, searchMask);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public <B extends BlockStateHolder<B>> int setBlocks(Region region, B block) throws MaxChangedBlocksException {
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().setBlocks(region, block);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int setBlocks(Region region, Pattern pattern) throws MaxChangedBlocksException {
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().setBlocks(region, pattern);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public <B extends BlockStateHolder<B>> int replaceBlocks(Region region, Set<BaseBlock> filter, B replacement) throws MaxChangedBlocksException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().replaceBlocks(region, filter, replacement);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int replaceBlocks(Region region, Set<BaseBlock> filter, Pattern pattern) throws MaxChangedBlocksException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().replaceBlocks(region, filter, pattern);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int replaceBlocks(Region region, Mask mask, Pattern pattern) throws MaxChangedBlocksException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().replaceBlocks(region, mask, pattern);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int center(Region region, Pattern pattern) throws MaxChangedBlocksException {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().center(region, pattern);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public int setBlocks(Set<BlockVector3> vset, Pattern pattern) {
limit.THROW_MAX_CHANGES(vset.size());
try {
return getExtent().setBlocks(vset, pattern);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return 0;
}
}
@Override
public <T extends Filter> T apply(Region region, T filter) {
limit.THROW_MAX_CHECKS(region.getArea());
limit.THROW_MAX_CHANGES(region.getArea());
try {
return getExtent().apply(region, filter);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return filter;
}
}
@Override
public <T extends Filter> T apply(Iterable<BlockVector3> positions, T filter) {
int size;
if (positions instanceof Collection) {
size = ((Collection<BlockVector3>) positions).size();
} else if (positions instanceof Region) {
BlockVector3 dim = ((Region) positions).getDimensions();
size = dim.getX() * dim.getY() * dim.getZ();
} else if (positions instanceof Extent) {
BlockVector3 min = ((Extent) positions).getMinimumPoint();
BlockVector3 max = ((Extent) positions).getMinimumPoint();
BlockVector3 dim = max.subtract(min).add(BlockVector3.ONE);
size = dim.getX() * dim.getY() * dim.getZ();
} else {
ExtentFilterBlock block = new ExtentFilterBlock(this);
for (BlockVector3 pos : positions) {
limit.THROW_MAX_CHECKS();
filter.applyBlock(block.init(pos));
}
return filter;
}
limit.THROW_MAX_CHECKS(size);
limit.THROW_MAX_CHANGES(size);
try {
return getExtent().apply(positions, filter);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return filter;
}
}
public BlockState getBlock(BlockVector3 position) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getBlock(position);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return BlockTypes.AIR.getDefaultState();
}
}
public BlockState getBlock(int x, int y, int z) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getBlock(x, y, z);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return BlockTypes.AIR.getDefaultState();
}
}
@Override
public BaseBlock getFullBlock(BlockVector3 position) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getFullBlock(position);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return BlockTypes.AIR.getDefaultState().toBaseBlock();
}
}
public BaseBlock getFullBlock(int x, int y, int z) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getFullBlock(x, y, z);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return BlockTypes.AIR.getDefaultState().toBaseBlock();
}
}
public BiomeType getBiome(BlockVector2 position) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getBiome(position);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return BiomeTypes.FOREST;
}
}
public BiomeType getBiomeType(int x, int z) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getBiomeType(x, z);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return BiomeTypes.FOREST;
}
}
@Deprecated
public <T extends BlockStateHolder<T>> boolean setBlock(BlockVector3 position, T block) throws WorldEditException {
limit.THROW_MAX_CHANGES();
if (block.hasNbtData()) limit.MAX_BLOCKSTATES();
try {
return getExtent().setBlock(position, block);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return false;
}
}
public <T extends BlockStateHolder<T>> boolean setBlock(int x, int y, int z, T block) throws WorldEditException {
limit.THROW_MAX_CHANGES();
if (block.hasNbtData()) limit.MAX_BLOCKSTATES();
try {
return getExtent().setBlock(x, y, z, block);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return false;
}
}
public boolean setTile(int x, int y, int z, CompoundTag tile) throws WorldEditException {
limit.THROW_MAX_CHANGES();
limit.MAX_BLOCKSTATES();
try {
return getExtent().setTile(x, y, z, tile);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return false;
}
}
public boolean setBiome(BlockVector2 position, BiomeType biome) {
limit.THROW_MAX_CHANGES();
try {
return getExtent().setBiome(position, biome);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return false;
}
}
public boolean setBiome(int x, int y, int z, BiomeType biome) {
limit.THROW_MAX_CHANGES();
try {
return getExtent().setBiome(x, y, z, biome);
} catch (FaweException e) {
if (!limit.MAX_FAILS()) {
throw e;
}
return false;
}
}
}

View File

@ -0,0 +1,47 @@
package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.object.FaweLimit;
import com.boydti.fawe.object.exception.FaweException;
import com.sk89q.worldedit.extent.Extent;
public class LimitProcessor implements IBatchProcessor {
private final FaweLimit limit;
private final IBatchProcessor parent;
public LimitProcessor(FaweLimit limit, IBatchProcessor parent) {
this.limit = limit;
this.parent = parent;
}
@Override
public IChunkSet processSet(IChunk chunk, IChunkGet get, IChunkSet set) {
try {
return parent.processSet(chunk, get, set);
} catch (FaweException e) {
if (!limit.MAX_CHANGES()) {
throw e;
}
return null;
}
}
@Override
public boolean processGet(int chunkX, int chunkZ) {
try {
return parent.processGet(chunkX, chunkZ);
} catch (FaweException e) {
if (!limit.MAX_CHECKS()) {
throw e;
}
return false;
}
}
@Override
public Extent construct(Extent child) {
return new LimitExtent(parent.construct(child), limit);
}
}

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.processors;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;

View File

@ -1,11 +1,12 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.queue;
import com.boydti.fawe.beta.ChunkFilterBlock; import com.boydti.fawe.beta.IQueueWrapper;
import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.beta.filters.CountFilter; import com.boydti.fawe.beta.implementation.filter.CountFilter;
import com.boydti.fawe.beta.filters.DistrFilter; import com.boydti.fawe.beta.implementation.filter.DistrFilter;
import com.boydti.fawe.beta.implementation.processors.BatchProcessorHolder;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.changeset.FaweChangeSet; import com.boydti.fawe.object.changeset.FaweChangeSet;
import com.boydti.fawe.object.clipboard.WorldCopyClipboard; import com.boydti.fawe.object.clipboard.WorldCopyClipboard;

View File

@ -1,4 +1,4 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.queue;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
@ -8,6 +8,8 @@ import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.beta.Trimable; import com.boydti.fawe.beta.Trimable;
import com.boydti.fawe.beta.implementation.cache.ChunkCache;
import com.boydti.fawe.beta.IChunkCache;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.collection.CleanableThreadLocal; import com.boydti.fawe.object.collection.CleanableThreadLocal;
import com.boydti.fawe.util.MemUtil; import com.boydti.fawe.util.MemUtil;

View File

@ -1,29 +1,28 @@
package com.boydti.fawe.beta.implementation; package com.boydti.fawe.beta.implementation.queue;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.beta.implementation.filter.block.CharFilterBlock;
import com.boydti.fawe.beta.CharFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.ChunkFilterBlock;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.beta.IChunkCache;
import com.boydti.fawe.beta.implementation.chunk.NullChunk;
import com.boydti.fawe.beta.implementation.blocks.CharSetBlocks; import com.boydti.fawe.beta.implementation.blocks.CharSetBlocks;
import com.boydti.fawe.beta.implementation.holder.ChunkHolder; import com.boydti.fawe.beta.implementation.chunk.ChunkHolder;
import com.boydti.fawe.beta.implementation.holder.ReferenceChunk; import com.boydti.fawe.beta.implementation.chunk.ReferenceChunk;
import com.boydti.fawe.beta.implementation.processors.BatchProcessorHolder;
import com.boydti.fawe.beta.implementation.processors.EmptyBatchProcessor;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.changeset.FaweChangeSet; import com.boydti.fawe.object.changeset.FaweChangeSet;
import com.boydti.fawe.object.exception.FaweException;
import com.boydti.fawe.util.MathMan; import com.boydti.fawe.util.MathMan;
import com.boydti.fawe.util.MemUtil; import com.boydti.fawe.util.MemUtil;
import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.Futures;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;
@ -221,13 +220,15 @@ public class SingleThreadQueueExtent extends BatchProcessorHolder implements IQu
@Override @Override
public final IChunk getOrCreateChunk(int x, int z) { public final IChunk getOrCreateChunk(int x, int z) {
if (!processGet(x, z)) {
throw FaweCache.CHUNK;
}
final long pair = (long) x << 32 | z & 0xffffffffL; final long pair = (long) x << 32 | z & 0xffffffffL;
if (pair == lastPair) { if (pair == lastPair) {
return lastChunk; return lastChunk;
} }
if (!processGet(x, z)) {
lastPair = pair;
lastChunk = NullChunk.INSTANCE;
return NullChunk.INSTANCE;
}
IChunk chunk = chunks.get(pair); IChunk chunk = chunks.get(pair);
if (chunk instanceof ReferenceChunk) { if (chunk instanceof ReferenceChunk) {

View File

@ -6,7 +6,7 @@ import static com.sk89q.worldedit.util.formatting.text.TextComponent.newline;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweAPI; import com.boydti.fawe.FaweAPI;
import com.boydti.fawe.beta.SingleFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.SingleFilterBlock;
import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.BBC;
import com.boydti.fawe.object.RunnableVal; import com.boydti.fawe.object.RunnableVal;
import com.boydti.fawe.object.brush.visualization.cfi.HeightMapMCAGenerator; import com.boydti.fawe.object.brush.visualization.cfi.HeightMapMCAGenerator;
@ -74,7 +74,6 @@ import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.xml.soap.Text;
import org.enginehub.piston.annotation.Command; import org.enginehub.piston.annotation.Command;
import org.enginehub.piston.annotation.CommandContainer; import org.enginehub.piston.annotation.CommandContainer;

View File

@ -118,7 +118,7 @@ public class MCAFile implements Trimable {
public MCAFile init(File file, int mcrX, int mcrZ) throws FileNotFoundException { public MCAFile init(File file, int mcrX, int mcrZ) throws FileNotFoundException {
if (raf != null) { if (raf != null) {
flush(pool); flush(true);
for (int i = 0; i < 4096; i++) { for (int i = 0; i < 4096; i++) {
locations[i] = 0; locations[i] = 0;
} }
@ -484,11 +484,11 @@ public class MCAFile implements Trimable {
} }
} }
public void close(ForkJoinPool pool) { public void close() {
if (raf == null) return; if (raf == null) return;
synchronized (raf) { synchronized (raf) {
if (raf != null) { if (raf != null) {
flush(pool); flush(true);
try { try {
raf.close(); raf.close();
} catch (IOException e) { } catch (IOException e) {

View File

@ -0,0 +1,14 @@
package com.boydti.fawe.jnbt.anvil.mcatest;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
import java.io.File;
import java.io.IOException;
public class MCATest {
public MCATest() throws IOException {
File file = new File("plugins/FastAsyncWorldEdit/tobitower.schematic");
Clipboard loaded = ClipboardFormats.findByFile(file).load(file);
}
}

View File

@ -1,5 +1,7 @@
package com.boydti.fawe.object; package com.boydti.fawe.object;
import com.boydti.fawe.FaweCache;
import java.util.Set; import java.util.Set;
public class FaweLimit { public class FaweLimit {
@ -51,6 +53,47 @@ public class FaweLimit {
public boolean MAX_ITERATIONS() { public boolean MAX_ITERATIONS() {
return true; return true;
} }
@Override
public boolean isUnlimited() {
return true;
}
public void THROW_MAX_CHANGES() {
}
public void THROW_MAX_FAILS() {
}
public void THROW_MAX_CHECKS() {
}
public void THROW_MAX_ITERATIONS() {
}
public void THROW_MAX_BLOCKSTATES() {
}
public void THROW_MAX_ENTITIES() {
}
public void THROW_MAX_CHANGES(int amt) {
}
public void THROW_MAX_FAILS(int amt) {
}
public void THROW_MAX_CHECKS(int amt) {
}
public void THROW_MAX_ITERATIONS(int amt) {
}
public void THROW_MAX_BLOCKSTATES(int amt) {
}
public void THROW_MAX_ENTITIES(int amt) {
}
}; };
MAX.SPEED_REDUCTION = 0; MAX.SPEED_REDUCTION = 0;
MAX.INVENTORY_MODE = 0; MAX.INVENTORY_MODE = 0;
@ -92,6 +135,54 @@ public class FaweLimit {
return MAX_ENTITIES-- > 0; return MAX_ENTITIES-- > 0;
} }
public void THROW_MAX_CHANGES() {
if (MAX_CHANGES-- <= 0) throw FaweCache.MAX_CHANGES;
}
public void THROW_MAX_FAILS() {
if (MAX_FAILS-- <= 0) throw FaweCache.MAX_CHECKS;
}
public void THROW_MAX_CHECKS() {
if (MAX_CHECKS-- <= 0) throw FaweCache.MAX_CHECKS;
}
public void THROW_MAX_ITERATIONS() {
if (MAX_ITERATIONS-- <= 0) throw FaweCache.MAX_ITERATIONS;
}
public void THROW_MAX_BLOCKSTATES() {
if (MAX_BLOCKSTATES-- <= 0) throw FaweCache.MAX_TILES;
}
public void THROW_MAX_ENTITIES() {
if (MAX_ENTITIES-- <= 0) throw FaweCache.MAX_ENTITIES;
}
public void THROW_MAX_CHANGES(int amt) {
if ((MAX_CHANGES -= amt) <= 0) throw FaweCache.MAX_CHANGES;
}
public void THROW_MAX_FAILS(int amt) {
if ((MAX_FAILS -= amt) <= 0) throw FaweCache.MAX_CHECKS;
}
public void THROW_MAX_CHECKS(int amt) {
if ((MAX_CHECKS -= amt) <= 0) throw FaweCache.MAX_CHECKS;
}
public void THROW_MAX_ITERATIONS(int amt) {
if ((MAX_ITERATIONS -= amt) <= 0) throw FaweCache.MAX_ITERATIONS;
}
public void THROW_MAX_BLOCKSTATES(int amt) {
if ((MAX_BLOCKSTATES -= amt) <= 0) throw FaweCache.MAX_TILES;
}
public void THROW_MAX_ENTITIES(int amt) {
if ((MAX_ENTITIES -= amt) <= 0) throw FaweCache.MAX_ENTITIES;
}
public boolean isUnlimited() { public boolean isUnlimited() {
return MAX_CHANGES == Integer.MAX_VALUE && return MAX_CHANGES == Integer.MAX_VALUE &&
MAX_FAILS == Integer.MAX_VALUE && MAX_FAILS == Integer.MAX_VALUE &&

View File

@ -5,8 +5,8 @@ import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.IBlocks; import com.boydti.fawe.beta.IBlocks;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.beta.implementation.FallbackChunkGet; import com.boydti.fawe.beta.implementation.blocks.FallbackChunkGet;
import com.boydti.fawe.jnbt.anvil.MCAChunk; import com.boydti.fawe.jnbt.anvil.MCAChunk;
import com.boydti.fawe.object.FaweInputStream; import com.boydti.fawe.object.FaweInputStream;
import com.boydti.fawe.object.FaweOutputStream; import com.boydti.fawe.object.FaweOutputStream;
@ -19,15 +19,12 @@ import com.boydti.fawe.object.collection.DifferentialBlockBuffer;
import com.boydti.fawe.object.collection.LocalBlockVector2DSet; import com.boydti.fawe.object.collection.LocalBlockVector2DSet;
import com.boydti.fawe.object.collection.SummedAreaTable; import com.boydti.fawe.object.collection.SummedAreaTable;
import com.boydti.fawe.object.exception.FaweChunkLoadException; import com.boydti.fawe.object.exception.FaweChunkLoadException;
import com.boydti.fawe.object.schematic.Schematic;
import com.boydti.fawe.util.CachedTextureUtil; import com.boydti.fawe.util.CachedTextureUtil;
import com.boydti.fawe.util.RandomTextureUtil; import com.boydti.fawe.util.RandomTextureUtil;
import com.boydti.fawe.util.ReflectionUtils; import com.boydti.fawe.util.ReflectionUtils;
import com.boydti.fawe.util.TaskManager;
import com.boydti.fawe.util.TextureUtil; import com.boydti.fawe.util.TextureUtil;
import com.boydti.fawe.util.image.Drawable; import com.boydti.fawe.util.image.Drawable;
import com.boydti.fawe.util.image.ImageViewer; import com.boydti.fawe.util.image.ImageViewer;
import com.google.common.base.Suppliers;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.LocalSession;
@ -626,12 +623,11 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
} }
} }
Clipboard clipboard = holder.getClipboard(); Clipboard clipboard = holder.getClipboard();
Schematic schematic = new Schematic(clipboard);
Transform transform = holder.getTransform(); Transform transform = holder.getTransform();
if (transform.isIdentity()) { if (transform.isIdentity()) {
schematic.paste(this, mutable, false); clipboard.paste(this, mutable, false);
} else { } else {
schematic.paste(this, mutable, false, transform); clipboard.paste(this, mutable, false, transform);
} }
if (x + distance < getWidth()) { if (x + distance < getWidth()) {
x += distance; x += distance;
@ -675,12 +671,11 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
} }
} }
Clipboard clipboard = holder.getClipboard(); Clipboard clipboard = holder.getClipboard();
Schematic schematic = new Schematic(clipboard);
Transform transform = holder.getTransform(); Transform transform = holder.getTransform();
if (transform.isIdentity()) { if (transform.isIdentity()) {
schematic.paste(this, mutable, false); clipboard.paste(this, mutable, false);
} else { } else {
schematic.paste(this, mutable, false, transform); clipboard.paste(this, mutable, false, transform);
} }
if (x + distance < getWidth()) { if (x + distance < getWidth()) {
x += distance; x += distance;

View File

@ -1,6 +1,6 @@
package com.boydti.fawe.object.clipboard; package com.boydti.fawe.object.clipboard;
import com.boydti.fawe.beta.AbstractFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.AbstractFilterBlock;
import com.boydti.fawe.jnbt.streamer.IntValueReader; import com.boydti.fawe.jnbt.streamer.IntValueReader;
import com.google.common.collect.ForwardingIterator; import com.google.common.collect.ForwardingIterator;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;

View File

@ -2,7 +2,6 @@ package com.boydti.fawe.object.pattern;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.object.schematic.Schematic;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.extent.clipboard.Clipboard;
@ -47,12 +46,11 @@ public class RandomFullClipboardPattern extends AbstractPattern {
holder.setTransform(transform); holder.setTransform(transform);
} }
Clipboard clipboard = holder.getClipboard(); Clipboard clipboard = holder.getClipboard();
Schematic schematic = new Schematic(clipboard);
Transform newTransform = holder.getTransform(); Transform newTransform = holder.getTransform();
if (newTransform.isIdentity()) { if (newTransform.isIdentity()) {
schematic.paste(extent, set, false); clipboard.paste(extent, set, false);
} else { } else {
schematic.paste(extent, set, false, newTransform); clipboard.paste(extent, set, false, newTransform);
} }
return true; return true;
} }

View File

@ -1,267 +0,0 @@
package com.boydti.fawe.object.schematic;
import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlock;
import com.boydti.fawe.object.clipboard.LinearClipboard;
import com.boydti.fawe.object.clipboard.ReadOnlyClipboard;
import com.boydti.fawe.util.EditSessionBuilder;
import com.boydti.fawe.util.MaskTraverser;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
import com.sk89q.worldedit.extent.transform.BlockTransformExtent;
import com.sk89q.worldedit.function.RegionFunction;
import com.sk89q.worldedit.function.mask.ExistingBlockMask;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.function.visitor.RegionVisitor;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector2;
import com.sk89q.worldedit.math.transform.Transform;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.block.BlockStateHolder;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.annotation.Nullable;
public class Schematic {
private final Clipboard clipboard;
public Schematic(Clipboard clipboard) {
checkNotNull(clipboard);
this.clipboard = clipboard;
}
/**
* Get the schematic for a region
*
* @param region
*/
public Schematic(Region region) {
checkNotNull(region);
checkNotNull(region.getWorld(),
"World cannot be null (use the other constructor for the region)");
EditSession session = new EditSessionBuilder(region.getWorld()).allowedRegionsEverywhere()
.autoQueue(false).build();
this.clipboard = new BlockArrayClipboard(region, ReadOnlyClipboard.of(session, region));
}
@Nullable
public Clipboard getClipboard() {
return clipboard;
}
/**
* Forwards to paste(world, to, true, true, null)
*
* @param world
* @param to
* @return
*/
public EditSession paste(World world, BlockVector3 to) {
return paste(world, to, true, true, null);
}
public void save(File file, ClipboardFormat format) throws IOException {
checkNotNull(file);
checkNotNull(format);
if (!file.exists()) {
File parent = file.getParentFile();
if (parent != null) {
parent.mkdirs();
}
file.createNewFile();
}
save(new FileOutputStream(file), format);
}
/**
* Save this schematic to a stream
*
* @param stream
* @param format
* @throws IOException
*/
public void save(OutputStream stream, ClipboardFormat format) throws IOException {
checkNotNull(stream);
checkNotNull(format);
try (ClipboardWriter writer = format.getWriter(stream)) {
writer.write(clipboard);
}
}
public EditSession paste(World world, BlockVector3 to, boolean allowUndo, boolean pasteAir,
@Nullable Transform transform) {
return paste(world, to, allowUndo, pasteAir, true, transform);
}
/**
* Paste this schematic in a world
*
* @param world
* @param to
* @param allowUndo
* @param pasteAir
* @param transform
* @return
*/
public EditSession paste(World world, BlockVector3 to, boolean allowUndo, boolean pasteAir,
boolean copyEntities, @Nullable Transform transform) {
checkNotNull(world);
checkNotNull(to);
EditSession editSession;
if (world instanceof EditSession) {
editSession = (EditSession) world;
} else {
EditSessionBuilder builder = new EditSessionBuilder(world).autoQueue(true)
.checkMemory(false).allowedRegionsEverywhere().limitUnlimited();
if (allowUndo) {
editSession = builder.build();
} else {
editSession = builder.changeSetNull().fastmode(true).build();
}
}
Extent extent = clipboard;
Mask sourceMask = editSession.getSourceMask();
if (transform != null && !transform.isIdentity()) {
extent = new BlockTransformExtent(clipboard, transform);
} else if (sourceMask == null) {
paste(editSession, to, pasteAir);
editSession.flushQueue();
return editSession;
}
ForwardExtentCopy copy = new ForwardExtentCopy(extent, clipboard.getRegion(),
clipboard.getOrigin(), editSession, to);
if (transform != null && !transform.isIdentity()) {
copy.setTransform(transform);
}
copy.setCopyingEntities(copyEntities);
if (sourceMask != null) {
new MaskTraverser(sourceMask).reset(extent);
copy.setSourceMask(sourceMask);
editSession.setSourceMask(null);
}
if (!pasteAir) {
copy.setSourceMask(new ExistingBlockMask(clipboard));
}
try {
Operations.completeLegacy(copy);
} catch (MaxChangedBlocksException e) {
e.printStackTrace();
}
editSession.flushQueue();
return editSession;
}
public void paste(Extent extent, BlockVector3 to, boolean pasteAir, @Nullable Transform transform) {
Extent source = clipboard;
if (transform != null && !transform.isIdentity()) {
source = new BlockTransformExtent(clipboard, transform);
}
ForwardExtentCopy copy = new ForwardExtentCopy(source, clipboard.getRegion(), clipboard.getOrigin(), extent, to);
if (transform != null) {
copy.setTransform(transform);
}
copy.setCopyingBiomes(clipboard.hasBiomes());
if (extent instanceof EditSession) {
EditSession editSession = (EditSession) extent;
Mask sourceMask = editSession.getSourceMask();
if (sourceMask != null) {
new MaskTraverser(sourceMask).reset(extent);
copy.setSourceMask(sourceMask);
editSession.setSourceMask(null);
}
}
if (!pasteAir) {
copy.setSourceMask(new ExistingBlockMask(clipboard));
}
Operations.completeBlindly(copy);
}
public void paste(Extent extent, BlockVector3 to, boolean pasteAir) {
Region region = clipboard.getRegion().clone();
final BlockVector3 origin = clipboard.getOrigin();
final boolean copyBiomes = clipboard.hasBiomes();
// To must be relative to the clipboard origin ( player location - clipboard origin ) (as the locations supplied are relative to the world origin)
final int relx = to.getBlockX() - origin.getBlockX();
final int rely = to.getBlockY() - origin.getBlockY();
final int relz = to.getBlockZ() - origin.getBlockZ();
clipboard.apply(clipboard, new Filter() {
@Override
public void applyBlock(FilterBlock block) {
}
});
System.out.println("Rel " + relx + "," + rely + "," + relz + " | " + to + " | " + origin);
System.out.println("TODO optimize paste using above apply");
Operation visitor = new RegionVisitor(region, new RegionFunction() {
// MutableBlockVector2 mpos2d_2 = new MutableBlockVector2();
MutableBlockVector2 mpos2d = new MutableBlockVector2();
{
mpos2d.setComponents(Integer.MIN_VALUE, Integer.MIN_VALUE);
}
@Override
public boolean apply(BlockVector3 mutable) throws WorldEditException {
BlockState block = clipboard.getBlock(mutable);
System.out.println("Pos " + mutable);
int xx = mutable.getBlockX() + relx;
int zz = mutable.getBlockZ() + relz;
if (copyBiomes && xx != mpos2d.getBlockX() && zz != mpos2d.getBlockZ()) {
mpos2d.setComponents(xx, zz);
// extent.setBiome(mpos2d, clipboard.getBiome(mpos2d_2.setComponents(mutable.getBlockX(), mutable.getBlockZ())));
extent.setBiome(mpos2d, clipboard
.getBiome(BlockVector2.at(mutable.getBlockX(), mutable.getBlockZ())));
}
if (!pasteAir && block.getBlockType().getMaterial().isAir()) {
return false;
}
extent.setBlock(xx, mutable.getBlockY() + rely, zz, block);
return false;
}
});
Operations.completeBlindly(visitor);
// Entity offset is the paste location subtract the clipboard origin (entity's location is already relative to the world origin)
final int entityOffsetX = to.getBlockX() - origin.getBlockX();
final int entityOffsetY = to.getBlockY() - origin.getBlockY();
final int entityOffsetZ = to.getBlockZ() - origin.getBlockZ();
// entities
for (Entity entity : clipboard.getEntities()) {
// skip players on pasting schematic
if (entity.getState() != null && entity.getState().getType().getId()
.equals("minecraft:player")) {
continue;
}
Location pos = entity.getLocation();
Location newPos = new Location(pos.getExtent(), pos.getX() + entityOffsetX,
pos.getY() + entityOffsetY, pos.getZ() + entityOffsetZ, pos.getYaw(),
pos.getPitch());
extent.createEntity(newPos, entity.getState());
}
}
}

View File

@ -3,8 +3,10 @@ package com.boydti.fawe.util;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweAPI; import com.boydti.fawe.FaweAPI;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.beta.implementation.ParallelQueueExtent; import com.boydti.fawe.beta.implementation.processors.LimitProcessor;
import com.boydti.fawe.beta.implementation.queue.ParallelQueueExtent;
import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.BBC;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.logging.LoggingChangeSet; import com.boydti.fawe.logging.LoggingChangeSet;
@ -18,7 +20,6 @@ import com.boydti.fawe.object.changeset.BlockBagChangeSet;
import com.boydti.fawe.object.changeset.DiskStorageHistory; import com.boydti.fawe.object.changeset.DiskStorageHistory;
import com.boydti.fawe.object.changeset.FaweChangeSet; import com.boydti.fawe.object.changeset.FaweChangeSet;
import com.boydti.fawe.object.changeset.MemoryOptimizedHistory; import com.boydti.fawe.object.changeset.MemoryOptimizedHistory;
import com.boydti.fawe.object.exception.FaweException;
import com.boydti.fawe.object.extent.FaweRegionExtent; import com.boydti.fawe.object.extent.FaweRegionExtent;
import com.boydti.fawe.object.extent.MultiRegionExtent; import com.boydti.fawe.object.extent.MultiRegionExtent;
import com.boydti.fawe.object.extent.NullExtent; import com.boydti.fawe.object.extent.NullExtent;
@ -422,10 +423,14 @@ public class EditSessionBuilder {
} else { } else {
// this.extent = new HeightBoundExtent(this.extent, this.limit, 0, maxY); // this.extent = new HeightBoundExtent(this.extent, this.limit, 0, maxY);
} }
IBatchProcessor limitProcessor = regionExtent;
if (limit != null && !limit.isUnlimited()) {
limitProcessor = new LimitProcessor(limit, limitProcessor);
}
if (regionExtent != null && queue != null && combineStages) { if (regionExtent != null && queue != null && combineStages) {
queue.addProcessor(regionExtent); queue.addProcessor(limitProcessor);
} else if (regionExtent != null) { } else if (regionExtent != null) {
this.extent = regionExtent; this.extent = limitProcessor.construct(regionExtent.getExtent());
} }
if (this.limit.STRIP_NBT != null && !this.limit.STRIP_NBT.isEmpty()) { if (this.limit.STRIP_NBT != null && !this.limit.STRIP_NBT.isEmpty()) {
System.out.println("TODO add batch processor for strip nbt"); System.out.println("TODO add batch processor for strip nbt");

View File

@ -1,9 +1,8 @@
package com.boydti.fawe.util; package com.boydti.fawe.util;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.object.RunnableVal; import com.boydti.fawe.object.RunnableVal;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -13,7 +12,6 @@ import java.util.Collection;
import java.util.Iterator; import java.util.Iterator;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier; import java.util.function.Supplier;

View File

@ -1,7 +1,7 @@
package com.boydti.fawe.util; package com.boydti.fawe.util;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.SingleFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.SingleFilterBlock;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.util.image.ImageUtil; import com.boydti.fawe.util.image.ImageUtil;
import com.google.gson.Gson; import com.google.gson.Gson;

View File

@ -2,7 +2,7 @@ package com.boydti.fawe.util.task;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.IQueueExtent; import com.boydti.fawe.beta.IQueueExtent;
import com.boydti.fawe.beta.implementation.QueueHandler; import com.boydti.fawe.beta.implementation.queue.QueueHandler;
import com.boydti.fawe.object.Metadatable; import com.boydti.fawe.object.Metadatable;
import com.boydti.fawe.object.RunnableVal; import com.boydti.fawe.object.RunnableVal;
import com.boydti.fawe.util.TaskManager; import com.boydti.fawe.util.TaskManager;

View File

@ -1,7 +1,7 @@
package com.boydti.fawe.wrappers; package com.boydti.fawe.wrappers;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.object.RunnableVal; import com.boydti.fawe.object.RunnableVal;
import com.boydti.fawe.util.ExtentTraverser; import com.boydti.fawe.util.ExtentTraverser;
import com.boydti.fawe.util.TaskManager; import com.boydti.fawe.util.TaskManager;

View File

@ -19,10 +19,6 @@
package com.sk89q.worldedit.command; package com.sk89q.worldedit.command;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.sk89q.worldedit.command.util.Logging.LogMode.PLACEMENT;
import static com.sk89q.worldedit.command.util.Logging.LogMode.REGION;
import com.boydti.fawe.FaweAPI; import com.boydti.fawe.FaweAPI;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.BBC;
@ -35,12 +31,9 @@ import com.boydti.fawe.object.clipboard.URIClipboardHolder;
import com.boydti.fawe.object.clipboard.WorldCutClipboard; import com.boydti.fawe.object.clipboard.WorldCutClipboard;
import com.boydti.fawe.object.exception.FaweException; import com.boydti.fawe.object.exception.FaweException;
import com.boydti.fawe.object.io.FastByteArrayOutputStream; import com.boydti.fawe.object.io.FastByteArrayOutputStream;
import com.boydti.fawe.object.schematic.Schematic;
import com.boydti.fawe.util.ImgurUtility; import com.boydti.fawe.util.ImgurUtility;
import com.boydti.fawe.util.MainUtil; import com.boydti.fawe.util.MainUtil;
import com.boydti.fawe.util.MaskTraverser; import com.boydti.fawe.util.MaskTraverser;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.LocalConfiguration; import com.sk89q.worldedit.LocalConfiguration;
import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.LocalSession;
@ -77,6 +70,13 @@ import com.sk89q.worldedit.regions.RegionSelector;
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector; import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.session.ClipboardHolder;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import org.enginehub.piston.annotation.Command;
import org.enginehub.piston.annotation.CommandContainer;
import org.enginehub.piston.annotation.param.Arg;
import org.enginehub.piston.annotation.param.ArgFlag;
import org.enginehub.piston.annotation.param.Switch;
import org.enginehub.piston.inject.InjectedValueAccess;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@ -88,12 +88,10 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import org.enginehub.piston.annotation.Command;
import org.enginehub.piston.annotation.CommandContainer; import static com.google.common.base.Preconditions.checkNotNull;
import org.enginehub.piston.annotation.param.Arg; import static com.sk89q.worldedit.command.util.Logging.LogMode.PLACEMENT;
import org.enginehub.piston.annotation.param.ArgFlag; import static com.sk89q.worldedit.command.util.Logging.LogMode.REGION;
import org.enginehub.piston.annotation.param.Switch;
import org.enginehub.piston.inject.InjectedValueAccess;
/** /**
@ -518,8 +516,7 @@ public class ClipboardCommands {
final BlockVector3 to = atOrigin ? origin : session.getPlacementPosition(actor); final BlockVector3 to = atOrigin ? origin : session.getPlacementPosition(actor);
checkPaste(actor, editSession, to, holder, clipboard); checkPaste(actor, editSession, to, holder, clipboard);
Schematic schem = new Schematic(clipboard); clipboard.paste(editSession, to, !ignoreAirBlocks);
schem.paste(editSession, to, !ignoreAirBlocks);
Region region = clipboard.getRegion().clone(); Region region = clipboard.getRegion().clone();
if (selectPasted) { if (selectPasted) {

View File

@ -31,8 +31,8 @@ import static com.sk89q.worldedit.regions.Regions.minimumBlockY;
import com.boydti.fawe.FaweAPI; import com.boydti.fawe.FaweAPI;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.implementation.ChunkSendProcessor; import com.boydti.fawe.beta.implementation.processors.ChunkSendProcessor;
import com.boydti.fawe.beta.implementation.NullProcessor; import com.boydti.fawe.beta.implementation.processors.NullProcessor;
import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.BBC;
import com.boydti.fawe.object.FaweLimit; import com.boydti.fawe.object.FaweLimit;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
@ -76,10 +76,8 @@ import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockStateHolder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.sk89q.worldedit.world.block.BlockTypes; import com.sk89q.worldedit.world.block.BlockTypes;

View File

@ -20,7 +20,6 @@
package com.sk89q.worldedit.entity; package com.sk89q.worldedit.entity;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.beta.implementation.ChunkPacket;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.brush.visualization.VirtualWorld; import com.boydti.fawe.object.brush.visualization.VirtualWorld;
import com.boydti.fawe.object.clipboard.DiskOptimizedClipboard; import com.boydti.fawe.object.clipboard.DiskOptimizedClipboard;
@ -51,7 +50,6 @@ import com.sk89q.worldedit.world.gamemode.GameMode;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.io.File; import java.io.File;
import java.util.function.Supplier;
/** /**
* Represents a player * Represents a player

View File

@ -38,6 +38,7 @@ import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector3; import com.sk89q.worldedit.math.MutableBlockVector3;
import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.regions.ConvexPolyhedralRegion; import com.sk89q.worldedit.regions.ConvexPolyhedralRegion;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.CylinderRegion; import com.sk89q.worldedit.regions.CylinderRegion;
import com.sk89q.worldedit.regions.Polygonal2DRegion; import com.sk89q.worldedit.regions.Polygonal2DRegion;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
@ -686,14 +687,16 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
* *
* @return an array of allowed regions * @return an array of allowed regions
*/ */
@Deprecated
public Region[] getCurrentRegions() { public Region[] getCurrentRegions() {
return WEManager.IMP.getMask(this); return getCurrentRegions(FaweMaskManager.MaskType.MEMBER);
} }
@Deprecated
public Region[] getCurrentRegions(FaweMaskManager.MaskType type) { public Region[] getCurrentRegions(FaweMaskManager.MaskType type) {
return WEManager.IMP.getMask(this, type); BlockVector3 pos1 = BlockVector3.at(20, 20, 20);
BlockVector3 pos2 = BlockVector3.at(40, 40, 40);
Region[] regions = {new CuboidRegion(getWorld(), pos1, pos2)};
return regions;
// return WEManager.IMP.getMask(this, type);
} }
/** /**

View File

@ -26,6 +26,7 @@ import com.boydti.fawe.command.CFICommands;
import com.boydti.fawe.command.CFICommandsRegistration; import com.boydti.fawe.command.CFICommandsRegistration;
import com.boydti.fawe.config.BBC; import com.boydti.fawe.config.BBC;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.exception.FaweException;
import com.boydti.fawe.object.task.ThrowableSupplier; import com.boydti.fawe.object.task.ThrowableSupplier;
import com.boydti.fawe.util.StringMan; import com.boydti.fawe.util.StringMan;
import com.boydti.fawe.util.TaskManager; import com.boydti.fawe.util.TaskManager;
@ -664,8 +665,7 @@ public final class PlatformCommandManager {
MemoizingValueAccess context = initializeInjectedValues(event::getArguments, actor); MemoizingValueAccess context = initializeInjectedValues(event::getArguments, actor);
ThrowableSupplier<Throwable> task = ThrowableSupplier<Throwable> task = () -> commandManager.execute(context, ImmutableList.copyOf(split));
() -> commandManager.execute(context, ImmutableList.copyOf(split));
handleCommandTask(task, context, session, event); handleCommandTask(task, context, session, event);
} }
@ -699,6 +699,8 @@ public final class PlatformCommandManager {
} else { } else {
actor.print(e.getRichMessage()); actor.print(e.getRichMessage());
} }
} catch (FaweException e) {
actor.printError("Edit cancelled: " + e.getMessage());
} catch (UsageException e) { } catch (UsageException e) {
actor.print(TextComponent.builder("") actor.print(TextComponent.builder("")
.color(TextColor.RED) .color(TextColor.RED)

View File

@ -21,8 +21,7 @@ package com.sk89q.worldedit.extent;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.beta.AbstractFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.ExtentFilterBlock;
import com.boydti.fawe.beta.ExtentFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.object.changeset.FaweChangeSet; import com.boydti.fawe.object.changeset.FaweChangeSet;
@ -68,7 +67,6 @@ import com.sk89q.worldedit.world.block.BlockType;
import com.sk89q.worldedit.world.block.BlockTypes; import com.sk89q.worldedit.world.block.BlockTypes;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;

View File

@ -24,26 +24,60 @@ import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.clipboard.CPUOptimizedClipboard; import com.boydti.fawe.object.clipboard.CPUOptimizedClipboard;
import com.boydti.fawe.object.clipboard.DiskOptimizedClipboard; import com.boydti.fawe.object.clipboard.DiskOptimizedClipboard;
import com.boydti.fawe.object.clipboard.MemoryOptimizedClipboard; import com.boydti.fawe.object.clipboard.MemoryOptimizedClipboard;
import com.boydti.fawe.object.clipboard.ReadOnlyClipboard;
import com.boydti.fawe.util.EditSessionBuilder;
import com.boydti.fawe.util.MaskTraverser;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
import com.sk89q.worldedit.extent.transform.BlockTransformExtent;
import com.sk89q.worldedit.function.RegionFunction;
import com.sk89q.worldedit.function.mask.ExistingBlockMask;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.function.visitor.RegionVisitor;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.math.MutableBlockVector2;
import com.sk89q.worldedit.math.transform.Transform;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.regions.Regions; import com.sk89q.worldedit.regions.Regions;
import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BlockState;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.io.Closeable; import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI; import java.net.URI;
import java.util.Iterator; import java.util.Iterator;
import java.util.UUID; import java.util.UUID;
import static com.google.common.base.Preconditions.checkNotNull;
/** /**
* Specifies an object that implements something suitable as a "clipboard." * Specifies an object that implements something suitable as a "clipboard."
*/ */
public interface Clipboard extends Extent, Iterable<BlockVector3>, Closeable { public interface Clipboard extends Extent, Iterable<BlockVector3>, Closeable {
static Clipboard create(BlockVector3 size, UUID uuid) { public static Clipboard create(Region region) {
checkNotNull(region);
checkNotNull(region.getWorld(),
"World cannot be null (use the other constructor for the region)");
EditSession session = new EditSessionBuilder(region.getWorld()).allowedRegionsEverywhere()
.autoQueue(false).build();
return ReadOnlyClipboard.of(session, region);
}
public static Clipboard create(BlockVector3 size, UUID uuid) {
if (Settings.IMP.CLIPBOARD.USE_DISK) { if (Settings.IMP.CLIPBOARD.USE_DISK) {
return new DiskOptimizedClipboard(size, uuid); return new DiskOptimizedClipboard(size, uuid);
} else if (Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL == 0) { } else if (Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL == 0) {
@ -150,4 +184,204 @@ public interface Clipboard extends Extent, Iterable<BlockVector3>, Closeable {
default void close() { default void close() {
} }
/*
Utility methods
*/
/**
* Forwards to paste(world, to, true, true, null)
*
* @param world
* @param to
* @return
*/
default EditSession paste(World world, BlockVector3 to) {
return paste(world, to, true, true, null);
}
default void save(File file, ClipboardFormat format) throws IOException {
checkNotNull(file);
checkNotNull(format);
if (!file.exists()) {
File parent = file.getParentFile();
if (parent != null) {
parent.mkdirs();
}
file.createNewFile();
}
save(new FileOutputStream(file), format);
}
/**
* Save this schematic to a stream
*
* @param stream
* @param format
* @throws IOException
*/
default void save(OutputStream stream, ClipboardFormat format) throws IOException {
checkNotNull(stream);
checkNotNull(format);
try (ClipboardWriter writer = format.getWriter(stream)) {
writer.write(this);
}
}
default EditSession paste(World world, BlockVector3 to, boolean allowUndo, boolean pasteAir,
@Nullable Transform transform) {
return paste(world, to, allowUndo, pasteAir, true, transform);
}
/**
* Paste this schematic in a world
*
* @param world
* @param to
* @param allowUndo
* @param pasteAir
* @param transform
* @return
*/
default EditSession paste(World world, BlockVector3 to, boolean allowUndo, boolean pasteAir,
boolean copyEntities, @Nullable Transform transform) {
checkNotNull(world);
checkNotNull(to);
EditSession editSession;
if (world instanceof EditSession) {
editSession = (EditSession) world;
} else {
EditSessionBuilder builder = new EditSessionBuilder(world).autoQueue(true)
.checkMemory(false).allowedRegionsEverywhere().limitUnlimited();
if (allowUndo) {
editSession = builder.build();
} else {
editSession = builder.changeSetNull().fastmode(true).build();
}
}
Extent extent = this;
Mask sourceMask = editSession.getSourceMask();
if (transform != null && !transform.isIdentity()) {
extent = new BlockTransformExtent(this, transform);
} else if (sourceMask == null) {
paste(editSession, to, pasteAir);
editSession.flushQueue();
return editSession;
}
ForwardExtentCopy copy = new ForwardExtentCopy(extent, this.getRegion(),
this.getOrigin(), editSession, to);
if (transform != null && !transform.isIdentity()) {
copy.setTransform(transform);
}
copy.setCopyingEntities(copyEntities);
if (sourceMask != null) {
new MaskTraverser(sourceMask).reset(extent);
copy.setSourceMask(sourceMask);
editSession.setSourceMask(null);
}
if (!pasteAir) {
copy.setSourceMask(new ExistingBlockMask(this));
}
try {
Operations.completeLegacy(copy);
} catch (MaxChangedBlocksException e) {
e.printStackTrace();
}
editSession.flushQueue();
return editSession;
}
default void paste(Extent extent, BlockVector3 to, boolean pasteAir, @Nullable Transform transform) {
Extent source = this;
if (transform != null && !transform.isIdentity()) {
source = new BlockTransformExtent(this, transform);
}
ForwardExtentCopy copy = new ForwardExtentCopy(source, this.getRegion(), this.getOrigin(), extent, to);
if (transform != null) {
copy.setTransform(transform);
}
copy.setCopyingBiomes(this.hasBiomes());
if (extent instanceof EditSession) {
EditSession editSession = (EditSession) extent;
Mask sourceMask = editSession.getSourceMask();
if (sourceMask != null) {
new MaskTraverser(sourceMask).reset(extent);
copy.setSourceMask(sourceMask);
editSession.setSourceMask(null);
}
}
if (!pasteAir) {
copy.setSourceMask(new ExistingBlockMask(this));
}
Operations.completeBlindly(copy);
}
default void paste(Extent extent, BlockVector3 to, boolean pasteAir) {
Region region = this.getRegion().clone();
final BlockVector3 origin = this.getOrigin();
final boolean copyBiomes = this.hasBiomes();
// To must be relative to the clipboard origin ( player location - clipboard origin ) (as the locations supplied are relative to the world origin)
final int relx = to.getBlockX() - origin.getBlockX();
final int rely = to.getBlockY() - origin.getBlockY();
final int relz = to.getBlockZ() - origin.getBlockZ();
// this.apply(this, new Filter() {
// @Override
// public void applyBlock(FilterBlock block) {
//
// }
// });
System.out.println("Rel " + relx + "," + rely + "," + relz + " | " + to + " | " + origin);
System.out.println("TODO optimize paste using above apply");
Operation visitor = new RegionVisitor(region, new RegionFunction() {
// MutableBlockVector2 mpos2d_2 = new MutableBlockVector2();
MutableBlockVector2 mpos2d = new MutableBlockVector2();
{
mpos2d.setComponents(Integer.MIN_VALUE, Integer.MIN_VALUE);
}
@Override
public boolean apply(BlockVector3 mutable) throws WorldEditException {
BlockState block = getBlock(mutable);
System.out.println("Pos " + mutable);
int xx = mutable.getBlockX() + relx;
int zz = mutable.getBlockZ() + relz;
if (copyBiomes && xx != mpos2d.getBlockX() && zz != mpos2d.getBlockZ()) {
mpos2d.setComponents(xx, zz);
// extent.setBiome(mpos2d, clipboard.getBiome(mpos2d_2.setComponents(mutable.getBlockX(), mutable.getBlockZ())));
extent.setBiome(mpos2d, Clipboard.this
.getBiome(BlockVector2.at(mutable.getBlockX(), mutable.getBlockZ())));
}
if (!pasteAir && block.getBlockType().getMaterial().isAir()) {
return false;
}
extent.setBlock(xx, mutable.getBlockY() + rely, zz, block);
return false;
}
});
Operations.completeBlindly(visitor);
// Entity offset is the paste location subtract the clipboard origin (entity's location is already relative to the world origin)
final int entityOffsetX = to.getBlockX() - origin.getBlockX();
final int entityOffsetY = to.getBlockY() - origin.getBlockY();
final int entityOffsetZ = to.getBlockZ() - origin.getBlockZ();
// entities
for (Entity entity : this.getEntities()) {
// skip players on pasting schematic
if (entity.getState() != null && entity.getState().getType().getId()
.equals("minecraft:player")) {
continue;
}
Location pos = entity.getLocation();
Location newPos = new Location(pos.getExtent(), pos.getX() + entityOffsetX,
pos.getY() + entityOffsetY, pos.getZ() + entityOffsetZ, pos.getYaw(),
pos.getPitch());
extent.createEntity(newPos, entity.getState());
}
}
} }

View File

@ -25,7 +25,6 @@ import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.RunnableVal; import com.boydti.fawe.object.RunnableVal;
import com.boydti.fawe.object.clipboard.URIClipboardHolder; import com.boydti.fawe.object.clipboard.URIClipboardHolder;
import com.boydti.fawe.object.io.PGZIPOutputStream; import com.boydti.fawe.object.io.PGZIPOutputStream;
import com.boydti.fawe.object.schematic.Schematic;
import com.boydti.fawe.util.MainUtil; import com.boydti.fawe.util.MainUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.LocalSession;
@ -127,12 +126,12 @@ public interface ClipboardFormat {
return holder; return holder;
} }
default Schematic load(File file) throws IOException { default Clipboard load(File file) throws IOException {
return load(new FileInputStream(file)); return load(new FileInputStream(file));
} }
default Schematic load(InputStream stream) throws IOException { default Clipboard load(InputStream stream) throws IOException {
return new Schematic(getReader(stream).read()); return getReader(stream).read();
} }

View File

@ -20,7 +20,7 @@
package com.sk89q.worldedit.function; package com.sk89q.worldedit.function;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;

View File

@ -1,6 +1,5 @@
package com.sk89q.worldedit.function.generator; package com.sk89q.worldedit.function.generator;
import com.boydti.fawe.object.schematic.Schematic;
import com.sk89q.worldedit.math.MutableBlockVector3; import com.sk89q.worldedit.math.MutableBlockVector3;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
@ -45,12 +44,11 @@ public class SchemGen implements Resource {
holder.setTransform(new AffineTransform().rotateY(ThreadLocalRandom.current().nextInt(4) * 90)); holder.setTransform(new AffineTransform().rotateY(ThreadLocalRandom.current().nextInt(4) * 90));
} }
Clipboard clipboard = holder.getClipboard(); Clipboard clipboard = holder.getClipboard();
Schematic schematic = new Schematic(clipboard);
Transform transform = holder.getTransform(); Transform transform = holder.getTransform();
if (transform.isIdentity()) { if (transform.isIdentity()) {
schematic.paste(extent, mutable, false); clipboard.paste(extent, mutable, false);
} else { } else {
schematic.paste(extent, mutable, false, transform); clipboard.paste(extent, mutable, false, transform);
} }
mutable.mutY(y); mutable.mutY(y);
return true; return true;

View File

@ -2,7 +2,6 @@ package com.sk89q.worldedit.function.mask;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.boydti.fawe.beta.FilterBlock;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
public class InverseMask extends AbstractMask { public class InverseMask extends AbstractMask {

View File

@ -1,13 +1,9 @@
package com.sk89q.worldedit.function.mask; package com.sk89q.worldedit.function.mask;
import com.boydti.fawe.beta.FilterBlock;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockStateHolder;
import com.sk89q.worldedit.world.block.BlockTypes;
import java.util.Arrays;
public class InverseSingleBlockStateMask extends ABlockMask { public class InverseSingleBlockStateMask extends ABlockMask {
private final char ordinal; private final char ordinal;

View File

@ -20,7 +20,7 @@
package com.sk89q.worldedit.function.mask; package com.sk89q.worldedit.function.mask;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View File

@ -1,8 +1,8 @@
package com.sk89q.worldedit.function.mask; package com.sk89q.worldedit.function.mask;
import com.boydti.fawe.beta.DelegateFilter; import com.boydti.fawe.beta.implementation.filter.block.DelegateFilter;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import java.util.function.Supplier; import java.util.function.Supplier;

View File

@ -1,13 +1,9 @@
package com.sk89q.worldedit.function.mask; package com.sk89q.worldedit.function.mask;
import com.boydti.fawe.beta.FilterBlock;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockStateHolder;
import com.sk89q.worldedit.world.block.BlockTypes;
import java.util.Arrays;
public class SingleBlockStateMask extends ABlockMask { public class SingleBlockStateMask extends ABlockMask {
private final char ordinal; private final char ordinal;

View File

@ -20,7 +20,7 @@
package com.sk89q.worldedit.function.pattern; package com.sk89q.worldedit.function.pattern;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.FilterBlock; import com.boydti.fawe.beta.implementation.filter.block.FilterBlock;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;

View File

@ -19,7 +19,6 @@
package com.sk89q.worldedit.function.pattern; package com.sk89q.worldedit.function.pattern;
import com.boydti.fawe.beta.FilterBlock;
import com.boydti.fawe.object.collection.RandomCollection; import com.boydti.fawe.object.collection.RandomCollection;
import com.boydti.fawe.object.random.SimpleRandom; import com.boydti.fawe.object.random.SimpleRandom;
import com.boydti.fawe.object.random.TrueRandom; import com.boydti.fawe.object.random.TrueRandom;

View File

@ -23,27 +23,22 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.FaweCache;
import com.boydti.fawe.beta.ChunkFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.collection.BlockVectorSet; import com.boydti.fawe.object.collection.BlockVectorSet;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector2; import com.sk89q.worldedit.math.MutableBlockVector2;
import com.sk89q.worldedit.math.MutableBlockVector3; import com.sk89q.worldedit.math.MutableBlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.storage.ChunkStore; import com.sk89q.worldedit.world.storage.ChunkStore;
import java.util.AbstractSet; import java.util.AbstractSet;
import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.Set; import java.util.Set;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;

View File

@ -21,7 +21,7 @@ package com.sk89q.worldedit.regions;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.beta.ChunkFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;

View File

@ -20,7 +20,7 @@
package com.sk89q.worldedit.regions; package com.sk89q.worldedit.regions;
import com.boydti.fawe.beta.ChunkFilterBlock; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;

View File

@ -19,8 +19,7 @@
package com.sk89q.worldedit.regions; package com.sk89q.worldedit.regions;
import com.boydti.fawe.FaweCache; import com.boydti.fawe.beta.implementation.filter.block.ChunkFilterBlock;
import com.boydti.fawe.beta.ChunkFilterBlock;
import com.boydti.fawe.beta.Filter; import com.boydti.fawe.beta.Filter;
import com.boydti.fawe.beta.IBatchProcessor; import com.boydti.fawe.beta.IBatchProcessor;
import com.boydti.fawe.beta.IChunk; import com.boydti.fawe.beta.IChunk;
@ -28,16 +27,13 @@ import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.IChunkSet; import com.boydti.fawe.beta.IChunkSet;
import com.boydti.fawe.object.FaweLimit; import com.boydti.fawe.object.FaweLimit;
import com.boydti.fawe.object.extent.SingleRegionExtent; import com.boydti.fawe.object.extent.SingleRegionExtent;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View File

@ -20,8 +20,8 @@
package com.sk89q.worldedit.world; package com.sk89q.worldedit.world;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.beta.implementation.NullChunkGet; import com.boydti.fawe.beta.implementation.blocks.NullChunkGet;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.MaxChangedBlocksException;

View File

@ -20,8 +20,8 @@
package com.sk89q.worldedit.world; package com.sk89q.worldedit.world;
import com.boydti.fawe.beta.IChunkGet; import com.boydti.fawe.beta.IChunkGet;
import com.boydti.fawe.beta.implementation.ChunkPacket; import com.boydti.fawe.beta.implementation.packet.ChunkPacket;
import com.boydti.fawe.beta.implementation.IChunkCache; import com.boydti.fawe.beta.IChunkCache;
import com.boydti.fawe.object.extent.LightingExtent; import com.boydti.fawe.object.extent.LightingExtent;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.MaxChangedBlocksException;

Some files were not shown because too many files have changed in this diff Show More