diff --git a/core/build.gradle b/core/build.gradle index d46b89bbc..72cb00b4b 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -332,11 +332,6 @@ List unusedVolmLibClasses = [ 'art/arcane/volmlib/util/board/BoardUpdateTask', 'art/arcane/volmlib/util/bukkit/Placeholders', 'art/arcane/volmlib/util/hunk/HunkFactory', - 'art/arcane/volmlib/util/hunk/storage/ArrayHunk', - 'art/arcane/volmlib/util/hunk/storage/AtomicDoubleHunk', - 'art/arcane/volmlib/util/hunk/storage/AtomicIntegerHunk', - 'art/arcane/volmlib/util/hunk/storage/AtomicLongHunk', - 'art/arcane/volmlib/util/hunk/storage/SynchronizedArrayHunk', 'art/arcane/volmlib/util/hunk/view/BiomeForceBridge', 'art/arcane/volmlib/util/hunk/view/BiomeGridForceSupport', 'art/arcane/volmlib/util/hunk/view/BiomeGridHunkHolder', diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/ArrayHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/ArrayHunk.java index 57a418f6d..132f4ce12 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/ArrayHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/ArrayHunk.java @@ -18,41 +18,10 @@ package art.arcane.iris.util.project.hunk.storage; -import art.arcane.iris.engine.data.cache.Cache; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; -import lombok.EqualsAndHashCode; -import java.util.Arrays; - -@SuppressWarnings("Lombok") -@Data -@EqualsAndHashCode(callSuper = false) -public class ArrayHunk extends StorageHunk implements Hunk { - private final T[] data; - - @SuppressWarnings("unchecked") +public class ArrayHunk extends art.arcane.volmlib.util.hunk.storage.ArrayHunk implements Hunk { public ArrayHunk(int w, int h, int d) { super(w, h, d); - data = (T[]) new Object[w * h * d]; - } - - @Override - public void setRaw(int x, int y, int z, T t) { - data[index(x, y, z)] = t; - } - - @Override - public T getRaw(int x, int y, int z) { - return data[index(x, y, z)]; - } - - private int index(int x, int y, int z) { - return Cache.to1D(x, y, z, getWidth(), getHeight()); - } - - @Override - public void fill(T t) { - Arrays.fill(data, t); } } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicDoubleHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicDoubleHunk.java index 10b395a59..ebca42bcf 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicDoubleHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicDoubleHunk.java @@ -18,38 +18,10 @@ package art.arcane.iris.util.project.hunk.storage; -import com.google.common.util.concurrent.AtomicDoubleArray; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@SuppressWarnings({"Lombok"}) -@Data -@EqualsAndHashCode(callSuper = false) -public class AtomicDoubleHunk extends StorageHunk implements Hunk { - private final AtomicDoubleArray data; +public class AtomicDoubleHunk extends art.arcane.volmlib.util.hunk.storage.AtomicDoubleHunk implements Hunk { public AtomicDoubleHunk(int w, int h, int d) { super(w, h, d); - data = new AtomicDoubleArray(w * h * d); - } - - @Override - public boolean isAtomic() { - return true; - } - - @Override - public void setRaw(int x, int y, int z, Double t) { - data.set(index(x, y, z), t); - } - - @Override - public Double getRaw(int x, int y, int z) { - return data.get(index(x, y, z)); - } - - private int index(int x, int y, int z) { - return (z * getWidth() * getHeight()) + (y * getWidth()) + x; } } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicHunk.java index 2df03cf79..56c6850ec 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicHunk.java @@ -19,44 +19,9 @@ package art.arcane.iris.util.project.hunk.storage; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.concurrent.atomic.AtomicReferenceArray; - -@SuppressWarnings({"Lombok"}) -@Data -@EqualsAndHashCode(callSuper = false) -public class AtomicHunk extends StorageHunk implements Hunk { - private final AtomicReferenceArray data; - // index() runs per block access on the hottest paths; two final-field multiplies beat - // re-deriving the strides through the accessors every call. - private final int xStride; - private final int zStride; +public class AtomicHunk extends art.arcane.volmlib.util.hunk.storage.AtomicHunk implements Hunk { public AtomicHunk(int w, int h, int d) { super(w, h, d); - data = new AtomicReferenceArray<>(w * h * d); - xStride = w; - zStride = w * h; - } - - @Override - public boolean isAtomic() { - return true; - } - - @Override - public void setRaw(int x, int y, int z, T t) { - data.set(index(x, y, z), t); - } - - @Override - public T getRaw(int x, int y, int z) { - return data.get(index(x, y, z)); - } - - private int index(int x, int y, int z) { - return (z * zStride) + (y * xStride) + x; } } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicIntegerHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicIntegerHunk.java index 24672403b..c2f1883ea 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicIntegerHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicIntegerHunk.java @@ -19,38 +19,9 @@ package art.arcane.iris.util.project.hunk.storage; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.concurrent.atomic.AtomicIntegerArray; - -@SuppressWarnings({"Lombok"}) -@Data -@EqualsAndHashCode(callSuper = false) -public class AtomicIntegerHunk extends StorageHunk implements Hunk { - private final AtomicIntegerArray data; +public class AtomicIntegerHunk extends art.arcane.volmlib.util.hunk.storage.AtomicIntegerHunk implements Hunk { public AtomicIntegerHunk(int w, int h, int d) { super(w, h, d); - data = new AtomicIntegerArray(w * h * d); - } - - @Override - public boolean isAtomic() { - return true; - } - - @Override - public void setRaw(int x, int y, int z, Integer t) { - data.set(index(x, y, z), t); - } - - @Override - public Integer getRaw(int x, int y, int z) { - return data.get(index(x, y, z)); - } - - private int index(int x, int y, int z) { - return (z * getWidth() * getHeight()) + (y * getWidth()) + x; } } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicLongHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicLongHunk.java index 89c76128f..913f36f32 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicLongHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/AtomicLongHunk.java @@ -19,38 +19,9 @@ package art.arcane.iris.util.project.hunk.storage; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.concurrent.atomic.AtomicLongArray; - -@SuppressWarnings({"Lombok"}) -@Data -@EqualsAndHashCode(callSuper = false) -public class AtomicLongHunk extends StorageHunk implements Hunk { - private final AtomicLongArray data; +public class AtomicLongHunk extends art.arcane.volmlib.util.hunk.storage.AtomicLongHunk implements Hunk { public AtomicLongHunk(int w, int h, int d) { super(w, h, d); - data = new AtomicLongArray(w * h * d); - } - - @Override - public boolean isAtomic() { - return true; - } - - @Override - public void setRaw(int x, int y, int z, Long t) { - data.set(index(x, y, z), t); - } - - @Override - public Long getRaw(int x, int y, int z) { - return data.get(index(x, y, z)); - } - - private int index(int x, int y, int z) { - return (z * getWidth() * getHeight()) + (y * getWidth()) + x; } } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/StorageHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/StorageHunk.java index feac57805..74fb6a616 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/StorageHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/StorageHunk.java @@ -19,27 +19,9 @@ package art.arcane.iris.util.project.hunk.storage; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; - -@Data -public abstract class StorageHunk implements Hunk { - private final int width; - private final int height; - private final int depth; +public abstract class StorageHunk extends art.arcane.volmlib.util.hunk.storage.StorageHunk implements Hunk { public StorageHunk(int width, int height, int depth) { - if (width <= 0 || height <= 0 || depth <= 0) { - throw new RuntimeException("Unsupported size " + width + " " + height + " " + depth); - } - - this.width = width; - this.height = height; - this.depth = depth; + super(width, height, depth); } - - @Override - public abstract void setRaw(int x, int y, int z, T t); - - @Override - public abstract T getRaw(int x, int y, int z); } diff --git a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/SynchronizedArrayHunk.java b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/SynchronizedArrayHunk.java index 4395a1b5a..6f6f08893 100644 --- a/core/src/main/java/art/arcane/iris/util/project/hunk/storage/SynchronizedArrayHunk.java +++ b/core/src/main/java/art/arcane/iris/util/project/hunk/storage/SynchronizedArrayHunk.java @@ -19,45 +19,9 @@ package art.arcane.iris.util.project.hunk.storage; import art.arcane.iris.util.project.hunk.Hunk; -import lombok.Data; -import lombok.EqualsAndHashCode; -import java.util.Arrays; - -@SuppressWarnings({"Lombok"}) -@Data -@EqualsAndHashCode(callSuper = false) -public class SynchronizedArrayHunk extends StorageHunk implements Hunk { - private final T[] data; - - @SuppressWarnings("unchecked") +public class SynchronizedArrayHunk extends art.arcane.volmlib.util.hunk.storage.SynchronizedArrayHunk implements Hunk { public SynchronizedArrayHunk(int w, int h, int d) { super(w, h, d); - data = (T[]) new Object[w * h * d]; - } - - @Override - public void setRaw(int x, int y, int z, T t) { - synchronized (data) { - data[index(x, y, z)] = t; - } - } - - @Override - public T getRaw(int x, int y, int z) { - synchronized (data) { - return data[index(x, y, z)]; - } - } - - private int index(int x, int y, int z) { - return (z * getWidth() * getHeight()) + (y * getWidth()) + x; - } - - @Override - public void fill(T t) { - synchronized (data) { - Arrays.fill(data, t); - } } }