]> git.seodisparate.com - TurnBasedMinecraftMod/commitdiff
Fix usage of throwable potions in battle
authorStephen Seo <seo.disparate@gmail.com>
Wed, 17 Jan 2024 05:11:11 +0000 (14:11 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 17 Jan 2024 05:29:19 +0000 (14:29 +0900)
Add (experimental) "right-click" support for items when "Use" is invoked
on an item in battle.

src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java

index 3379b967efea958c203ceef607b7c4ff06780936..39483f1faf4aef2de932acee5712b32488722139 100644 (file)
@@ -1102,7 +1102,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;
@@ -1113,7 +1113,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;