diff --git a/resource/plugin.yml b/resource/plugin.yml index d70aaaa..cb0ce12 100644 --- a/resource/plugin.yml +++ b/resource/plugin.yml @@ -1,4 +1,4 @@ -version: 3.3.1 +version: 3.4.0 main: me.rockyhawk.commandPanels.commandpanels name: CommandPanels author: RockyHawk diff --git a/src/me/rockyhawk/commandPanels/commandpanels.java b/src/me/rockyhawk/commandPanels/commandpanels.java index 8516f75..dc2b614 100644 --- a/src/me/rockyhawk/commandPanels/commandpanels.java +++ b/src/me/rockyhawk/commandPanels/commandpanels.java @@ -55,6 +55,7 @@ public class commandpanels extends JavaPlugin { public boolean update = false; public boolean debug = false; public boolean openWithItem = false; //this will be true if there is a panel with open-with-item + public List generateMode = new ArrayList(); //players that are currently in generate mode public List panelRunning = new ArrayList(); public List userInputStrings = new ArrayList(); public List editorInputStrings = new ArrayList(); diff --git a/src/me/rockyhawk/commandPanels/generatePanels/commandpanelsgenerate.java b/src/me/rockyhawk/commandPanels/generatePanels/commandpanelsgenerate.java index 086e9f4..1970220 100644 --- a/src/me/rockyhawk/commandPanels/generatePanels/commandpanelsgenerate.java +++ b/src/me/rockyhawk/commandPanels/generatePanels/commandpanelsgenerate.java @@ -38,9 +38,18 @@ public class commandpanelsgenerate implements CommandExecutor { }catch(Exception exc){ p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.RED + "Please use integer from 1-6.")); } - }else{ - p.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Usage: /cpg [rows]")); + return true; + }else if (args.length == 0) { + if (this.plugin.generateMode.contains(p)) { + this.plugin.generateMode.remove(p); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.GREEN + "Generate Mode Disabled!")); + } else { + this.plugin.generateMode.add(p); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.GREEN + "Generate Mode Enabled!")); + } + return true; } + p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.RED + "Usage: /cpg [rows]")); return true; }else{ p.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + plugin.config.getString("config.format.perms"))); diff --git a/src/me/rockyhawk/commandPanels/generatePanels/newGenUtils.java b/src/me/rockyhawk/commandPanels/generatePanels/newGenUtils.java index 86c7e0a..4b35096 100644 --- a/src/me/rockyhawk/commandPanels/generatePanels/newGenUtils.java +++ b/src/me/rockyhawk/commandPanels/generatePanels/newGenUtils.java @@ -1,13 +1,19 @@ package me.rockyhawk.commandPanels.generatePanels; import me.rockyhawk.commandPanels.commandpanels; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +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 org.bukkit.inventory.meta.PotionMeta; @@ -26,31 +32,49 @@ public class newGenUtils implements Listener { } @EventHandler public void onInventoryClose(InventoryCloseEvent e) { + //reload panel files to avoid conflicts + plugin.reloadPanelFiles(); String tag = plugin.config.getString("config.format.tag") + " "; Player p = (Player)e.getPlayer(); if (!ChatColor.stripColor(e.getView().getTitle()).equals("Generate New Panel")){ return; } + generatePanel(p,e.getInventory()); + } + @EventHandler + public void onPlayerQuit(PlayerQuitEvent e) { //reload panel files to avoid conflicts plugin.reloadPanelFiles(); - Boolean pexist = true; - //pexist is true if panels exist - ArrayList apanels = new ArrayList(); //all panels from all files (panel names) - try { - for(String fileName : plugin.panelFiles) { //will loop through all the files in folder - YamlConfiguration temp = YamlConfiguration.loadConfiguration(new File(plugin.panelsf + File.separator + fileName)); - if(!plugin.checkPanels(temp)){ - continue; - } - apanels.addAll(Objects.requireNonNull(temp.getConfigurationSection("panels")).getKeys(false)); + 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; } - }catch(Exception fail){ - //could not fetch all panel names (probably no panels exist) - pexist = false; } - ItemStack[] cont = e.getInventory().getContents(); + } + @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()); + } + } + void generatePanel(Player p, Inventory inv){ + ItemStack[] cont = inv.getContents(); + String tag = plugin.config.getString("config.format.tag") + " "; + ArrayList 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 : cont){ + for(ItemStack temp : inv.getContents()){ if(temp != null){ foundItem = true; break; @@ -64,18 +88,13 @@ public class newGenUtils implements Listener { YamlConfiguration file; //String date: is what the panel and file name will be called String date = "panel-1"; - if(pexist){ - for(int count = 1; (Arrays.asList(plugin.panelsf.list()).contains("panel-" + count + ".yml")) || (apanels.contains("panel-" + count)); count++){ - date = "panel-" + (count+1); - } - }else{ - 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); } - //String date = new SimpleDateFormat("dd-HH-mm-ss").format(new Date()); (OLD) File folder = new File(plugin.getDataFolder() + File.separator + "panels"); file = YamlConfiguration.loadConfiguration(new File(folder + File.separator + date + ".yml")); file.addDefault("panels." + date + ".perm", "default"); - file.addDefault("panels." + date + ".rows", e.getInventory().getSize()/9); + file.addDefault("panels." + date + ".rows", inv.getSize()/9); file.addDefault("panels." + date + ".title", "&8Generated " + date); file.addDefault("panels." + date + ".command", date); file.addDefault("panels." + date + ".empty", "BLACK_STAINED_GLASS_PANE"); @@ -104,19 +123,19 @@ public class newGenUtils implements Listener { } catch (Exception er) { //don't add the effect } - file.addDefault("panels." + date + ".item." + i + ".name", cont[i].getItemMeta().getDisplayName()); - file.addDefault("panels." + date + ".item." + i + ".lore", cont[i].getItemMeta().getLore()); + file.addDefault("panels." + date + ".item." + i + ".name", Objects.requireNonNull(cont[i].getItemMeta()).getDisplayName()); + file.addDefault("panels." + date + ".item." + i + ".lore", Objects.requireNonNull(cont[i].getItemMeta()).getLore()); }catch(Exception n){ //skip over an item that spits an error } } file.options().copyDefaults(true); + try { - file.save(new File(folder + File.separator + date + ".yml")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.GREEN + "Saved Generated File To: " + date + ".yml")); - } catch (IOException s) { - plugin.debug(s); - p.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Could Not Save Generated Panel!")); + file.save(new File(plugin.panelsf + File.separator + date + ".yml")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.GREEN + "Saved Generated File To: " + date + ".yml")); + } catch (IOException var16) { + p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.RED + "Could Not Save Generated Panel!")); } plugin.reloadPanelFiles(); }