From 76fd7c056d2bd0a311e62f9f676c0c468f3f920e Mon Sep 17 00:00:00 2001 From: Miles Holder Date: Tue, 24 Dec 2024 08:22:18 +1100 Subject: [PATCH] #1525: Implement Server#createMerchant; Fix MerchantView opening inconsistency --- src/main/java/org/bukkit/craftbukkit/CraftServer.java | 5 +++++ .../org/bukkit/craftbukkit/inventory/util/CraftMenus.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index e48e96e89..0687a1618 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2080,6 +2080,11 @@ public final class CraftServer implements Server { return new CraftMerchantCustom(title == null ? InventoryType.MERCHANT.getDefaultTitle() : title); } + @Override + public Merchant createMerchant() { + return new CraftMerchantCustom(""); // if opened with the old methods title won't render, but will be empty. + } + @Override public int getMaxChainedNeighborUpdates() { return this.getServer().getMaxChainedNeighborUpdates(); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftMenus.java b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftMenus.java index 79f507783..3d5651ee3 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftMenus.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftMenus.java @@ -58,6 +58,11 @@ public final class CraftMenus { if (minecraftMerchant instanceof EntityVillager villager) { level = villager.getVillagerData().getLevel(); } + + if (minecraftMerchant.getTradingPlayer() != null) { // merchant's can only have one trader + minecraftMerchant.getTradingPlayer().closeContainer(); + } + minecraftMerchant.setTradingPlayer(player); player.connection.send(new PacketPlayOutOpenWindow(merchant.containerId, Containers.MERCHANT, merchant.getTitle()));