diff --git a/.idea/libraries/MMOItems_6_5_1.xml b/.idea/libraries/MMOItems_6_5_1.xml
new file mode 100644
index 0000000..3b00529
--- /dev/null
+++ b/.idea/libraries/MMOItems_6_5_1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Command Panels.iml b/Command Panels.iml
index 8672490..a41c8aa 100644
--- a/Command Panels.iml
+++ b/Command Panels.iml
@@ -15,5 +15,6 @@
+
\ No newline at end of file
diff --git a/resource/plugin.yml b/resource/plugin.yml
index f706c9b..b21a6de 100644
--- a/resource/plugin.yml
+++ b/resource/plugin.yml
@@ -1,10 +1,10 @@
-version: 3.14.2.6
+version: 3.14.3.0
main: me.rockyhawk.commandpanels.CommandPanels
name: CommandPanels
author: RockyHawk
api-version: '1.13'
description: Fully Custom GUIs. Make your Server Professional.
-softdepend: [PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin]
+softdepend: [PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin, MMOItems]
commands:
commandpanel:
description: Open a command panel.
diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java
index 59e348f..d7265e7 100644
--- a/src/me/rockyhawk/commandpanels/CommandPanels.java
+++ b/src/me/rockyhawk/commandpanels/CommandPanels.java
@@ -85,15 +85,13 @@ public class CommandPanels extends JavaPlugin {
public File panelsf;
public YamlConfiguration blockConfig; //where panel block locations are stored
- public CommandPanels() {
- this.panelsf = new File(this.getDataFolder() + File.separator + "panels");
- this.blockConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder() + File.separator + "blocks.yml"));
- }
-
public void onEnable() {
Bukkit.getLogger().info("[CommandPanels] RockyHawk's CommandPanels v" + this.getDescription().getVersion() + " Plugin Loading...");
+ this.panelsf = new File(this.getDataFolder() + File.separator + "panels");
+ this.blockConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder() + File.separator + "blocks.yml"));
this.config = YamlConfiguration.loadConfiguration(new File(this.getDataFolder() + File.separator + "config.yml"));
+
//save the config.yml file
File configFile = new File(this.getDataFolder() + File.separator + "config.yml");
if (!configFile.exists()) {
@@ -361,6 +359,7 @@ public class CommandPanels extends JavaPlugin {
return setpapi;
}
+ @SuppressWarnings("deprecation")
public String setCpPlaceholders(Player p, String str) {
//replace nodes with PlaceHolders
str = str.replaceAll("%cp-player-displayname%", p.getDisplayName());
@@ -395,6 +394,7 @@ public class CommandPanels extends JavaPlugin {
}
}
+ //DO placeholders for detection of other items in a panel
//get material value from slot in current open inventory (panel)
while (str.contains("%cp-material-")) {
try {
@@ -404,6 +404,10 @@ public class CommandPanels extends JavaPlugin {
String material;
try {
material = p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(matNumber)).getType().toString();
+ if(legacy.isLegacy()){
+ //add the ID to the end if it is legacy (eg, material:id)
+ material = material + ":" + p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(matNumber)).getType().getId();
+ }
} catch (NullPointerException er) {
material = "AIR";
}
@@ -412,7 +416,6 @@ public class CommandPanels extends JavaPlugin {
debug(ex);
}
}
-
//get stack amount from slot in current open inventory (panel)
while (str.contains("%cp-stack-")) {
try {
@@ -430,6 +433,31 @@ public class CommandPanels extends JavaPlugin {
debug(ex);
}
}
+ //is an item damaged
+ while (str.contains("%cp-damaged-")) {
+ try {
+ int start = str.indexOf("%cp-damaged-");
+ int end = str.indexOf("%", str.indexOf("%cp-damaged-") + 1);
+ String matNumber = str.substring(start, end).replace("%cp-damaged-", "").replace("%", "");
+ boolean damaged = false;
+ ItemStack itm = p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(matNumber));
+ try {
+ if(legacy.isLegacy()){
+ if(itm.getType().getMaxDurability() != 0) {
+ damaged = (itm.getType().getMaxDurability() - itm.getDurability()) < itm.getType().getMaxDurability();
+ }
+ }else {
+ Damageable itemDamage = (Damageable) itm.getItemMeta();
+ damaged = itemDamage.hasDamage();
+ }
+ } catch (NullPointerException er) {
+ damaged = false;
+ }
+ str = str.replace(str.substring(start, end) + "%", String.valueOf(damaged));
+ }catch(Exception ex){
+ debug(ex);
+ }
+ }
//does %cp-random-MIN,MAX%
while (str.contains("%cp-random-")) {
diff --git a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
index cb3060e..7d67c14 100644
--- a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
+++ b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
@@ -2,6 +2,9 @@ package me.rockyhawk.commandpanels.classresources;
import me.arcaniax.hdb.api.HeadDatabaseAPI;
import me.rockyhawk.commandpanels.CommandPanels;
+import net.Indyuce.mmoitems.MMOItems;
+import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem;
+import net.Indyuce.mmoitems.manager.ItemManager;
import org.bukkit.*;
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
@@ -44,9 +47,9 @@ public class ItemCreation {
p.sendMessage(plugin.papi(plugin.tag + plugin.config.getString("config.format.error") + " material: could not load material!"));
return null;
}
- ItemStack s;
+ ItemStack s = null;
String mat;
- String matskull;
+ String matraw;
String skullname;
//this will convert the %cp-player-online-1-find% into cps= NAME
if (material.contains("%cp-player-online-")) {
@@ -62,14 +65,19 @@ public class ItemCreation {
}
}
try {
+ //can be changed
mat = material.toUpperCase();
- matskull = material;
+ //cannot be changed (raw)
+ matraw = material;
+ //generate item stack normally
+ boolean normalCreation = true;
+ //name of head/skull if used
skullname = "no skull";
short id = 0;
if(itemSection.contains("ID")){
id = Short.parseShort(itemSection.getString("ID"));
}
- if (matskull.split("\\s")[0].toLowerCase().equals("cps=") || matskull.split("\\s")[0].toLowerCase().equals("cpo=")) {
+ if (matraw.split("\\s")[0].toLowerCase().equals("cps=") || matraw.split("\\s")[0].toLowerCase().equals("cpo=")) {
skullname = p.getUniqueId().toString();
mat = plugin.getHeads.playerHeadString();
if(plugin.legacy.isLegacy()){
@@ -77,7 +85,7 @@ public class ItemCreation {
}
}
- if (matskull.split("\\s")[0].toLowerCase().equals("hdb=")) {
+ if (matraw.split("\\s")[0].toLowerCase().equals("hdb=")) {
skullname = "hdb";
mat = plugin.getHeads.playerHeadString();
if(plugin.legacy.isLegacy()){
@@ -85,12 +93,24 @@ public class ItemCreation {
}
}
- s = new ItemStack(Objects.requireNonNull(Material.matchMaterial(mat)), 1,id);
+ //create custom MMOItems item
+ if(matraw.split("\\s")[0].toLowerCase().equals("mmo=") && plugin.getServer().getPluginManager().isPluginEnabled("MMOItems")){
+ String itemType = matraw.split("\\s")[1];
+ String itemID = matraw.split("\\s")[2];
+ ItemManager itemManager = MMOItems.plugin.getItems();
+ MMOItem mmoitem = itemManager.getMMOItem(MMOItems.plugin.getTypes().get(itemType), itemID);
+ s = mmoitem.newBuilder().build();
+ normalCreation = false;
+ }
- if (!skullname.equals("no skull") && !skullname.equals("hdb") && !matskull.split("\\s")[0].equalsIgnoreCase("cpo=")) {
+ if(normalCreation) {
+ s = new ItemStack(Objects.requireNonNull(Material.matchMaterial(mat)), 1, id);
+ }
+
+ if (!skullname.equals("no skull") && !skullname.equals("hdb") && !matraw.split("\\s")[0].equalsIgnoreCase("cpo=")) {
try {
SkullMeta meta;
- if (matskull.split("\\s")[1].equalsIgnoreCase("self")) {
+ if (matraw.split("\\s")[1].equalsIgnoreCase("self")) {
//if cps= self
meta = (SkullMeta) s.getItemMeta();
if(!plugin.legacy.isLegacy()) {
@@ -105,22 +125,22 @@ public class ItemCreation {
meta.setOwner(p.getName());
}
s.setItemMeta(meta);
- }else if (plugin.papiNoColour(p,matskull.split("\\s")[1]).length() <= 16) {
+ }else if (plugin.papiNoColour(p,matraw.split("\\s")[1]).length() <= 16) {
//if cps= username
- s = plugin.customHeads.getPlayerHead(plugin.papiNoColour(p,matskull.split("\\s")[1]));
+ s = plugin.customHeads.getPlayerHead(plugin.papiNoColour(p,matraw.split("\\s")[1]));
} else {
//custom data cps= base64
- s = plugin.customHeads.getCustomHead(plugin.papiNoColour(p,matskull.split("\\s")[1]));
+ s = plugin.customHeads.getCustomHead(plugin.papiNoColour(p,matraw.split("\\s")[1]));
}
} catch (Exception var32) {
p.sendMessage(plugin.papi( plugin.tag + plugin.config.getString("config.format.error") + " head material: Could not load skull"));
plugin.debug(var32);
}
}
- if (!skullname.equals("no skull") && matskull.split("\\s")[0].equalsIgnoreCase("cpo=")) {
+ if (!skullname.equals("no skull") && matraw.split("\\s")[0].equalsIgnoreCase("cpo=")) {
SkullMeta cpoMeta = (SkullMeta) s.getItemMeta();
assert cpoMeta != null;
- cpoMeta.setOwningPlayer(Bukkit.getOfflinePlayer(Objects.requireNonNull(Bukkit.getPlayer(matskull.split("\\s")[1])).getUniqueId()));
+ cpoMeta.setOwningPlayer(Bukkit.getOfflinePlayer(Objects.requireNonNull(Bukkit.getPlayer(matraw.split("\\s")[1])).getUniqueId()));
s.setItemMeta(cpoMeta);
}
if (skullname.equals("hdb")) {
@@ -129,7 +149,7 @@ public class ItemCreation {
api = new HeadDatabaseAPI();
try {
- s = api.getItemHead(matskull.split("\\s")[1].trim());
+ s = api.getItemHead(matraw.split("\\s")[1].trim());
} catch (Exception var22) {
p.sendMessage(plugin.papi(plugin.tag + plugin.config.getString("config.format.error") + " hdb: could not load skull!"));
plugin.debug(var22);
@@ -138,6 +158,7 @@ public class ItemCreation {
p.sendMessage(plugin.papi(plugin.tag + "Download HeadDatabaseHook from Spigot to use this feature!"));
}
}
+
if (itemSection.contains("map")) {
/*
This will do maps from custom images
diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java
index 868668f..87f6d9c 100644
--- a/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java
+++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java
@@ -77,18 +77,24 @@ public class Commandpanelsreload implements CommandExecutor {
for (String[] panelName : plugin.panelNames) {
tempFile = YamlConfiguration.loadConfiguration(new File(plugin.panelsf + File.separator + plugin.panelFiles.get(Integer.parseInt(panelName[1])))).getConfigurationSection("panels." + panelName[0]);
+ if(tempFile.contains("panelType")){
+ if(tempFile.getStringList("panelType").contains("nocommandregister")){
+ continue;
+ }
+ }
+
if(tempFile.contains("commands")){
List panelCommands = tempFile.getStringList("commands");
for(String command : panelCommands){
cmdCF.set("aliases." + command.split("\\s")[0],temp);
}
}
+ }
- try {
- cmdCF.save(commandsLoc);
- } catch (IOException var10) {
- Bukkit.getConsoleSender().sendMessage("[CommandPanels]" + ChatColor.RED + " WARNING: Could not register custom commands!");
- }
+ try {
+ cmdCF.save(commandsLoc);
+ } catch (IOException var10) {
+ Bukkit.getConsoleSender().sendMessage("[CommandPanels]" + ChatColor.RED + " WARNING: Could not register custom commands!");
}
}
}
\ No newline at end of file
diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java
index f716d83..c9d3108 100644
--- a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java
+++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java
@@ -59,8 +59,9 @@ public class OpenGUI {
}
ItemStack s = plugin.itemCreate.makeItemFromConfig(Objects.requireNonNull(pconfig.getConfigurationSection("item." + item.split("\\s")[c] + section)), p, onOpen != 3, onOpen != 3);
- //do itemType for placeable
+ //This is for CUSTOM ITEMS
if(pconfig.contains("item." + item.split("\\s")[c] + section + ".itemType")) {
+ //this is for contents in the itemType section
if (pconfig.getStringList("item." + item.split("\\s")[c] + section + ".itemType").contains("placeable") && onOpen == 0) {
//keep item the same, onOpen == 0 meaning panel is refreshing
i.setItem(Integer.parseInt(item.split("\\s")[c]), p.getOpenInventory().getItem(Integer.parseInt(item.split("\\s")[c])));