diff --git a/src/main/java/eu/pb4/sgui/api/gui/MerchantGui.java b/src/main/java/eu/pb4/sgui/api/gui/MerchantGui.java index 8757d37..2962498 100644 --- a/src/main/java/eu/pb4/sgui/api/gui/MerchantGui.java +++ b/src/main/java/eu/pb4/sgui/api/gui/MerchantGui.java @@ -183,10 +183,18 @@ public TradeOffer getSelectedTrade() { * @param offer the trade offer being done * @return if the trade should complete */ - public boolean onTrade(TradeOffer offer) { + public boolean shouldTrade(TradeOffer offer) { return true; } + /** + * Runs after a trade has been completed. + * + * @param offer the trade offer being done + */ + public void onTrade(TradeOffer offer) { + } + /** * Runs when a suggested trade is placed into the selling slot. * diff --git a/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualMerchant.java b/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualMerchant.java index d69bb80..d40001d 100644 --- a/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualMerchant.java +++ b/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualMerchant.java @@ -5,6 +5,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.minecraft.village.SimpleMerchant; +import net.minecraft.village.TradeOffer; public class VirtualMerchant extends SimpleMerchant { @@ -48,4 +49,14 @@ public void sendOffers(PlayerEntity player, Text test, int levelProgress) { ((VirtualMerchantScreenHandler) player.currentScreenHandler).getGui().sendUpdate(); } } + + @Override + public void trade(TradeOffer offer) { + super.trade(offer); + ServerPlayerEntity player = (ServerPlayerEntity) this.getCustomer(); + assert player != null; + if (player.currentScreenHandler instanceof VirtualMerchantScreenHandler) { + ((VirtualMerchantScreenHandler) player.currentScreenHandler).getGui().onTrade(offer); + } + } } diff --git a/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualTradeOutputSlot.java b/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualTradeOutputSlot.java index 9867ac3..6fc0797 100644 --- a/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualTradeOutputSlot.java +++ b/src/main/java/eu/pb4/sgui/virtual/merchant/VirtualTradeOutputSlot.java @@ -18,7 +18,7 @@ public VirtualTradeOutputSlot(PlayerEntity player, VirtualMerchant merchant, Mer public boolean canTakeItems(PlayerEntity playerEntity) { TradeOffer tradeOffer = this.merchantInventory.getTradeOffer(); VirtualMerchantScreenHandler handler = (VirtualMerchantScreenHandler) playerEntity.currentScreenHandler; - return tradeOffer != null && handler.getGui().onTrade(tradeOffer); + return tradeOffer != null && handler.getGui().shouldTrade(tradeOffer); } } diff --git a/src/testmod/java/eu/pb4/sgui/testmod/SGuiTest.java b/src/testmod/java/eu/pb4/sgui/testmod/SGuiTest.java index e1c9706..057e92c 100644 --- a/src/testmod/java/eu/pb4/sgui/testmod/SGuiTest.java +++ b/src/testmod/java/eu/pb4/sgui/testmod/SGuiTest.java @@ -360,7 +360,7 @@ public void onSelectTrade(TradeOffer offer) { } @Override - public boolean onTrade(TradeOffer offer) { + public boolean shouldTrade(TradeOffer offer) { return player.isCreative(); }