Unload itemcases on plugin disable.
Unload and despawn itemcases and their items on plugin disable.
This commit is contained in:
		@@ -81,6 +81,13 @@ public final class ItemCaseCore extends JavaPlugin {
 | 
			
		||||
                new ItemcaseListener(), this);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onDisable() {
 | 
			
		||||
        
 | 
			
		||||
        // Unload all itemcases.
 | 
			
		||||
        this.itemcaseManager.unloadItemcases();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
     * @return Main ItemCase configuration file.
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,6 @@ import org.bukkit.OfflinePlayer;
 | 
			
		||||
import org.bukkit.World;
 | 
			
		||||
import org.bukkit.entity.Entity;
 | 
			
		||||
import org.bukkit.entity.Item;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.EventHandler;
 | 
			
		||||
import org.bukkit.event.EventPriority;
 | 
			
		||||
import org.bukkit.event.Listener;
 | 
			
		||||
@@ -69,7 +68,7 @@ public final class Itemcase {
 | 
			
		||||
    /**
 | 
			
		||||
     * This itemcase's task.
 | 
			
		||||
     */
 | 
			
		||||
    private final ItemcaseTask task;
 | 
			
		||||
    private ItemcaseTask task;
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * The active item that is currently on display.
 | 
			
		||||
@@ -108,10 +107,6 @@ public final class Itemcase {
 | 
			
		||||
        // Set owner.
 | 
			
		||||
        this.owner = owner;
 | 
			
		||||
        
 | 
			
		||||
        // Schedule itemcase task to execute every 200 server ticks (10 secs).
 | 
			
		||||
        this.task = new ItemcaseTask(this);
 | 
			
		||||
        this.task.runTaskTimer(ItemCaseCore.instance, 0, 200);
 | 
			
		||||
        
 | 
			
		||||
        // Spawn display item for the first time.
 | 
			
		||||
        this.spawnItem();
 | 
			
		||||
    }
 | 
			
		||||
@@ -121,6 +116,10 @@ public final class Itemcase {
 | 
			
		||||
     */
 | 
			
		||||
    public void spawnItem()  {
 | 
			
		||||
        
 | 
			
		||||
        // Schedule itemcase task to execute every 200 server ticks (10 secs).
 | 
			
		||||
        this.task = new ItemcaseTask(this);
 | 
			
		||||
        this.task.runTaskTimer(ItemCaseCore.instance, 0, 200);
 | 
			
		||||
        
 | 
			
		||||
        // Get the world that this itemcase is in.
 | 
			
		||||
        World world = this.location.getWorld();
 | 
			
		||||
        
 | 
			
		||||
@@ -159,6 +158,11 @@ public final class Itemcase {
 | 
			
		||||
     * Despawn the display item for this itemcase.
 | 
			
		||||
     */
 | 
			
		||||
    public void despawnItem() {
 | 
			
		||||
        
 | 
			
		||||
        // Cancel running task.
 | 
			
		||||
        this.task.cancel();
 | 
			
		||||
        
 | 
			
		||||
        // Remove current display item from world.
 | 
			
		||||
        this.displayItem.remove();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -113,6 +113,22 @@ public final class ItemcaseManager {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Unload all currently loaded Itemcases.
 | 
			
		||||
     */
 | 
			
		||||
    public void unloadItemcases() {
 | 
			
		||||
        
 | 
			
		||||
        // For every loaded itemcase.
 | 
			
		||||
        for(Itemcase itemcase : this.itemcases) {
 | 
			
		||||
            
 | 
			
		||||
            // Despawn the item.
 | 
			
		||||
            itemcase.despawnItem();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // Clear list.
 | 
			
		||||
        this.itemcases.clear();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * @return A list of all active Itemcase instances.
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user