package me.jjm_223.pt.listeners;

import me.jjm_223.pt.PetTransportation;
import me.jjm_223.pt.utils.DataStorage;
import org.bukkit.entity.Item;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.ItemDespawnEvent;

/**
 * Helps config cleanup by keeping track of despawns and removals.
 */

@SuppressWarnings("unused")
public class ItemDespawn implements Listener {

    private DataStorage storage;

    public ItemDespawn(PetTransportation plugin) {
        storage = plugin.getStorage();
    }

    // Called when an item despawns.
    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onDespawn(ItemDespawnEvent event) {
        if (event.getEntity().getItemStack().getItemMeta().getLore() != null) {
            if (event.getEntity().getItemStack().getItemMeta().getLore().size() == 2) {
                storage.configClean(event.getEntity().getItemStack().getItemMeta().getLore().get(1));
            }
        }
    }

    // Called when an item is destroyed by cactus/explosion/etc.
    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onDestroy(EntityDamageEvent event) {
        if (event.getEntity() instanceof Item) {
            Item item = (Item) event.getEntity();
            if (item.getItemStack().getItemMeta().getLore() != null) {
                if (item.getItemStack().getItemMeta().getLore().size() == 2) {
                    if (item.getItemStack().getItemMeta().getLore().get(1).length() == 36) {
                        storage.configClean(item.getItemStack().getItemMeta().getLore().get(1));
                    }
                }
            }
        }
    }
}

@@ -107,16 +107,53 @@
 torage;%0A
+import org.bukkit.entity.EntityType;%0A
 import o
@@ -384,16 +384,98 @@
 wnEvent;
+%0Aimport org.bukkit.inventory.ItemStack;%0Aimport org.bukkit.inventory.meta.ItemMeta;
 %0A%0A/**%0A *
@@ -916,36 +916,54 @@
 vent) %7B%0A        
-if (
+ItemStack itemStack = 
 event.getEntity(
@@ -982,90 +982,135 @@
 ck()
-.getItemMeta().getLore() != null) %7B%0A            if (event.getEntity().getI
+;%0A        if (itemStack == null %7C%7C !itemStack.hasItemMeta()) %7B%0A            return;%0A        %7D%0A%0A        ItemMeta meta = i
 temStack
 ().g
@@ -1097,34 +1097,32 @@
 meta = itemStack
-()
 .getItemMeta().g
@@ -1111,32 +1111,68 @@
 ck.getItemMeta()
+;%0A        if (meta.hasLore() && meta
 .getLore().size(
@@ -1185,36 +1185,32 @@
 ) %7B%0A            
-    
 storage.configCl
@@ -1217,54 +1217,12 @@
 ean(
-event.getEntity().getItemStack().getItemM
+m
 eta
-()
 .get
@@ -1237,30 +1237,16 @@
 et(1));%0A
-            %7D%0A
         
@@ -1479,54 +1479,107 @@
 tity
-() instanceof Item) %7B%0A            Item item
+Type() != EntityType.DROPPED_ITEM) %7B%0A            return;%0A        %7D%0A%0A        ItemStack itemStack
  = 
+(
 (Ite
@@ -1602,43 +1602,69 @@
 ty()
-;%0A            if (item.getI
+).getItemStack();%0A        if (itemStack == null %7C%7C !i
 temStack
 ().g
@@ -1651,38 +1651,36 @@
 ll %7C%7C !itemStack
-().get
+.has
 ItemMeta().getLo
@@ -1677,29 +1677,31 @@
 ta()
-.getLore() != null) %7B
+) %7B%0A            return;
 %0A   
@@ -1709,37 +1709,44 @@
     
- 
+%7D%0A%0A
        
-if (item.getI
+ ItemMeta meta = i
 temStack
 ().g
@@ -1733,34 +1733,32 @@
 meta = itemStack
-()
 .getItemMeta().g
@@ -1759,91 +1759,44 @@
 ta()
-.getLore().size() == 2) %7B%0A                    if (item.getItemStack().getItemM
+;%0A        if (meta.hasLore() && m
 eta
-()
 .get
@@ -1806,45 +1806,23 @@
 e().
-get(1).length
+size
 () == 
-36
+2
 ) %7B%0A
-            
     
@@ -1853,114 +1853,31 @@
 ean(
-item.getItemStack().getItemMeta().getLore().get(1));%0A                    %7D%0A                %7D%0A            %7D
+meta.getLore().get(1));
 %0A   

Tidy up ItemDespawn class.