diff --git a/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette.java b/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette.java index 7228cdc41..7d825748b 100644 --- a/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette.java +++ b/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/LithiumHashPalette.java @@ -1,6 +1,5 @@ package net.caffeinemc.mods.lithium.common.world.chunk; -import com.google.common.collect.ImmutableList; import it.unimi.dsi.fastutil.HashCommon; import it.unimi.dsi.fastutil.objects.Reference2IntMap; import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; @@ -13,6 +12,7 @@ import net.minecraft.world.level.chunk.MissingPaletteEntryException; import net.minecraft.world.level.chunk.Palette; import net.minecraft.world.level.chunk.PaletteResize; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.List; @@ -35,7 +35,7 @@ public class LithiumHashPalette implements Palette { private T[] entries; private int size = 0; - public LithiumHashPalette(IdMap idList, PaletteResize resizeHandler, int indexBits, T[] entries, Reference2IntMap table, int size) { + private LithiumHashPalette(IdMap idList, PaletteResize resizeHandler, int indexBits, T[] entries, Reference2IntMap table, int size) { this.idList = idList; this.resizeHandler = resizeHandler; this.indexBits = indexBits; @@ -66,7 +66,7 @@ public LithiumHashPalette(IdMap idList, int bits, PaletteResize resizeHand } @Override - public int idFor(T obj) { + public int idFor(@NotNull T obj) { int id = this.table.getInt(obj); if (id == ABSENT_VALUE) { @@ -77,7 +77,7 @@ public int idFor(T obj) { } @Override - public boolean maybeHas(Predicate predicate) { + public boolean maybeHas(@NotNull Predicate predicate) { for (int i = 0; i < this.size; ++i) { if (predicate.test(this.entries[i])) { return true; @@ -121,7 +121,7 @@ private void resize(int neededCapacity) { } @Override - public T valueFor(int id) { + public @NotNull T valueFor(int id) { T[] entries = this.entries; T entry = null; @@ -156,7 +156,7 @@ public void read(FriendlyByteBuf buf) { int entryCount = buf.readVarInt(); for (int i = 0; i < entryCount; ++i) { - this.addEntry(this.idList.byId(buf.readVarInt())); + this.addEntry(this.idList.byIdOrThrow(buf.readVarInt())); } } @@ -187,8 +187,10 @@ public int getSize() { } @Override - public Palette copy(PaletteResize resizeHandler) { - return new LithiumHashPalette<>(this.idList, resizeHandler, this.indexBits, this.entries.clone(), new Reference2IntOpenHashMap<>(this.table), this.size); + public @NotNull Palette copy(@NotNull PaletteResize resizeHandler) { + Reference2IntOpenHashMap newTable = new Reference2IntOpenHashMap<>(this.table); + newTable.defaultReturnValue(this.table.defaultReturnValue()); + return new LithiumHashPalette<>(this.idList, resizeHandler, this.indexBits, this.entries.clone(), newTable, this.size); } private void clear() { @@ -198,13 +200,8 @@ private void clear() { } public List getElements() { - ImmutableList.Builder builder = new ImmutableList.Builder<>(); - for (T entry : this.entries) { - if (entry != null) { - builder.add(entry); - } - } - return builder.build(); + T[] copy = Arrays.copyOf(this.entries, this.size); + return Arrays.asList(copy); } public static Palette create(int bits, IdMap idList, PaletteResize listener, List list) {