From 6cd1c78e821326bfd011a8a7b3f2394bb383268d Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Fri, 7 Aug 2026 14:04:28 +0200 Subject: [PATCH] Use identity/enum maps for material maps --- .../org/bukkit/craftbukkit/block/CraftBlockStates.java | 3 ++- .../org/bukkit/craftbukkit/util/CraftMagicNumbers.java | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java index 6dcfe2cea0..063a4ad33d 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java @@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.block; import com.google.common.base.Preconditions; import java.util.HashMap; +import java.util.IdentityHashMap; import java.util.Map; import java.util.function.BiFunction; import javax.annotation.Nullable; @@ -69,7 +70,7 @@ public final class CraftBlockStates { } } - private static final Map> FACTORIES = new HashMap<>(); + private static final Map> FACTORIES = new IdentityHashMap<>(); private static final BlockStateFactory DEFAULT_FACTORY = new BlockStateFactory<>(CraftBlockState.class) { @Override public CraftBlockState createBlockState(World world, BlockPos pos, net.minecraft.world.level.block.state.BlockState state, BlockEntity blockEntity) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java index 051466ae23..80317dc41f 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -26,8 +26,10 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; +import java.util.IdentityHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -134,10 +136,10 @@ public final class CraftMagicNumbers implements UnsafeValues { } // ======================================================================== - private static final Map BLOCK_MATERIAL = new HashMap<>(); - private static final Map ITEM_MATERIAL = new HashMap<>(); - private static final Map MATERIAL_ITEM = new HashMap<>(); - private static final Map MATERIAL_BLOCK = new HashMap<>(); + private static final Map BLOCK_MATERIAL = new IdentityHashMap<>(); + private static final Map ITEM_MATERIAL = new IdentityHashMap<>(); + private static final Map MATERIAL_ITEM = new EnumMap<>(Material.class); + private static final Map MATERIAL_BLOCK = new EnumMap<>(Material.class); static { for (Block block : BuiltInRegistries.BLOCK) {