diff --git a/pom.xml b/pom.xml
index 9509933..9a9eb72 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,7 @@
org.spigotmc
spigot-api
- 1.19.3-R0.1-SNAPSHOT
+ 1.20-R0.1-SNAPSHOT
provided
diff --git a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
index ee54fa1..86da351 100644
--- a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
+++ b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java
@@ -14,12 +14,16 @@ 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.enchantments.EnchantmentTarget;
import org.bukkit.enchantments.EnchantmentWrapper;
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.*;
+import org.bukkit.inventory.meta.trim.ArmorTrim;
+import org.bukkit.inventory.meta.trim.TrimMaterial;
+import org.bukkit.inventory.meta.trim.TrimPattern;
import org.bukkit.map.MapCanvas;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
@@ -28,10 +32,7 @@ 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;
+import java.util.*;
import java.util.stream.Collectors;
public class ItemCreation {
@@ -343,6 +344,29 @@ public class ItemCreation {
s = plugin.nbt.setNBT(s,key,itemSection.getString("nbt." + key));
}
}
+ // 1.20 Trim Feature for Player Armor
+ if(plugin.legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20) && itemSection.contains("trim")){
+ // trim:
+ String trim = itemSection.getString("trim");
+ String[] trimList = trim.split("\\s");
+ if(trimList.length == 2){
+ String trimMaterialString = trimList[0].toLowerCase();
+ String trimPatternString = trimList[1].toLowerCase();
+
+ // Check if Material and Pattern are valid and the itemstack is an armor piece
+ if(isTrimMaterial(trimMaterialString) && isTrimPattern(trimPatternString) && isArmor(s)){
+
+ // Getting the correct Pattern and Material - Seems to be experimental this way
+ // Material and Pattern don't have a valueOf-function to get them the easier way.
+ TrimMaterial trimMaterial = Registry.TRIM_MATERIAL.get(Objects.requireNonNull(NamespacedKey.fromString("minecraft:" + trimMaterialString)));
+ TrimPattern trimPattern = Registry.TRIM_PATTERN.get(Objects.requireNonNull(NamespacedKey.fromString("minecraft:" + trimPatternString)));
+
+ ArmorMeta armorMeta = (ArmorMeta) s.getItemMeta();
+ armorMeta.setTrim(new ArmorTrim(trimMaterial, trimPattern));
+ s.setItemMeta(armorMeta);
+ }
+ }
+ }
if (itemSection.contains("stack")) {
//change the stack amount (placeholders accepted)
s.setAmount((int)Double.parseDouble(Objects.requireNonNull(plugin.tex.placeholders(panel,position,p,itemSection.getString("stack")))));
@@ -513,4 +537,20 @@ public class ItemCreation {
}
return true;
}
+
+ private boolean isTrimMaterial(String material){
+ List availableMaterial = Arrays.asList("AMETHYST",
+ "COPPER", "DIAMOND", "EMERALD", "GOLD", "IRON","LAPIS", "NETHERITE", "QUARTZ", "REDSTONE");
+ return availableMaterial.contains(material.toUpperCase());
+ }
+
+ private boolean isTrimPattern(String pattern){
+ List availablePattern = Arrays.asList("COAST",
+ "DUNE", "EYE", "HOST", "RAISER", "RIB","SENTRY", "SHAPER", "SILENCE", "SNOUT", "SPIRE", "TIDE","VEX", "WARD", "WAYFINDER", "WILD");
+ return availablePattern.contains(pattern.toUpperCase());
+ }
+
+ private boolean isArmor(ItemStack stack){
+ return EnchantmentTarget.ARMOR.includes(stack);
+ }
}
diff --git a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
index 629671c..df69be8 100644
--- a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
+++ b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
@@ -1,6 +1,6 @@
package me.rockyhawk.commandpanels.classresources.placeholders;
-import com.bencodez.votingplugin.user.UserManager;
+import com.bencodez.votingplugin.VotingPluginHooks;
import com.earth2me.essentials.Essentials;
import me.realized.tokenmanager.api.TokenManager;
import me.rockyhawk.commandpanels.CommandPanels;
@@ -378,7 +378,7 @@ public class Placeholders {
}
if (plugin.getServer().getPluginManager().isPluginEnabled("VotingPlugin")) {
if(identifier.equals("votingplugin-points")) {
- return String.valueOf(UserManager.getInstance().getVotingPluginUser(p).getPoints());
+ return String.valueOf(VotingPluginHooks.getInstance().getUserManager().getVotingPluginUser(p).getPoints());
}
}
//end nodes with PlaceHolders