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()));