better null handling

This commit is contained in:
hyperdefined
2022-06-13 02:55:11 -04:00
parent c4e4ce01fd
commit 6af49d6c30
5 changed files with 23 additions and 16 deletions

View File

@@ -35,7 +35,7 @@ import org.bukkit.persistence.PersistentDataType;
public class ChunkPopulate implements Listener { public class ChunkPopulate implements Listener {
// this tags all elytras with a "new" tag // this tags all elytras with a "new" tag
// this let's use tag any new elytras player loot // this let's us track any new elytras player loot
private final ToolStats toolStats; private final ToolStats toolStats;

View File

@@ -65,11 +65,10 @@ public class CraftItem implements Listener {
} }
// test the item before setting it // test the item before setting it
ItemStack newItem = addLore(itemStack, player); ItemStack newItem = addLore(itemStack, player);
if (newItem == null) { if (newItem != null) {
return; // set the result
event.setCurrentItem(newItem);
} }
// set the result
event.setCurrentItem(newItem);
} }
} }
} }

View File

@@ -85,7 +85,10 @@ public class GenerateLoot implements Listener {
String name = itemStack.getType().toString().toLowerCase(Locale.ROOT); String name = itemStack.getType().toString().toLowerCase(Locale.ROOT);
for (String x : toolStats.allValidItems) { for (String x : toolStats.allValidItems) {
if (name.contains(x)) { if (name.contains(x)) {
chestInv.setItem(i, addLore(itemStack, player)); ItemStack newItem = addLore(itemStack, player);
if (newItem != null) {
chestInv.setItem(i, newItem);
}
} }
} }
} }

View File

@@ -59,7 +59,10 @@ public class PickupItem implements Listener {
if (itemStack.getType() == Material.ELYTRA) { if (itemStack.getType() == Material.ELYTRA) {
// the elytra has the new key, set the lore to it // the elytra has the new key, set the lore to it
if (container.has(toolStats.newElytra, PersistentDataType.INTEGER)) { if (container.has(toolStats.newElytra, PersistentDataType.INTEGER)) {
addLore(itemStack, (Player) event.getEntity()); ItemStack newElytra = addLore(itemStack, (Player) event.getEntity());
if (newElytra != null) {
item.setItemStack(newElytra);
}
} }
} }
} }
@@ -72,10 +75,11 @@ public class PickupItem implements Listener {
* @param itemStack The elytra to add lore to. * @param itemStack The elytra to add lore to.
* @param owner The player who found it. * @param owner The player who found it.
*/ */
private void addLore(ItemStack itemStack, Player owner) { private ItemStack addLore(ItemStack itemStack, Player owner) {
ItemMeta meta = itemStack.getItemMeta(); ItemStack finalItem = itemStack.clone();
ItemMeta meta = finalItem.getItemMeta();
if (meta == null) { if (meta == null) {
return; return null;
} }
long timeCreated = System.currentTimeMillis(); long timeCreated = System.currentTimeMillis();
Date finalDate = new Date(timeCreated); Date finalDate = new Date(timeCreated);
@@ -89,7 +93,7 @@ public class PickupItem implements Listener {
if (foundByLoreRaw == null || foundOnLoreRaw == null) { if (foundByLoreRaw == null || foundOnLoreRaw == null) {
toolStats.logger.warning("There is no lore message for messages.looted!"); toolStats.logger.warning("There is no lore message for messages.looted!");
return; return null;
} }
List<String> lore; List<String> lore;
@@ -104,6 +108,7 @@ public class PickupItem implements Listener {
lore.add(foundByLoreRaw.replace("{player}", owner.getName())); lore.add(foundByLoreRaw.replace("{player}", owner.getName()));
} }
meta.setLore(lore); meta.setLore(lore);
itemStack.setItemMeta(meta); finalItem.setItemMeta(meta);
return finalItem;
} }
} }

View File

@@ -68,12 +68,12 @@ public class VillagerTrade implements Listener {
} }
} }
ItemStack newItem = addLore(item, (Player) event.getWhoClicked()); ItemStack newItem = addLore(item, (Player) event.getWhoClicked());
if (newItem == null) { if (newItem != null) {
// this gets delayed since villager inventories suck for no reason
// if you don't delay this it doesn't work idk
Bukkit.getScheduler().runTaskLater(toolStats, () -> event.setCurrentItem(newItem), 5);
return; return;
} }
// this gets delayed since villager inventories suck for no reason
// if you don't delay this it doesn't work idk
Bukkit.getScheduler().runTaskLater(toolStats, () -> event.setCurrentItem(newItem), 5);
} }
} }
} }