Skip to content

Commit 4cb48e3

Browse files
Fix NPE when no inventory in hotbar listener (#146)
1 parent 97b1152 commit 4cb48e3

File tree

1 file changed

+39
-20
lines changed

1 file changed

+39
-20
lines changed

Plugin/src/main/java/dev/lrxh/neptune/feature/hotbar/listener/ItemListener.java

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
2020
import org.bukkit.inventory.ItemStack;
2121

22-
2322
public class ItemListener implements Listener {
2423

2524
@EventHandler
@@ -31,35 +30,50 @@ public void onPlayerInteract(PlayerInteractEvent event) {
3130
&& profile.getState() != ProfileState.IN_SPECTATOR) {
3231
return;
3332
}
34-
if (player.getGameMode().equals(GameMode.CREATIVE)) return;
33+
if (player.getGameMode().equals(GameMode.CREATIVE))
34+
return;
3535

36-
if (profile.getState() == ProfileState.IN_CUSTOM) return;
36+
if (profile.getState() == ProfileState.IN_CUSTOM)
37+
return;
3738
event.setCancelled(true);
38-
if (event.getItem() == null) return;
39-
if (event.getItem().getType().equals(Material.AIR)) return;
39+
if (event.getItem() == null)
40+
return;
41+
if (event.getItem().getType().equals(Material.AIR))
42+
return;
4043
if (!(event.getAction().equals(Action.RIGHT_CLICK_AIR) || event.getAction().equals(Action.RIGHT_CLICK_BLOCK)))
4144
return;
4245
handleAction(profile, event.getItem());
4346
}
4447

4548
@EventHandler
4649
public void onInventoryClick(InventoryClickEvent event) {
47-
if (!(event.getWhoClicked() instanceof Player player)) return;
50+
if (!(event.getWhoClicked() instanceof Player player))
51+
return;
4852
Profile profile = API.getProfile(player);
4953
if (profile.getMatch() != null
5054
&& profile.getMatch().getState().equals(MatchState.IN_ROUND)
5155
&& profile.getState() != ProfileState.IN_SPECTATOR) {
5256
return;
5357
}
54-
if (profile.hasState(ProfileState.IN_CUSTOM, ProfileState.IN_KIT_EDITOR)) return;
55-
if (player.getGameMode().equals(GameMode.CREATIVE)) return;
56-
if (event.getClickedInventory().getType() != InventoryType.CRAFTING && event.getClickedInventory() != event.getWhoClicked().getInventory()) return;
58+
if (profile.hasState(ProfileState.IN_CUSTOM, ProfileState.IN_KIT_EDITOR))
59+
return;
60+
if (player.getGameMode().equals(GameMode.CREATIVE))
61+
return;
62+
if (event.getClickedInventory() != null &&
63+
event.getClickedInventory().getType() != InventoryType.CRAFTING
64+
&& event.getClickedInventory() != event.getWhoClicked().getInventory())
65+
return;
5766
event.setCancelled(true);
58-
if (event.getCurrentItem() != null && event.getCursor() != null && event.getCurrentItem().getType() == Material.AIR && event.getCursor().getType() == Material.AIR)
67+
if (event.getCurrentItem() != null && event.getCursor() != null
68+
&& event.getCurrentItem().getType() == Material.AIR && event.getCursor().getType() == Material.AIR)
69+
return;
70+
ItemStack item = event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR
71+
? event.getCursor()
72+
: event.getCurrentItem();
73+
if (item == null)
74+
return;
75+
if (item.getType().equals(Material.AIR))
5976
return;
60-
ItemStack item = event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR ? event.getCursor() : event.getCurrentItem();
61-
if (item == null) return;
62-
if (item.getType().equals(Material.AIR)) return;
6377

6478
handleAction(profile, item);
6579
}
@@ -73,21 +87,26 @@ public void swapOffhand(PlayerSwapHandItemsEvent event) {
7387
&& profile.getState() != ProfileState.IN_SPECTATOR) {
7488
return;
7589
}
76-
if (profile.hasState(ProfileState.IN_CUSTOM, ProfileState.IN_KIT_EDITOR)) return;
77-
if (player.getGameMode().equals(GameMode.CREATIVE)) return;
90+
if (profile.hasState(ProfileState.IN_CUSTOM, ProfileState.IN_KIT_EDITOR))
91+
return;
92+
if (player.getGameMode().equals(GameMode.CREATIVE))
93+
return;
7894
event.setCancelled(true);
79-
if (event.getOffHandItem() == null) return;
80-
if (event.getOffHandItem().getType().equals(Material.AIR)) return;
95+
if (event.getOffHandItem() == null)
96+
return;
97+
if (event.getOffHandItem().getType().equals(Material.AIR))
98+
return;
8199

82100
handleAction(profile, event.getOffHandItem());
83101
}
84102

85103
private void handleAction(Profile profile, ItemStack item) {
86104
Item clickedItem = Item.getByItemStack(profile.getState(), item, profile.getPlayerUUID());
87-
if (clickedItem == null) return;
88-
89-
if (!profile.hasCooldownEnded("hotbar")) return;
105+
if (clickedItem == null)
106+
return;
90107

108+
if (!profile.hasCooldownEnded("hotbar"))
109+
return;
91110

92111
if (clickedItem instanceof CustomItem customItem) {
93112
String command = customItem.getCommand();

0 commit comments

Comments
 (0)