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 {
// 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;

View File

@@ -65,11 +65,10 @@ public class CraftItem implements Listener {
}
// test the item before setting it
ItemStack newItem = addLore(itemStack, player);
if (newItem == null) {
return;
if (newItem != null) {
// 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);
for (String x : toolStats.allValidItems) {
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) {
// the elytra has the new key, set the lore to it
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 owner The player who found it.
*/
private void addLore(ItemStack itemStack, Player owner) {
ItemMeta meta = itemStack.getItemMeta();
private ItemStack addLore(ItemStack itemStack, Player owner) {
ItemStack finalItem = itemStack.clone();
ItemMeta meta = finalItem.getItemMeta();
if (meta == null) {
return;
return null;
}
long timeCreated = System.currentTimeMillis();
Date finalDate = new Date(timeCreated);
@@ -89,7 +93,7 @@ public class PickupItem implements Listener {
if (foundByLoreRaw == null || foundOnLoreRaw == null) {
toolStats.logger.warning("There is no lore message for messages.looted!");
return;
return null;
}
List<String> lore;
@@ -104,6 +108,7 @@ public class PickupItem implements Listener {
lore.add(foundByLoreRaw.replace("{player}", owner.getName()));
}
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());
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;
}
// 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);
}
}
}