package xyz.soukup.menumaker.events; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataType; import xyz.soukup.menumaker.MenuMaker; import xyz.soukup.menumaker.PDC; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class saveInventory implements Listener { @EventHandler public void onPlayerCloseMenuEditor(InventoryCloseEvent event) throws IOException { Player player = (Player) event.getPlayer(); String inventoryName = (String) PDC.GetPlayerPDC(player, "opened-inv", PersistentDataType.STRING); if (inventoryName != null){ PDC.DeletePlayerPDC(player, "opened-inv"); MenuMaker plugin = MenuMaker.getPlugin(MenuMaker.class); Files.createDirectories(Paths.get(plugin.getDataFolder() + "/menus")); File menuFile = new File(plugin.getDataFolder() + "/menus/", inventoryName + ".yml"); YamlConfiguration menuConfig = YamlConfiguration.loadConfiguration(menuFile); Inventory menu = event.getInventory(); InventoryView view = event.getView(); menuConfig.set("data.name", view.getTitle()); menuConfig.set("data.size", menu.getSize()); int i = 0; for (ItemStack item: menu.getContents()){ if(item != null){ menuConfig.set("data.items." + i + ".itemstack", item); menuConfig.set("data.items." + i + ".identifier", null); }else{ menuConfig.set("data.items." + i + ".itemstack", null); menuConfig.set("data.items." + i + ".identifier", null); } i++; } menuConfig.save(menuFile); player.sendMessage(ChatColor.AQUA + "menu saved as plugins/menumaker/menus/"+ inventoryName + ".yml"); } } }