CommandPanels/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java
rockyhawk64 b6afddae20 v3.13.1
2020-11-13 13:58:21 +11:00

115 lines
4.7 KiB
Java

package me.rockyhawk.commandpanels.generatepanels;
import me.rockyhawk.commandpanels.CommandPanels;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.block.Chest;
import org.bukkit.block.DoubleChest;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.*;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
public class GenUtils implements Listener {
public YamlConfiguration tempEdit;
CommandPanels plugin;
public GenUtils(CommandPanels pl) {
this.plugin = pl;
this.tempEdit = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "temp.yml"));
}
@EventHandler
public void onInventoryClose(InventoryCloseEvent e) {
Player p = (Player)e.getPlayer();
if (!ChatColor.stripColor(e.getView().getTitle()).equals("Generate New Panel")){
return;
}
//reload panel files to avoid conflicts
plugin.reloadPanelFiles();
generatePanel(p,e.getInventory());
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent e) {
Player p = e.getPlayer();
//if the player is in generate mode, remove generate mode
this.plugin.generateMode.remove(p);
for(int o = 0; this.plugin.userInputStrings.size() > o; ++o) {
if (this.plugin.userInputStrings.get(o)[0].equals(e.getPlayer().getName())) {
this.plugin.userInputStrings.remove(o);
break;
}
}
}
@EventHandler
public void onInventoryOpenEvent(InventoryOpenEvent e) {
HumanEntity h = e.getPlayer();
Player p = Bukkit.getPlayer(h.getName());
if ((e.getInventory().getHolder() instanceof Chest || e.getInventory().getHolder() instanceof DoubleChest) && this.plugin.generateMode.contains(p)) {
this.plugin.generateMode.remove(p);
generatePanel(p,e.getInventory());
}
}
@SuppressWarnings("deprecation")
void generatePanel(Player p, Inventory inv){
ItemStack[] cont = inv.getContents();
String tag = plugin.config.getString("config.format.tag") + " ";
ArrayList<String> apanels = new ArrayList();
for(String[] panelNames : plugin.panelNames){
//create list of names that aren't a String list
apanels.add(panelNames[0]);
}
//this is done to make sure the inventories are not empty
boolean foundItem = false;
for(ItemStack temp : inv.getContents()){
if(temp != null){
foundItem = true;
break;
}
}
if(!foundItem){
//panels don't need items but I cancel on generate with no items because then players have the option to cancel if they need to
p.sendMessage(plugin.papi(tag + ChatColor.RED + "Cancelled Panel!"));
return;
}
YamlConfiguration file;
//String date: is what the panel and file name will be called
String date = "panel-1";
for(int count = 1; (Arrays.asList(Objects.requireNonNull(plugin.panelsf.list())).contains("panel-" + count + ".yml")) || (apanels.contains("panel-" + count)); count++){
date = "panel-" + (count+1);
}
File folder = new File(plugin.getDataFolder() + File.separator + "panels");
file = YamlConfiguration.loadConfiguration(new File(folder + File.separator + date + ".yml"));
file.set("panels." + date + ".perm", "default");
file.set("panels." + date + ".rows", inv.getSize()/9);
file.set("panels." + date + ".title", "&8Generated " + date);
file.addDefault("panels." + date + ".command", date);
if(plugin.legacy.isLegacy()) {
file.set("panels." + date + ".empty", "STAINED_GLASS_PANE");
file.set("panels." + date + ".emptyID", "15");
}else{
file.set("panels." + date + ".empty", "BLACK_STAINED_GLASS_PANE");
}
//add items
file = plugin.itemCreate.generatePanelFile(date,inv,file);
try {
file.save(new File(plugin.panelsf + File.separator + date + ".yml"));
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Saved Generated File To: " + date + ".yml"));
} catch (IOException var16) {
p.sendMessage(plugin.papi( tag + ChatColor.RED + "Could Not Save Generated Panel!"));
}
plugin.reloadPanelFiles();
}
}