mirror of
https://github.com/hyperdefined/ToolStats.git
synced 2025-12-06 06:41:44 +00:00
better null handling
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user