@Override public Inventory importInventory( ChestOwner chestOwner, WorldGroup worldGroup, BetterEnderChest plugin) throws IOException { // Cannot import vanilla chests if (chestOwner.isSpecialChest()) { return null; } Player player = chestOwner.getPlayer(); Inventory betterEnderInventory; if (player == null) { // Offline, load from file File playerDirectory = new File(Bukkit.getWorlds().get(0).getWorldFolder().getAbsolutePath() + "/playerdata"); File playerFile = new File(playerDirectory.getAbsolutePath() + "/" + chestOwner.getSaveFileName() + ".dat"); if (!playerFile.exists()) { return null; } // Load it from the file (mainworld/playerdata/playername.dat) betterEnderInventory = plugin .getNMSHandlers() .getSelectedRegistration() .loadNBTInventoryFromFile(playerFile, chestOwner, worldGroup, "EnderItems"); if (betterEnderInventory == null) { // Cannot load the inventory from that file, most likely because // it is empty return null; } } else { // Online, load now Inventory vanillaInventory = player.getEnderChest(); int inventoryRows = plugin.getEmptyInventoryProvider().getInventoryRows(chestOwner, vanillaInventory); betterEnderInventory = plugin .getEmptyInventoryProvider() .loadEmptyInventory( chestOwner, worldGroup, inventoryRows, plugin.getChestSizes().getDisabledSlots(player)); // Copy all items ListIterator<ItemStack> copyIterator = vanillaInventory.iterator(); while (copyIterator.hasNext()) { int slot = copyIterator.nextIndex(); ItemStack stack = copyIterator.next(); if (slot < betterEnderInventory.getSize()) { betterEnderInventory.setItem(slot, stack); } } } // Check if the inventory is empty if (BetterEnderUtils.isInventoryEmpty(betterEnderInventory)) { // Empty inventory, return null return null; } else { // Return the inventory return betterEnderInventory; } }