--- a/net/minecraft/world/ChestLock.java +++ b/net/minecraft/world/ChestLock.java @@ -6,6 +6,11 @@ import net.minecraft.network.chat.IChatBaseComponent; import net.minecraft.world.item.ItemStack; +// CraftBukkit start +import org.bukkit.ChatColor; +import org.bukkit.craftbukkit.util.CraftChatMessage; +// CraftBukkit end + public record ChestLock(String key) { public static final ChestLock NO_LOCK = new ChestLock(""); @@ -18,7 +23,19 @@ } else { IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) itemstack.get(DataComponents.CUSTOM_NAME); - return ichatbasecomponent != null && this.key.equals(ichatbasecomponent.getString()); + // CraftBukkit start - SPIGOT-6307: Check for color codes if the lock contains color codes + if (this.key.isEmpty()) return true; + if (ichatbasecomponent != null) { + if (this.key.indexOf(ChatColor.COLOR_CHAR) == -1) { + // The lock key contains no color codes, so let's ignore colors in the item display name (vanilla Minecraft behavior): + return this.key.equals(ichatbasecomponent.getString()); + } else { + // The lock key contains color codes, so let's take them into account: + return this.key.equals(CraftChatMessage.fromComponent(ichatbasecomponent)); + } + } + return false; + // CraftBukkit end } }