forked from Upstream/CommandPanels
v3.12.0
This commit is contained in:
parent
5e5b4a723c
commit
5104d8e93f
@ -1,7 +1,7 @@
|
||||
<component name="libraryTable">
|
||||
<library name="PlaceholderAPI-2.10.8">
|
||||
<CLASSES>
|
||||
<root url="jar://$APPLICATION_HOME_DIR$/Tools/Build Tools/Jar Libraries/PlaceholderAPI-2.10.8.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/../../Tools/Build Tools/Jar Libraries/PlaceholderAPI-2.10.8.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
@ -12,8 +12,8 @@
|
||||
<orderEntry type="library" name="TokenManager-3.2.4" level="project" />
|
||||
<orderEntry type="library" name="Vault" level="project" />
|
||||
<orderEntry type="library" name="VotingPlugin" level="project" />
|
||||
<orderEntry type="library" name="PlaceholderAPI-2.10.8" level="project" />
|
||||
<orderEntry type="library" name="spigot-1.16.1" level="project" />
|
||||
<orderEntry type="library" name="spigot-1.13.2" level="project" />
|
||||
<orderEntry type="library" name="PlaceholderAPI-2.10.8" level="project" />
|
||||
</component>
|
||||
</module>
|
@ -9,7 +9,6 @@ panels:
|
||||
rows: 4
|
||||
title: '&6[&bExample Panel&6]&f Welcome!'
|
||||
command: example
|
||||
sound-on-open: NOTE_PLING
|
||||
empty: STAINED_GLASS_PANE
|
||||
emptyID: 15
|
||||
disabled-worlds:
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: 3.11.2
|
||||
version: 3.12.0
|
||||
main: me.rockyhawk.commandpanels.CommandPanels
|
||||
name: CommandPanels
|
||||
author: RockyHawk
|
||||
|
@ -3,9 +3,13 @@ package me.rockyhawk.commandpanels.classresources;
|
||||
import me.arcaniax.hdb.api.HeadDatabaseAPI;
|
||||
import me.rockyhawk.commandpanels.CommandPanels;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.banner.Pattern;
|
||||
import org.bukkit.block.banner.PatternType;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.*;
|
||||
@ -17,6 +21,8 @@ import org.bukkit.potion.PotionType;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -195,6 +201,20 @@ public class ItemCreation {
|
||||
customMeta.setCustomModelData(Integer.parseInt(Objects.requireNonNull(itemSection.getString("customdata"))));
|
||||
s.setItemMeta(customMeta);
|
||||
}
|
||||
try {
|
||||
if (itemSection.contains("banner")) {
|
||||
BannerMeta bannerMeta = (BannerMeta) s.getItemMeta();
|
||||
List<Pattern> patterns = new ArrayList<>(); //Load patterns in order top to bottom
|
||||
for (String temp : itemSection.getStringList("banner")) {
|
||||
String[] dyePattern = temp.split(",");
|
||||
patterns.add(new Pattern(DyeColor.valueOf(dyePattern[0]), PatternType.valueOf(dyePattern[1]))); //load patterns in config: RED:STRIPE_TOP
|
||||
}
|
||||
bannerMeta.setPatterns(patterns);
|
||||
s.setItemMeta(bannerMeta);
|
||||
}
|
||||
}catch(Exception ignore){
|
||||
//not a banner or error
|
||||
}
|
||||
if (itemSection.contains("leatherarmor")) {
|
||||
//if the item is leather armor, change the colour to this
|
||||
try {
|
||||
@ -375,4 +395,72 @@ public class ItemCreation {
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public YamlConfiguration generatePanelFile(String panelName, Inventory inv, YamlConfiguration file){
|
||||
ItemStack cont;
|
||||
for(int i = 0; inv.getSize() > i; i++){
|
||||
cont = inv.getItem(i);
|
||||
//repeat through all the items in the editor
|
||||
try{
|
||||
//make the item here
|
||||
if(cont == null){
|
||||
//remove if items have been removed
|
||||
if(file.contains("panels." + panelName + ".item." + i)){
|
||||
file.set("panels." + panelName + ".item." + i, null);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if(plugin.legacy.isLegacy()){
|
||||
if (cont.getDurability() != 0 && !cont.getType().toString().equals("SKULL_ITEM")) {
|
||||
file.set("panels." + panelName + ".item." + i + ".ID", cont.getDurability());
|
||||
}
|
||||
}
|
||||
if(file.contains("panels." + panelName + ".item." + i + ".material")){
|
||||
if(Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("%") || Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("=")){
|
||||
if(!plugin.getHeads.ifSkullOrHead(cont.getType().toString())){
|
||||
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
|
||||
}
|
||||
}else{
|
||||
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
|
||||
}
|
||||
}else{
|
||||
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
|
||||
}
|
||||
if(plugin.getHeads.ifSkullOrHead(cont.getType().toString())){
|
||||
SkullMeta meta = (SkullMeta) cont.getItemMeta();
|
||||
//disable for legacy as is broken
|
||||
if(!plugin.legacy.isLegacy()) {
|
||||
if (plugin.customHeads.getHeadBase64(cont) != null) {
|
||||
//inject base64 here
|
||||
file.set("panels." + panelName + ".item." + i + ".material", "cps= " + plugin.customHeads.getHeadBase64(cont));
|
||||
} else if (meta.hasOwner()) {
|
||||
//check for skull owner
|
||||
file.set("panels." + panelName + ".item." + i + ".material", "cps= " + meta.getOwner());
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
BannerMeta bannerMeta = (BannerMeta) cont.getItemMeta();
|
||||
List<String> dyePattern = new ArrayList<>();
|
||||
for(Pattern pattern : bannerMeta.getPatterns()) { //sublist to skip first value
|
||||
dyePattern.add(pattern.getColor().toString() + "," + pattern.getPattern().toString());
|
||||
}
|
||||
file.set("panels." + panelName + ".item." + i + ".banner", dyePattern);
|
||||
}catch(Exception ignore){
|
||||
//not a banner
|
||||
file.set("panels." + panelName + ".item." + i + ".banner", null);
|
||||
}
|
||||
file.set("panels." + panelName + ".item." + i + ".stack", cont.getAmount());
|
||||
if(!cont.getEnchantments().isEmpty()){
|
||||
file.set("panels." + panelName + ".item." + i + ".enchanted", "true");
|
||||
}
|
||||
file.set("panels." + panelName + ".item." + i + ".name", Objects.requireNonNull(cont.getItemMeta()).getDisplayName());
|
||||
file.set("panels." + panelName + ".item." + i + ".lore", Objects.requireNonNull(cont.getItemMeta()).getLore());
|
||||
}catch(Exception n){
|
||||
//skip over an item that spits an error
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,14 @@
|
||||
package me.rockyhawk.commandpanels.classresources;
|
||||
|
||||
import me.arcaniax.hdb.api.HeadDatabaseAPI;
|
||||
import me.rockyhawk.commandpanels.CommandPanels;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@ -181,6 +176,22 @@ public class OpenEditorGuis {
|
||||
plugin.setName(temp, ChatColor.WHITE + "Panel Rows", lore, p,true, true);
|
||||
i.setItem(23, temp);
|
||||
|
||||
temp = new ItemStack(Material.STONE, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Worlds that cannot access the panel");
|
||||
lore.add(ChatColor.GRAY + "- Left click to add world");
|
||||
lore.add(ChatColor.GRAY + "- Right click to remove world");
|
||||
if (cf.contains("panels." + panelName + ".disabled-worlds")) {
|
||||
lore.add(ChatColor.WHITE + "-----------------------------");
|
||||
int count = 1;
|
||||
for (String tempLore : cf.getStringList("panels." + panelName + ".disabled-worlds")) {
|
||||
lore.add(ChatColor.WHITE + Integer.toString(count) + ") " + tempLore);
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
plugin.setName(temp, ChatColor.WHITE + "Disabled Worlds", lore, p,true, true);
|
||||
i.setItem(25, temp);
|
||||
|
||||
temp = new ItemStack(Material.GLASS, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Fill empty slots with an item");
|
||||
@ -304,7 +315,8 @@ public class OpenEditorGuis {
|
||||
p.openInventory(i);
|
||||
}
|
||||
|
||||
public void openItemSettings(Player p, String panelName, YamlConfiguration cf, int itemNumber) {
|
||||
//section is similar to hassection, but with the slot eg, 1.hasperm.hasvalue
|
||||
public void openItemSettings(Player p, String panelName, ConfigurationSection cf, String section) {
|
||||
Inventory i = Bukkit.createInventory(null, 36, ChatColor.stripColor("Item Settings: " + panelName));
|
||||
List<String> lore = new ArrayList();
|
||||
ItemStack temp;
|
||||
@ -318,10 +330,10 @@ public class OpenEditorGuis {
|
||||
//make all the items
|
||||
temp = new ItemStack(Material.NAME_TAG, 1);
|
||||
lore.add(ChatColor.GRAY + "Display name of the item in the Panel");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".name")) {
|
||||
if (!Objects.equals(cf.getString("panels." + panelName + ".item." + itemNumber + ".name"), "")) {
|
||||
if (cf.contains("name")) {
|
||||
if (!Objects.equals(cf.getString("name"), "")) {
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + cf.getString("panels." + panelName + ".item." + itemNumber + ".name"));
|
||||
lore.add(ChatColor.WHITE + cf.getString("name"));
|
||||
}
|
||||
}
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Name", lore, p,true, true);
|
||||
@ -332,10 +344,10 @@ public class OpenEditorGuis {
|
||||
lore.add(ChatColor.GRAY + "Execute commands when item is clicked");
|
||||
lore.add(ChatColor.GRAY + "- Left click to add command");
|
||||
lore.add(ChatColor.GRAY + "- Right click to remove command");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".commands")) {
|
||||
if (cf.contains("commands")) {
|
||||
lore.add(ChatColor.WHITE + "-----------------------------");
|
||||
int count = 1;
|
||||
for (String tempLore : cf.getStringList("panels." + panelName + ".item." + itemNumber + ".commands")) {
|
||||
for (String tempLore : cf.getStringList("commands")) {
|
||||
lore.add(ChatColor.WHITE + Integer.toString(count) + ") " + tempLore);
|
||||
count += 1;
|
||||
}
|
||||
@ -346,10 +358,10 @@ public class OpenEditorGuis {
|
||||
temp = new ItemStack(Material.ENCHANTED_BOOK, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Display enchantment of the item in the Panel");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".enchanted")) {
|
||||
if (!Objects.equals(cf.getString("panels." + panelName + ".item." + itemNumber + ".name"), "")) {
|
||||
if (cf.contains("enchanted")) {
|
||||
if (!Objects.equals(cf.getString("name"), "")) {
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + cf.getString("panels." + panelName + ".item." + itemNumber + ".enchanted"));
|
||||
lore.add(ChatColor.WHITE + cf.getString("enchanted"));
|
||||
}
|
||||
} else {
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
@ -361,10 +373,10 @@ public class OpenEditorGuis {
|
||||
temp = new ItemStack(Material.POTION, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Display potion effect of the item in the Panel");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".potion")) {
|
||||
if (!Objects.equals(cf.getString("panels." + panelName + ".item." + itemNumber + ".potion"), "")) {
|
||||
if (cf.contains("potion")) {
|
||||
if (!Objects.equals(cf.getString("potion"), "")) {
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + cf.getString("panels." + panelName + ".item." + itemNumber + ".potion"));
|
||||
lore.add(ChatColor.WHITE + cf.getString("potion"));
|
||||
}
|
||||
}
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Potion Effect", lore, p,true, true);
|
||||
@ -375,10 +387,10 @@ public class OpenEditorGuis {
|
||||
lore.add(ChatColor.GRAY + "Display a lore under the item name");
|
||||
lore.add(ChatColor.GRAY + "- Left click to add lore line");
|
||||
lore.add(ChatColor.GRAY + "- Right click to remove lore line");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".lore")) {
|
||||
if (cf.contains("lore")) {
|
||||
lore.add(ChatColor.WHITE + "-----------------------------");
|
||||
int count = 1;
|
||||
for (String tempLore : cf.getStringList("panels." + panelName + ".item." + itemNumber + ".lore")) {
|
||||
for (String tempLore : cf.getStringList("lore")) {
|
||||
lore.add(ChatColor.WHITE + Integer.toString(count) + ") " + tempLore);
|
||||
count += 1;
|
||||
}
|
||||
@ -389,14 +401,14 @@ public class OpenEditorGuis {
|
||||
temp = new ItemStack(Material.ITEM_FRAME, 2);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "How many of the item will be stacked");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".stack")) {
|
||||
if (!Objects.equals(cf.getString("panels." + panelName + ".item." + itemNumber + ".stack"), "")) {
|
||||
if (cf.contains("stack")) {
|
||||
if (!Objects.equals(cf.getString("stack"), "")) {
|
||||
try {
|
||||
temp.setAmount(Integer.parseInt(Objects.requireNonNull(cf.getString("panels." + panelName + ".item." + itemNumber + ".stack"))));
|
||||
temp.setAmount(Integer.parseInt(Objects.requireNonNull(cf.getString("stack"))));
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + cf.getString("panels." + panelName + ".item." + itemNumber + ".stack"));
|
||||
lore.add(ChatColor.WHITE + cf.getString("stack"));
|
||||
}
|
||||
}
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Stack Size", lore, p, true, true);
|
||||
@ -406,24 +418,38 @@ public class OpenEditorGuis {
|
||||
temp = new ItemStack(Material.PAINTING, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Add Custom Model Data here");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".customdata")) {
|
||||
if (!Objects.equals(cf.getString("panels." + panelName + ".item." + itemNumber + ".customdata"), "")) {
|
||||
if (cf.contains("customdata")) {
|
||||
if (!Objects.equals(cf.getString("customdata"), "")) {
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + cf.getString("panels." + panelName + ".item." + itemNumber + ".customdata"));
|
||||
lore.add(ChatColor.WHITE + cf.getString("customdata"));
|
||||
}
|
||||
}
|
||||
plugin.setName(temp, ChatColor.WHITE + "Custom Model Data", lore, p, true, true);
|
||||
i.setItem(23, temp);
|
||||
}
|
||||
|
||||
/*show the compass that opens the viewer for the sections..
|
||||
it will only show the sections immidiatly under the other, so
|
||||
if there is a hasperm inside another hasperm, it will not appear
|
||||
until the other hasperm is opened.
|
||||
*/
|
||||
temp = new ItemStack(Material.COMPASS, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "View the items different");
|
||||
lore.add(ChatColor.GRAY + "Sections and add complex values.");
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + section);
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Sections", lore, p, true, true);
|
||||
i.setItem(31, temp);
|
||||
|
||||
temp = new ItemStack(Material.LEATHER_HELMET, 1);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Choose a colour for the armor");
|
||||
lore.add(ChatColor.GRAY + "use r,g,b or a spigot API color");
|
||||
if (cf.contains("panels." + panelName + ".item." + itemNumber + ".leatherarmor")) {
|
||||
if (!Objects.equals(cf.getString("panels." + panelName + ".item." + itemNumber + ".leatherarmor"), "")) {
|
||||
if (cf.contains("leatherarmor")) {
|
||||
if (!Objects.equals(cf.getString("leatherarmor"), "")) {
|
||||
lore.add(ChatColor.WHITE + "--------------------------------");
|
||||
lore.add(ChatColor.WHITE + cf.getString("panels." + panelName + ".item." + itemNumber + ".leatherarmor"));
|
||||
lore.add(ChatColor.WHITE + cf.getString("leatherarmor"));
|
||||
}
|
||||
}
|
||||
plugin.setName(temp, ChatColor.WHITE + "Leather Armor Colour", lore, p, true, true);
|
||||
@ -433,13 +459,73 @@ public class OpenEditorGuis {
|
||||
plugin.setName(temp, ChatColor.RED + "Back", null, p, true, true);
|
||||
i.setItem(27, temp);
|
||||
|
||||
temp = plugin.itemCreate.makeItemFromConfig(cf.getConfigurationSection("panels." + panelName + ".item." + itemNumber),p,false,false);
|
||||
temp = plugin.itemCreate.makeItemFromConfig(cf,p,false,false);
|
||||
lore.clear();
|
||||
lore.add(ChatColor.GRAY + "Click to set custom material");
|
||||
lore.add(ChatColor.GRAY + "typically for custom heads");
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Slot " + itemNumber + " Preview", lore, p, true, true);
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Section " + section + " Preview", lore, p, true, true);
|
||||
i.setItem(35, temp);
|
||||
|
||||
p.openInventory(i);
|
||||
}
|
||||
|
||||
//section is similar to hassection, but with the slot eg, 1.hasperm.hasvalue
|
||||
public void openItemSections(Player p, String panelName, ConfigurationSection cf, String itemSection) {
|
||||
Inventory i = Bukkit.createInventory(null, 45, ChatColor.stripColor("Item Sections: " + panelName));
|
||||
ItemStack temp;
|
||||
int slot = 0;
|
||||
for(String section : cf.getKeys(false)){
|
||||
//get list of item sections
|
||||
if(slot > 35){
|
||||
break;
|
||||
}
|
||||
if(section.contains("hasperm") || section.contains("hasvalue") || section.contains("hasgreater")){
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add(ChatColor.GRAY + "Left click to open item");
|
||||
lore.add(ChatColor.GRAY + "Right click to change below settings");
|
||||
if(cf.contains(section + ".output")) {
|
||||
lore.add(ChatColor.WHITE + "Output: " + ChatColor.GRAY + cf.getString(section + ".output"));
|
||||
}else{
|
||||
lore.add(ChatColor.WHITE + "Output: " + ChatColor.GRAY + "true");
|
||||
}
|
||||
if(cf.contains(section + ".perm")) {
|
||||
lore.add(ChatColor.WHITE + "Perm: " + ChatColor.GRAY + cf.getString(section + ".perm"));
|
||||
}
|
||||
if(cf.contains(section + ".value")) {
|
||||
lore.add(ChatColor.WHITE + "Value: " + ChatColor.GRAY + cf.getString(section + ".value"));
|
||||
}
|
||||
if(cf.contains(section + ".compare")) {
|
||||
lore.add(ChatColor.WHITE + "Compare: " + ChatColor.GRAY + cf.getString(section + ".compare"));
|
||||
}
|
||||
|
||||
temp = plugin.itemCreate.makeItemFromConfig(cf.getConfigurationSection(section),p,false,false);
|
||||
plugin.setName(temp, ChatColor.AQUA + section, lore, p,false, true);
|
||||
i.setItem(slot, temp);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
temp = new ItemStack(Material.REDSTONE, 1);
|
||||
plugin.setName(temp, ChatColor.WHITE + "Remove Section", null, p, true, true);
|
||||
i.setItem(38, temp);
|
||||
|
||||
temp = new ItemStack(Material.SLIME_BALL, 1);
|
||||
plugin.setName(temp, ChatColor.WHITE + "Add Section", null, p, true, true);
|
||||
i.setItem(42, temp);
|
||||
|
||||
temp = new ItemStack(Material.BARRIER, 1);
|
||||
plugin.setName(temp, ChatColor.RED + "Back", null, p, true, true);
|
||||
i.setItem(36, temp);
|
||||
|
||||
temp = new ItemStack(Material.BOOK, 1);
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add(ChatColor.GRAY + "Section Types:");
|
||||
lore.add(ChatColor.GRAY + "- hasperm");
|
||||
lore.add(ChatColor.GRAY + "- hasvalue");
|
||||
lore.add(ChatColor.GRAY + "- hasgreater");
|
||||
plugin.setName(temp, ChatColor.WHITE + "Item Section " + itemSection, lore, p, true, true);
|
||||
i.setItem(44, temp);
|
||||
|
||||
p.openInventory(i);
|
||||
}
|
||||
}
|
||||
|
@ -21,10 +21,8 @@ public class Commandpanelsreload implements CommandExecutor {
|
||||
if (label.equalsIgnoreCase("cpr") || label.equalsIgnoreCase("commandpanelreload") || label.equalsIgnoreCase("cpanelr")) {
|
||||
if (sender.hasPermission("commandpanel.reload")) {
|
||||
plugin.reloadPanelFiles();
|
||||
try {
|
||||
YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "temp.yml")).save(new File(plugin.getDataFolder() + File.separator + "temp.yml"));
|
||||
} catch (IOException e) {
|
||||
//skip clearing temp
|
||||
if(new File(plugin.getDataFolder() + File.separator + "temp.yml").delete()){
|
||||
//empty
|
||||
}
|
||||
plugin.config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "config.yml"));
|
||||
tag = plugin.config.getString("config.format.tag") + " ";
|
||||
|
@ -3,7 +3,6 @@ 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;
|
||||
@ -15,8 +14,6 @@ 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;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -94,59 +91,19 @@ public class GenUtils implements Listener {
|
||||
}
|
||||
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 + ".panelType", "default");
|
||||
file.addDefault("panels." + date + ".rows", inv.getSize()/9);
|
||||
file.addDefault("panels." + date + ".title", "&8Generated " + date);
|
||||
file.set("panels." + date + ".perm", "default");
|
||||
file.set("panels." + date + ".panelType", "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.addDefault("panels." + date + ".empty", "STAINED_GLASS_PANE");
|
||||
file.addDefault("panels." + date + ".emptyID", "15");
|
||||
file.set("panels." + date + ".empty", "STAINED_GLASS_PANE");
|
||||
file.set("panels." + date + ".emptyID", "15");
|
||||
}else{
|
||||
file.addDefault("panels." + date + ".empty", "BLACK_STAINED_GLASS_PANE");
|
||||
file.set("panels." + date + ".empty", "BLACK_STAINED_GLASS_PANE");
|
||||
}
|
||||
for(int i = 0; cont.length > i; i++){
|
||||
//repeat through all the items in the chest
|
||||
try{
|
||||
//make the item here
|
||||
if(plugin.getHeads.ifSkullOrHead(cont[i].getType().toString())){
|
||||
SkullMeta meta = (SkullMeta) cont[i].getItemMeta();
|
||||
if(plugin.customHeads.getHeadBase64(cont[i]) != null){
|
||||
//check for base64
|
||||
file.addDefault("panels." + date + ".item." + i + ".material", "cps= " + plugin.customHeads.getHeadBase64(cont[i]));
|
||||
}else if(meta.hasOwner()){
|
||||
//check for skull owner
|
||||
file.addDefault("panels." + date + ".item." + i + ".material", "cps= " + meta.getOwner());
|
||||
}else{
|
||||
file.addDefault("panels." + date + ".item." + i + ".material", cont[i].getType().toString());
|
||||
}
|
||||
}else {
|
||||
file.addDefault("panels." + date + ".item." + i + ".material", cont[i].getType().toString());
|
||||
}
|
||||
if(plugin.legacy.isLegacy()){
|
||||
if (cont[i].getDurability() != 0 && !cont[i].getType().toString().equals("SKULL_ITEM") && !cont[i].getType().toString().equals("SKULL_ITEM")) {
|
||||
file.addDefault("panels." + date + ".item." + i + ".ID", cont[i].getDurability());
|
||||
}
|
||||
}
|
||||
if(cont[i].getAmount() != 1){
|
||||
file.addDefault("panels." + date + ".item." + i + ".stack", cont[i].getAmount());
|
||||
}
|
||||
if(!cont[i].getEnchantments().isEmpty()){
|
||||
file.addDefault("panels." + date + ".item." + i + ".enchanted", "true");
|
||||
}
|
||||
try {
|
||||
PotionMeta potionMeta = (PotionMeta) cont[i].getItemMeta();
|
||||
file.addDefault("panels." + date + ".item." + i + ".potion", potionMeta.getBasePotionData().getType().name());
|
||||
} catch (Exception er) {
|
||||
//don't add the effect
|
||||
}
|
||||
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);
|
||||
//add items
|
||||
file = plugin.itemCreate.generatePanelFile(date,inv,file);
|
||||
|
||||
try {
|
||||
file.save(new File(plugin.panelsf + File.separator + date + ".yml"));
|
||||
|
@ -4,6 +4,7 @@ import me.rockyhawk.commandpanels.CommandPanels;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -61,8 +62,10 @@ public class EditorUserInput implements Listener {
|
||||
}
|
||||
if(section.startsWith("panel.")) {
|
||||
panelSectionCheck(p, section, panelName, panelTitle, cf, panelFile, e);
|
||||
}else if(section.startsWith("item.")){
|
||||
}else if(section.startsWith("item:")){
|
||||
itemSectionCheck(p, section, panelName, cf, panelFile, e);
|
||||
}else if(section.startsWith("section.")){
|
||||
itemSectionSectionCheck(p, section, panelName, cf, panelFile, e);
|
||||
}
|
||||
plugin.editorInputStrings.remove(temp);
|
||||
plugin.reloadPanelFiles();
|
||||
@ -72,13 +75,31 @@ public class EditorUserInput implements Listener {
|
||||
plugin.editorGuis.openEditorGui(p, 0); //I have to do this to run regular Bukkit voids in an ASYNC Event
|
||||
}
|
||||
});
|
||||
}else if(section.startsWith("item.")) {
|
||||
}else if(section.startsWith("item:")) {
|
||||
final YamlConfiguration finalCF = cf;
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
plugin.openGui(panelName, p, finalCF, 3,0); //I have to do this to run regular Bukkit voids in an ASYNC Event
|
||||
}
|
||||
});
|
||||
}else if(section.startsWith("section.")){
|
||||
String itemSection = ChatColor.stripColor(section.replace("section." + section.split("\\.")[1] + ".", ""));
|
||||
final ConfigurationSection finalCF = cf.getConfigurationSection("panels." + panelName + ".item." + itemSection);
|
||||
if(section.contains("change")){
|
||||
final String changeItemSection = itemSection.substring(0, itemSection.lastIndexOf("."));
|
||||
final ConfigurationSection changeFinalCF = cf.getConfigurationSection("panels." + panelName + ".item." + changeItemSection);
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
plugin.editorGuis.openItemSections(p,panelName,changeFinalCF,changeItemSection);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
plugin.editorGuis.openItemSections(p,panelName,finalCF,itemSection);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -92,6 +113,7 @@ public class EditorUserInput implements Listener {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void panelSectionCheck(Player p, String section, String panelName, String panelTitle, YamlConfiguration cf, File panelFile, AsyncPlayerChatEvent e){
|
||||
String tag = plugin.config.getString("config.format.tag") + " ";
|
||||
switch (section) {
|
||||
@ -240,6 +262,38 @@ public class EditorUserInput implements Listener {
|
||||
savePanelFile(cf, panelFile);
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Removed command line " + e.getMessage()));
|
||||
break;
|
||||
case "panel.disabled-worlds.add":
|
||||
List<String> disabledWorldsAdd = new ArrayList<>();
|
||||
if(cf.contains("panels." + panelName + ".disabled-worlds")){
|
||||
disabledWorldsAdd = cf.getStringList("panels." + panelName + ".disabled-worlds");
|
||||
}
|
||||
disabledWorldsAdd.add(e.getMessage());
|
||||
cf.set("panels." + panelName + ".disabled-worlds", disabledWorldsAdd);
|
||||
savePanelFile(cf, panelFile);
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Added new World: " + e.getMessage()));
|
||||
break;
|
||||
case "panel.disabled-worlds.remove":
|
||||
List<String> disabledWorldsRemove;
|
||||
if(cf.contains("panels." + panelName + ".disabled-worlds")){
|
||||
disabledWorldsRemove = cf.getStringList("panels." + panelName + ".disabled-worlds");
|
||||
}else{
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.RED + "No Worlds found to remove!"));
|
||||
break;
|
||||
}
|
||||
try {
|
||||
disabledWorldsRemove.remove(Integer.parseInt(e.getMessage())-1);
|
||||
}catch (Exception ex){
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.RED + "Could not find World!"));
|
||||
break;
|
||||
}
|
||||
if(disabledWorldsRemove.size() == 0){
|
||||
cf.set("panels." + panelName + ".disabled-worlds", null);
|
||||
}else{
|
||||
cf.set("panels." + panelName + ".disabled-worlds", disabledWorldsRemove);
|
||||
}
|
||||
savePanelFile(cf, panelFile);
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Removed World line " + e.getMessage()));
|
||||
break;
|
||||
case "panel.hotbar.material":
|
||||
if(e.getMessage().trim().equalsIgnoreCase("remove")){
|
||||
cf.set("panels." + panelName + ".open-with-item", null);
|
||||
@ -320,10 +374,11 @@ public class EditorUserInput implements Listener {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void itemSectionCheck(Player p, String section, String panelName, YamlConfiguration cf, File panelFile, AsyncPlayerChatEvent e){
|
||||
String tag = plugin.config.getString("config.format.tag") + " ";
|
||||
String itemSlot = section.split("\\.")[1];
|
||||
String sectionChange = section.replace("item." + itemSlot + ".","");
|
||||
String itemSlot = section.split("\\:")[1];
|
||||
String sectionChange = section.replace("item:" + itemSlot + ":","");
|
||||
switch (sectionChange) {
|
||||
case "name":
|
||||
if(e.getMessage().trim().equalsIgnoreCase("remove")){
|
||||
@ -478,4 +533,40 @@ public class EditorUserInput implements Listener {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void itemSectionSectionCheck(Player p, String section, String panelName, YamlConfiguration cf, File panelFile, AsyncPlayerChatEvent e){
|
||||
String tag = plugin.config.getString("config.format.tag") + " ";
|
||||
String secondValue = section.split("\\.")[1];
|
||||
//section includes slot at front eg, 1.hasvalue
|
||||
String itemSection = ChatColor.stripColor(section.replace("section." + secondValue + ".", ""));
|
||||
String playerMessage = ChatColor.stripColor(e.getMessage()).toLowerCase();
|
||||
switch (secondValue) {
|
||||
case "add":
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage + ".output", "true");
|
||||
if(playerMessage.equals("hasperm")) {
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage + ".perm", "admin");
|
||||
}else{
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage + ".value", "10");
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage + ".compare", "%cp-player-balance%");
|
||||
}
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage + ".material", "DIRT");
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage + ".name", "");
|
||||
savePanelFile(cf, panelFile);
|
||||
plugin.reloadPanelFiles();
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Added Section " + ChatColor.WHITE + playerMessage));
|
||||
break;
|
||||
case "remove":
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage, null);
|
||||
savePanelFile(cf, panelFile);
|
||||
plugin.reloadPanelFiles();
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Removed Section " + ChatColor.WHITE + playerMessage));
|
||||
break;
|
||||
case "change":
|
||||
cf.set("panels." + panelName + ".item." + itemSection + "." + playerMessage.split("\\:")[0], playerMessage.split("\\:")[1]);
|
||||
savePanelFile(cf, panelFile);
|
||||
plugin.reloadPanelFiles();
|
||||
p.sendMessage(plugin.papi( tag + ChatColor.GREEN + "Set " + playerMessage.split("\\:")[0] + " to " + ChatColor.WHITE + playerMessage.split("\\:")[1]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package me.rockyhawk.commandpanels.ingameeditor;
|
||||
import me.rockyhawk.commandpanels.CommandPanels;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -10,8 +11,6 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.*;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -243,14 +242,15 @@ public class EditorUtils implements Listener {
|
||||
Save temp item if the item is picked up from inside the panel
|
||||
*/
|
||||
if(e.getClick().isShiftClick() && e.getClickedInventory() == e.getView().getTopInventory()){
|
||||
if(e.getCurrentItem() == null) {
|
||||
if(e.getInventory().getItem(e.getSlot()) == null) {
|
||||
return;
|
||||
}
|
||||
onEditPanelClose(p,e.getInventory(),e.getView());
|
||||
inventoryItemSettingsOpening.add(p.getName());
|
||||
//refresh the yaml config
|
||||
file = YamlConfiguration.loadConfiguration(new File(plugin.panelsf + File.separator + fileName));
|
||||
plugin.editorGuis.openItemSettings(p,panelName,file,e.getSlot());
|
||||
plugin.editorGuis.openItemSettings(p,panelName,file.getConfigurationSection("panels." + panelName + ".item." + e.getSlot()), String.valueOf(e.getSlot()));
|
||||
p.updateInventory();
|
||||
return;
|
||||
}
|
||||
if(tempEdit.contains("panels." + panelName + ".temp." + p.getName() + ".material")) {
|
||||
@ -261,14 +261,19 @@ public class EditorUtils implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(e.getSlotType() != InventoryType.SlotType.CONTAINER){
|
||||
return;
|
||||
}
|
||||
if(e.getAction() == InventoryAction.CLONE_STACK){
|
||||
saveTempItem(e, p, file, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.PLACE_ALL){
|
||||
loadTempItem(e, p, file, fileName, panelName);
|
||||
clearTemp(p, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.COLLECT_TO_CURSOR){
|
||||
//e.setCancelled(true);
|
||||
saveTempItem(e, p, file, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.DROP_ALL_CURSOR){
|
||||
e.setCancelled(true);
|
||||
}else if(e.getAction() == InventoryAction.DROP_ALL_SLOT){
|
||||
@ -285,18 +290,24 @@ public class EditorUtils implements Listener {
|
||||
e.setCancelled(true);
|
||||
}else if(e.getAction() == InventoryAction.PLACE_SOME){
|
||||
loadTempItem(e, p, file, fileName, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.SWAP_WITH_CURSOR){
|
||||
e.setCancelled(true);
|
||||
}else if(e.getAction() == InventoryAction.PICKUP_ALL){
|
||||
saveTempItem(e, p, file, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.PICKUP_HALF){
|
||||
saveTempItem(e, p, file, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.PICKUP_ONE){
|
||||
saveTempItem(e, p, file, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.PICKUP_SOME){
|
||||
saveTempItem(e, p, file, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}else if(e.getAction() == InventoryAction.PLACE_ONE){
|
||||
loadTempItem(e, p, file, fileName, panelName);
|
||||
saveFile(fileName,file,true);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
@ -354,53 +365,64 @@ public class EditorUtils implements Listener {
|
||||
}
|
||||
if(e.getSlot() == 1){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.perm"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Permission"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Permission"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 3){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.title"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Title"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Title"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 5){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.sound-on-open"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Sound ID"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Sound ID"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 7){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.command"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Command"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Command"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 21){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.delete"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Are you sure? (yes/no)"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Are you sure? (yes/no)"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 23){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.rows"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter Row Amount (1 to 6)"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter Row Amount (1 to 6)"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 13){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.empty"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Material ID"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Material ID"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 15){
|
||||
//adds abilities to add and remove lines
|
||||
if(e.getClick().isLeftClick()) {
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "panel.commands-on-open.add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Command"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Command"));
|
||||
}else{
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "panel.commands-on-open.remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter command line to remove (must be an integer)"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter Command line to remove (must be an integer)"));
|
||||
}
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 25){
|
||||
//adds abilities to add and remove lines
|
||||
if(e.getClick().isLeftClick()) {
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "panel.disabled-worlds.add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New World Name"));
|
||||
}else{
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "panel.disabled-worlds.remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter World line to remove (must be an integer)"));
|
||||
}
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 11){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.name"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Name"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Name"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 18){
|
||||
@ -409,31 +431,32 @@ public class EditorUtils implements Listener {
|
||||
}
|
||||
if(e.getSlot() == 40){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.hotbar.material"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Material"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Material"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 38 && hotbarItems){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.hotbar.name"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Name"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Name"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 36 && hotbarItems){
|
||||
//adds abilities to add and remove lines
|
||||
if(e.getClick().isLeftClick()) {
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.hotbar.lore.add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Lore"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Lore"));
|
||||
}else{
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.hotbar.lore.remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter lore line to remove (must be an integer)"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter lore line to remove (must be an integer)"));
|
||||
}
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 42 && hotbarItems){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"panel.hotbar.stationary"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter Location (1 to 9)"));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter Location (1 to 9)"));
|
||||
p.closeInventory();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItemSettings(InventoryClickEvent e) {
|
||||
Player p = (Player)e.getWhoClicked();
|
||||
@ -454,7 +477,7 @@ public class EditorUtils implements Listener {
|
||||
YamlConfiguration panelYaml = null; //all panels from ALL files (panel names)
|
||||
boolean found = false;
|
||||
try {
|
||||
//neew to loop through files to get file names
|
||||
//loop through files to get file names
|
||||
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)){
|
||||
@ -468,6 +491,9 @@ public class EditorUtils implements Listener {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(found){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}catch(Exception fail){
|
||||
//could not fetch all panel names (probably no panels exist)
|
||||
@ -477,76 +503,181 @@ public class EditorUtils implements Listener {
|
||||
if(!found){
|
||||
return;
|
||||
}
|
||||
int itemSlot;
|
||||
String itemSlot;
|
||||
try {
|
||||
itemSlot = Integer.parseInt(Objects.requireNonNull(Objects.requireNonNull(e.getView().getTopInventory().getItem(35)).getItemMeta()).getDisplayName().split("\\s")[2]);
|
||||
itemSlot = ChatColor.stripColor(e.getView().getTopInventory().getItem(35).getItemMeta().getDisplayName().split("\\s")[2]);
|
||||
}catch(Exception ex){
|
||||
plugin.getServer().getConsoleSender().sendMessage("[CommandPanels] Could not get item slot");
|
||||
plugin.debug(ex);
|
||||
return;
|
||||
}
|
||||
if(e.getSlot() == 1){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".name"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Name"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":name"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Name"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 3){
|
||||
//adds abilities to add and remove lines
|
||||
if(e.getClick().isLeftClick()) {
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item." + itemSlot + ".commands.add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Command"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item:" + itemSlot + ":commands:add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Command"));
|
||||
}else{
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item." + itemSlot + ".commands.remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter command line to remove (must be an integer)"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item:" + itemSlot + ":commands:remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter command line to remove (must be an integer)"));
|
||||
}
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 5){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".enchanted"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Enchantment"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":enchanted"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Enchantment"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 7){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".potion"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Potion Effect"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":potion"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Potion Effect"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 19){
|
||||
//adds abilities to add and remove lines
|
||||
if(e.getClick().isLeftClick()) {
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item." + itemSlot + ".lore.add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Lore"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item:" + itemSlot + ":lore:add"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Lore"));
|
||||
}else{
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item." + itemSlot + ".lore.remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter lore line to remove (must be an integer)"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(), panelName, "item:" + itemSlot + ":lore:remove"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter lore line to remove (must be an integer)"));
|
||||
}
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 21){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".stack"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Item Stack (must be an integer)"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":stack"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Item Stack (must be an integer)"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 23){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".customdata"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Custom Model Data"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":customdata"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Custom Model Data"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 25){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".leatherarmor"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Leather Armor Colour"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":leatherarmor"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Leather Armor Colour"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 31){
|
||||
//section includes the slot number at the front
|
||||
plugin.editorGuis.openItemSections(p,panelName,panelYaml.getConfigurationSection("panels." + panelName + ".item." + itemSlot), itemSlot);
|
||||
p.updateInventory();
|
||||
}
|
||||
if(e.getSlot() == 35){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item." + itemSlot + ".head"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Enter New Custom Material (eg. cps= self)"));
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"item:" + itemSlot + ":head"});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter New Custom Material (eg. cps= self)"));
|
||||
p.closeInventory();
|
||||
}
|
||||
if(e.getSlot() == 27){
|
||||
plugin.openGui(panelName, p, panelYaml,3,0);
|
||||
if(itemSlot.contains(".")){
|
||||
String newSection = itemSlot.substring(0, itemSlot.lastIndexOf("."));
|
||||
plugin.editorGuis.openItemSections(p,panelName,panelYaml.getConfigurationSection("panels." + panelName + ".item." + newSection), newSection);
|
||||
}else {
|
||||
plugin.openGui(panelName, p, panelYaml, 3, 0);
|
||||
}
|
||||
p.updateInventory();
|
||||
}
|
||||
}
|
||||
|
||||
//item section viewer click event
|
||||
@EventHandler
|
||||
public void onItemSection(InventoryClickEvent e) {
|
||||
Player p = (Player)e.getWhoClicked();
|
||||
String tag = plugin.config.getString("config.format.tag") + " ";
|
||||
try {
|
||||
if (Objects.requireNonNull(e.getClickedInventory()).getType() != InventoryType.CHEST) {
|
||||
return;
|
||||
}
|
||||
}catch(Exception outOf){
|
||||
//skip as player clicked outside the inventory
|
||||
return;
|
||||
}
|
||||
if(!p.getOpenInventory().getTitle().contains("Item Sections:")){
|
||||
return;
|
||||
}
|
||||
e.setCancelled(true);
|
||||
String panelName = ""; //all panels from ALL files (panel names)
|
||||
YamlConfiguration panelYaml = null;
|
||||
ConfigurationSection itemConfSection; //all panels from ALL files (panel names)
|
||||
boolean found = false;
|
||||
try {
|
||||
//loop through files to get file names
|
||||
YamlConfiguration temp;
|
||||
for(String fileName : plugin.panelFiles) { //will loop through all the files in folder
|
||||
temp = YamlConfiguration.loadConfiguration(new File(plugin.panelsf + File.separator + fileName));
|
||||
if(!plugin.checkPanels(temp)){
|
||||
continue;
|
||||
}
|
||||
for (String key : Objects.requireNonNull(temp.getConfigurationSection("panels")).getKeys(false)){
|
||||
if(e.getView().getTitle().equals("Item Sections: " + key)){
|
||||
panelName = key;
|
||||
panelYaml = temp;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(found){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}catch(Exception fail){
|
||||
//could not fetch all panel names (probably no panels exist)
|
||||
plugin.debug(fail);
|
||||
return;
|
||||
}
|
||||
if(!found){
|
||||
return;
|
||||
}
|
||||
|
||||
//this section includes slot at front
|
||||
String section;
|
||||
try {
|
||||
section = ChatColor.stripColor(Objects.requireNonNull(Objects.requireNonNull(e.getView().getTopInventory().getItem(44)).getItemMeta()).getDisplayName().split("\\s")[2]);
|
||||
}catch(Exception ex){
|
||||
plugin.getServer().getConsoleSender().sendMessage("[CommandPanels] Could not get item slot");
|
||||
plugin.debug(ex);
|
||||
return;
|
||||
}
|
||||
itemConfSection = panelYaml.getConfigurationSection("panels." + panelName + ".item." + section);
|
||||
|
||||
if(e.getSlot() <= 35){
|
||||
if(e.getInventory().getItem(e.getSlot()) != null){
|
||||
if(e.getClick().isLeftClick()) {
|
||||
String newSection = section + "." + ChatColor.stripColor(e.getInventory().getItem(e.getSlot()).getItemMeta().getDisplayName());
|
||||
plugin.editorGuis.openItemSettings(p, panelName, itemConfSection.getConfigurationSection(ChatColor.stripColor(e.getInventory().getItem(e.getSlot()).getItemMeta().getDisplayName())), newSection);
|
||||
p.updateInventory();
|
||||
}else{
|
||||
String itemNameSection = "." + ChatColor.stripColor(e.getInventory().getItem(e.getSlot()).getItemMeta().getDisplayName());
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"section.change." + section + itemNameSection});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter Setting to change, eg, value:500"));
|
||||
p.closeInventory();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(e.getSlot() == 38){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"section.remove." + section});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter Section name to remove, eg, hasperm or hasperm0"));
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
if(e.getSlot() == 42){
|
||||
plugin.editorInputStrings.add(new String[]{p.getName(),panelName,"section.add." + section});
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.WHITE + "Enter Section name to add, eg, hasperm or hasperm0"));
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
if(e.getSlot() == 36){
|
||||
plugin.editorGuis.openItemSettings(p,panelName,itemConfSection, section);
|
||||
p.updateInventory();
|
||||
}
|
||||
}
|
||||
|
||||
public void saveTempItem(InventoryClickEvent e, Player p, YamlConfiguration file, String panelName){
|
||||
//saves item to temp, using getslot
|
||||
tempEdit.set("panels." + panelName + ".temp." + p.getName(),file.get("panels." + panelName + ".item." + e.getSlot()));
|
||||
@ -617,60 +748,7 @@ public class EditorUtils implements Listener {
|
||||
return;
|
||||
}
|
||||
//save items as they appear
|
||||
ItemStack cont;
|
||||
for(int i = 0; inv.getSize() > i; i++){
|
||||
cont = inv.getItem(i);
|
||||
//repeat through all the items in the editor
|
||||
try{
|
||||
//make the item here
|
||||
if(cont == null){
|
||||
//remove if items have been removed
|
||||
if(file.contains("panels." + panelName + ".item." + i)){
|
||||
file.set("panels." + panelName + ".item." + i, null);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if(plugin.legacy.isLegacy()){
|
||||
if (cont.getDurability() != 0 && !cont.getType().toString().equals("SKULL_ITEM") && !cont.getType().toString().equals("SKULL_ITEM")) {
|
||||
file.addDefault("panels." + panelName + ".item." + i + ".ID", cont.getDurability());
|
||||
}
|
||||
}
|
||||
if(file.contains("panels." + panelName + ".item." + i + ".material")){
|
||||
if(Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("%") || Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("=")){
|
||||
if(!plugin.getHeads.ifSkullOrHead(cont.getType().toString())){
|
||||
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
|
||||
}
|
||||
}else{
|
||||
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
|
||||
}
|
||||
}else{
|
||||
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
|
||||
}
|
||||
if(plugin.getHeads.ifSkullOrHead(cont.getType().toString())){
|
||||
SkullMeta meta = (SkullMeta) cont.getItemMeta();
|
||||
//disable for legacy as is broken
|
||||
if(!plugin.legacy.isLegacy()) {
|
||||
if (plugin.customHeads.getHeadBase64(cont) != null) {
|
||||
//inject base64 here
|
||||
file.set("panels." + panelName + ".item." + i + ".material", "cps= " + plugin.customHeads.getHeadBase64(cont));
|
||||
} else if (meta.hasOwner()) {
|
||||
//check for skull owner
|
||||
file.set("panels." + panelName + ".item." + i + ".material", "cps= " + meta.getOwner());
|
||||
}
|
||||
}
|
||||
}
|
||||
if(cont.getAmount() != 1){
|
||||
file.set("panels." + panelName + ".item." + i + ".stack", cont.getAmount());
|
||||
}
|
||||
if(!cont.getEnchantments().isEmpty()){
|
||||
file.set("panels." + panelName + ".item." + i + ".enchanted", "true");
|
||||
}
|
||||
file.set("panels." + panelName + ".item." + i + ".name", Objects.requireNonNull(cont.getItemMeta()).getDisplayName());
|
||||
file.set("panels." + panelName + ".item." + i + ".lore", Objects.requireNonNull(cont.getItemMeta()).getLore());
|
||||
}catch(Exception n){
|
||||
//skip over an item that spits an error
|
||||
}
|
||||
}
|
||||
file = plugin.itemCreate.generatePanelFile(panelName,inv,file);
|
||||
try {
|
||||
file.save(new File(plugin.panelsf + File.separator + fileName));
|
||||
p.sendMessage(plugin.papi(tag + ChatColor.GREEN + "Saved Changes!"));
|
||||
|
Loading…
Reference in New Issue
Block a user