From 6f26fe46c2537d6a2438c3c4061d3ef8a6d5ff50 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sun, 21 Apr 2024 19:06:12 -0400 Subject: Fix trading of items that can't be finished in one go. --- src/main/java/org/chrisoft/trashyaddon/modules/AutoTrade.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/chrisoft/trashyaddon/modules/AutoTrade.java b/src/main/java/org/chrisoft/trashyaddon/modules/AutoTrade.java index 5cfacdc..07c6995 100644 --- a/src/main/java/org/chrisoft/trashyaddon/modules/AutoTrade.java +++ b/src/main/java/org/chrisoft/trashyaddon/modules/AutoTrade.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.SetTradeOffersS2CPacket; +import net.minecraft.screen.MerchantScreenHandler; import net.minecraft.village.TradeOffer; import net.minecraft.village.TradeOfferList; import org.chrisoft.trashyaddon.mixin.MerchantScreenAccessor; @@ -124,7 +125,7 @@ public class AutoTrade extends Module { .name("Interaction Rate") .description("Number of ticks between interactions.") .min(0) - .max(10) + .max(20) .build() ); private final Setting autoClose = sgGeneral.add(new BoolSetting.Builder() @@ -134,7 +135,7 @@ public class AutoTrade extends Module { ); private final Setting logSummary = sgGeneral.add(new BoolSetting.Builder() .name("Log Summary") - .description("Give a summary of what has been traded once it finishes trading.") + .description("Give a summary of what has been traded once trading is complete.") .build() ); @@ -270,7 +271,10 @@ public class AutoTrade extends Module { endTrading(); return; } - if (waitState != WaitState.None && currentOffer < offers.size() && offers.get(currentOffer).isDisabled()) { + if (waitState != WaitState.None && currentOffer < offers.size() && (offers.get(currentOffer).isDisabled() || + screen.getScreenHandler().slots.get(0).getStack().getCount() < offers.get(currentOffer).getAdjustedFirstBuyItem().getCount())) { + // the WaitingForInventoryUpdate state is mostly useless because ScreenHandlerSlotUpdateS2CPacket + // isn't sent after the shift-click... finalizeCurrentTrade(); waitState = WaitState.None; ticksRemaining = interactionRate.get(); -- cgit v1.2.3