From 5f3dcac8e1f284664c6a3a66b4b9495b806db10b Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Wed, 22 Sep 2021 06:26:27 -0400 Subject: [PATCH] Hashmap palettes for custom data --- .../util/data/palette/HashMapPalette.java | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) 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 66acb24f2..a576e9004 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 @@ -21,29 +21,19 @@ 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.Function; import java.util.function.Predicate; public class HashMapPalette implements Palette { - private final IdMapper registry; - private final CrudeIncrementalIntIdentityHashBiMap values; - private final PaletteResize resizeHandler; - - private final Function reader; - - private final Function writer; - private final int bits; - public HashMapPalette(IdMapper var0, int var1, PaletteResize var2, Function var3, Function var4) { - this.registry = var0; + public HashMapPalette(int var1, PaletteResize var2) { this.bits = var1; this.resizeHandler = var2; - this.reader = var3; - this.writer = var4; - this.values = new CrudeIncrementalIntIdentityHashBiMap(1 << var1); + this.values = new CrudeIncrementalIntIdentityHashBiMap<>(1 << var1); } public int idFor(T var0) { @@ -51,7 +41,9 @@ public class HashMapPalette implements Palette { if (var1 == -1) { var1 = this.values.add(var0); if (var1 >= 1 << this.bits) + { var1 = this.resizeHandler.onResize(this.bits + 1, var0); + } } return var1; } @@ -72,14 +64,13 @@ public class HashMapPalette implements Palette { return this.values.size(); } - public void read(ListTag var0) { - this.values.clear(); - for (int var1 = 0; var1 < var0.size(); var1++) - this.values.add(this.reader.apply((CompoundTag) var0.get(var1))); + @Override + public void read(List data) { + data.forEach(values::add); } - public void write(ListTag var0) { - for (int var1 = 0; var1 < getSize(); var1++) - var0.add(this.writer.apply(this.values.byId(var1))); + @Override + public void write(List toList) { + this.values.iterator().forEachRemaining(toList::add); } } \ No newline at end of file