forked from Upstream/CommandPanels
115 lines
4.7 KiB
Java
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();
|
|
}
|
|
} |