Fix ItemCase only working in standard minecraft original worlds.
A long standing bug with ItemCase not supporting custom multiverse worlds.
This commit is contained in:
		@@ -47,7 +47,7 @@ public final class ItemCaseCore extends JavaPlugin {
 | 
			
		||||
    /**
 | 
			
		||||
     * ItemcaseManager.
 | 
			
		||||
     */
 | 
			
		||||
    private ItemcaseManager itemcaseManager;
 | 
			
		||||
    private final ItemcaseManager itemcaseManager =  new ItemcaseManager();
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onEnable() {
 | 
			
		||||
@@ -77,7 +77,7 @@ public final class ItemCaseCore extends JavaPlugin {
 | 
			
		||||
        this.consoleLogger.info("Successfully loaded main configuration file.");
 | 
			
		||||
        
 | 
			
		||||
        // Initialize ItemcaseManager.
 | 
			
		||||
        this.itemcaseManager = new ItemcaseManager();
 | 
			
		||||
        this.itemcaseManager.registerListener();
 | 
			
		||||
        
 | 
			
		||||
        // Register ItemcaseListener.
 | 
			
		||||
        this.getServer().getPluginManager().registerEvents(
 | 
			
		||||
 
 | 
			
		||||
@@ -323,7 +323,7 @@ public final class Itemcase {
 | 
			
		||||
     * is particularly useful when servers use anti-lag plugins that forcibly
 | 
			
		||||
     * kill entities or a player has somehow caused an item to move.
 | 
			
		||||
     */
 | 
			
		||||
    public static final class ItemcaseTask extends BukkitRunnable {
 | 
			
		||||
    private final class ItemcaseTask extends BukkitRunnable {
 | 
			
		||||
        
 | 
			
		||||
        /**
 | 
			
		||||
         * The itemcase that this task is for.
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,10 @@ import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.Location;
 | 
			
		||||
import org.bukkit.World;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.EventHandler;
 | 
			
		||||
import org.bukkit.event.EventPriority;
 | 
			
		||||
import org.bukkit.event.Listener;
 | 
			
		||||
import org.bukkit.event.world.WorldLoadEvent;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -44,46 +48,6 @@ public final class ItemcaseManager {
 | 
			
		||||
     */
 | 
			
		||||
    private final ArrayList<Itemcase> itemcases = new ArrayList<>();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor.
 | 
			
		||||
     */
 | 
			
		||||
    public ItemcaseManager() {
 | 
			
		||||
        
 | 
			
		||||
        // For every world.
 | 
			
		||||
        for(World world : Bukkit.getWorlds()) {
 | 
			
		||||
            
 | 
			
		||||
            // Create WorldFile object.
 | 
			
		||||
            WorldFile file = new WorldFile(world);
 | 
			
		||||
            
 | 
			
		||||
            // Add to hashmap.
 | 
			
		||||
            this.worldFiles.put(world, file);
 | 
			
		||||
            
 | 
			
		||||
            // Attempt to load itemcases and add them to list.
 | 
			
		||||
            try {
 | 
			
		||||
                
 | 
			
		||||
                // Load itemcaes.
 | 
			
		||||
                ArrayList<Itemcase> loadedItemcases = file.loadItemcases();
 | 
			
		||||
                
 | 
			
		||||
                // Add to list.
 | 
			
		||||
                this.itemcases.addAll(loadedItemcases);
 | 
			
		||||
                
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                
 | 
			
		||||
                // Log error.
 | 
			
		||||
                ItemCaseCore.instance.getConsoleLogger().severe(
 | 
			
		||||
                        "Failed to load itemcases for world: " +
 | 
			
		||||
                                world.getName(), e);
 | 
			
		||||
                
 | 
			
		||||
                // Exit.
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // Log.
 | 
			
		||||
            ItemCaseCore.instance.getConsoleLogger().info(
 | 
			
		||||
                    "Loaded itemcases for world: " + world.getName());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Create a new Itemcase.
 | 
			
		||||
     * 
 | 
			
		||||
@@ -133,10 +97,67 @@ public final class ItemcaseManager {
 | 
			
		||||
        this.itemcases.clear();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Register the event listener for this class.
 | 
			
		||||
     */
 | 
			
		||||
    public void registerListener() {
 | 
			
		||||
        
 | 
			
		||||
        // Register listener with bukkit.
 | 
			
		||||
        Bukkit.getPluginManager().registerEvents(
 | 
			
		||||
                new ItemcaseManagerListener(), ItemCaseCore.instance);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * @return A list of all active Itemcase instances.
 | 
			
		||||
     */
 | 
			
		||||
    public ArrayList<Itemcase> getItemcases() {
 | 
			
		||||
        
 | 
			
		||||
        // List of Itemcases.
 | 
			
		||||
        return this.itemcases;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * A bukkit listener for the ItemcaseManager. Used to load Itemcases upon
 | 
			
		||||
     * world loading.
 | 
			
		||||
     */
 | 
			
		||||
    private final class ItemcaseManagerListener implements Listener {
 | 
			
		||||
        
 | 
			
		||||
        @EventHandler(priority = EventPriority.MONITOR)
 | 
			
		||||
        public void onWorldLoadEvent(WorldLoadEvent event) {
 | 
			
		||||
            
 | 
			
		||||
            // Get world.
 | 
			
		||||
            World world = event.getWorld();
 | 
			
		||||
            
 | 
			
		||||
            // Create WorldFile object.
 | 
			
		||||
            WorldFile file = new WorldFile(world);
 | 
			
		||||
            
 | 
			
		||||
            // Add to hashmap.
 | 
			
		||||
            ItemcaseManager.this.worldFiles.put(world, file);
 | 
			
		||||
            
 | 
			
		||||
            // Attempt to load itemcases and add them to list.
 | 
			
		||||
            try {
 | 
			
		||||
                
 | 
			
		||||
                // Load itemcaes.
 | 
			
		||||
                ArrayList<Itemcase> loadedItemcases = file.loadItemcases();
 | 
			
		||||
                
 | 
			
		||||
                // Add to list.
 | 
			
		||||
                ItemcaseManager.this.itemcases.addAll(loadedItemcases);
 | 
			
		||||
                
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                
 | 
			
		||||
                // Log error.
 | 
			
		||||
                ItemCaseCore.instance.getConsoleLogger().severe(
 | 
			
		||||
                        "Failed to load itemcases for world: " +
 | 
			
		||||
                                world.getName(), e);
 | 
			
		||||
                
 | 
			
		||||
                // Exit.
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // Log.
 | 
			
		||||
            ItemCaseCore.instance.getConsoleLogger().info(
 | 
			
		||||
                    "Loaded itemcases for world: " + world.getName());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user