Skip to content

Commit e086064

Browse files
0ff1JRoy
andauthored
Adds support for armor trims inside kits (#6155)
ref #5799 --------- Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
1 parent 364c879 commit e086064

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.bukkit.block.Banner;
2121
import org.bukkit.block.banner.PatternType;
2222
import org.bukkit.enchantments.Enchantment;
23+
import org.bukkit.Registry;
24+
import org.bukkit.NamespacedKey;
2325
import org.bukkit.inventory.ItemFlag;
2426
import org.bukkit.inventory.ItemStack;
2527
import org.bukkit.inventory.meta.BannerMeta;
@@ -32,6 +34,10 @@
3234
import org.bukkit.inventory.meta.LeatherArmorMeta;
3335
import org.bukkit.inventory.meta.PotionMeta;
3436
import org.bukkit.inventory.meta.SkullMeta;
37+
import org.bukkit.inventory.meta.ArmorMeta;
38+
import org.bukkit.inventory.meta.trim.ArmorTrim;
39+
import org.bukkit.inventory.meta.trim.TrimMaterial;
40+
import org.bukkit.inventory.meta.trim.TrimPattern;
3541
import org.bukkit.potion.PotionEffect;
3642
import org.bukkit.potion.PotionEffectType;
3743

@@ -343,6 +349,15 @@ public void addStringMeta(final CommandSource sender, final boolean allowUnsafe,
343349
} else {
344350
throw new TranslatableException("leatherSyntax");
345351
}
352+
} else if (MaterialUtil.isArmor(stack.getType()) && split.length > 1 && split[0].equalsIgnoreCase("trim")) {
353+
final ArmorMeta armorMeta = (ArmorMeta) stack.getItemMeta();
354+
final String[] trimData = split[1].split("\\|");
355+
final TrimPattern pattern = Registry.TRIM_PATTERN.getOrThrow(NamespacedKey.minecraft(trimData[0].toLowerCase()));
356+
final TrimMaterial material = Registry.TRIM_MATERIAL.getOrThrow(NamespacedKey.minecraft(trimData[1].toLowerCase()));
357+
358+
armorMeta.setTrim(new ArmorTrim(material, pattern));
359+
360+
stack.setItemMeta(armorMeta);
346361
} else {
347362
parseEnchantmentStrings(sender, allowUnsafe, split, ess);
348363
}

Essentials/src/main/java/com/earth2me/essentials/items/AbstractItemDb.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.bukkit.inventory.meta.ItemMeta;
2929
import org.bukkit.inventory.meta.LeatherArmorMeta;
3030
import org.bukkit.inventory.meta.SkullMeta;
31+
import org.bukkit.inventory.meta.ArmorMeta;
32+
import org.bukkit.inventory.meta.trim.ArmorTrim;
3133
import org.bukkit.plugin.Plugin;
3234
import org.bukkit.potion.PotionEffect;
3335

@@ -337,10 +339,21 @@ public String serialize(final ItemStack is, final boolean useResolvers) {
337339
}
338340
}
339341
}
340-
} else if (MaterialUtil.isLeatherArmor(material)) {
341-
final LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) is.getItemMeta();
342-
final int rgb = leatherArmorMeta.getColor().asRGB();
343-
sb.append("color:").append(rgb).append(" ");
342+
} else if (MaterialUtil.isArmor(material)) {
343+
final ArmorTrim armorTrim = ((ArmorMeta) is.getItemMeta()).getTrim();
344+
345+
if (armorTrim != null) {
346+
final String trimPattern = armorTrim.getPattern().getKey().getKey();
347+
final String trimMaterial = armorTrim.getMaterial().getKey().getKey();
348+
349+
sb.append("trim:").append(trimPattern).append("|").append(trimMaterial).append(" ");
350+
}
351+
352+
if (MaterialUtil.isLeatherArmor(material)) {
353+
final LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) is.getItemMeta();
354+
final int rgb = leatherArmorMeta.getColor().asRGB();
355+
sb.append("color:").append(rgb).append(" ");
356+
}
344357
}
345358

346359
return sb.toString().trim().replaceAll("§", "&");

Essentials/src/main/java/com/earth2me/essentials/utils/MaterialUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ public static boolean isBoots(final Material material) {
130130
return BOOTS.contains(material);
131131
}
132132

133+
public static boolean isArmor(final Material material) {
134+
return isHelmet(material) || isChestplate(material) || isLeggings(material) || isBoots(material);
135+
}
136+
133137
public static boolean isBed(final Material material) {
134138
return BEDS.contains(material);
135139
}

0 commit comments

Comments
 (0)