Skip to content

Commit 6af49d6

Browse files
committed
better null handling
1 parent c4e4ce0 commit 6af49d6

File tree

5 files changed

+23
-16
lines changed

5 files changed

+23
-16
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
public class ChunkPopulate implements Listener {
3636

3737
// this tags all elytras with a "new" tag
38-
// this let's use tag any new elytras player loot
38+
// this let's us track any new elytras player loot
3939

4040
private final ToolStats toolStats;
4141

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ public void onCraft(CraftItemEvent event) {
6565
}
6666
// test the item before setting it
6767
ItemStack newItem = addLore(itemStack, player);
68-
if (newItem == null) {
69-
return;
68+
if (newItem != null) {
69+
// set the result
70+
event.setCurrentItem(newItem);
7071
}
71-
// set the result
72-
event.setCurrentItem(newItem);
7372
}
7473
}
7574
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ public void onGenerateLoot(LootGenerateEvent event) {
8585
String name = itemStack.getType().toString().toLowerCase(Locale.ROOT);
8686
for (String x : toolStats.allValidItems) {
8787
if (name.contains(x)) {
88-
chestInv.setItem(i, addLore(itemStack, player));
88+
ItemStack newItem = addLore(itemStack, player);
89+
if (newItem != null) {
90+
chestInv.setItem(i, newItem);
91+
}
8992
}
9093
}
9194
}

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ public void onPickup(EntityPickupItemEvent event) {
5959
if (itemStack.getType() == Material.ELYTRA) {
6060
// the elytra has the new key, set the lore to it
6161
if (container.has(toolStats.newElytra, PersistentDataType.INTEGER)) {
62-
addLore(itemStack, (Player) event.getEntity());
62+
ItemStack newElytra = addLore(itemStack, (Player) event.getEntity());
63+
if (newElytra != null) {
64+
item.setItemStack(newElytra);
65+
}
6366
}
6467
}
6568
}
@@ -72,10 +75,11 @@ public void onPickup(EntityPickupItemEvent event) {
7275
* @param itemStack The elytra to add lore to.
7376
* @param owner The player who found it.
7477
*/
75-
private void addLore(ItemStack itemStack, Player owner) {
76-
ItemMeta meta = itemStack.getItemMeta();
78+
private ItemStack addLore(ItemStack itemStack, Player owner) {
79+
ItemStack finalItem = itemStack.clone();
80+
ItemMeta meta = finalItem.getItemMeta();
7781
if (meta == null) {
78-
return;
82+
return null;
7983
}
8084
long timeCreated = System.currentTimeMillis();
8185
Date finalDate = new Date(timeCreated);
@@ -89,7 +93,7 @@ private void addLore(ItemStack itemStack, Player owner) {
8993

9094
if (foundByLoreRaw == null || foundOnLoreRaw == null) {
9195
toolStats.logger.warning("There is no lore message for messages.looted!");
92-
return;
96+
return null;
9397
}
9498

9599
List<String> lore;
@@ -104,6 +108,7 @@ private void addLore(ItemStack itemStack, Player owner) {
104108
lore.add(foundByLoreRaw.replace("{player}", owner.getName()));
105109
}
106110
meta.setLore(lore);
107-
itemStack.setItemMeta(meta);
111+
finalItem.setItemMeta(meta);
112+
return finalItem;
108113
}
109114
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ public void onTrade(InventoryClickEvent event) {
6868
}
6969
}
7070
ItemStack newItem = addLore(item, (Player) event.getWhoClicked());
71-
if (newItem == null) {
71+
if (newItem != null) {
72+
// this gets delayed since villager inventories suck for no reason
73+
// if you don't delay this it doesn't work idk
74+
Bukkit.getScheduler().runTaskLater(toolStats, () -> event.setCurrentItem(newItem), 5);
7275
return;
7376
}
74-
// this gets delayed since villager inventories suck for no reason
75-
// if you don't delay this it doesn't work idk
76-
Bukkit.getScheduler().runTaskLater(toolStats, () -> event.setCurrentItem(newItem), 5);
7777
}
7878
}
7979
}

0 commit comments

Comments
 (0)