From fb7d4e39de86e1e01cafd6717f2951f22fb8bb50 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Wed, 17 Jan 2024 14:11:11 +0900 Subject: [PATCH] Fix usage of throwable potions in battle Add (experimental) "right-click" support for items when "Use" is invoked on an item in battle. --- .../com/burnedkirby/TurnBasedMinecraft/common/Battle.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java index 1e2a14e..f4c17a2 100644 --- a/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java +++ b/src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java @@ -1103,7 +1103,7 @@ public class Battle { final Entity nextEntity = next.entity; final int nextItemToUse = next.itemToUse; ((Player) nextEntity).getInventory().setItem(nextItemToUse, targetItem.finishUsingItem(targetItemStack, nextEntity.level(), (LivingEntity) nextEntity)); - } else if (targetItem instanceof PotionItem) { + } else if (targetItem instanceof PotionItem && !(targetItem instanceof ThrowablePotionItem)) { debugLog += " potion"; sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_POTION.getValue(), targetItemStack.getDisplayName().getString()); final Entity nextEntity = next.entity; @@ -1114,7 +1114,10 @@ public class Battle { sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_INVALID.getValue(), targetItemStack.getDisplayName().getString()); final Entity nextEntity = next.entity; final int nextItemToUse = next.itemToUse; - ((Player)nextEntity).getInventory().setItem(nextItemToUse, targetItem.finishUsingItem(targetItemStack, nextEntity.level(), (LivingEntity) nextEntity)); + final int prevItem = ((Player)nextEntity).getInventory().selected; + ((Player)nextEntity).getInventory().selected = nextItemToUse; + ((Player)nextEntity).getInventory().setItem(nextItemToUse, targetItem.use(nextEntity.level(), (Player)nextEntity, InteractionHand.MAIN_HAND).getObject()); + ((Player)nextEntity).getInventory().selected = prevItem; } } break;