chunk(int x, int z) {
+ return chunks.computeIfAbsent(Cache.key(x, z), (f) -> new ChunkCache<>());
+ }
+}
diff --git a/src/main/java/com/volmit/iris/util/data/DUTF.java b/src/main/java/com/volmit/iris/util/data/DUTF.java
new file mode 100644
index 000000000..54ba81a01
--- /dev/null
+++ b/src/main/java/com/volmit/iris/util/data/DUTF.java
@@ -0,0 +1,55 @@
+/*
+ * Iris is a World Generator for Minecraft Bukkit Servers
+ * Copyright (c) 2021 Arcane Arts (Volmit Software)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.volmit.iris.util.data;
+
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.DataOutput;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Encodes signed and unsigned values using a common variable-length
+ * scheme, found for example in
+ *
+ * Google's Protocol Buffers. It uses fewer bytes to encode smaller values,
+ * but will use slightly more bytes to encode large values.
+ *
+ * Signed values are further encoded using so-called zig-zag encoding
+ * in order to make them "compatible" with variable-length encoding.
+ */
+public final class DUTF {
+
+ private DUTF() {
+ }
+
+ public static void write(String s, DataOutputStream dos) throws IOException {
+ byte[] b = s.getBytes(StandardCharsets.UTF_8);
+ dos.writeShort(b.length);
+ dos.write(b);
+ }
+
+ public static String read(DataInputStream din) throws IOException {
+ byte[] d = new byte[din.readShort()];
+ din.read(d);
+ return new String(d, StandardCharsets.UTF_8);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/volmit/iris/util/matter/MatterTest.java b/src/main/java/com/volmit/iris/util/data/Heafty.java
similarity index 62%
rename from src/main/java/com/volmit/iris/util/matter/MatterTest.java
rename to src/main/java/com/volmit/iris/util/data/Heafty.java
index 7e539df25..f0995987b 100644
--- a/src/main/java/com/volmit/iris/util/matter/MatterTest.java
+++ b/src/main/java/com/volmit/iris/util/data/Heafty.java
@@ -16,23 +16,9 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util.matter;
+package com.volmit.iris.util.data;
-import com.volmit.iris.Iris;
-import com.volmit.iris.util.hunk.bits.DataContainer;
-import com.volmit.iris.util.hunk.bits.Writable;
-import com.volmit.iris.util.io.IO;
-import com.volmit.iris.util.math.RNG;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Arrays;
-
-public class MatterTest {
- public static void test()
- {
-
- }
+@FunctionalInterface
+public interface Heafty {
+ int getHeaft();
}
diff --git a/src/main/java/com/volmit/iris/util/data/KCache.java b/src/main/java/com/volmit/iris/util/data/KCache.java
index d8276288d..99bf04cd0 100644
--- a/src/main/java/com/volmit/iris/util/data/KCache.java
+++ b/src/main/java/com/volmit/iris/util/data/KCache.java
@@ -22,48 +22,49 @@ import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import com.volmit.iris.engine.framework.MeteredCache;
+import com.volmit.iris.util.math.RollingSequence;
-import java.util.function.Function;
-
-public class KCache implements MeteredCache {
- private long max;
+public class KCache implements MeteredCache {
+ private final long max;
private CacheLoader loader;
- private LoadingCache cache;
+ private final LoadingCache cache;
+ private final boolean fastDump;
+ private final RollingSequence msu = new RollingSequence(100);
- public KCache(CacheLoader loader, long max)
- {
+ public KCache(CacheLoader loader, long max) {
+ this(loader, max, false);
+ }
+
+ public KCache(CacheLoader loader, long max, boolean fastDump) {
this.max = max;
+ this.fastDump = fastDump;
this.loader = loader;
this.cache = create(loader);
}
- private LoadingCache create(CacheLoader loader) {
+ private LoadingCache create(CacheLoader loader) {
return Caffeine
.newBuilder()
.maximumSize(max)
+ .softValues()
+ .initialCapacity((int) (max))
.build((k) -> loader == null ? null : loader.load(k));
}
- public void setLoader(CacheLoader loader)
- {
+ public void setLoader(CacheLoader loader) {
this.loader = loader;
}
- public void invalidate(K k)
- {
+ public void invalidate(K k) {
cache.invalidate(k);
}
- public void invalidate()
- {
- LoadingCache,?> c = cache;
- cache = create(loader);
- c.invalidateAll();
+ public void invalidate() {
+ cache.invalidateAll();
}
- public V get(K k)
- {
+ public V get(K k) {
return cache.get(k);
}
@@ -72,6 +73,11 @@ public class KCache implements MeteredCache {
return cache.estimatedSize();
}
+ @Override
+ public KCache, ?> getRawCache() {
+ return this;
+ }
+
@Override
public long getMaxSize() {
return max;
diff --git a/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java b/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java
index a0b664634..f79fa9a3d 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java
@@ -59,32 +59,26 @@ public class BitStorage {
this(bits, length, (AtomicLongArray) null);
}
- private static AtomicLongArray atomic(long[] data)
- {
- if(data == null)
- {
+ private static AtomicLongArray atomic(long[] data) {
+ if (data == null) {
return null;
}
AtomicLongArray d = new AtomicLongArray(data.length);
- for(int i = 0; i < data.length; i++)
- {
+ for (int i = 0; i < data.length; i++) {
d.set(i, data[i]);
}
return d;
}
- private static long[] atomic(AtomicLongArray data)
- {
- if(data == null)
- {
+ private static long[] atomic(AtomicLongArray data) {
+ if (data == null) {
return null;
}
long[] d = new long[data.length()];
- for(int i = 0; i < data.length(); i++)
- {
+ for (int i = 0; i < data.length(); i++) {
d[i] = data.get(i);
}
@@ -107,8 +101,7 @@ public class BitStorage {
this.divideShift = MAGIC[var3 + 2];
int var4 = (length + this.valuesPerLong - 1) / this.valuesPerLong;
if (data != null) {
- if (data.length() != var4)
- {
+ if (data.length() != var4) {
throw new RuntimeException("NO!");
}
this.data = data;
@@ -166,8 +159,7 @@ public class BitStorage {
public void getAll(IntConsumer var0) {
int var1 = 0;
- for(int i = 0; i < data.length(); i++)
- {
+ for (int i = 0; i < data.length(); i++) {
long var5 = data.get(i);
for (int var7 = 0; var7 < this.valuesPerLong; var7++) {
var0.accept((int) (var5 & this.mask));
diff --git a/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java b/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java
index 63dce90cc..49bcf4309 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java
@@ -20,7 +20,6 @@ package com.volmit.iris.util.data.palette;
import com.google.common.collect.Iterators;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicIntegerArray;
@@ -49,16 +48,14 @@ public class CrudeIncrementalIntIdentityHashBiMap implements IdMap {
public K byId(int var0) {
- if (var0 < 0 || var0 >= this.byId.length())
- {
+ if (var0 < 0 || var0 >= this.byId.length()) {
return null;
}
return this.byId.get(var0);
}
private int getValue(int var0) {
- if (var0 == -1)
- {
+ if (var0 == -1) {
return -1;
}
return this.values.get(var0);
@@ -79,8 +76,7 @@ public class CrudeIncrementalIntIdentityHashBiMap implements IdMap {
}
private int nextId() {
- while (nextId < byId.length() && byId.get(nextId) != null)
- {
+ while (nextId < byId.length() && byId.get(nextId) != null) {
nextId++;
}
return nextId;
@@ -95,8 +91,7 @@ public class CrudeIncrementalIntIdentityHashBiMap implements IdMap {
this.nextId = 0;
this.size = 0;
for (int var3 = 0; var3 < var1.length(); var3++) {
- if (var1.get(var3) != null)
- {
+ if (var1.get(var3) != null) {
addMapping(var1.get(var3), var2.get(var3));
}
}
@@ -126,8 +121,7 @@ public class CrudeIncrementalIntIdentityHashBiMap implements IdMap {
private int indexOf(K var0, int var1) {
int var2;
for (var2 = var1; var2 < this.keys.length(); var2++) {
- if (this.keys.get(var2) == null)
- {
+ if (this.keys.get(var2) == null) {
return 0;
}
if (this.keys.get(var2).equals(var0))
@@ -158,11 +152,12 @@ public class CrudeIncrementalIntIdentityHashBiMap implements IdMap {
}
public Iterator iterator() {
- return Iterators.filter(new Iterator(){
+ return Iterators.filter(new Iterator() {
int i = 0;
+
@Override
public boolean hasNext() {
- return i < byId.length()-1;
+ return i < byId.length() - 1;
}
@Override
@@ -174,15 +169,12 @@ public class CrudeIncrementalIntIdentityHashBiMap implements IdMap {
public void clear() {
- for(int i = 0; i < Math.max(keys.length(), byId.length()); i++)
- {
- if(i < keys.length() - 1)
- {
+ for (int i = 0; i < Math.max(keys.length(), byId.length()); i++) {
+ if (i < keys.length() - 1) {
keys.set(i, null);
}
- if(i < byId.length() - 1)
- {
+ if (i < byId.length() - 1) {
byId.set(i, null);
}
}
diff --git a/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java b/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java
index 502dd5e4f..5f76e0e46 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java
@@ -18,8 +18,6 @@
package com.volmit.iris.util.data.palette;
-import com.volmit.iris.util.nbt.tag.ListTag;
-
import java.util.List;
import java.util.function.Predicate;
@@ -28,11 +26,9 @@ public class GlobalPalette implements Palette {
private final T defaultValue;
- public GlobalPalette(T... f)
- {
+ public GlobalPalette(T... f) {
IdMapper mapper = new IdMapper<>();
- for(T i : f)
- {
+ for (T i : f) {
mapper.add(i);
}
registry = mapper;
diff --git a/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java b/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java
index 26c1561f4..e01bd848a 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java
@@ -20,12 +20,8 @@ package com.volmit.iris.util.data.palette;
import com.volmit.iris.Iris;
import com.volmit.iris.util.collection.KMap;
-import com.volmit.iris.util.nbt.tag.CompoundTag;
-import com.volmit.iris.util.nbt.tag.ListTag;
import java.util.List;
-import java.util.function.Function;
-import java.util.function.Predicate;
public class HashMapPalette implements Palette {
private final KMap values;
@@ -41,16 +37,14 @@ public class HashMapPalette implements Palette {
}
public int idFor(T var0) {
- if(var0 == null)
- {
+ if (var0 == null) {
return 0;
}
return this.values.computeIfAbsent(var0, (k) -> {
int newId = id++;
- if (newId >= 1 << this.bits)
- {
+ if (newId >= 1 << this.bits) {
Iris.info(newId + " to...");
newId = this.resizeHandler.onResize(this.bits + 1, var0);
Iris.info(newId + "..");
diff --git a/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java b/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java
index f5e287a8e..a9d840d60 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java
@@ -49,8 +49,7 @@ public class IdMapper implements IdMap {
public void addMapping(T var0, int var1) {
this.tToId.put(var0, Integer.valueOf(var1));
- while (this.idToT.size() <= var1)
- {
+ while (this.idToT.size() <= var1) {
this.idToT.add(null);
}
this.idToT.set(var1, var0);
@@ -68,8 +67,7 @@ public class IdMapper implements IdMap {
}
public final T byId(int var0) {
- if (var0 >= 0 && var0 < this.idToT.size())
- {
+ if (var0 >= 0 && var0 < this.idToT.size()) {
return this.idToT.get(var0);
}
return null;
diff --git a/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java b/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java
index f95bcd113..f8dd5ca54 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java
@@ -20,7 +20,6 @@ package com.volmit.iris.util.data.palette;
import java.util.List;
import java.util.concurrent.atomic.AtomicReferenceArray;
-import java.util.function.Predicate;
public class LinearPalette implements Palette {
private final AtomicReferenceArray values;
@@ -37,13 +36,11 @@ public class LinearPalette implements Palette {
public int idFor(T var0) {
int var1;
for (var1 = 0; var1 < size; var1++) {
- if(values.get(var1) == null && var0 == null)
- {
+ if (values.get(var1) == null && var0 == null) {
return var1;
}
- if (values.get(var1) != null && values.get(var1).equals(var0))
- {
+ if (values.get(var1) != null && values.get(var1).equals(var0)) {
return var1;
}
}
@@ -57,8 +54,7 @@ public class LinearPalette implements Palette {
}
public T valueFor(int var0) {
- if (var0 >= 0 && var0 < size)
- {
+ if (var0 >= 0 && var0 < size) {
return this.values.get(var0);
}
return null;
@@ -70,8 +66,7 @@ public class LinearPalette implements Palette {
@Override
public void read(List fromList) {
- for (int i = 0; i < fromList.size(); i++)
- {
+ for (int i = 0; i < fromList.size(); i++) {
values.set(i, fromList.get(i));
}
@@ -80,8 +75,7 @@ public class LinearPalette implements Palette {
@Override
public void write(List toList) {
- for (int i = 0; i < size; i++)
- {
+ for (int i = 0; i < size; i++) {
T v = values.get(i);
toList.add(v);
}
diff --git a/src/main/java/com/volmit/iris/util/data/palette/Palette.java b/src/main/java/com/volmit/iris/util/data/palette/Palette.java
index 57c148883..38b1479f9 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/Palette.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/Palette.java
@@ -18,11 +18,7 @@
package com.volmit.iris.util.data.palette;
-import com.volmit.iris.util.nbt.tag.CompoundTag;
-import com.volmit.iris.util.nbt.tag.ListTag;
-
import java.util.List;
-import java.util.function.Predicate;
public interface Palette {
int idFor(T paramT);
diff --git a/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java b/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java
index cd908e021..a7e2eccc0 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java
@@ -42,8 +42,7 @@ public interface PaletteType {
int v = Varint.readUnsignedVarInt(din);
List t = new ArrayList<>();
- for(int i = 0; i < v; i++)
- {
+ for (int i = 0; i < v; i++) {
t.add(readPaletteNode(din));
}
diff --git a/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java b/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java
index dad5291a0..075946a32 100644
--- a/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java
+++ b/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java
@@ -21,8 +21,8 @@ package com.volmit.iris.util.data.palette;
import com.volmit.iris.Iris;
import com.volmit.iris.util.math.M;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
+
import java.util.List;
-import java.util.function.Predicate;
@SuppressWarnings("DuplicatedCode")
public class PalettedContainer implements PaletteResize {
@@ -43,8 +43,7 @@ public class PalettedContainer implements PaletteResize {
}
private void setBits(int var0) {
- if (var0 == this.bits)
- {
+ if (var0 == this.bits) {
return;
}
this.bits = var0;
@@ -65,8 +64,7 @@ public class PalettedContainer implements PaletteResize {
setBits(var0);
for (int var4 = 0; var4 < var2.getSize(); var4++) {
T var5 = var3.valueFor(var2.get(var4));
- if (var5 != null)
- {
+ if (var5 != null) {
set(var4, var5);
}
}
@@ -95,8 +93,7 @@ public class PalettedContainer implements PaletteResize {
private void set(int var0, T var1) {
int var2 = this.palette.idFor(var1);
- if(M.r(0.003))
- {
+ if (M.r(0.003)) {
Iris.info("ID for " + var1 + " is " + var2 + " Palette: " + palette.getSize());
}
@@ -113,8 +110,7 @@ public class PalettedContainer implements PaletteResize {
public void read(List palette, long[] data) {
int var2 = Math.max(4, Mth.ceillog2(palette.size()));
- if (var2 != this.bits)
- {
+ if (var2 != this.bits) {
setBits(var2);
}
@@ -124,8 +120,7 @@ public class PalettedContainer implements PaletteResize {
System.arraycopy(data, 0, this.storage.getRaw(), 0, data.length);
} else {
BitStorage var4 = new BitStorage(var3, 4096, data);
- for (int var5 = 0; var5 < 4096; var5++)
- {
+ for (int var5 = 0; var5 < 4096; var5++) {
this.storage.set(var5, var4.get(var5));
}
}
diff --git a/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java b/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java
index 03f905231..8ff7a9f25 100644
--- a/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java
+++ b/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java
@@ -528,18 +528,28 @@ public class VirtualDecreeCommand {
m++;
}
- CompletableFuture future = new CompletableFuture<>();
- Iris.service(CommandSVC.class).post(password, future);
+ if (sender.isPlayer()) {
+ CompletableFuture future = new CompletableFuture<>();
+ Iris.service(CommandSVC.class).post(password, future);
- if (IrisSettings.get().getGeneral().isCommandSounds() && sender.isPlayer()) {
- (sender.player()).playSound((sender.player()).getLocation(), Sound.BLOCK_AMETHYST_CLUSTER_BREAK, 0.77f, 0.65f);
- (sender.player()).playSound((sender.player()).getLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 0.125f, 1.99f);
- }
+ if (IrisSettings.get().getGeneral().isCommandSounds()) {
+ (sender.player()).playSound((sender.player()).getLocation(), Sound.BLOCK_AMETHYST_CLUSTER_BREAK, 0.77f, 0.65f);
+ (sender.player()).playSound((sender.player()).getLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 0.125f, 1.99f);
+ }
- try {
- return future.get(15, TimeUnit.SECONDS);
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ try {
+ return future.get(15, TimeUnit.SECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException ignored) {
+ }
+ } else {
+ CompletableFuture future = new CompletableFuture<>();
+ Iris.service(CommandSVC.class).postConsole(future);
+ try {
+ return future.get(15, TimeUnit.SECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException ignored) {
+
+ }
}
return null;
diff --git a/src/main/java/com/volmit/iris/util/format/Form.java b/src/main/java/com/volmit/iris/util/format/Form.java
index b4a1fd2f0..cd53a66b3 100644
--- a/src/main/java/com/volmit/iris/util/format/Form.java
+++ b/src/main/java/com/volmit/iris/util/format/Form.java
@@ -24,9 +24,11 @@ import com.volmit.iris.util.math.RollingSequence;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
@@ -158,6 +160,40 @@ public class Form {
return wrap(s, len, newLineSep, soft, " ");
}
+ public static String hardWrap(String s, int len) {
+ StringBuilder ss = new StringBuilder();
+
+ for(int i = 0; i < s.length(); i+= len)
+ {
+ if(i + len > s.length())
+ {
+ ss.append(s, i, s.length());
+ break;
+ }
+
+ ss.append(s, i, i + len).append("\n");
+ }
+
+ return ss.toString();
+ }
+
+ public static List hardWrapList(String s, int len) {
+ List l = new ArrayList<>();
+ for(int i = 0; i < s.length(); i+= len)
+ {
+ if(i + len > s.length())
+ {
+ l.add(s.substring(i));
+ break;
+ }
+
+ l.add(s.substring(i, i + len));
+ }
+
+ return l;
+ }
+
+
/**
* Wrap words
*
diff --git a/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java b/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java
index a04146b8b..c48147adc 100644
--- a/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java
+++ b/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java
@@ -18,7 +18,6 @@
package com.volmit.iris.util.format;
-import com.volmit.iris.Iris;
import com.volmit.iris.util.math.RollingSequence;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.Looper;
@@ -30,14 +29,14 @@ public class MemoryMonitor {
private long garbageLast;
private long garbageBin;
private long pressure;
- private ChronoLatch cl;
- private RollingSequence pressureAvg;
- private Runtime runtime;
+ private final ChronoLatch cl;
+ private final RollingSequence pressureAvg;
+ private final Runtime runtime;
- public MemoryMonitor(int sampleDelay){
+ public MemoryMonitor(int sampleDelay) {
this.runtime = Runtime.getRuntime();
usedMemory = -1;
- pressureAvg = new RollingSequence(Math.max(Math.min(100, 1000/sampleDelay), 3));
+ pressureAvg = new RollingSequence(Math.max(Math.min(100, 1000 / sampleDelay), 3));
garbageBin = 0;
garbageMemory = -1;
cl = new ChronoLatch(1000);
@@ -56,74 +55,55 @@ public class MemoryMonitor {
looper.start();
}
- public long getGarbageBytes()
- {
+ public long getGarbageBytes() {
return garbageMemory;
}
- public long getUsedBytes()
- {
+ public long getUsedBytes() {
return usedMemory;
}
- public long getMaxBytes()
- {
+ public long getMaxBytes() {
return runtime.maxMemory();
}
- public long getPressure()
- {
+ public long getPressure() {
return (long) pressureAvg.getAverage();
}
- public double getUsagePercent()
- {
- return usedMemory / (double)getMaxBytes();
+ public double getUsagePercent() {
+ return usedMemory / (double) getMaxBytes();
}
private void sample() {
long used = getVMUse();
- if(usedMemory == -1)
- {
+ if (usedMemory == -1) {
usedMemory = used;
garbageMemory = 0;
return;
}
- if(used < usedMemory)
- {
+ if (used < usedMemory) {
usedMemory = used;
- }
-
- else
- {
+ } else {
garbageMemory = used - usedMemory;
}
long g = garbageMemory - garbageLast;
- if(g >= 0)
- {
- garbageBin+= g;
+ if (g >= 0) {
+ garbageBin += g;
garbageLast = garbageMemory;
- }
-
- else
- {
+ } else {
garbageMemory = 0;
garbageLast = 0;
}
- if(cl.flip())
- {
- if(garbageMemory > 0)
- {
+ if (cl.flip()) {
+ if (garbageMemory > 0) {
pressure = garbageBin;
garbageBin = 0;
- }
-
- else
- {
+ } else {
pressure = 0;
garbageBin = 0;
}
@@ -136,10 +116,8 @@ public class MemoryMonitor {
return runtime.totalMemory() - runtime.freeMemory();
}
- public void close()
- {
- if(looper != null)
- {
+ public void close() {
+ if (looper != null) {
looper.interrupt();
looper = null;
}
diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java b/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java
index 7b4b67e2f..3476cac73 100644
--- a/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java
+++ b/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java
@@ -65,9 +65,8 @@ public class DataBits {
this(bits, length, (AtomicLongArray) null);
}
- public DataBits(int bits, int length, DataInputStream din) throws IOException
- {
- this(bits, length, longs(din));
+ public DataBits(int bits, int length, DataInputStream din) throws IOException {
+ this(bits, length, longs(din, dataLength(bits, length)));
}
public DataBits(int bits, int length, AtomicLongArray data) {
@@ -83,8 +82,7 @@ public class DataBits {
int var4 = (length + valuesPerLong - 1) / valuesPerLong;
if (data != null) {
- if (data.length() != var4)
- {
+ if (data.length() != var4) {
throw new RuntimeException("NO! Trying to load " + data.length() + " into actual size of " + var4 + " because length: " + length + " (bits: " + bits + ")");
}
this.data = data;
@@ -93,36 +91,30 @@ public class DataBits {
}
}
- public String toString()
- {
+ public String toString() {
return "DBits: " + size + "/" + bits + "[" + data.length() + "]";
}
- private static int dataLength(int bits, int length)
- {
+ private static int dataLength(int bits, int length) {
return (length + ((char) (64 / bits)) - 1) / ((char) (64 / bits));
}
- private static AtomicLongArray longs(DataInputStream din) throws IOException{
- AtomicLongArray a = new AtomicLongArray(din.readInt());
+ private static AtomicLongArray longs(DataInputStream din, int longSize) throws IOException {
+ AtomicLongArray a = new AtomicLongArray(longSize);
- for(int i = 0; i < a.length(); i++)
- {
- a.set(i, din.readLong());
+ for (int i = 0; i < a.length(); i++) {
+ a.set(i, Varint.readUnsignedVarLong(din));
}
return a;
}
- public DataBits setBits(int newBits)
- {
- if(bits != newBits)
- {
+ public DataBits setBits(int newBits) {
+ if (bits != newBits) {
DataBits newData = new DataBits(newBits, size);
AtomicInteger c = new AtomicInteger(0);
- for(int i = 0; i < size; i++)
- {
+ for (int i = 0; i < size; i++) {
newData.set(i, get(i));
}
@@ -183,14 +175,12 @@ public class DataBits {
public void getAll(IntConsumer var0) {
int var1 = 0;
- for(int i = 0; i < data.length(); i++)
- {
+ for (int i = 0; i < data.length(); i++) {
long var5 = data.get(i);
for (int var7 = 0; var7 < valuesPerLong; var7++) {
var0.accept((int) (var5 & mask));
var5 >>= bits;
- if (++var1 >= size)
- {
+ if (++var1 >= size) {
return;
}
}
@@ -198,11 +188,8 @@ public class DataBits {
}
public void write(DataOutputStream dos) throws IOException {
- dos.writeInt(data.length());
-
- for(int i = 0; i < data.length(); i++)
- {
- dos.writeLong(data.get(i));
+ for (int i = 0; i < data.length(); i++) {
+ Varint.writeUnsignedVarLong(data.get(i), dos);
}
}
}
diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java b/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java
index 23ed74184..ca236c6ed 100644
--- a/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java
+++ b/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java
@@ -31,7 +31,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class DataContainer {
protected static final int INITIAL_BITS = 3;
- protected static final int LINEAR_BITS_LIMIT = 5;
+ protected static final int LINEAR_BITS_LIMIT = 4;
protected static final int LINEAR_INITIAL_LENGTH = (int) Math.pow(2, LINEAR_BITS_LIMIT) + 1;
protected static final int[] BIT = computeBitLimits();
private final AtomicReference> palette;
@@ -40,114 +40,157 @@ public class DataContainer {
private final int length;
private final Writable writer;
- public DataContainer(Writable writer, int length, T empty)
- {
+ public DataContainer(Writable writer, int length) {
this.writer = writer;
this.length = length;
this.bits = new AtomicInteger(INITIAL_BITS);
this.data = new AtomicReference<>(new DataBits(INITIAL_BITS, length));
this.palette = new AtomicReference<>(newPalette(INITIAL_BITS));
- this.ensurePaletted(empty);
}
public DataContainer(DataInputStream din, Writable writer) throws IOException {
this.writer = writer;
- this.length = din.readInt();
+ this.length = Varint.readUnsignedVarInt(din);
this.palette = new AtomicReference<>(newPalette(din));
this.data = new AtomicReference<>(new DataBits(palette.get().bits(), length, din));
this.bits = new AtomicInteger(palette.get().bits());
}
- public String toString(){
- return "DataContainer <" + length + " x " + bits + " bits> -> Palette<"+palette.get().getClass().getSimpleName().replaceAll("\\QPalette\\E", "")+">: " + palette.get().size() +
+ public static String readBitString(DataInputStream din) throws IOException
+ {
+ DataContainer c = new DataContainer<>(din, new Writable() {
+ @Override
+ public Character readNodeData(DataInputStream din) throws IOException {
+ return din.readChar();
+ }
+
+ @Override
+ public void writeNodeData(DataOutputStream dos, Character character) throws IOException {
+ dos.writeChar(character);
+ }
+ });
+
+ StringBuilder sb = new StringBuilder();
+
+ for(int i = c.size()-1; i >= 0; i--)
+ {
+ sb.setCharAt(i, c.get(i));
+ }
+
+ return sb.toString();
+ }
+
+ public static void writeBitString(String s, DataOutputStream dos) throws IOException {
+ DataContainer c = new DataContainer<>(new Writable() {
+ @Override
+ public Character readNodeData(DataInputStream din) throws IOException {
+ return din.readChar();
+ }
+
+ @Override
+ public void writeNodeData(DataOutputStream dos, Character character) throws IOException {
+ dos.writeChar(character);
+ }
+ }, s.length());
+
+ for(int i = 0; i < s.length(); i++)
+ {
+ c.set(i, s.charAt(i));
+ }
+
+ c.writeDos(dos);
+ }
+
+ public DataBits getData()
+ {
+ return data.get();
+ }
+
+ public Palette getPalette()
+ {
+ return palette.get();
+ }
+
+ public String toString() {
+ return "DataContainer <" + length + " x " + bits + " bits> -> Palette<" + palette.get().getClass().getSimpleName().replaceAll("\\QPalette\\E", "") + ">: " + palette.get().size() +
" " + data.get().toString() + " PalBit: " + palette.get().bits();
}
- public byte[] write() throws IOException
- {
+ public byte[] write() throws IOException {
ByteArrayOutputStream boas = new ByteArrayOutputStream();
write(boas);
return boas.toByteArray();
}
- public void write(OutputStream out) throws IOException
- {
+ public void write(OutputStream out) throws IOException {
writeDos(new DataOutputStream(out));
}
- public void writeDos(DataOutputStream dos) throws IOException
- {
- dos.writeInt(length);
- dos.writeInt(palette.get().size());
+ public void writeDos(DataOutputStream dos) throws IOException {
+ Varint.writeUnsignedVarInt(length, dos);
+ Varint.writeUnsignedVarInt(palette.get().size(), dos);
palette.get().iterateIO((data, __) -> writer.writeNodeData(dos, data));
data.get().write(dos);
dos.flush();
}
private Palette newPalette(DataInputStream din) throws IOException {
- int paletteSize = din.readInt();
- Palette d = newPalette(bits(paletteSize));
+ int paletteSize = Varint.readUnsignedVarInt(din);
+ Palette d = newPalette(bits(paletteSize+1));
d.from(paletteSize, writer, din);
return d;
}
- private Palette newPalette(int bits)
- {
- if(bits <= LINEAR_BITS_LIMIT)
- {
+ private Palette newPalette(int bits) {
+ if (bits <= LINEAR_BITS_LIMIT) {
return new LinearPalette<>(LINEAR_INITIAL_LENGTH);
}
return new HashPalette<>();
}
- private void checkBits()
- {
- if(palette.get().size() >= BIT[bits.get()])
+ public void ensurePaletted(T t) {
+ if (palette.get().id(t) == -1) {
+ expandOne();
+ }
+ }
+
+ public void set(int position, T t) {
+ synchronized (this)
{
+ int id = palette.get().id(t);
+
+ if (id == -1) {
+ expandOne();
+ id = palette.get().add(t);
+ }
+
+ data.get().set(position, id);
+ }
+ }
+
+ private void expandOne() {
+ if (palette.get().size() + 1 >= BIT[bits.get()]) {
setBits(bits.get() + 1);
}
}
- public void ensurePaletted(T t)
- {
- if(palette.get().id(t) == -1)
+ public T get(int position) {
+ synchronized (this)
{
- checkBits();
+ int id = data.get().get(position) + 1;
+
+ if (id <= 0) {
+ return null;
+ }
+
+ return palette.get().get(id - 1);
}
}
- public void set(int position, T t)
- {
- int id = palette.get().id(t);
-
- if(id == -1)
- {
- checkBits();
- id = palette.get().add(t);
- }
-
- data.get().set(position, id);
- }
-
- public T get(int position)
- {
- int id = data.get().get(position)+1;
-
- if(id <= 0)
- {
- return null;
- }
-
- return palette.get().get(id-1);
- }
-
- public void setBits(int bits)
- {
- if(this.bits.get() != bits)
- {
- if(this.bits.get() <= LINEAR_BITS_LIMIT != bits <= LINEAR_BITS_LIMIT)
- {
+ public void setBits(int bits) {
+ if (this.bits.get() != bits) {
+ if (this.bits.get() <= LINEAR_BITS_LIMIT != bits <= LINEAR_BITS_LIMIT) {
palette.set(newPalette(bits).from(palette.get()));
}
@@ -159,29 +202,28 @@ public class DataContainer {
private static int[] computeBitLimits() {
int[] m = new int[16];
- for(int i = 0; i < m.length; i++)
- {
+ for (int i = 0; i < m.length; i++) {
m[i] = (int) Math.pow(2, i);
}
return m;
}
- protected static int bits(int size)
- {
- if(DataContainer.BIT[INITIAL_BITS] >= size)
- {
+ protected static int bits(int size) {
+ if (DataContainer.BIT[INITIAL_BITS] >= size) {
return INITIAL_BITS;
}
- for(int i = 0; i < DataContainer.BIT.length; i++)
- {
- if(DataContainer.BIT[i] >= size)
- {
+ for (int i = 0; i < DataContainer.BIT.length; i++) {
+ if (DataContainer.BIT[i] >= size) {
return i;
}
}
return DataContainer.BIT.length - 1;
}
+
+ public int size() {
+ return getData().getSize();
+ }
}
diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java b/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java
index 091de10e9..16b16a6e9 100644
--- a/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java
+++ b/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java
@@ -18,7 +18,6 @@
package com.volmit.iris.util.hunk.bits;
-import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.function.Consumer2;
@@ -30,17 +29,16 @@ public class HashPalette implements Palette {
private final KMap lookup;
private final AtomicInteger size;
- public HashPalette()
- {
+ public HashPalette() {
this.size = new AtomicInteger(0);
this.palette = new LinkedHashMap<>();
this.lookup = new KMap<>();
+ add(null);
}
@Override
public T get(int id) {
- if(id < 0 || id >= size.get())
- {
+ if (id < 0 || id >= size.get()) {
return null;
}
@@ -52,8 +50,7 @@ public class HashPalette implements Palette {
int index = size.getAndIncrement();
palette.put(t, index);
- if(t != null)
- {
+ if (t != null) {
lookup.put(index, t);
}
@@ -62,19 +59,28 @@ public class HashPalette implements Palette {
@Override
public int id(T t) {
+ if(t == null)
+ {
+ return 0;
+ }
+
Integer v = palette.get(t);
return v != null ? v : -1;
}
@Override
public int size() {
- return size.get();
+ return size.get() - 1;
}
@Override
public void iterate(Consumer2 c) {
- for(T i : palette.keySet())
- {
+ for (T i : palette.keySet()) {
+ if(i == null)
+ {
+ continue;
+ }
+
c.accept(i, id(i));
}
}
diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java b/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java
index bce74031a..891f38e64 100644
--- a/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java
+++ b/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java
@@ -18,7 +18,9 @@
package com.volmit.iris.util.hunk.bits;
+import com.volmit.iris.Iris;
import com.volmit.iris.util.function.Consumer2;
+import org.bukkit.block.data.BlockData;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -28,16 +30,15 @@ public class LinearPalette implements Palette {
private final AtomicReference> palette;
private final AtomicInteger size;
- public LinearPalette(int initialSize)
- {
+ public LinearPalette(int initialSize) {
this.size = new AtomicInteger(0);
this.palette = new AtomicReference<>(new AtomicReferenceArray<>(initialSize));
+ palette.get().set(size.getAndIncrement(), null);
}
@Override
public T get(int id) {
- if(id < 0 || id >= size.get())
- {
+ if (id < 0 || id >= size.get()) {
return null;
}
@@ -53,12 +54,10 @@ public class LinearPalette implements Palette {
}
private void grow(int newLength) {
- if(newLength > palette.get().length())
- {
+ if (newLength > palette.get().length()) {
AtomicReferenceArray a = new AtomicReferenceArray<>(newLength + size.get());
- for(int i = 0; i < palette.get().length(); i++)
- {
+ for (int i = 0; i < palette.get().length(); i++) {
a.set(i, palette.get().get(i));
}
@@ -68,15 +67,13 @@ public class LinearPalette implements Palette {
@Override
public int id(T t) {
- for(int i = 0; i < size(); i++)
+ if(t == null)
{
- if(t == null && palette.get().get(i) == null)
- {
- return i;
- }
+ return 0;
+ }
- if(t != null && t.equals(palette.get().get(i)))
- {
+ for (int i = 1; i < size() + 1; i++) {
+ if (t.equals(palette.get().get(i))) {
return i;
}
}
@@ -86,13 +83,12 @@ public class LinearPalette implements Palette {
@Override
public int size() {
- return size.get();
+ return size.get()-1;
}
@Override
public void iterate(Consumer2 c) {
- for(int i = 0; i < size(); i++)
- {
+ for (int i = 1; i < size()+1; i++) {
c.accept(palette.get().get(i), i);
}
}
diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java b/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java
index 6c98cb228..f59b4040e 100644
--- a/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java
+++ b/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java
@@ -34,18 +34,16 @@ public interface Palette {
int size();
- default int bits()
- {
- return DataContainer.bits(size());
+ default int bits() {
+ return DataContainer.bits(size()+1);
}
void iterate(Consumer2 c);
- default void iterateIO(Consumer2IO c)
- {
- iterate((a,b)-> {
+ default void iterateIO(Consumer2IO c) {
+ iterate((a, b) -> {
try {
- c.accept(a,b);
+ c.accept(a, b);
} catch (IOException e) {
e.printStackTrace();
}
@@ -53,22 +51,19 @@ public interface Palette {
}
default Palette from(int size, Writable writable, DataInputStream in) throws IOException {
- for(int i = 0; i < size; i++)
- {
+ for (int i = 0; i < size; i++) {
add(writable.readNodeData(in));
}
return this;
}
- default Palette from(Palette oldPalette)
- {
- oldPalette.iterate((k,v) -> add(k));
+ default Palette from(Palette oldPalette) {
+ oldPalette.iterate((k, v) -> add(k));
return this;
}
- default KList list()
- {
+ default KList list() {
KList t = new KList<>();
iterate((tx, __) -> t.add(tx));
return t;
diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/TecTest.java b/src/main/java/com/volmit/iris/util/hunk/bits/TecTest.java
new file mode 100644
index 000000000..8b840ccec
--- /dev/null
+++ b/src/main/java/com/volmit/iris/util/hunk/bits/TecTest.java
@@ -0,0 +1,110 @@
+/*
+ * Iris is a World Generator for Minecraft Bukkit Servers
+ * Copyright (c) 2021 Arcane Arts (Volmit Software)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.volmit.iris.util.hunk.bits;
+
+import com.volmit.iris.Iris;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.matter.slices.BlockMatter;
+import org.bukkit.Material;
+import org.bukkit.block.data.BlockData;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Set;
+
+public class TecTest {
+ public static Set randomBlocks(int max)
+ {
+ KSet d = new KSet<>();
+
+ while(d.size() < max)
+ {
+ Material m = Material.values()[RNG.r.i(Material.values().length - 1)];
+ if(m.isBlock())
+ {
+ d.add(m.createBlockData());
+ }
+ }
+
+ return d;
+ }
+
+ public static void go()
+ {
+
+ }
+
+ public static boolean test(int size, int pal)
+ {
+ try
+ {
+ Iris.info("Test? " + size + " " + pal);
+ KList blocks = new KList<>(randomBlocks(pal));
+ Iris.info("Fill " + pal + " -> " + size + " Entries");
+ Writable writer = new BlockMatter();
+ DataContainer dc = new DataContainer<>(writer, size);
+
+ for(int i = 0; i < dc.size(); i++)
+ {
+ dc.set(i, blocks.getRandom());
+ }
+
+ Iris.info(dc.toString());
+ byte[] dat = dc.write();
+ DataContainer dx = new DataContainer<>(new DataInputStream(new ByteArrayInputStream(dat)), writer);
+ Iris.info(dx.toString());
+ byte[] dat2 = dx.write();
+ Iris.info("Size: " + Form.memSize(dat.length, 2) + " -> " + Form.memSize(dat2.length, 2));
+
+ if(Arrays.equals(dat, dat2)) {
+ Iris.info("MATCH");
+ return true;
+ }
+ else
+ {
+ for(int i = 0; i < dc.size(); i++)
+ {
+ if(!dx.get(i).equals(dc.get(i)))
+ {
+ Iris.info("FAIL Expected " + dc.get(i).getAsString(true) + " but got " + dx.get(i).getAsString(true));
+ return false;
+ }
+ }
+ Iris.info("MATCH but different output?");
+
+ return true;
+ }
+ }
+
+ catch(Throwable e)
+ {
+ e.printStackTrace();
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java b/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java
index 23b3726e2..4d5d9fba8 100644
--- a/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java
+++ b/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java
@@ -27,7 +27,6 @@ import lombok.EqualsAndHashCode;
import java.io.IOException;
import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
@SuppressWarnings({"DefaultAnnotationParam", "Lombok"})
@Data
diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java b/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java
index e26848a85..ba30870e4 100644
--- a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java
+++ b/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java
@@ -18,8 +18,6 @@
package com.volmit.iris.util.hunk.storage;
-import com.volmit.iris.util.collection.KMap;
-import com.volmit.iris.util.data.palette.PalettedContainer;
import com.volmit.iris.util.function.Consumer4;
import com.volmit.iris.util.function.Consumer4IO;
import com.volmit.iris.util.hunk.Hunk;
@@ -29,7 +27,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.IOException;
-import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
@SuppressWarnings({"DefaultAnnotationParam", "Lombok"})
@Data
@@ -37,16 +35,15 @@ import java.util.Map;
public class PaletteHunk extends StorageHunk implements Hunk {
private DataContainer data;
- public PaletteHunk(int w, int h, int d, Writable writer, T e) {
- super(w,h,d);
- data = new DataContainer<>(writer, w * h * d, e);
+ public PaletteHunk(int w, int h, int d, Writable writer) {
+ super(w, h, d);
+ data = new DataContainer<>(writer, w * h * d);
}
public void setPalette(DataContainer c) {
data = c;
}
-
public boolean isMapped() {
return false;
}
@@ -57,16 +54,12 @@ public class PaletteHunk extends StorageHunk implements Hunk {
@Override
public synchronized Hunk iterateSync(Consumer4 c) {
- for(int i = 0; i < getWidth(); i++)
- {
- for(int j = 0; j < getHeight(); j++)
- {
- for(int k = 0; k < getDepth(); k++)
- {
- T t = getRaw(i,j,k);
- if(t != null)
- {
- c.accept(i,j,k,t);
+ for (int i = 0; i < getWidth(); i++) {
+ for (int j = 0; j < getHeight(); j++) {
+ for (int k = 0; k < getDepth(); k++) {
+ T t = getRaw(i, j, k);
+ if (t != null) {
+ c.accept(i, j, k, t);
}
}
}
@@ -76,16 +69,12 @@ public class PaletteHunk extends StorageHunk implements Hunk {
@Override
public synchronized Hunk iterateSyncIO(Consumer4IO c) throws IOException {
- for(int i = 0; i < getWidth(); i++)
- {
- for(int j = 0; j < getHeight(); j++)
- {
- for(int k = 0; k < getDepth(); k++)
- {
- T t = getRaw(i,j,k);
- if(t != null)
- {
- c.accept(i,j,k,t);
+ for (int i = 0; i < getWidth(); i++) {
+ for (int j = 0; j < getHeight(); j++) {
+ for (int k = 0; k < getDepth(); k++) {
+ T t = getRaw(i, j, k);
+ if (t != null) {
+ c.accept(i, j, k, t);
}
}
}
diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java b/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java
index 8a2afd5ff..9843e1b8b 100644
--- a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java
+++ b/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java
@@ -18,7 +18,6 @@
package com.volmit.iris.util.hunk.storage;
-import com.volmit.iris.util.data.palette.PalettedContainer;
import com.volmit.iris.util.function.Consumer4;
import com.volmit.iris.util.function.Consumer4IO;
import com.volmit.iris.util.hunk.Hunk;
@@ -26,41 +25,38 @@ import com.volmit.iris.util.hunk.bits.DataContainer;
import com.volmit.iris.util.hunk.bits.Writable;
import java.io.IOException;
-import java.util.Map;
import java.util.function.Supplier;
public abstract class PaletteOrHunk extends StorageHunk implements Hunk, Writable {
private final Hunk hunk;
- public PaletteOrHunk(int width, int height, int depth, boolean allow, Supplier> factory, T e) {
+
+ public PaletteOrHunk(int width, int height, int depth, boolean allow, Supplier> factory) {
super(width, height, depth);
- hunk = (allow) ? new PaletteHunk<>(width, height, depth, this, e) : factory.get();
+ hunk = (allow && (width * height * depth <= 4096)) ? new PaletteHunk<>(width, height, depth, this) : factory.get();
}
- public DataContainer palette()
- {
- return isPalette() ? ((PaletteHunk)hunk).getData() : null;
+ public DataContainer palette() {
+ return isPalette() ? ((PaletteHunk) hunk).getData() : null;
}
public void setPalette(DataContainer c) {
- if(isPalette())
- {
- ((PaletteHunk)hunk).setPalette(c);
+ if (isPalette()) {
+ ((PaletteHunk) hunk).setPalette(c);
}
}
- public boolean isPalette()
- {
+ public boolean isPalette() {
return hunk instanceof PaletteHunk;
}
@Override
public void setRaw(int x, int y, int z, T t) {
- hunk.setRaw(x,y,z,t);
+ hunk.setRaw(x, y, z, t);
}
@Override
public T getRaw(int x, int y, int z) {
- return hunk.getRaw(x,y,z);
+ return hunk.getRaw(x, y, z);
}
public int getEntryCount() {
diff --git a/src/main/java/com/volmit/iris/util/io/IO.java b/src/main/java/com/volmit/iris/util/io/IO.java
index 05db560ce..ae909a00c 100644
--- a/src/main/java/com/volmit/iris/util/io/IO.java
+++ b/src/main/java/com/volmit/iris/util/io/IO.java
@@ -19,13 +19,13 @@
package com.volmit.iris.util.io;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.format.Form;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayWriter;
-import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -163,19 +163,22 @@ public class IO {
return new String(hexChars).toUpperCase();
}
+ public static String print(byte[] bytes) {
+ return Form.memSize(bytes.length, 2) + "[" + bytesToHex(bytes) + "]";
+ }
+
public static String longsToHex(long[] bytes) {
byte[] v = new byte[bytes.length * 8];
- for(int i = 0; i < bytes.length; i++)
- {
- v[i * 8] = (byte)(bytes[i] >>> 56);
- v[(i * 8) + 1] = (byte)(bytes[i] >>> 48);
- v[(i * 8) + 2] = (byte)(bytes[i] >>> 40);
- v[(i * 8) + 3] = (byte)(bytes[i] >>> 32);
- v[(i * 8) + 4] = (byte)(bytes[i] >>> 24);
- v[(i * 8) + 5] = (byte)(bytes[i] >>> 16);
- v[(i * 8) + 6] = (byte)(bytes[i] >>> 8);
- v[(i * 8) + 7] = (byte)(bytes[i] >>> 0);
+ for (int i = 0; i < bytes.length; i++) {
+ v[i * 8] = (byte) (bytes[i] >>> 56);
+ v[(i * 8) + 1] = (byte) (bytes[i] >>> 48);
+ v[(i * 8) + 2] = (byte) (bytes[i] >>> 40);
+ v[(i * 8) + 3] = (byte) (bytes[i] >>> 32);
+ v[(i * 8) + 4] = (byte) (bytes[i] >>> 24);
+ v[(i * 8) + 5] = (byte) (bytes[i] >>> 16);
+ v[(i * 8) + 6] = (byte) (bytes[i] >>> 8);
+ v[(i * 8) + 7] = (byte) (bytes[i] >>> 0);
}
return bytesToHex(v);
diff --git a/src/main/java/com/volmit/iris/util/mantle/Mantle.java b/src/main/java/com/volmit/iris/util/mantle/Mantle.java
index 481eaa808..7e593927c 100644
--- a/src/main/java/com/volmit/iris/util/mantle/Mantle.java
+++ b/src/main/java/com/volmit/iris/util/mantle/Mantle.java
@@ -38,7 +38,6 @@ import com.volmit.iris.util.matter.MatterSlice;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.HyperLock;
import com.volmit.iris.util.parallel.MultiBurst;
-import com.volmit.iris.util.scheduling.J;
import lombok.Getter;
import org.bukkit.Chunk;
@@ -477,6 +476,7 @@ public class Mantle {
if (file.exists()) {
try {
+ Iris.addPanic("reading.tectonic-plate", file.getAbsolutePath());
region = TectonicPlate.read(worldHeight, file);
if (region.getX() != x || region.getZ() != z) {
@@ -488,6 +488,8 @@ public class Mantle {
} catch (Throwable e) {
Iris.error("Failed to read Tectonic Plate " + file.getAbsolutePath() + " creating a new chunk instead.");
Iris.reportError(e);
+ e.printStackTrace();
+ Iris.panic();
region = new TectonicPlate(worldHeight, x, z);
loadedRegions.put(k, region);
Iris.debug("Created new Tectonic Plate (Due to Load Failure) " + C.DARK_GREEN + x + " " + z);
diff --git a/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java b/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java
index fc341f687..f7123e7d3 100644
--- a/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java
+++ b/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java
@@ -18,6 +18,8 @@
package com.volmit.iris.util.mantle;
+import com.volmit.iris.Iris;
+import com.volmit.iris.engine.EnginePanic;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.function.Consumer4;
import com.volmit.iris.util.matter.IrisMatter;
@@ -77,8 +79,9 @@ public class MantleChunk {
}
for (int i = 0; i < s; i++) {
+ Iris.addPanic("read.section", "Section[" + i + "]");
if (din.readBoolean()) {
- sections.set(i, Matter.read(din));
+ sections.set(i, Matter.readDin(din));
}
}
}
diff --git a/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java b/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java
index 403e8818f..d404710a6 100644
--- a/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java
+++ b/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java
@@ -19,13 +19,11 @@
package com.volmit.iris.util.mantle;
import com.volmit.iris.Iris;
+import com.volmit.iris.engine.EnginePanic;
import com.volmit.iris.engine.data.cache.Cache;
-import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
-import com.volmit.iris.util.matter.Matter;
-import com.volmit.iris.util.nbt.mca.Section;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Getter;
@@ -77,7 +75,9 @@ public class TectonicPlate {
this(worldHeight, din.readInt(), din.readInt());
for (int i = 0; i < chunks.length(); i++) {
if (din.readBoolean()) {
+ Iris.addPanic("read-chunk", "Chunk[" + i + "]");
chunks.set(i, new MantleChunk(sectionHeight, din));
+ EnginePanic.saveLast();
}
}
}
diff --git a/src/main/java/com/volmit/iris/util/matter/IrisMatter.java b/src/main/java/com/volmit/iris/util/matter/IrisMatter.java
index f8ccd8692..1e4893192 100644
--- a/src/main/java/com/volmit/iris/util/matter/IrisMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/IrisMatter.java
@@ -44,6 +44,11 @@ public class IrisMatter extends IrisRegistrant implements Matter {
private final KMap, MatterSlice>> sliceMap;
public IrisMatter(int width, int height, int depth) {
+ if(width < 1 || height < 1 || depth < 1)
+ {
+ throw new RuntimeException("Invalid Matter Size " + width + "x" + height + "x" + depth);
+ }
+
this.width = width;
this.height = height;
this.depth = depth;
diff --git a/src/main/java/com/volmit/iris/util/matter/Matter.java b/src/main/java/com/volmit/iris/util/matter/Matter.java
index 14a3cec48..1254822cb 100644
--- a/src/main/java/com/volmit/iris/util/matter/Matter.java
+++ b/src/main/java/com/volmit/iris/util/matter/Matter.java
@@ -18,6 +18,7 @@
package com.volmit.iris.util.matter;
+import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.IrisObject;
import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.util.collection.KSet;
@@ -95,6 +96,10 @@ public interface Matter {
return read(in, (b) -> new IrisMatter(b.getX(), b.getY(), b.getZ()));
}
+ static Matter readDin(DataInputStream in) throws IOException, ClassNotFoundException {
+ return readDin(in, (b) -> new IrisMatter(b.getX(), b.getY(), b.getZ()));
+ }
+
/**
* Reads the input stream into a matter object using a matter factory.
* Does not close the input stream. Be a man, close it yourself.
@@ -105,16 +110,26 @@ public interface Matter {
* @throws IOException shit happens yo
*/
static Matter read(InputStream in, Function matterFactory) throws IOException, ClassNotFoundException {
- DataInputStream din = new DataInputStream(in);
- Matter matter = matterFactory.apply(new BlockPosition(
- Varint.readUnsignedVarInt(din),
- Varint.readUnsignedVarInt(din),
- Varint.readUnsignedVarInt(din)));
- int sliceCount = din.readByte();
- matter.getHeader().read(din);
+ return readDin(new DataInputStream(in), matterFactory);
+ }
- while (sliceCount-- > 0) {
+ static Matter readDin(DataInputStream din, Function matterFactory) throws IOException, ClassNotFoundException {
+ Matter matter = matterFactory.apply(new BlockPosition(
+ din.readInt(),
+ din.readInt(),
+ din.readInt()));
+ Iris.addPanic("read.matter.size", matter.getWidth() + "x" + matter.getHeight() + "x" + matter.getDepth());
+ int sliceCount = din.readByte();
+ Iris.addPanic("read.matter.slicecount", sliceCount + "");
+
+ matter.getHeader().read(din);
+ Iris.addPanic("read.matter.header", matter.getHeader().toString());
+
+ for(int i = 0; i < sliceCount; i++)
+ {
+ Iris.addPanic("read.matter.slice", i + "");
String cn = din.readUTF();
+ Iris.addPanic("read.matter.slice.class", cn);
try {
Class> type = Class.forName(cn);
MatterSlice> slice = matter.createSlice(type, matter);
@@ -336,10 +351,6 @@ public interface Matter {
Map, MatterSlice>> getSliceMap();
default void write(File f) throws IOException {
- write(f, true);
- }
-
- default void write(File f, boolean compression) throws IOException {
OutputStream out = new FileOutputStream(f);
write(out);
out.close();
@@ -381,9 +392,9 @@ public interface Matter {
default void writeDos(DataOutputStream dos) throws IOException {
trimSlices();
- Varint.writeUnsignedVarInt(getWidth(), dos);
- Varint.writeUnsignedVarInt(getHeight(), dos);
- Varint.writeUnsignedVarInt(getDepth(), dos);
+ dos.writeInt(getWidth());
+ dos.writeInt(getHeight());
+ dos.writeInt(getDepth());
dos.writeByte(getSliceTypes().size());
getHeader().write(dos);
diff --git a/src/main/java/com/volmit/iris/util/matter/MatterHeader.java b/src/main/java/com/volmit/iris/util/matter/MatterHeader.java
index a00a53d75..d6852eb1b 100644
--- a/src/main/java/com/volmit/iris/util/matter/MatterHeader.java
+++ b/src/main/java/com/volmit/iris/util/matter/MatterHeader.java
@@ -34,13 +34,13 @@ public class MatterHeader {
public void write(DataOutputStream out) throws IOException {
out.writeUTF(author);
- Varint.writeUnsignedVarLong(createdAt, out);
- Varint.writeUnsignedVarInt(version, out);
+ out.writeLong(createdAt);
+ out.writeShort(version);
}
public void read(DataInputStream din) throws IOException {
setAuthor(din.readUTF());
- setCreatedAt(Varint.readUnsignedVarLong(din));
- setVersion(Varint.readUnsignedVarInt(din));
+ setCreatedAt(din.readLong());
+ setVersion(din.readShort());
}
}
diff --git a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java
index ad5d85693..24c8c5b48 100644
--- a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java
+++ b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java
@@ -19,12 +19,10 @@
package com.volmit.iris.util.matter;
import com.volmit.iris.Iris;
-import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.data.palette.PaletteType;
-import com.volmit.iris.util.data.palette.PalettedContainer;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.hunk.bits.DataContainer;
import com.volmit.iris.util.hunk.bits.Writable;
@@ -38,8 +36,6 @@ import org.bukkit.util.BlockVector;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
public interface MatterSlice extends Hunk, PaletteType, Writable {
Class getType();
@@ -164,11 +160,11 @@ public interface MatterSlice extends Hunk, PaletteType, Writable {
default void write(DataOutputStream dos) throws IOException {
dos.writeUTF(getType().getCanonicalName());
- if((this instanceof PaletteOrHunk f && f.isPalette()))
- {
- f.palette().writeDos(dos);
- return;
- }
+
+ if ((this instanceof PaletteOrHunk f && f.isPalette())) {
+ f.palette().writeDos(dos);
+ return;
+ }
int w = getWidth();
int h = getHeight();
@@ -189,8 +185,7 @@ public interface MatterSlice extends Hunk, PaletteType, Writable {
}
default void read(DataInputStream din) throws IOException {
- if((this instanceof PaletteOrHunk f && f.isPalette()))
- {
+ if ((this instanceof PaletteOrHunk f && f.isPalette())) {
f.setPalette(new DataContainer<>(din, this));
return;
}
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java
index 1290cec47..51612897e 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java
@@ -21,10 +21,10 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
+import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -44,7 +44,7 @@ public class BlockMatter extends RawMatter {
}
public BlockMatter(int width, int height, int depth) {
- super(width, height, depth, BlockData.class, AIR);
+ super(width, height, depth, BlockData.class);
registerWriter(World.class, ((w, d, x, y, z) -> w.getBlockAt(x, y, z).setBlockData(d)));
registerReader(World.class, (w, x, y, z) -> {
BlockData d = w.getBlockAt(x, y, z).getBlockData();
@@ -59,6 +59,6 @@ public class BlockMatter extends RawMatter {
@Override
public BlockData readNode(DataInputStream din) throws IOException {
- return B.get(din.readUTF());
+ return Bukkit.createBlockData(din.readUTF());
}
}
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java
index 220c5a937..ba7f66657 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java
@@ -20,7 +20,6 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -38,7 +37,7 @@ public class BooleanMatter extends RawMatter {
}
public BooleanMatter(int width, int height, int depth) {
- super(width, height, depth, Boolean.class, false);
+ super(width, height, depth, Boolean.class);
}
@Override
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java
index 51692451e..7d9709363 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java
@@ -21,7 +21,6 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.matter.Sliced;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -41,7 +40,7 @@ public class CavernMatter extends RawMatter {
}
public CavernMatter(int width, int height, int depth) {
- super(width, height, depth, MatterCavern.class, EMPTY);
+ super(width, height, depth, MatterCavern.class);
}
public static MatterCavern get(String customBiome, int liquid) {
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java
index 427159937..8f446ace6 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java
@@ -33,7 +33,6 @@ import com.volmit.iris.util.nbt.tag.CompoundTag;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
-import org.bukkit.entity.Player;
import org.bukkit.util.BoundingBox;
import java.io.DataInputStream;
@@ -55,7 +54,7 @@ public class EntityMatter extends RawMatter {
}
public EntityMatter(int width, int height, int depth) {
- super(width, height, depth, MatterEntityGroup.class, EMPTY);
+ super(width, height, depth, MatterEntityGroup.class);
registerWriter(World.class, ((w, d, x, y, z) -> {
for (MatterEntity i : d.getEntities()) {
Location realPosition = new Location(w, x + i.getXOff(), y + i.getYOff(), z + i.getZOff());
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java
index 6da6a2876..9eae24461 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java
@@ -21,7 +21,6 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -39,7 +38,7 @@ public class IntMatter extends RawMatter {
}
public IntMatter(int width, int height, int depth) {
- super(width, height, depth, Integer.class, 0);
+ super(width, height, depth, Integer.class);
}
@Override
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java
index a19f1cf7d..5837dde36 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java
@@ -21,7 +21,6 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -39,7 +38,7 @@ public class LongMatter extends RawMatter {
}
public LongMatter(int width, int height, int depth) {
- super(width, height, depth, Long.class, 0L);
+ super(width, height, depth, Long.class);
}
@Override
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java
index 9b680d370..288458f94 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java
@@ -22,7 +22,6 @@ import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterMarker;
import com.volmit.iris.util.matter.Sliced;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -45,7 +44,7 @@ public class MarkerMatter extends RawMatter {
}
public MarkerMatter(int width, int height, int depth) {
- super(width, height, depth, MatterMarker.class, NONE);
+ super(width, height, depth, MatterMarker.class);
}
@Override
diff --git a/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java
index 9aee92288..efcca9ec7 100644
--- a/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java
+++ b/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java
@@ -20,10 +20,7 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.nbt.io.NBTUtil;
-import com.volmit.iris.util.nbt.tag.CompoundTag;
-import com.volmit.iris.util.nbt.tag.IntTag;
import com.volmit.iris.util.nbt.tag.Tag;
-import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -31,7 +28,7 @@ import java.io.IOException;
public class NBTMatter> extends RawMatter