Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-12-24 18:10:08 +01:00
Limit processing
Dieser Commit ist enthalten in:
Ursprung
0b2bd862a0
Commit
df9e9e510a
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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.
|
@ -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;
|
@ -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> {
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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 {
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||||
|
|
||||||
@ -15,7 +20,7 @@ public abstract class ChunkFilterBlock extends SimpleFilterBlock {
|
|||||||
int layer);
|
int layer);
|
||||||
|
|
||||||
public abstract void flood(IChunkGet iget, IChunkSet iset, int layer,
|
public abstract void flood(IChunkGet iget, IChunkSet iset, int layer,
|
||||||
Flood flood, FilterBlockMask mask);
|
Flood flood, FilterBlockMask mask);
|
||||||
|
|
||||||
|
|
||||||
public abstract void filter(Filter filter, int x, int y, int z);
|
public abstract void filter(Filter filter, int x, int y, int z);
|
@ -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 {
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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) {
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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 &&
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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");
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren