Trim slightly more fastutil, use its interfaces for the long collections

This commit is contained in:
Nassim Jahnke committed 2026-05-01 10:58:03 +02:00
1 parent c611a34e76
commit e15fc5953e
6 files changed
+17 -17

No files matched your search

@@ -27,7 +27,7 @@ import com.viaversion.nbt.tag.ListTag;
import com.viaversion.nbt.tag.StringTag;
import com.viaversion.nbt.tag.Tag;
import it.unimi.dsi.fastutil.ints.Int2IntFunction;
import java.util.function.Function;
import java.util.function.ToIntFunction;
/**
* Set of ids that either holds a string tag key or an array of ids.
@@ -56,19 +56,19 @@ public interface HolderSet {
return new HolderSetImpl.Ids(ids);
}
static HolderSet fromTag(final Tag tag, final Function<String, Integer> mappingFunction) {
static HolderSet fromTag(final Tag tag, final ToIntFunction<String> mappingFunction) {
if (tag instanceof StringTag stringTag) {
if (stringTag.getValue().startsWith("#")) {
return HolderSet.of(stringTag.getValue().substring(1));
}
final int id = mappingFunction.apply(stringTag.getValue());
final int id = mappingFunction.applyAsInt(stringTag.getValue());
return HolderSet.of(new int[]{id});
} else if (tag instanceof ListTag<?> listTag) {
final int[] ids = new int[listTag.size()];
for (int i = 0; i < listTag.size(); i++) {
final String value = ((StringTag) listTag.get(i)).getValue();
ids[i] = mappingFunction.apply(value);
ids[i] = mappingFunction.applyAsInt(value);
}
return HolderSet.of(ids);
}
@@ -70,9 +70,11 @@ fun ShadowJar.configureExcludes() {
exclude("it/unimi/dsi/fastutil/longs/*LinkedOpenHashMap*")
exclude("it/unimi/dsi/fastutil/longs/*SortedMap*")
// Crossing fingers
exclude("it/unimi/dsi/fastutil/*Big*")
exclude("it/unimi/dsi/fastutil/*/*Big*")
exclude("it/unimi/dsi/fastutil/*/*Synchronized*")
exclude("it/unimi/dsi/fastutil/*/*Unmodifiable*")
// More
exclude("it/unimi/dsi/fastutil/io/TextIO")
exclude("it/unimi/dsi/fastutil/io/TextIO.class")
exclude("it/unimi/dsi/fastutil/io/BinIO.class")
}
@@ -20,13 +20,13 @@ package com.viaversion.viaversion.protocols.v1_12_2to1_13.storage;
import com.google.common.collect.EvictingQueue;
import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.BlockPosition;
import java.util.Map;
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import java.util.Queue;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import org.checkerframework.checker.nullness.qual.Nullable;
public class BlockConnectionStorage implements StorableObject {
private final Map<Long, SectionData> blockStorage = new Long2ObjectOpenHashMap<>();
private final Long2ObjectMap<SectionData> blockStorage = new Long2ObjectOpenHashMap<>();
@SuppressWarnings("UnstableApiUsage")
private final Queue<BlockPosition> modified = EvictingQueue.create(5);
@@ -22,13 +22,14 @@ import com.viaversion.viaversion.api.minecraft.BlockPosition;
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import java.util.HashMap;
import java.util.Map;
public class BlockStorage implements StorableObject {
private static final IntSet WHITELIST = new IntOpenHashSet(46);
private final Map<Long, Map<BlockPosition, ReplacementData>> blocks = new Long2ObjectOpenHashMap<>();
private final Long2ObjectMap<Map<BlockPosition, ReplacementData>> blocks = new Long2ObjectOpenHashMap<>();
static {
// Flower pots
@@ -19,18 +19,16 @@ package com.viaversion.viaversion.protocols.v1_17_1to1_18.storage;
import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
import org.checkerframework.checker.nullness.qual.Nullable;
public final class ChunkLightStorage implements StorableObject {
private final Map<Long, ChunkLight> lightPackets = new Long2ObjectOpenHashMap<>();
private final Set<Long> loadedChunks = new LongOpenHashSet();
private final Long2ObjectMap<ChunkLight> lightPackets = new Long2ObjectOpenHashMap<>();
private final LongSet loadedChunks = new LongOpenHashSet();
public void storeLight(final int x, final int z, final ChunkLight chunkLight) {
lightPackets.put(ChunkPosition.chunkKey(x, z), chunkLight);
@@ -20,12 +20,11 @@ package com.viaversion.viaversion.protocols.v1_21to1_21_2.storage;
import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import java.util.HashSet;
import java.util.Set;
import it.unimi.dsi.fastutil.longs.LongSet;
public class ChunkLoadTracker implements StorableObject {
private final Set<Long> loadedChunks = new LongOpenHashSet();
private final LongSet loadedChunks = new LongOpenHashSet();
public void addChunk(final int x, final int z) {
this.loadedChunks.add(ChunkPosition.chunkKey(x, z));