diff --git a/pom.xml b/pom.xml
index 11dd6e4..c0a6a37 100644
--- a/pom.xml
+++ b/pom.xml
@@ -126,7 +126,7 @@
de.tr7zw
item-nbt-api
- 2.12.2
+ 2.12.4-SNAPSHOT
compile
@@ -150,7 +150,7 @@
org.spigotmc
spigot-api
- 1.20-R0.1-SNAPSHOT
+ 1.20.5-R0.1-SNAPSHOT
provided
@@ -221,7 +221,7 @@
io.papermc
paperlib
- 1.0.7
+ 1.0.8
net.essentialsx
diff --git a/resource/config.yml b/resource/config.yml
index e6eb4b4..8e7cf56 100644
--- a/resource/config.yml
+++ b/resource/config.yml
@@ -48,7 +48,6 @@ placeholders:
start: '{'
end: '}'
updater:
- auto-update: false
update-checks: true
purchase:
currency:
diff --git a/resource/plugin.yml b/resource/plugin.yml
index 36f5aea..f9d6f35 100644
--- a/resource/plugin.yml
+++ b/resource/plugin.yml
@@ -1,10 +1,10 @@
-version: 3.20.1.0
+version: 3.21.0.0
main: me.rockyhawk.commandpanels.CommandPanels
name: CommandPanels
author: RockyHawk
api-version: '1.13'
description: Fully Custom GUIs. Make your Server Professional.
-softdepend: [Essentials, PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin, MMOItems, ChestSort]
+softdepend: [Essentials, PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin, MMOItems, ChestSort, floodgate]
commands:
commandpanel:
description: Open a command panel.
diff --git a/resource_example/example_top.yml b/resource_example/example_top.yml
index 1185673..29227b1 100644
--- a/resource_example/example_top.yml
+++ b/resource_example/example_top.yml
@@ -75,7 +75,7 @@ panels:
'21':
material: POTION
name: '&fClick to heal the player'
- potion: INSTANT_HEAL
+ potion: HEALING
lore:
- '&7Uses the /heal command so that'
- '&7the player needs permission'
diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java
index a1a1f71..60036d0 100644
--- a/src/me/rockyhawk/commandpanels/CommandPanels.java
+++ b/src/me/rockyhawk/commandpanels/CommandPanels.java
@@ -31,10 +31,6 @@ import me.rockyhawk.commandpanels.interactives.OutsideClickEvent;
import me.rockyhawk.commandpanels.interactives.input.UserInputUtils;
import me.rockyhawk.commandpanels.interactives.Commandpanelrefresher;
import me.rockyhawk.commandpanels.interactives.OpenOnJoin;
-import me.rockyhawk.commandpanels.ioclasses.nbt.NBTManager;
-import me.rockyhawk.commandpanels.ioclasses.legacy.LegacyVersion;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
-import me.rockyhawk.commandpanels.ioclasses.legacy.PlayerHeads;
import me.rockyhawk.commandpanels.openpanelsmanager.*;
import me.rockyhawk.commandpanels.openwithitem.HotbarItemLoader;
import me.rockyhawk.commandpanels.openwithitem.SwapItemEvent;
@@ -43,6 +39,7 @@ import me.rockyhawk.commandpanels.openwithitem.UtilsOpenWithItem;
import me.rockyhawk.commandpanels.panelblocks.BlocksTabComplete;
import me.rockyhawk.commandpanels.panelblocks.Commandpanelblocks;
import me.rockyhawk.commandpanels.panelblocks.PanelBlockOnClick;
+import me.rockyhawk.commandpanels.nbt.NBTManager;
import me.rockyhawk.commandpanels.playerinventoryhandler.InventorySaver;
import me.rockyhawk.commandpanels.playerinventoryhandler.ItemStackSerializer;
import me.rockyhawk.commandpanels.updater.Updater;
@@ -97,19 +94,17 @@ public class CommandPanels extends JavaPlugin{
public HasSections has = new HasSections(this);
public GetCustomHeads customHeads = new GetCustomHeads(this);
public Updater updater = new Updater(this);
- public PlayerHeads getHeads = new PlayerHeads(this);
- public LegacyVersion legacy = new LegacyVersion(this);
public OpenPanelsLoader openPanels = new OpenPanelsLoader(this);
public OpenGUI createGUI = new OpenGUI(this);
public PanelPermissions panelPerms = new PanelPermissions(this);
public HotbarItemLoader hotbar = new HotbarItemLoader(this);
- public NBTManager nbt = new NBTManager(this);
public InventorySaver inventorySaver = new InventorySaver(this);
public ItemStackSerializer itemSerializer = new ItemStackSerializer(this);
public UserInputUtils inputUtils = new UserInputUtils(this);
public OpenFloodgateGUI floodgateOpenGUI = new OpenFloodgateGUI(this);
+ public NBTManager nbt = new NBTManager(this);
public File panelsf = new File(this.getDataFolder() + File.separator + "panels");
public YamlConfiguration blockConfig; //where panel block locations are stored
@@ -184,7 +179,11 @@ public class CommandPanels extends JavaPlugin{
this.getServer().getPluginManager().registerEvents(new ItemFallManager(this), this);
this.getServer().getPluginManager().registerEvents(new OpenOnJoin(this), this);
this.getServer().getPluginManager().registerEvents(new OutsideClickEvent(this), this);
- this.getServer().getPluginManager().registerEvents(new OpenFloodgateGUI(this), this);
+ this.getServer().getPluginManager().registerEvents(new SwapItemEvent(this), this);
+
+ if (this.getServer().getPluginManager().isPluginEnabled("floodgate")) {
+ this.getServer().getPluginManager().registerEvents(new OpenFloodgateGUI(this), this);
+ }
//load in the updater if requested
if (Objects.requireNonNull(config.getString("updater.update-checks")).equalsIgnoreCase("true")) {
@@ -221,10 +220,6 @@ public class CommandPanels extends JavaPlugin{
this.getServer().getPluginManager().registerEvents(new PanelBlockOnClick(this), this);
}
- //if 1.8 don't use this
- if (!Bukkit.getVersion().contains("1.8")) {
- this.getServer().getPluginManager().registerEvents(new SwapItemEvent(this), this);
- }
//if VotingPlugin is enabled
if (getServer().getPluginManager().isPluginEnabled("VotingPlugin")) {
votingPlugin= VotingPluginHooks.getInstance();
@@ -237,23 +232,19 @@ public class CommandPanels extends JavaPlugin{
//save the example_top.yml file and the template.yml file
if (!this.panelsf.exists()) {
try {
- if(legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- FileConfiguration exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("exampleLegacy.yml")));
- exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example.yml"));
- }else {
- //top
- FileConfiguration exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_top.yml")));
- exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_top.yml"));
- //middle one
- exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_middle_one.yml")));
- exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_middle_one.yml"));
- //middle two
- exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_middle_two.yml")));
- exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_middle_two.yml"));
- //bottom
- exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_bottom.yml")));
- exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_bottom.yml"));
- }
+ //top
+ FileConfiguration exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_top.yml")));
+ exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_top.yml"));
+ //middle one
+ exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_middle_one.yml")));
+ exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_middle_one.yml"));
+ //middle two
+ exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_middle_two.yml")));
+ exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_middle_two.yml"));
+ //bottom
+ exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("example_bottom.yml")));
+ exampleFileConfiguration.save(new File(this.panelsf + File.separator + "example_bottom.yml"));
+
FileConfiguration templateFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(this.getResource("template.yml")));
templateFileConfiguration.save(new File(this.panelsf + File.separator + "template.yml"));
} catch (IOException var11) {
@@ -292,7 +283,7 @@ public class CommandPanels extends JavaPlugin{
//save files
panelData.saveDataFile();
inventorySaver.saveInventoryFile();
- updater.autoUpdatePlugin(this.getFile().getName());
+ updater.updatePlugin(this.getFile().getName());
Bukkit.getLogger().info("RockyHawk's CommandPanels Plugin Disabled, aww man.");
}
@@ -315,16 +306,9 @@ public class CommandPanels extends JavaPlugin{
//hiding attributes will add an NBT tag
if(hideAttributes) {
renamedMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
- renamedMeta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
renamedMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
- //HIDE_ARMOR_TRIM was added into 1.20 api
- if(legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20)){
- renamedMeta.addItemFlags(ItemFlag.HIDE_ARMOR_TRIM);
- }
- //HIDE_DYE was added into 1.17 api
- if(legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_17)){
- renamedMeta.addItemFlags(ItemFlag.HIDE_DYE);
- }
+ renamedMeta.addItemFlags(ItemFlag.HIDE_ARMOR_TRIM);
+ renamedMeta.addItemFlags(ItemFlag.HIDE_DYE);
}
if (customName != null) {
renamedMeta.setDisplayName(customName);
@@ -457,7 +441,7 @@ public class CommandPanels extends JavaPlugin{
p.sendMessage(ChatColor.GOLD + "/cpv " + ChatColor.WHITE + "Display the current version.");
}
if (p.hasPermission("commandpanel.refresh")) {
- p.sendMessage(ChatColor.GOLD + "/cpu [player] [position:all] " + ChatColor.WHITE + "Update a panel for a player while it is still open.");
+ p.sendMessage(ChatColor.GOLD + "/cpu [position:all] " + ChatColor.WHITE + "Update a panel for a player while it is still open.");
}
if (p.hasPermission("commandpanel.update")) {
p.sendMessage(ChatColor.GOLD + "/cpv latest " + ChatColor.WHITE + "Download the latest update upon server reload/restart.");
@@ -467,7 +451,7 @@ public class CommandPanels extends JavaPlugin{
p.sendMessage(ChatColor.GOLD + "/cpe " + ChatColor.WHITE + "Export panel to the Online Editor.");
}
if (p.hasPermission("commandpanel.import")) {
- p.sendMessage(ChatColor.GOLD + "/cpi [file name] [URL] " + ChatColor.WHITE + "Downloads a panel from a raw link online.");
+ p.sendMessage(ChatColor.GOLD + "/cpi " + ChatColor.WHITE + "Downloads a panel from a raw link online.");
}
if (p.hasPermission("commandpanel.list")) {
p.sendMessage(ChatColor.GOLD + "/cpl " + ChatColor.WHITE + "Lists the currently loaded panels.");
diff --git a/src/me/rockyhawk/commandpanels/api/Panel.java b/src/me/rockyhawk/commandpanels/api/Panel.java
index 26369f8..4c76cbc 100644
--- a/src/me/rockyhawk/commandpanels/api/Panel.java
+++ b/src/me/rockyhawk/commandpanels/api/Panel.java
@@ -99,7 +99,7 @@ public class Panel{
}
try {
//add NBT to item and return the ItemStack
- return plugin.nbt.setNBT(s, "CommandPanelsHotbar", panelName + ":" + slot);
+ return plugin.nbt.setData(s, "CommandPanelsHotbar", panelName + ":" + slot);
}catch(Exception e) {
//return air if null
return new ItemStack(Material.AIR);
diff --git a/src/me/rockyhawk/commandpanels/classresources/GetCustomHeads.java b/src/me/rockyhawk/commandpanels/classresources/GetCustomHeads.java
index 2faff8d..b5bbcdc 100644
--- a/src/me/rockyhawk/commandpanels/classresources/GetCustomHeads.java
+++ b/src/me/rockyhawk/commandpanels/classresources/GetCustomHeads.java
@@ -4,7 +4,6 @@ import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.properties.PropertyMap;
import me.rockyhawk.commandpanels.CommandPanels;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@@ -32,7 +31,7 @@ public class GetCustomHeads {
public HashMap playerHeadTextures = new HashMap<>();
public String getHeadBase64(ItemStack head) {
- if (plugin.getHeads.ifSkullOrHead(head.getType().toString()) && head.hasItemMeta()) {
+ if ((head.getType() == Material.PLAYER_HEAD) && head.hasItemMeta()) {
try {
SkullMeta meta = (SkullMeta) head.getItemMeta();
assert meta != null;
@@ -71,18 +70,13 @@ public class GetCustomHeads {
//getting the head from a Player Name
public ItemStack getPlayerHead(String name) {
- byte id = 0;
- if (plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)) {
- id = 3;
- }
-
//get texture if already cached
if(playerHeadTextures.containsKey(name)) {
return getCustomHead(playerHeadTextures.get(name));
}
//create ItemStack
- ItemStack itemStack = new ItemStack(Material.matchMaterial(plugin.getHeads.playerHeadString()), 1, id);
+ ItemStack itemStack = new ItemStack(Material.PLAYER_HEAD, 1);
//Run fallback code, if API call fails, use legacy setOwner
SkullMeta meta = (SkullMeta) itemStack.getItemMeta();
@@ -144,11 +138,7 @@ public class GetCustomHeads {
throw new IllegalStateException("Profile doesn't contain a property map");
} else {
propertyMap.put("textures", new Property("textures", b64stringtexture));
- byte id = 0;
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)){
- id = 3;
- }
- ItemStack head = new ItemStack(Material.matchMaterial(plugin.getHeads.playerHeadString()), 1,id);
+ ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1);
ItemMeta headMeta = head.getItemMeta();
assert headMeta != null;
diff --git a/src/me/rockyhawk/commandpanels/classresources/HasSections.java b/src/me/rockyhawk/commandpanels/classresources/HasSections.java
index 74a34ef..06dcdfb 100644
--- a/src/me/rockyhawk/commandpanels/classresources/HasSections.java
+++ b/src/me/rockyhawk/commandpanels/classresources/HasSections.java
@@ -106,16 +106,6 @@ public class HasSections {
outputValue = false;
}
- //the original has sections as TinyTank800 wanted to keep them
- if(setName.startsWith("hasvalue")) {
- return compare.equals(value) == outputValue;
- }
- if(setName.startsWith("hasperm")) {
- return p.hasPermission(value) == outputValue;
- }
- if(setName.startsWith("hasgreater")) {
- return (Long.parseLong(compare) >= Long.parseLong(value)) == outputValue;
- }
//the current has section with all the functions implemented inside it
if(setName.startsWith("has")) {
if(value.endsWith(" HASPERM")) {
diff --git a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
index a6b3ae7..fde6ff9 100644
--- a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
+++ b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
@@ -1,15 +1,10 @@
package me.rockyhawk.commandpanels.classresources;
-import de.tr7zw.changeme.nbtapi.NBT;
-import de.tr7zw.changeme.nbtapi.NBTItem;
-import de.tr7zw.changeme.nbtapi.iface.ReadWriteNBT;
import me.arcaniax.hdb.api.HeadDatabaseAPI;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.Panel;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import net.Indyuce.mmoitems.MMOItems;
-import net.Indyuce.mmoitems.api.MMOItemsAPI;
import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem;
import net.Indyuce.mmoitems.manager.ItemManager;
import org.bukkit.*;
@@ -28,7 +23,6 @@ import org.bukkit.inventory.meta.*;
import org.bukkit.inventory.meta.trim.ArmorTrim;
import org.bukkit.inventory.meta.trim.TrimMaterial;
import org.bukkit.inventory.meta.trim.TrimPattern;
-import org.bukkit.potion.PotionData;
import org.bukkit.potion.PotionType;
import java.util.*;
@@ -79,24 +73,14 @@ public class ItemCreation {
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 (matraw.split("\\s")[0].equalsIgnoreCase("cps=") || matraw.split("\\s")[0].toLowerCase().equals("cpo=")) {
skullname = p.getUniqueId().toString();
- mat = plugin.getHeads.playerHeadString();
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- id = 3;
- }
+ mat = Material.PLAYER_HEAD.toString();
}
if (matraw.split("\\s")[0].equalsIgnoreCase("hdb=")) {
skullname = "hdb";
- mat = plugin.getHeads.playerHeadString();
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- id = 3;
- }
+ mat = Material.PLAYER_HEAD.toString();
}
//creates custom MMOItems items
@@ -129,7 +113,7 @@ public class ItemCreation {
}
if(normalCreation) {
- s = new ItemStack(Objects.requireNonNull(Material.matchMaterial(mat)), 1, id);
+ s = new ItemStack(Objects.requireNonNull(Material.matchMaterial(mat)), 1);
}
if (!skullname.equals("no skull") && !skullname.equals("hdb") && !matraw.split("\\s")[0].equalsIgnoreCase("cpo=")) {
@@ -138,16 +122,12 @@ public class ItemCreation {
if (matraw.split("\\s")[1].equalsIgnoreCase("self")) {
//if cps= self
meta = (SkullMeta) s.getItemMeta();
- if(!plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
- try {
- assert meta != null;
- meta.setOwningPlayer(Bukkit.getOfflinePlayer(UUID.fromString(skullname)));
- } catch (Exception var23) {
- p.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.error") + " material: cps= self"));
- plugin.debug(var23,p);
- }
- }else{
- meta.setOwner(p.getName());
+ try {
+ assert meta != null;
+ meta.setOwningPlayer(Bukkit.getOfflinePlayer(UUID.fromString(skullname)));
+ } catch (Exception var23) {
+ p.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.error") + " material: cps= self"));
+ plugin.debug(var23,p);
}
s.setItemMeta(meta);
}else if (plugin.tex.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]).length() <= 16) {
@@ -203,7 +183,7 @@ public class ItemCreation {
if(itemSection.isConfigurationSection("nbt." + key)){
continue;
}
- s = plugin.nbt.setNBT(s,key,plugin.tex.attachPlaceholders(panel, position, p, Objects.requireNonNull(itemSection.getString("nbt." + key)))); //itemSection.getString("nbt." + key));
+ s = plugin.nbt.setData(s,key,plugin.tex.attachPlaceholders(panel, position, p, Objects.requireNonNull(itemSection.getString("nbt." + key))));
}
}
if (itemSection.contains("enchanted")) {
@@ -290,22 +270,9 @@ public class ItemCreation {
PotionMeta potionMeta = (PotionMeta)s.getItemMeta();
String[] effectType = plugin.tex.placeholdersNoColour(panel,position,p,itemSection.getString("potion")).split("\\s");
assert potionMeta != null;
- boolean extended = false;
- boolean upgraded = false;
- //create data
- if(effectType.length >= 2){
- if(effectType[1].equalsIgnoreCase("true")){
- extended = true;
- }
- if(effectType.length == 3){
- if(effectType[2].equalsIgnoreCase("true")){
- upgraded = true;
- }
- }
- }
- PotionData newData = new PotionData(PotionType.valueOf(effectType[0].toUpperCase()),extended,upgraded);
+ PotionType newData = PotionType.valueOf(effectType[0].toUpperCase());
//set meta
- potionMeta.setBasePotionData(newData);
+ potionMeta.setBasePotionType(newData);
s.setItemMeta(potionMeta);
} catch (Exception er) {
//don't add the effect
@@ -316,29 +283,20 @@ public class ItemCreation {
if (itemSection.contains("damage")) {
//change the damage amount (placeholders accepted)
//if the damage is not unbreakable and should be a value
- if (plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
- try {
- s.setDurability(Short.parseShort(Objects.requireNonNull(plugin.tex.placeholders(panel,position,p, itemSection.getString("damage")))));
- } catch (Exception e) {
- plugin.debug(e, p);
- p.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
- }
- } else {
- if(itemSection.getString("damage").equalsIgnoreCase("-1")){
- //if the player wants the item to be unbreakable. Only works in non legacy versions
- ItemMeta unbreak = s.getItemMeta();
- unbreak.setUnbreakable(true);
- s.setItemMeta(unbreak);
- }
+ if(itemSection.getString("damage").equalsIgnoreCase("-1")){
+ //if the player wants the item to be unbreakable. Only works in non legacy versions
+ ItemMeta unbreak = s.getItemMeta();
+ unbreak.setUnbreakable(true);
+ s.setItemMeta(unbreak);
+ }
- try {
- Damageable itemDamage = (Damageable) s.getItemMeta();
- itemDamage.setDamage(Integer.parseInt(Objects.requireNonNull(plugin.tex.placeholders(panel,position,p, itemSection.getString("damage")))));
- s.setItemMeta((ItemMeta) itemDamage);
- } catch (Exception e) {
- plugin.debug(e, p);
- p.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
- }
+ try {
+ Damageable itemDamage = (Damageable) s.getItemMeta();
+ itemDamage.setDamage(Integer.parseInt(Objects.requireNonNull(plugin.tex.placeholders(panel,position,p, itemSection.getString("damage")))));
+ s.setItemMeta(itemDamage);
+ } catch (Exception e) {
+ plugin.debug(e, p);
+ p.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
}
}
if (itemSection.contains("nbt")) {
@@ -346,11 +304,11 @@ public class ItemCreation {
if(itemSection.isConfigurationSection("nbt." + key)){
continue;
}
- s = plugin.nbt.setNBT(s,key,plugin.tex.attachPlaceholders(panel, position, p, Objects.requireNonNull(itemSection.getString("nbt." + key)))); //itemSection.getString("nbt." + key));
+ s = plugin.nbt.setData(s, key, plugin.tex.attachPlaceholders(panel, position, p, Objects.requireNonNull(itemSection.getString("nbt." + key))));
}
}
// 1.20 Trim Feature for Player Armor
- if(plugin.legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20) && itemSection.contains("trim")){
+ if(itemSection.contains("trim")){
// trim:
String trim = itemSection.getString("trim");
String[] trimList = trim.split("\\s");
@@ -421,14 +379,9 @@ public class ItemCreation {
}
}
}
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- 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())){
+ if(!(Material.PLAYER_HEAD == cont.getType())){
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
}
}else{
@@ -437,15 +390,11 @@ public class ItemCreation {
}else{
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
}
- if(plugin.getHeads.ifSkullOrHead(cont.getType().toString())){
+ if(Material.PLAYER_HEAD == cont.getType()){
if(!Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("%") && !Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("=")) {
- SkullMeta meta = (SkullMeta) cont.getItemMeta();
- if (plugin.customHeads.getHeadBase64(cont) != null && !plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
- //inject base64 here, disable for legacy as is not working
+ 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());
}
}
}
@@ -463,11 +412,8 @@ public class ItemCreation {
try {
PotionMeta potionMeta = (PotionMeta) cont.getItemMeta();
assert potionMeta != null;
- PotionData potionData = potionMeta.getBasePotionData();
- PotionType potionType = potionData.getType(); // Gets the potion type as a string rather than bukkit type
- boolean level = potionData.isUpgraded(); // Check if the potion is level II
- boolean extended = potionData.isExtended(); // Check if the potion is extended
- file.set("panels." + panelName + ".item." + i + ".potion", potionType + " " + extended + " " + level);
+ String potionType = potionMeta.getBasePotionType().toString(); // Gets the potion type as a string rather than bukkit type
+ file.set("panels." + panelName + ".item." + i + ".potion", potionType);
}catch(Exception ignore){
//not a banner
file.set("panels." + panelName + ".item." + i + ".potion", null);
@@ -483,9 +429,7 @@ public class ItemCreation {
}
file.set("panels." + panelName + ".item." + i + ".name", Objects.requireNonNull(cont.getItemMeta()).getDisplayName());
file.set("panels." + panelName + ".item." + i + ".lore", Objects.requireNonNull(cont.getItemMeta()).getLore());
- if(plugin.legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_14)){
- file.set("panels." + panelName + ".item." + i + ".customdata", Objects.requireNonNull(cont.getItemMeta()).getCustomModelData());
- }
+ file.set("panels." + panelName + ".item." + i + ".customdata", Objects.requireNonNull(cont.getItemMeta()).getCustomModelData());
}catch(Exception n){
//skip over an item that spits an error
}
@@ -534,42 +478,25 @@ public class ItemCreation {
//check for nbt
if(nbtCheck) {
try {
- NBTItem nbtitem1 = new NBTItem(one);
- NBTItem nbtitem2 = new NBTItem(two);
-
- if (!nbtitem1.equals(nbtitem2)) {
+ if(!plugin.nbt.hasSameNBT(one, two)){
return false;
}
} catch (Exception ignore) {}
}
//check for damage
try {
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- if(one.getDurability() != two.getDurability()) {
- return false;
- }
- }else {
- Damageable tempOne = (Damageable) one.getItemMeta();
- Damageable tempTwo = (Damageable) two.getItemMeta();
- if(tempOne.getDamage() != tempTwo.getDamage()){
- return false;
- }
+ Damageable tempOne = (Damageable) one.getItemMeta();
+ Damageable tempTwo = (Damageable) two.getItemMeta();
+ if(tempOne.getDamage() != tempTwo.getDamage()){
+ return false;
}
} catch (Exception ignore) {}
//check for potions
try {
PotionMeta meta1 = (PotionMeta) one.getItemMeta();
PotionMeta meta2 = (PotionMeta) two.getItemMeta();
- //different duration
- if(meta1.getBasePotionData().isExtended() != meta2.getBasePotionData().isExtended()){
- return false;
- }
- //different upgrade
- if(meta1.getBasePotionData().isUpgraded() != meta2.getBasePotionData().isUpgraded()){
- return false;
- }
//different potion type
- if (meta1.getBasePotionData().getType().compareTo(meta2.getBasePotionData().getType()) != 0){
+ if (meta1.getBasePotionType().toString().compareTo(meta2.getBasePotionType().toString()) != 0){
return false;
}
}catch(Exception ignore){}
diff --git a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
index c477ffb..4709aaf 100644
--- a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
+++ b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
@@ -5,14 +5,12 @@ import com.earth2me.essentials.Essentials;
import me.realized.tokenmanager.api.TokenManager;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.Panel;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.PotionMeta;
-import org.bukkit.potion.PotionEffect;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -141,18 +139,18 @@ public class Placeholders {
}
}
- //placeholder to check if an item has NBT %cp-nbt-slot:key%
+ //placeholder to check if an item has a container %cp-container-slot:key%
if(identifier.startsWith("nbt-")) {
try {
String slot_key = identifier.replace("nbt-", "");
String value;
- value = plugin.nbt.getNBT(p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(slot_key.split(":")[0])),slot_key.split(":")[1]);
+ value = plugin.nbt.getData(p.getOpenInventory().getTopInventory().getItem((int) Double.parseDouble(slot_key.split(":")[0])), slot_key.split(":")[1]);
if(value.isEmpty()){
- value = "empty";
+ value = "";
}
return value;
}catch (Exception ex){
- plugin.debug(ex,p);
+ //nbt does not exist or slot does not exist
return "";
}
}
@@ -170,8 +168,8 @@ public class Placeholders {
if (item != null && item.hasItemMeta() && item.getItemMeta() instanceof PotionMeta) {
PotionMeta potionMeta = (PotionMeta) item.getItemMeta();
- //Returns the value like this :: Example SLOWNESS:true:false
- return potionMeta.getBasePotionData().getType() + ":" + potionMeta.getBasePotionData().isExtended() + ":" + potionMeta.getBasePotionData().isUpgraded();
+ //Returns the value like this Example SLOWNESS
+ return potionMeta.getBasePotionType().toString();
} else {
return "empty"; // Item is either null or doesn't have potion meta
}
@@ -189,10 +187,6 @@ public class Placeholders {
String material;
try {
material = p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(matNumber)).getType().toString();
- if (plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
- //add the ID to the end if it is legacy (eg, material:id)
- material = material + ":" + p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(matNumber)).getData().getData();
- }
} catch (NullPointerException er) {
material = "AIR";
}
@@ -238,17 +232,11 @@ public class Placeholders {
if(identifier.startsWith("damaged-")) {
try {
String matNumber = identifier.replace("damaged-", "");
- boolean damaged = false;
+ boolean damaged;
ItemStack itm = p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(matNumber));
try {
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)){
- if(itm.getType().getMaxDurability() != 0) {
- damaged = (itm.getType().getMaxDurability() - itm.getDurability()) < itm.getType().getMaxDurability();
- }
- }else {
- Damageable itemDamage = (Damageable) itm.getItemMeta();
- damaged = itemDamage.hasDamage();
- }
+ Damageable itemDamage = (Damageable) itm.getItemMeta();
+ damaged = itemDamage.hasDamage();
} catch (NullPointerException er) {
damaged = false;
}
diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java
index 52fc1bc..99f781b 100644
--- a/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java
+++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java
@@ -20,9 +20,6 @@ public class Commandpanelsupdate implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("cpu") || label.equalsIgnoreCase("commandpanelupdate") || label.equalsIgnoreCase("cpanelu")) {
if (sender.hasPermission("commandpanel.refresh")) {
- //command /cpu (uses .refresh permission node)
- // /cpu
-
String name;
Player targetPlayer;
try {
diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelversion.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelversion.java
index 8531ffc..08c79e3 100644
--- a/src/me/rockyhawk/commandpanels/commands/Commandpanelversion.java
+++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelversion.java
@@ -5,7 +5,6 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
-import org.bukkit.event.EventHandler;
public class Commandpanelversion implements CommandExecutor {
CommandPanels plugin;
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java
index 9ebbdd2..ed359b2 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java
@@ -3,7 +3,6 @@ package me.rockyhawk.commandpanels.commandtags.tags.economy;
import me.realized.tokenmanager.api.TokenManager;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -13,7 +12,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
-import java.util.*;
+import java.util.Objects;
public class BuyItemTags implements Listener {
CommandPanels plugin;
@@ -25,13 +24,13 @@ public class BuyItemTags implements Listener {
public void commandTag(CommandTagEvent e){
if(e.name.equalsIgnoreCase("buy=")){
e.commandTagUsed();
- //if player uses buy= it will be eg. buy= - [id:#]
+ //if player uses buy= it will be eg. buy=
-
try {
if (plugin.econ != null) {
if (plugin.econ.getBalance(e.p) >= Double.parseDouble(e.args[0])) {
plugin.econ.withdrawPlayer(e.p, Double.parseDouble(e.args[0]));
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.currency.success")).replaceAll("%cp-args%", e.args[0]));
- giveItem(e.p, e);
+ giveItem(e.p, e.args);
} else {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.currency.failure")));
@@ -47,7 +46,7 @@ public class BuyItemTags implements Listener {
}
if(e.name.equalsIgnoreCase("tokenbuy=")) {
e.commandTagUsed();
- //if player uses tokenbuy= it will be eg. tokenbuy=
- [id:#]
+ //if player uses tokenbuy= it will be eg. tokenbuy=
-
try {
if (plugin.getServer().getPluginManager().isPluginEnabled("TokenManager")) {
final TokenManager api = (TokenManager) Bukkit.getServer().getPluginManager().getPlugin("TokenManager");
@@ -58,7 +57,7 @@ public class BuyItemTags implements Listener {
plugin.tex.sendMessage(e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", e.args[0]));
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", e.args[0]));
- giveItem(e.p, e);
+ giveItem(e.p,e.args);
} else {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.failure")));
@@ -73,28 +72,7 @@ public class BuyItemTags implements Listener {
}
}
- @SuppressWarnings("deprecation")
- private void giveItem(Player p, CommandTagEvent e){
- String[] args = e.args;
- //legacy ID
- byte id = 0;
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)) {
- for (String arg : args) {
- if (arg.startsWith("id:")) {
- id = Byte.parseByte(arg.replace("id:", ""));
- break;
- }
- }
- }
-
- ItemStack buyItem;
- if (Material.matchMaterial(args[1]) == null) {
- buyItem = plugin.itemCreate.makeCustomItemFromConfig(e.panel, PanelPosition.Top, e.panel.getConfig().getConfigurationSection("custom-item." + args[1]), e.p, true, true, false);
- buyItem.setAmount(Integer.parseInt(args[2]));
- } else {
- buyItem = new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])), Integer.parseInt(args[2]), id);
- }
-
- plugin.inventorySaver.addItem(p,buyItem);
+ private void giveItem(Player p, String[] args){
+ plugin.inventorySaver.addItem(p,new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])), Integer.parseInt(args[2])));
}
}
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java
index 0c8ea88..1b3fa1c 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java
@@ -11,8 +11,12 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.PotionMeta;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
public class SellItemTags implements Listener {
CommandPanels plugin;
@@ -24,15 +28,15 @@ public class SellItemTags implements Listener {
public void commandTag(CommandTagEvent e){
if(e.name.equalsIgnoreCase("sell=")){
e.commandTagUsed();
- //if player uses sell= it will be eg. sell=
- [IGNORENBT]
+ //if player uses sell= it will be eg. sell=
- [enchanted:KNOCKBACK:1] [potion:JUMP] [custom-data:#]
try {
if (plugin.econ != null) {
- int sold = removeItem(e.p, e, false);
+ int sold = removeItem(e.p, e.args, false);
if (sold <= 0) {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.failure")));
} else {
plugin.econ.depositPlayer(e.p, Double.parseDouble(e.args[0]));
- plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", sold + " " + e.args[1]).replaceAll("%cp-args2%", "$" + e.args[0]));
+ plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", e.args[1]).replaceAll("%cp-args2%", "$" + e.args[0]));
}
} else {
plugin.tex.sendMessage(e.p, ChatColor.RED + "Selling Requires Vault and an Economy to work!");
@@ -45,15 +49,15 @@ public class SellItemTags implements Listener {
}
if(e.name.equalsIgnoreCase("sellall=")){
e.commandTagUsed();
- //if player uses sell-all= it will be eg. sell-all=
- [IGNORENBT]
+ //if player uses sell-all= it will be eg. sell-all=
- [enchanted:KNOCKBACK:1] [potion:JUMP]
try {
if (plugin.econ != null) {
- int sold = removeItem(e.p, e, true);
+ int sold = removeItem(e.p, e.args, true);
if (sold <= 0) {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.failure")));
} else {
plugin.econ.depositPlayer(e.p, Double.parseDouble(e.args[0]) * sold);
- plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", sold + " " + e.args[1]).replaceAll("%cp-args2%", String.valueOf(Double.parseDouble(e.args[0]) * sold)));
+ plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", e.args[1]).replaceAll("%cp-args2%", "$" + Double.parseDouble(e.args[0]) * sold));
}
} else {
plugin.tex.sendMessage(e.p, ChatColor.RED + "Selling Requires Vault and an Economy to work!");
@@ -66,17 +70,17 @@ public class SellItemTags implements Listener {
}
if(e.name.equalsIgnoreCase("tokensell=")) {
e.commandTagUsed();
- //if player uses tokensell= it will be eg. tokensell=
- [IGNORENBT]
+ //if player uses tokensell= it will be eg. tokensell=
- [enchanted:KNOCKBACK:1] [potion:JUMP]
try {
if (plugin.getServer().getPluginManager().isPluginEnabled("TokenManager")) {
final TokenManager api = (TokenManager) Bukkit.getServer().getPluginManager().getPlugin("TokenManager");
- int sold = removeItem(e.p, e, false);
+ int sold = removeItem(e.p, e.args, false);
if (sold <= 0) {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.failure")));
} else {
assert api != null;
api.addTokens(e.p, Long.parseLong(e.args[0]));
- plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", sold + " " + e.args[1]));
+ plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", e.args[1]));
}
} else {
plugin.tex.sendMessage(e.p, ChatColor.RED + "Selling Requires TokenManager to work!");
@@ -86,194 +90,115 @@ public class SellItemTags implements Listener {
plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
}
}
- if(e.name.equalsIgnoreCase("tokensellall=")){
- e.commandTagUsed();
- //if player uses tokensellall= it will be eg. tokensellall=
- [IGNORENBT]
- try {
- if (plugin.getServer().getPluginManager().isPluginEnabled("TokenManager")) {
- final TokenManager api = (TokenManager) Bukkit.getServer().getPluginManager().getPlugin("TokenManager");
- int sold = removeItem(e.p, e, true);
- if (sold <= 0) {
- plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.failure")));
- } else {
- assert api != null;
- api.addTokens(e.p, Long.parseLong(e.args[0]));
- plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.item.success")).replaceAll("%cp-args%", sold + " " + e.args[1]));
- }
- } else {
- plugin.tex.sendMessage(e.p, ChatColor.RED + "Selling Requires TokenManager to work!");
- }
- } catch (Exception sell) {
- plugin.debug(sell,e.p);
- plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
- }
- return;
- }
}
//returns false if player does not have item
- private int removeItem(Player p, CommandTagEvent e, boolean removeAll){
- String[] args = e.args;
+ private int removeItem(Player p, String[] args, boolean removeAll){
//get inventory slots and then an empty list to store slots that have the item to sell
List cont = new ArrayList<>(Arrays.asList(plugin.inventorySaver.getNormalInventory(p)));
- HashMap remCont = new HashMap<>();
- int count = 0;
-
- try {
- int id = -1;
- for (String val : args) {
- if (val.startsWith("id:")) {
- id = Integer.parseInt(val.substring(3));
- }
+ List remCont = new ArrayList<>();
+ byte id = -1;
+ String potion = "false";
+ int customData = 0;
+ boolean noCustom = false;
+ for(String argsTemp : args){
+ if(argsTemp.startsWith("potion:")){
+ potion = argsTemp.replace("potion:","");
}
-
- ItemStack sellItem;
- if (Material.matchMaterial(args[1]) == null) {
- sellItem = plugin.itemCreate.makeCustomItemFromConfig(e.panel, PanelPosition.Top, e.panel.getConfig().getConfigurationSection("custom-item." + args[1]), e.p, true, true, false);
- if(!removeAll){
- sellItem.setAmount(Integer.parseInt(args[2]));
- } else {
- sellItem.setAmount(1);
- }
-
- } else {
- if(!removeAll){
- sellItem = new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])), Integer.parseInt(args[2]));
- } else {
- sellItem = new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])));
- }
+ if (argsTemp.startsWith("id:")) {
+ id = Byte.parseByte(argsTemp.replace("id:", ""));
}
-
- //This is here for when people want to take nbt items like spawners with types in a check for spawners.
- boolean ignoreNBT = false;
- for(String arg : args){
- if (arg.equalsIgnoreCase("IGNORENBT")) {
- ignoreNBT = true;
- break;
- }
+ if (argsTemp.startsWith("custom-data:")) {
+ customData = Integer.parseInt(argsTemp.replace("custom-data:", ""));
}
+ if (argsTemp.contains("NOCUSTOMDATA")) {
+ noCustom = true;
+ }
+ }
- int remainingAmount = removeAll ? 0 : sellItem.getAmount();
- //loop through items in the inventory
- for (int f = 0; f < 36; f++) {
-
- if (cont.get(f) == null) {
- //skip slot if empty
- continue;
- }
-
- ItemStack itm = cont.get(f);
-
- if (Material.matchMaterial(args[1]) == null) {
- //if custom item is a mmo item (1.14+ for the API)
- try {
- if (plugin.getServer().getPluginManager().isPluginEnabled("MMOItems") && e.panel.getConfig().getString("custom-item." + args[1] + ".material").startsWith("mmo=")) {
- String customItemMaterial = e.panel.getConfig().getString("custom-item." + args[1] + ".material");
- String mmoType = customItemMaterial.split("\\s")[1];
- String mmoID = customItemMaterial.split("\\s")[2];
-
- if (plugin.isMMOItem(itm, mmoType, mmoID)) {
- ItemStack add = new ItemStack(p.getInventory().getItem(f).getType(), p.getInventory().getItem(f).getAmount());
- remainingAmount -= add.getAmount();
- remCont.put(f,add);
- if (remainingAmount <= 0 && !removeAll) {
- break;
- }
+ //create an itemstack of the item to sell and the amount to sell (0 if all as args[2] will not be an amount)
+ ItemStack sellItem = new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])), removeAll ? 0 : Integer.parseInt(args[2]));
+ int remainingAmount = removeAll ? 0 : sellItem.getAmount();
+ for (int f = 0; f < 36; f++) {
+ ItemStack itm = cont.get(f);
+ ItemStack remItm;
+ if (itm != null && itm.getType().equals(sellItem.getType())) {
+ remItm = new ItemStack(itm.getType(), itm.getAmount(), (short)f);
+ //check to ensure any extensions are checked
+ try {
+ if (!potion.equals("false")) {
+ PotionMeta potionMeta = (PotionMeta) itm.getItemMeta();
+ assert potionMeta != null;
+ if (!potionMeta.getBasePotionType().name().equalsIgnoreCase(potion)) {
+ p.sendMessage(plugin.tex.colour( plugin.tag + ChatColor.RED + "Your item has the wrong potion effect"));
+ return 0;
+ }
+ }
+ //Check if the item matches the id set. If not continue to next in loop.
+ if(id != -1 && itm.getDurability() != id){
+ continue;
+ }
+ //Check if noCustom is set and if the item has custom data. If so continue to next in loop.
+ if(noCustom && cont.get(f).hasItemMeta()){
+ if(Objects.requireNonNull(cont.get(f).getItemMeta()).hasCustomModelData()){
+ continue;
+ }
+ }
+ //Check if custom model data is set and if the item has that data. If not continue to next in loop.
+ if (customData != 0) {
+ if (!itm.hasItemMeta()) {
+ continue;
+ } else {
+ if(Objects.requireNonNull(itm.getItemMeta()).getCustomModelData() != customData){
+ continue;
}
- continue; //This stops the other custom item section from reading and adding false numbers.
- }
- } catch (Exception ex) {
- plugin.debug(ex, p);
- }
-
- //item-paywall is a custom item as it is not a material
- if (plugin.itemCreate.isIdentical(sellItem, itm, Objects.requireNonNull(e.panel.getConfig().getConfigurationSection("custom-item." + args[1])).contains("nbt"))) {
- ItemStack add = new ItemStack(p.getInventory().getItem(f).getType(), p.getInventory().getItem(f).getAmount());
- remainingAmount -= add.getAmount();
- remCont.put(f,add);
- if (remainingAmount <= 0 && !removeAll) {
- break;
}
}
+ }catch(Exception exc){
+ //skip if it cannot do unless plugin.debug is enabled
+ plugin.debug(exc,p);
+ }
+ remCont.add(remItm);
+
+ //if the remaining amount has been reached, break otherwise sell all
+ if (!removeAll) {
+ remainingAmount -= remItm.getAmount();
+ if (remainingAmount <= 0) {
+ break;
+ }
} else {
- //if the item is a standard material
- if (itm.getType() == sellItem.getType()) {
- //If item has custom meta continue to next item.
- if(itm.hasItemMeta() && !ignoreNBT){
- continue;
- }
-
- //Check if the item matches the id set. If not continue to next in loop.
- if (id != -1 && itm.getDurability() != id) {
- continue;
- }
-
- //Adding item to the remove list then checking if we have reached the required amount.
- ItemStack add = new ItemStack(itm.getType(), itm.getAmount());
- remainingAmount -= add.getAmount();
- remCont.put(f,add);
- if (remainingAmount <= 0 && !removeAll) {
- break;
- }
- }
+ sellItem.setAmount(sellItem.getAmount() + remItm.getAmount());
}
}
+ }
- if (remainingAmount <= 0 && !removeAll) {
- //Only remove if passed requirement
- for(Map.Entry entry : remCont.entrySet()) {
- ItemStack remItem = entry.getValue();
-
- //Check if its the last item in the loop and only subtract the remaining amount.
- if (sellItem.getAmount() < remItem.getAmount()) {
- if (plugin.inventorySaver.hasNormalInventory(p)) {
- p.getInventory().getItem(entry.getKey()).setAmount(remItem.getAmount() - sellItem.getAmount());
- count += remItem.getAmount();
- p.updateInventory();
- } else {
- cont.get(entry.getKey()).setAmount(remItem.getAmount() - sellItem.getAmount());
- count += remItem.getAmount();
- plugin.inventorySaver.inventoryConfig.set(p.getUniqueId().toString(), plugin.itemSerializer.itemStackArrayToBase64(cont.toArray(new ItemStack[0])));
- }
- } else { //If its anywhere but the last in loop just get rid of the items.
- if (plugin.inventorySaver.hasNormalInventory(p)) {
- p.getInventory().setItem(entry.getKey(), null);
- count += remItem.getAmount();
- p.updateInventory();
- } else {
- cont.remove(entry.getValue());
- count += remItem.getAmount();
- plugin.inventorySaver.inventoryConfig.set(p.getUniqueId().toString(), plugin.itemSerializer.itemStackArrayToBase64(cont.toArray(new ItemStack[0])));
- }
- }
-
- sellItem.setAmount(sellItem.getAmount() - remItem.getAmount());
- }
- } else if(remainingAmount <= 0){
- //Remove all. Used for sellall=
- for(Map.Entry entry : remCont.entrySet()) {
- ItemStack remItem = entry.getValue();
-
- if (plugin.inventorySaver.hasNormalInventory(p)) {
- p.getInventory().setItem(entry.getKey(), null);
- count += remItem.getAmount();
+ if(remainingAmount <= 0){
+ int removedItems = 0;
+ for (int f = 0; f <= remCont.size() - 1; f++) {
+ ItemStack remItm = remCont.get(f);
+ if(f == remCont.size() - 1){
+ if(plugin.inventorySaver.hasNormalInventory(p)){
+ p.getInventory().getItem(remItm.getDurability()).setAmount(remItm.getAmount() - sellItem.getAmount());
p.updateInventory();
- } else {
- cont.remove(entry.getValue());
- count += remItem.getAmount();
+ }else{
+ cont.get(remItm.getDurability()).setAmount(remItm.getAmount() - sellItem.getAmount());
+ plugin.inventorySaver.inventoryConfig.set(p.getUniqueId().toString(), plugin.itemSerializer.itemStackArrayToBase64(cont.toArray(new ItemStack[0])));
+ }
+ } else {
+ if(plugin.inventorySaver.hasNormalInventory(p)){
+ p.getInventory().getItem(remItm.getDurability()).setAmount(0);
+ p.updateInventory();
+ }else{
+ cont.get(remItm.getDurability()).setAmount(0);
plugin.inventorySaver.inventoryConfig.set(p.getUniqueId().toString(), plugin.itemSerializer.itemStackArrayToBase64(cont.toArray(new ItemStack[0])));
}
}
+ removedItems += remItm.getAmount();
+ sellItem.setAmount(sellItem.getAmount() - remItm.getAmount());
}
-
- //Return how many were sold.
- return count;
- } catch (Exception buyc) {
- //Error somewhere in sell= process.
- plugin.debug(buyc, p);
- plugin.tex.sendString(p, plugin.tag + plugin.config.getString("config.format.error") + " " + "commands: sell=/sellall=");
- return 0; //Return 0 showing failure.
+ return removedItems;
}
+ return 0;
}
}
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java
index a5aab8e..7d591f3 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java
@@ -4,7 +4,6 @@ import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.PanelCommandEvent;
import me.rockyhawk.commandpanels.classresources.SerializerUtils;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import net.kyori.adventure.audience.Audience;
@@ -138,11 +137,10 @@ public class BasicTags implements Listener {
if(e.name.equalsIgnoreCase("minimessage=")){
e.commandTagUsed();
//get checks
- boolean isVersionCompatible = plugin.legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_18);
boolean isPaper = Bukkit.getServer().getVersion().contains("Paper");
boolean allowUnsafeMiniMessage = plugin.config.getBoolean("config.allow-unsafe-mini-message");
//do mini message if conditions are met
- if (isVersionCompatible && (isPaper || allowUnsafeMiniMessage)) {
+ if (isPaper || allowUnsafeMiniMessage) {
Audience player = (Audience) e.p; // Needed because the basic Player from the Event can't send Paper's Components
Component parsedText = SerializerUtils.serializeText(String.join(" ", e.args));
player.sendMessage(parsedText);
diff --git a/src/me/rockyhawk/commandpanels/editor/CommandPanelsEditor.java b/src/me/rockyhawk/commandpanels/editor/CommandPanelsEditor.java
index d0f0f1a..7137adb 100644
--- a/src/me/rockyhawk/commandpanels/editor/CommandPanelsEditor.java
+++ b/src/me/rockyhawk/commandpanels/editor/CommandPanelsEditor.java
@@ -52,18 +52,26 @@ public class CommandPanelsEditor implements CommandExecutor {
// Prepend "fileName: {name}" and "filePath: {relativePath}" to the YAML content
String yamlWithFileNameAndPath = "fileName: " + (relativePath.replaceFirst("[.][^.]+$", "")) + "\n" + fileContents;
+ byte[] contentBytes = yamlWithFileNameAndPath.getBytes(StandardCharsets.UTF_8);
- // Create a clickable text component with the modified YAML content
- BaseComponent[] components = new ComponentBuilder(plugin.tag +
- net.md_5.bungee.api.ChatColor.GREEN + "Click here to copy " +
- net.md_5.bungee.api.ChatColor.WHITE + panel.getFile().getName() +
- net.md_5.bungee.api.ChatColor.GREEN + " to the clipboard!")
- .event(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, yamlWithFileNameAndPath))
- .create();
+ //65535 is maximum value that can be represented by an unsigned 16-bit binary number
+ if (contentBytes.length > 65535) {
+ // If the content is too large, notify the player to use a different method
+ sender.sendMessage(plugin.tag + ChatColor.RED +
+ "Content too long to paste in chat. Please copy and paste the panel file into the editor manually.");
+ } else {
+ // Safe to send
+ BaseComponent[] components = new ComponentBuilder(plugin.tag +
+ net.md_5.bungee.api.ChatColor.GREEN + "Click here to copy " +
+ net.md_5.bungee.api.ChatColor.WHITE + panel.getFile().getName() +
+ net.md_5.bungee.api.ChatColor.GREEN + " to the clipboard!")
+ .event(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, yamlWithFileNameAndPath))
+ .create();
+
+ Player player = (Player) sender;
+ player.spigot().sendMessage(components);
+ }
- // Send the clickable text to the player
- Player player = (Player) sender;
- player.spigot().sendMessage(components);
return true;
}
}
diff --git a/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java b/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java
index 5c896b8..124e43d 100644
--- a/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java
+++ b/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java
@@ -2,7 +2,6 @@ package me.rockyhawk.commandpanels.generatepanels;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.Panel;
-import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -93,12 +92,7 @@ public class GenUtils implements Listener {
file.set("panels." + date + ".title", "&8Generated " + date);
file.addDefault("panels." + date + ".command", date);
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)) {
- file.set("panels." + date + ".empty", "STAINED_GLASS_PANE");
- file.set("panels." + date + ".emptyID", "15");
- }else{
- file.set("panels." + date + ".empty", "BLACK_STAINED_GLASS_PANE");
- }
+ file.set("panels." + date + ".empty", "BLACK_STAINED_GLASS_PANE");
//add items
file = plugin.itemCreate.generatePanelFile(date,inv,file);
diff --git a/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java b/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java
index ea605e5..39a281e 100644
--- a/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java
+++ b/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java
@@ -115,7 +115,7 @@ public class Commandpanelrefresher implements Listener {
if(plugin.inventorySaver.hasNormalInventory(p)) {
for (ItemStack itm : p.getInventory().getContents()) {
if (itm != null) {
- if (plugin.nbt.hasNBT(itm)) {
+ if (plugin.nbt.hasData(itm,"CommandPanelsItem")) {
p.getInventory().remove(itm);
}
}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/GetItemInHand.java b/src/me/rockyhawk/commandpanels/ioclasses/GetItemInHand.java
deleted file mode 100644
index 82b50e9..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/GetItemInHand.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses;
-
-import me.rockyhawk.commandpanels.CommandPanels;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-
-public class GetItemInHand {
- CommandPanels plugin;
- public GetItemInHand(CommandPanels pl) {
- this.plugin = pl;
- }
-
- public ItemStack itemInHand(Player p){
- return p.getInventory().getItemInMainHand();
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/GetItemInHand_Legacy.java b/src/me/rockyhawk/commandpanels/ioclasses/GetItemInHand_Legacy.java
deleted file mode 100644
index 12e550c..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/GetItemInHand_Legacy.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses;
-
-import me.rockyhawk.commandpanels.CommandPanels;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-
-public class GetItemInHand_Legacy {
- CommandPanels plugin;
- public GetItemInHand_Legacy(CommandPanels pl) {
- this.plugin = pl;
- }
-
- @SuppressWarnings("deprecation")
- public ItemStack itemInHand(Player p){
- return p.getInventory().getItemInHand();
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/GetStorageContents.java b/src/me/rockyhawk/commandpanels/ioclasses/GetStorageContents.java
deleted file mode 100644
index 89b3e78..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/GetStorageContents.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses;
-
-import me.rockyhawk.commandpanels.CommandPanels;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.ItemStack;
-
-//get contents
-public class GetStorageContents {
- CommandPanels plugin;
- public GetStorageContents(CommandPanels pl) {
- this.plugin = pl;
- }
-
- public ItemStack[] getStorageContents(Inventory i){
- return i.getContents();
- }
-
- public void setStorageContents(Player p, ItemStack[] i){
- p.getOpenInventory().getTopInventory().setContents(i);
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/GetStorageContents_Legacy.java b/src/me/rockyhawk/commandpanels/ioclasses/GetStorageContents_Legacy.java
deleted file mode 100644
index 12b070a..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/GetStorageContents_Legacy.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses;
-
-import me.rockyhawk.commandpanels.CommandPanels;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.ItemStack;
-
-//get contents legacy
-public class GetStorageContents_Legacy {
- CommandPanels plugin;
- public GetStorageContents_Legacy(CommandPanels pl) {
- this.plugin = pl;
- }
-
- public ItemStack[] getStorageContents(Inventory i){
- return i.getContents();
- }
-
- public void setStorageContents(Player p, ItemStack[] i){
- p.getOpenInventory().getTopInventory().setContents(i);
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/legacy/LegacyVersion.java b/src/me/rockyhawk/commandpanels/ioclasses/legacy/LegacyVersion.java
deleted file mode 100644
index ed06f56..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/legacy/LegacyVersion.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses.legacy;
-
-import me.rockyhawk.commandpanels.CommandPanels;
-import me.rockyhawk.commandpanels.ioclasses.GetStorageContents;
-import me.rockyhawk.commandpanels.ioclasses.GetStorageContents_Legacy;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.ItemStack;
-
-public class LegacyVersion {
- CommandPanels plugin;
- public MinecraftVersions LOCAL_VERSION;
- public LegacyVersion(CommandPanels pl) {
- this.plugin = pl;
- String VERSION = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
- LOCAL_VERSION = MinecraftVersions.get(VERSION);
- }
-
- public ItemStack[] getStorageContents(Inventory i){
- if(LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- return new GetStorageContents_Legacy(plugin).getStorageContents(i);
- }else{
- return new GetStorageContents(plugin).getStorageContents(i);
- }
- }
-
- public void setStorageContents(Player p, ItemStack[] i){
- if(LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)){
- new GetStorageContents_Legacy(plugin).setStorageContents(p,i);
- }else{
- new GetStorageContents(plugin).setStorageContents(p,i);
- }
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/legacy/MinecraftVersions.java b/src/me/rockyhawk/commandpanels/ioclasses/legacy/MinecraftVersions.java
deleted file mode 100644
index 9be78e9..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/legacy/MinecraftVersions.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses.legacy;
-
-public enum MinecraftVersions {
- v1_8( "1_8", 0 ),
- v1_9( "1_9", 1 ),
- v1_10( "1_10", 2 ),
- v1_11( "1_11", 3 ),
- v1_12( "1_12", 4 ),
- v1_13( "1_13", 5 ),
- v1_14( "1_14", 6 ),
- v1_15( "1_15", 7 ),
- v1_16( "1_16", 8 ),
- v1_17( "1_17", 9 ),
- v1_18( "1_18", 10 ),
- v1_19( "1_19", 11 ),
- v1_20( "1_20", 12 ),
- v1_21( "1_21", 13 ),
- v1_22( "1_22", 14 ),
- v1_23( "1_23", 15 ),
- v1_24( "1_24", 16 ),
- v1_25( "1_25", 17 ),
- v1_26( "1_26", 18 );
-
-
- private int order;
- private String key;
-
- MinecraftVersions( String key, int v ) {
- this.key = key;
- order = v;
- }
-
- public boolean greaterThanOrEqualTo( MinecraftVersions other ) {
- return order >= other.order;
- }
-
- public boolean lessThanOrEqualTo( MinecraftVersions other ) {
- return order <= other.order;
- }
-
- public static MinecraftVersions get(String v ) {
- for ( MinecraftVersions k : MinecraftVersions.values() ) {
- if ( v.contains( k.key ) ) {
- return k;
- }
- }
- return null;
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/legacy/PlayerHeads.java b/src/me/rockyhawk/commandpanels/ioclasses/legacy/PlayerHeads.java
deleted file mode 100644
index a3ba583..0000000
--- a/src/me/rockyhawk/commandpanels/ioclasses/legacy/PlayerHeads.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package me.rockyhawk.commandpanels.ioclasses.legacy;
-
-import me.rockyhawk.commandpanels.CommandPanels;
-
-public class PlayerHeads {
- CommandPanels plugin;
- public PlayerHeads(CommandPanels pl) {
- this.plugin = pl;
- }
-
- public boolean ifSkullOrHead(String material) {
- return material.equalsIgnoreCase("PLAYER_HEAD") || material.equalsIgnoreCase("SKULL_ITEM");
- }
-
- public String playerHeadString() {
- if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
- return "SKULL_ITEM";
- }else{
- return "PLAYER_HEAD";
- }
- }
-}
diff --git a/src/me/rockyhawk/commandpanels/ioclasses/nbt/NBTManager.java b/src/me/rockyhawk/commandpanels/nbt/NBTManager.java
similarity index 54%
rename from src/me/rockyhawk/commandpanels/ioclasses/nbt/NBTManager.java
rename to src/me/rockyhawk/commandpanels/nbt/NBTManager.java
index 7f1e1a4..99ff974 100644
--- a/src/me/rockyhawk/commandpanels/ioclasses/nbt/NBTManager.java
+++ b/src/me/rockyhawk/commandpanels/nbt/NBTManager.java
@@ -1,4 +1,4 @@
-package me.rockyhawk.commandpanels.ioclasses.nbt;
+package me.rockyhawk.commandpanels.nbt;
import de.tr7zw.changeme.nbtapi.NBT;
import de.tr7zw.changeme.nbtapi.NBTItem;
@@ -11,30 +11,28 @@ public class NBTManager {
this.plugin = pl;
}
- //commandpanel item NBT
- public boolean hasNBT(ItemStack item){
- NBTItem nbti = new NBTItem(item);
- return nbti.hasTag("CommandPanelsItem");
+ public boolean hasSameNBT(ItemStack one, ItemStack two){
+ NBTItem nbtitem1 = new NBTItem(one);
+ NBTItem nbtitem2 = new NBTItem(two);
+
+ return nbtitem1.equals(nbtitem2);
}
- public ItemStack setNBT(ItemStack item){
- NBT.modify(item, nbt -> {
- nbt.setString("CommandPanelsItem", "1");
- });
- return item;
- }
-
- //custom key NBT
- public String getNBT(ItemStack item, String key){
- NBTItem nbti = new NBTItem(item);
- if(!nbti.hasNBTData()) return "";
- return nbti.getString(key);
- }
-
- public ItemStack setNBT(ItemStack item, String key, String value){
+ public ItemStack setData(ItemStack item, String key, String value){
NBT.modify(item, nbt -> {
nbt.setString(key, value);
});
return item;
}
-}
+
+ public boolean hasData(ItemStack item, String key){
+ NBTItem nbti = new NBTItem(item);
+ return nbti.hasTag(key);
+ }
+
+ public String getData(ItemStack item, String key){
+ NBTItem nbti = new NBTItem(item);
+ if(!nbti.hasNBTData()) return "";
+ return nbti.getString(key);
+ }
+}
\ 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 a7aa57b..23ccefe 100644
--- a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java
+++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java
@@ -141,7 +141,7 @@ public class OpenGUI {
empty = plugin.itemCreate.makeItemFromConfig(panel,position,pconfig.getConfigurationSection("custom-item." + pconfig.getString("empty")),p,true,true,true);
}else{
empty = new ItemStack(Objects.requireNonNull(Material.matchMaterial(pconfig.getString("empty").toUpperCase())), 1,id);
- empty = plugin.nbt.setNBT(empty);
+ empty = plugin.nbt.setData(empty, "CommandPanelsItem", "true");
ItemMeta renamedMeta = empty.getItemMeta();
assert renamedMeta != null;
renamedMeta.setDisplayName(" ");
@@ -175,7 +175,7 @@ public class OpenGUI {
} else if (openType == PanelOpenType.Refresh) {
//openType 0 will just refresh the panel
if(position == PanelPosition.Top) {
- plugin.legacy.setStorageContents(p, plugin.legacy.getStorageContents(i));
+ p.getOpenInventory().getTopInventory().setContents(i.getContents());
}
} else if (openType == PanelOpenType.Return) {
//will return the inventory, not opening it at all
diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java
index 930a213..3e55ea1 100644
--- a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java
+++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java
@@ -130,9 +130,9 @@ public class OpenPanelsLoader {
}
}
- public boolean isNBTInjected(ItemStack itm){
+ public boolean isContainerInjected(ItemStack itm){
if(itm != null){
- return plugin.nbt.hasNBT(itm);
+ return plugin.nbt.hasData(itm,"CommandPanelsItem");
}
return false;
}
diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java
index 2a6fc9d..759baaf 100644
--- a/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java
+++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java
@@ -32,7 +32,7 @@ public class UtilsPanelsLoader implements Listener {
p.updateInventory();
for(ItemStack itm : p.getInventory().getContents()){
if(itm != null){
- if (plugin.nbt.hasNBT(itm)) {
+ if (plugin.nbt.hasData(itm, "CommandPanelsItem")) {
p.getInventory().remove(itm);
}
}
@@ -93,7 +93,7 @@ public class UtilsPanelsLoader implements Listener {
Player p = (Player)e.getWhoClicked();
if(!plugin.openPanels.hasPanelOpen(p.getName(),PanelPosition.Top)){
for(ItemStack itm : p.getInventory().getContents()){
- if(plugin.openPanels.isNBTInjected(itm)){
+ if(plugin.openPanels.isContainerInjected(itm)){
p.getInventory().remove(itm);
}
}
diff --git a/src/me/rockyhawk/commandpanels/openwithitem/HotbarItemLoader.java b/src/me/rockyhawk/commandpanels/openwithitem/HotbarItemLoader.java
index 035a941..678fcad 100644
--- a/src/me/rockyhawk/commandpanels/openwithitem/HotbarItemLoader.java
+++ b/src/me/rockyhawk/commandpanels/openwithitem/HotbarItemLoader.java
@@ -36,7 +36,7 @@ public class HotbarItemLoader {
if(stationaryItems.get(p.getUniqueId()).list.containsKey(String.valueOf(slot))){
if(openPanel) {
try {
- if (!plugin.nbt.getNBT(p.getInventory().getItem(slot), "CommandPanelsHotbar").split(":")[1].equals(String.valueOf(slot))) {
+ if (!plugin.nbt.getData(p.getInventory().getItem(slot), "CommandPanelsHotbar").split(":")[1].equals(String.valueOf(slot))) {
return false;
}
}catch(Exception ex){
@@ -64,7 +64,7 @@ public class HotbarItemLoader {
//return true if found
public boolean itemCheckExecute(ItemStack invItem, Player p, boolean openPanel, boolean stationaryOnly){
try {
- if (Objects.equals(plugin.nbt.getNBT(invItem, "CommandPanelsHotbar"), "")) {
+ if (Objects.equals(plugin.nbt.getData(invItem, "CommandPanelsHotbar"), "")) {
return false;
}
}catch(IllegalArgumentException | NullPointerException nu){
@@ -73,13 +73,13 @@ public class HotbarItemLoader {
for(Panel panel : plugin.panelList) {
if(stationaryOnly){
try {
- if (plugin.nbt.getNBT(invItem, "CommandPanelsHotbar").split(":")[1].equals("-1")) {
+ if (plugin.nbt.getData(invItem, "CommandPanelsHotbar").split(":")[1].equals("-1")) {
continue;
}
}catch(NullPointerException | IllegalArgumentException ignore){}
}
if(panel.hasHotbarItem()){
- if(plugin.nbt.getNBT(invItem,"CommandPanelsHotbar").split(":")[0].equals(panel.getName())){
+ if(plugin.nbt.getData(invItem,"CommandPanelsHotbar").split(":")[0].equals(panel.getName())){
if(openPanel) {
//only open panel automatically if there are no commands and if world is not disabled
if(!plugin.panelPerms.isPanelWorldEnabled(p,panel.getConfig())){
@@ -120,9 +120,9 @@ public class HotbarItemLoader {
stationaryItems.put(p.getUniqueId(),new HotbarPlayerManager());
for(int i = 0; i <= 35; i++){
try {
- if (!Objects.equals(plugin.nbt.getNBT(p.getInventory().getItem(i), "CommandPanelsHotbar"), "")) {
+ if (!Objects.equals(plugin.nbt.getData(p.getInventory().getItem(i), "CommandPanelsHotbar"), "")) {
//do not remove items that are not stationary
- if(!plugin.nbt.getNBT(p.getInventory().getItem(i), "CommandPanelsHotbar").endsWith("-1")) {
+ if(!plugin.nbt.getData(p.getInventory().getItem(i), "CommandPanelsHotbar").endsWith("-1")) {
p.getInventory().setItem(i, new ItemStack(Material.AIR));
}
}
diff --git a/src/me/rockyhawk/commandpanels/openwithitem/UtilsOpenWithItem.java b/src/me/rockyhawk/commandpanels/openwithitem/UtilsOpenWithItem.java
index 571ed02..e159e7b 100644
--- a/src/me/rockyhawk/commandpanels/openwithitem/UtilsOpenWithItem.java
+++ b/src/me/rockyhawk/commandpanels/openwithitem/UtilsOpenWithItem.java
@@ -1,8 +1,6 @@
package me.rockyhawk.commandpanels.openwithitem;
import me.rockyhawk.commandpanels.CommandPanels;
-import me.rockyhawk.commandpanels.ioclasses.GetItemInHand;
-import me.rockyhawk.commandpanels.ioclasses.GetItemInHand_Legacy;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -110,17 +108,15 @@ public class UtilsOpenWithItem implements Listener {
try {
for (ItemStack s : new ArrayList<>(e.getDrops())) {
try {
- if (!plugin.nbt.getNBT(s, "CommandPanelsHotbar").isEmpty()) {
+ if (!plugin.nbt.getData(s, "CommandPanelsHotbar").isEmpty()) {
//do not remove items that are not stationary
- if (!plugin.nbt.getNBT(s, "CommandPanelsHotbar").endsWith("-1")) {
+ if (!plugin.nbt.getData(s, "CommandPanelsHotbar").endsWith("-1")) {
e.getDrops().remove(s);
}
}
} catch (NullPointerException | IllegalArgumentException ignore) {}
}
- }catch (NullPointerException ignore){
- System.out.println("crapped out");
- }
+ }catch (NullPointerException ignore){}
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e){
@@ -152,11 +148,7 @@ public class UtilsOpenWithItem implements Listener {
//cancel everything if holding item (item frames eg)
Player p = e.getPlayer();
ItemStack clicked;
- if(Bukkit.getVersion().contains("1.8")){
- clicked = new GetItemInHand_Legacy(plugin).itemInHand(p);
- }else{
- clicked = new GetItemInHand(plugin).itemInHand(p);
- }
+ clicked = p.getInventory().getItemInMainHand();
if(plugin.hotbar.itemCheckExecute(clicked,p,true,false)){
e.setCancelled(true);
p.updateInventory();
diff --git a/src/me/rockyhawk/commandpanels/updater/Updater.java b/src/me/rockyhawk/commandpanels/updater/Updater.java
index 88a84d8..30aa7de 100644
--- a/src/me/rockyhawk/commandpanels/updater/Updater.java
+++ b/src/me/rockyhawk/commandpanels/updater/Updater.java
@@ -104,7 +104,7 @@ public class Updater implements Listener {
}
//the pluginFileName can only be obtained from the main class
- public void autoUpdatePlugin(String pluginFileName){
+ public void updatePlugin(String pluginFileName){
if (Objects.requireNonNull(plugin.config.getString("updater.update-checks")).equalsIgnoreCase("false")) {
return;
}
@@ -113,23 +113,20 @@ public class Updater implements Listener {
String thisVersion = plugin.getDescription().getVersion();
//manual download, only if it was requested
- if(downloadVersionManually != null) {
- if (downloadVersionManually.equals("latest")) {
- downloadFile(latestVersion, pluginFileName);
- }else{
- downloadFile(downloadVersionManually, pluginFileName);
- }
+ if(downloadVersionManually == null) {
return;
}
+ if (downloadVersionManually.equals("latest")) {
+ downloadFile(latestVersion, pluginFileName);
+ }else{
+ downloadFile(downloadVersionManually, pluginFileName);
+ }
+
if(latestVersion.equals(thisVersion) || thisVersion.contains("-")){
//no need to update or running custom version
return;
}
- if (Objects.requireNonNull(plugin.config.getString("updater.auto-update")).equalsIgnoreCase("false")) {
- //return if auto-update is false
- return;
- }
if(thisVersion.split("\\.")[1].equals(latestVersion.split("\\.")[1]) && thisVersion.split("\\.")[0].equals(latestVersion.split("\\.")[0])){
//only update if the latest version is a minor update
//the first and second number of the version is the same, updates: [major.major.minor.minor]