From f21306a19d0580548d33947549b19513b6b93b72 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Wed, 22 Sep 2021 06:26:38 -0400 Subject: [PATCH] Linear palettes for custom data --- .../iris/util/data/palette/IdMapper.java | 4 ++ .../iris/util/data/palette/LinearPalette.java | 44 ++++++++++++------- 2 files changed, 31 insertions(+), 17 deletions(-) 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 a65dc7165..f5e287a8e 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 @@ -50,7 +50,9 @@ public class IdMapper implements IdMap { public void addMapping(T var0, int var1) { this.tToId.put(var0, Integer.valueOf(var1)); while (this.idToT.size() <= var1) + { this.idToT.add(null); + } this.idToT.set(var1, var0); if (this.nextId <= var1) this.nextId = var1 + 1; @@ -67,7 +69,9 @@ public class IdMapper implements IdMap { public final T byId(int var0) { 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 1d822e8b2..54c89f169 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 @@ -19,37 +19,34 @@ 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.function.Function; +import java.util.List; import java.util.function.Predicate; public class LinearPalette implements Palette { - private final IdMapper registry; - private final T[] values; - private final PaletteResize resizeHandler; - - private final Function reader; - private final int bits; - private int size; - public LinearPalette(IdMapper var0, int var1, PaletteResize var2, Function var3) { - this.registry = var0; + public LinearPalette(int var1, PaletteResize var2) { this.values = (T[]) new Object[1 << var1]; this.bits = var1; this.resizeHandler = var2; - this.reader = var3; } public int idFor(T var0) { int var1; for (var1 = 0; var1 < this.size; var1++) { - if (this.values[var1] == var0) + if(this.values[var1] == null && var0 == null) + { return var1; + } + + if (this.values[var1].equals(var0)) + { + return var1; + } } var1 = this.size; if (var1 < this.values.length) { @@ -78,9 +75,22 @@ public class LinearPalette implements Palette { return this.size; } - public void read(ListTag var0) { - for (int var1 = 0; var1 < var0.size(); var1++) - this.values[var1] = this.reader.apply((CompoundTag) var0.get(var1)); - this.size = var0.size(); + @Override + public void read(List fromList) { + for (int i = 0; i < fromList.size(); i++) + { + this.values[i] = fromList.get(i); + } + + this.size = fromList.size(); + } + + @Override + public void write(List toList) { + for (int i = 0; i < this.size; i++) + { + T v = values[i]; + toList.add(v); + } } }