Cache resource keys and optimize reference Holder tags set

TagKeys are always interned, so we can use a reference hash set for them
This commit is contained in:
Jake Potrebic
2022-03-20 22:06:47 -07:00
parent 636e993d37
commit 96c7383ba4
2 changed files with 13 additions and 2 deletions

View File

@@ -25,11 +25,11 @@ public class CraftEntityType {
return bukkit;
}
private static final java.util.Map<EntityType, net.minecraft.resources.ResourceKey<net.minecraft.world.entity.EntityType<?>>> KEY_CACHE = java.util.Collections.synchronizedMap(new java.util.EnumMap<>(EntityType.class)); // Paper
public static net.minecraft.world.entity.EntityType<?> bukkitToMinecraft(EntityType bukkit) {
Preconditions.checkArgument(bukkit != null);
return CraftRegistry.getMinecraftRegistry(Registries.ENTITY_TYPE)
.getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow();
.getOptional(KEY_CACHE.computeIfAbsent(bukkit, type -> net.minecraft.resources.ResourceKey.create(Registries.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(type.getKey())))).orElseThrow();
}
public static Holder<net.minecraft.world.entity.EntityType<?>> bukkitToMinecraftHolder(EntityType bukkit) {