Skip to content

Commit dd8a0db

Browse files
committed
fix using rods in offhand
1 parent fee7d5c commit dd8a0db

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

src/main/java/lol/hyper/toolstats/events/PlayerFish.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.bukkit.event.Listener;
3131
import org.bukkit.event.player.PlayerFishEvent;
3232
import org.bukkit.inventory.ItemStack;
33+
import org.bukkit.inventory.PlayerInventory;
3334
import org.bukkit.inventory.meta.ItemMeta;
3435
import org.bukkit.persistence.PersistentDataContainer;
3536
import org.bukkit.persistence.PersistentDataType;
@@ -61,13 +62,32 @@ public void onFish(PlayerFishEvent event) {
6162
return;
6263
}
6364
// make sure the player is holding a fishing rod
64-
ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot());
65-
if (heldItem == null || heldItem.getType() == Material.AIR || heldItem.getType() != Material.FISHING_ROD) {
65+
// player can fish with their offhand
66+
PlayerInventory inventory = player.getInventory();
67+
boolean isMainHand = inventory.getItemInMainHand().getType() == Material.FISHING_ROD;
68+
boolean isOffHand = inventory.getItemInOffHand().getType() == Material.FISHING_ROD;
69+
ItemStack fishingRod = null;
70+
if (isMainHand) {
71+
fishingRod = inventory.getItemInMainHand();
72+
}
73+
if (isOffHand) {
74+
fishingRod = inventory.getItemInOffHand();
75+
}
76+
77+
// if the player is hold fishing rods in both hands
78+
// default to main hand since that takes priority
79+
if (isMainHand && isOffHand) {
80+
fishingRod = inventory.getItemInMainHand();
81+
}
82+
83+
// player swapped items?
84+
if (fishingRod == null) {
6685
return;
6786
}
6887

69-
// fix compatability issues by running 1 tick later
70-
Bukkit.getScheduler().runTaskLater(toolStats, () -> updateFishCount(heldItem), 1);
88+
// update the fishing rod!
89+
ItemStack finalFishingRod = fishingRod;
90+
Bukkit.getScheduler().runTaskLater(toolStats, () -> updateFishCount(finalFishingRod), 1);
7191

7292
// check if the player caught an item
7393
if (event.getCaught() == null) {

0 commit comments

Comments
 (0)