#1525: Implement Server#createMerchant; Fix MerchantView opening inconsistency

This commit is contained in:
Miles Holder 2024-12-24 08:22:18 +11:00 committed by md_5
parent a0e06dfa0c
commit 76fd7c056d
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11
2 changed files with 10 additions and 0 deletions

View File

@ -2080,6 +2080,11 @@ public final class CraftServer implements Server {
return new CraftMerchantCustom(title == null ? InventoryType.MERCHANT.getDefaultTitle() : title); 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 @Override
public int getMaxChainedNeighborUpdates() { public int getMaxChainedNeighborUpdates() {
return this.getServer().getMaxChainedNeighborUpdates(); return this.getServer().getMaxChainedNeighborUpdates();

View File

@ -58,6 +58,11 @@ public final class CraftMenus {
if (minecraftMerchant instanceof EntityVillager villager) { if (minecraftMerchant instanceof EntityVillager villager) {
level = villager.getVillagerData().getLevel(); level = villager.getVillagerData().getLevel();
} }
if (minecraftMerchant.getTradingPlayer() != null) { // merchant's can only have one trader
minecraftMerchant.getTradingPlayer().closeContainer();
}
minecraftMerchant.setTradingPlayer(player); minecraftMerchant.setTradingPlayer(player);
player.connection.send(new PacketPlayOutOpenWindow(merchant.containerId, Containers.MERCHANT, merchant.getTitle())); player.connection.send(new PacketPlayOutOpenWindow(merchant.containerId, Containers.MERCHANT, merchant.getTitle()));