From 7a2d0effbb82bd710c3a4ef66492af5bc279dc3b Mon Sep 17 00:00:00 2001 From: Eclipse Date: Wed, 10 Jul 2024 07:47:15 +0000 Subject: [PATCH] Use Object2IntMap for key id map --- .../java/org/geysermc/geyser/session/cache/RegistryCache.java | 4 +++- .../geyser/session/cache/registry/RegistryEntryContext.java | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java index de6dd7c4c..a393d461d 100644 --- a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java +++ b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java @@ -27,6 +27,8 @@ package org.geysermc.geyser.session.cache; import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.AccessLevel; import lombok.Getter; import lombok.experimental.Accessors; @@ -159,7 +161,7 @@ public final class RegistryCache { // Store each of the entries resource location IDs and their respective network ID, // used for the key mapper that's currently only used by the Enchantment class - Map entryIdMap = new HashMap<>(); + Object2IntMap entryIdMap = new Object2IntOpenHashMap<>(); for (int i = 0; i < entries.size(); i++) { entryIdMap.put(entries.get(i).getId(), i); } diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/RegistryEntryContext.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/RegistryEntryContext.java index e895711a4..415890d95 100644 --- a/core/src/main/java/org/geysermc/geyser/session/cache/registry/RegistryEntryContext.java +++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/RegistryEntryContext.java @@ -25,6 +25,7 @@ package org.geysermc.geyser.session.cache.registry; +import it.unimi.dsi.fastutil.objects.Object2IntMap; import java.util.Map; import net.kyori.adventure.key.Key; import org.cloudburstmc.nbt.NbtMap; @@ -38,7 +39,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.RegistryEntry; * @param keyIdMap a map for each of the resource location's in the registry and their respective network IDs. * @param session the Geyser session. */ -public record RegistryEntryContext(RegistryEntry entry, Map keyIdMap, GeyserSession session) { +public record RegistryEntryContext(RegistryEntry entry, Object2IntMap keyIdMap, GeyserSession session) { public int getNetworkId(Key registryKey) { return keyIdMap.getOrDefault(registryKey, 0);