mirror of
https://github.com/Auxilor/EcoArmor.git
synced 2025-12-27 02:49:22 +00:00
Improved consistency
This commit is contained in:
@@ -5,7 +5,6 @@ import com.willfp.eco.core.command.CommandHandler;
|
||||
import com.willfp.eco.core.command.TabCompleteHandler;
|
||||
import com.willfp.eco.core.command.impl.Subcommand;
|
||||
import com.willfp.eco.core.config.updating.ConfigUpdater;
|
||||
import com.willfp.eco.core.display.Display;
|
||||
import com.willfp.ecoarmor.sets.ArmorSet;
|
||||
import com.willfp.ecoarmor.sets.ArmorSets;
|
||||
import com.willfp.ecoarmor.sets.meta.ArmorSlot;
|
||||
@@ -18,7 +17,6 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
@@ -71,12 +69,12 @@ public class CommandGive extends Subcommand {
|
||||
@ConfigUpdater
|
||||
public static void reload() {
|
||||
ITEM_NAMES.clear();
|
||||
ITEM_NAMES.addAll(ArmorSets.values().stream().map(armorSet -> "set:" + armorSet.getName()).collect(Collectors.toList()));
|
||||
ITEM_NAMES.addAll(ArmorSets.values().stream().map(armorSet -> "shard:" + armorSet.getName()).collect(Collectors.toList()));
|
||||
ITEM_NAMES.addAll(Tiers.values().stream().map(crystal -> "crystal:" + crystal.getName()).collect(Collectors.toList()));
|
||||
ITEM_NAMES.addAll(ArmorSets.values().stream().map(armorSet -> "set:" + armorSet.getId()).collect(Collectors.toList()));
|
||||
ITEM_NAMES.addAll(ArmorSets.values().stream().map(armorSet -> "shard:" + armorSet.getId()).collect(Collectors.toList()));
|
||||
ITEM_NAMES.addAll(Tiers.values().stream().map(crystal -> "crystal:" + crystal.getId()).collect(Collectors.toList()));
|
||||
SLOTS.addAll(Arrays.stream(ArmorSlot.values()).map(slot -> slot.name().toLowerCase()).collect(Collectors.toList()));
|
||||
SLOTS.add("full");
|
||||
TIERS.addAll(Tiers.values().stream().map(Tier::getName).collect(Collectors.toList()));
|
||||
TIERS.addAll(Tiers.values().stream().map(Tier::getId).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -119,14 +117,14 @@ public class CommandGive extends Subcommand {
|
||||
int amount = 1;
|
||||
|
||||
if (itemNamespace.equalsIgnoreCase("set")) {
|
||||
ArmorSet set = ArmorSets.getByName(itemKey);
|
||||
ArmorSet set = ArmorSets.getByID(itemKey);
|
||||
if (set == null) {
|
||||
sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-item"));
|
||||
return;
|
||||
}
|
||||
|
||||
String message = this.getPlugin().getLangYml().getMessage("give-success");
|
||||
message = message.replace("%item%", set.getName() + " Set").replace("%recipient%", reciever.getName());
|
||||
message = message.replace("%item%", set.getId() + " Set").replace("%recipient%", reciever.getName());
|
||||
sender.sendMessage(message);
|
||||
|
||||
boolean advanced = false;
|
||||
@@ -159,7 +157,7 @@ public class CommandGive extends Subcommand {
|
||||
}
|
||||
|
||||
if (args.size() >= 5) {
|
||||
tier = Tiers.getByName(args.get(4));
|
||||
tier = Tiers.getByID(args.get(4));
|
||||
}
|
||||
|
||||
if (args.size() >= 6) {
|
||||
@@ -183,7 +181,7 @@ public class CommandGive extends Subcommand {
|
||||
}
|
||||
|
||||
if (itemNamespace.equalsIgnoreCase("crystal")) {
|
||||
Tier tier = Tiers.getByName(itemKey);
|
||||
Tier tier = Tiers.getByID(itemKey);
|
||||
if (tier == null) {
|
||||
sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-item"));
|
||||
return;
|
||||
@@ -204,7 +202,7 @@ public class CommandGive extends Subcommand {
|
||||
}
|
||||
|
||||
if (itemNamespace.equalsIgnoreCase("shard")) {
|
||||
ArmorSet set = ArmorSets.getByName(itemKey);
|
||||
ArmorSet set = ArmorSets.getByID(itemKey);
|
||||
if (set == null) {
|
||||
sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-item"));
|
||||
return;
|
||||
|
||||
@@ -7,10 +7,7 @@ import com.willfp.eco.core.items.CustomItem;
|
||||
import com.willfp.eco.core.items.Items;
|
||||
import com.willfp.eco.core.items.builder.ItemBuilder;
|
||||
import com.willfp.eco.core.items.builder.ItemStackBuilder;
|
||||
import com.willfp.eco.core.items.builder.LeatherArmorBuilder;
|
||||
import com.willfp.eco.core.items.builder.SkullBuilder;
|
||||
import com.willfp.eco.core.recipe.Recipes;
|
||||
import com.willfp.ecoarmor.EcoArmorPlugin;
|
||||
import com.willfp.ecoarmor.sets.meta.ArmorSlot;
|
||||
import com.willfp.ecoarmor.sets.util.ArmorUtils;
|
||||
import com.willfp.ecoarmor.upgrades.Tier;
|
||||
@@ -23,8 +20,6 @@ import com.willfp.libreforge.effects.Effects;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -59,7 +54,7 @@ public class ArmorSet {
|
||||
* The name of the set.
|
||||
*/
|
||||
@Getter
|
||||
private final String name;
|
||||
private final String id;
|
||||
|
||||
/**
|
||||
* The advanced holder.
|
||||
@@ -73,15 +68,6 @@ public class ArmorSet {
|
||||
@Getter
|
||||
private final Holder regularHolder;
|
||||
|
||||
/**
|
||||
* The base64 texture of a skull used as a helmet.
|
||||
* <p>
|
||||
* Null if no skull.
|
||||
*/
|
||||
@Getter
|
||||
@Nullable
|
||||
private String skullBase64;
|
||||
|
||||
/**
|
||||
* Items in set.
|
||||
*/
|
||||
@@ -108,11 +94,11 @@ public class ArmorSet {
|
||||
@NotNull final EcoPlugin plugin) {
|
||||
this.config = config;
|
||||
this.plugin = plugin;
|
||||
this.name = config.getString("name");
|
||||
this.id = config.getString("id");
|
||||
|
||||
Set<ConfiguredCondition> conditions = new HashSet<>();
|
||||
for (Config cfg : this.getConfig().getSubsections("conditions")) {
|
||||
ConfiguredCondition conf = Conditions.compile(cfg, "Armor Set " + this.name);
|
||||
ConfiguredCondition conf = Conditions.compile(cfg, "Armor Set " + this.id);
|
||||
if (conf != null) {
|
||||
conditions.add(conf);
|
||||
}
|
||||
@@ -120,7 +106,7 @@ public class ArmorSet {
|
||||
|
||||
Set<ConfiguredEffect> effects = new HashSet<>();
|
||||
for (Config cfg : this.getConfig().getSubsections("effects")) {
|
||||
ConfiguredEffect conf = Effects.compile(cfg, "Armor Set " + this.name);
|
||||
ConfiguredEffect conf = Effects.compile(cfg, "Armor Set " + this.id);
|
||||
if (conf != null) {
|
||||
effects.add(conf);
|
||||
}
|
||||
@@ -128,7 +114,7 @@ public class ArmorSet {
|
||||
|
||||
Set<ConfiguredEffect> advancedEffects = new HashSet<>();
|
||||
for (Config cfg : this.getConfig().getSubsections("advancedEffects")) {
|
||||
ConfiguredEffect conf = Effects.compile(cfg, "Armor Set " + this.name + " (Advanced)");
|
||||
ConfiguredEffect conf = Effects.compile(cfg, "Armor Set " + this.id + " (Advanced)");
|
||||
if (conf != null) {
|
||||
advancedEffects.add(conf);
|
||||
}
|
||||
@@ -160,18 +146,18 @@ public class ArmorSet {
|
||||
.addEnchantment(Enchantment.DURABILITY, 3)
|
||||
.addItemFlag(ItemFlag.HIDE_ENCHANTS)
|
||||
.addLoreLines(shardLore)
|
||||
.writeMetaKey(this.getPlugin().getNamespacedKeyFactory().create("advancement-shard"), PersistentDataType.STRING, name)
|
||||
.writeMetaKey(this.getPlugin().getNamespacedKeyFactory().create("advancement-shard"), PersistentDataType.STRING, id)
|
||||
.build();
|
||||
|
||||
if (this.getConfig().getBool("shardCraftable")) {
|
||||
Recipes.createAndRegisterRecipe(this.getPlugin(),
|
||||
this.getName() + "_shard",
|
||||
this.getId() + "_shard",
|
||||
shard,
|
||||
this.getConfig().getStrings("shardRecipe"));
|
||||
}
|
||||
|
||||
new CustomItem(
|
||||
this.getPlugin().getNamespacedKeyFactory().create("shard_" + name.toLowerCase()),
|
||||
this.getPlugin().getNamespacedKeyFactory().create("shard_" + id.toLowerCase()),
|
||||
test -> this.equals(ArmorUtils.getShardSet(test)),
|
||||
shard
|
||||
).register();
|
||||
@@ -182,25 +168,8 @@ public class ArmorSet {
|
||||
private ItemStack construct(@NotNull final ArmorSlot slot,
|
||||
@NotNull final Config slotConfig,
|
||||
final boolean advanced) {
|
||||
Material material = Material.getMaterial(slotConfig.getString("material").toUpperCase());
|
||||
|
||||
assert material != null;
|
||||
|
||||
ItemBuilder builder;
|
||||
|
||||
builder = switch (material) {
|
||||
case PLAYER_HEAD -> new SkullBuilder();
|
||||
case LEATHER_HELMET, LEATHER_CHESTPLATE, LEATHER_LEGGINGS, LEATHER_BOOTS -> new LeatherArmorBuilder(material);
|
||||
default -> new ItemStackBuilder(material);
|
||||
};
|
||||
|
||||
builder.setDisplayName(advanced ? slotConfig.getString("advancedName") : slotConfig.getString("name"))
|
||||
.addItemFlag(
|
||||
slotConfig.getStrings("flags").stream()
|
||||
.map(s -> ItemFlag.valueOf(s.toUpperCase()))
|
||||
.toArray(ItemFlag[]::new)
|
||||
)
|
||||
.setUnbreakable(slotConfig.getBool("unbreakable"))
|
||||
ItemBuilder builder = new ItemStackBuilder(Items.lookup(slotConfig.getString("item")).getItem())
|
||||
.setDisplayName(advanced ? slotConfig.getString("advancedName") : slotConfig.getString("name"))
|
||||
.addLoreLines(slotConfig.getStrings("lore").stream().map(s -> Display.PREFIX + s).collect(Collectors.toList()))
|
||||
.addLoreLines(() -> {
|
||||
if (advanced) {
|
||||
@@ -209,43 +178,12 @@ public class ArmorSet {
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.setCustomModelData(() -> {
|
||||
int data = slotConfig.getInt("customModelData");
|
||||
return data != -1 ? data : null;
|
||||
})
|
||||
.setDisplayName(() -> advanced ? slotConfig.getString("advancedName") : slotConfig.getString("name"));
|
||||
|
||||
|
||||
if (builder instanceof SkullBuilder skullBuilder) {
|
||||
this.skullBase64 = slotConfig.getString("skullTexture");
|
||||
skullBuilder.setSkullTexture(skullBase64);
|
||||
}
|
||||
|
||||
if (builder instanceof LeatherArmorBuilder leatherArmorBuilder) {
|
||||
String colorString = slotConfig.getString("leatherColor");
|
||||
java.awt.Color awtColor = java.awt.Color.decode(colorString);
|
||||
leatherArmorBuilder.setColor(awtColor);
|
||||
builder.addItemFlag(ItemFlag.HIDE_DYE);
|
||||
}
|
||||
|
||||
|
||||
Map<Enchantment, Integer> enchants = new HashMap<>();
|
||||
|
||||
for (Config enchantSection : slotConfig.getSubsections("enchants")) {
|
||||
Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(enchantSection.getString("id")));
|
||||
if (enchantment == null) {
|
||||
continue;
|
||||
}
|
||||
int level = enchantSection.getInt("level");
|
||||
enchants.put(enchantment, level);
|
||||
}
|
||||
|
||||
enchants.forEach(builder::addEnchantment);
|
||||
|
||||
builder.writeMetaKey(
|
||||
this.getPlugin().getNamespacedKeyFactory().create("set"),
|
||||
PersistentDataType.STRING,
|
||||
name
|
||||
id
|
||||
).writeMetaKey(
|
||||
this.getPlugin().getNamespacedKeyFactory().create("effective-durability"),
|
||||
PersistentDataType.INTEGER,
|
||||
@@ -255,16 +193,16 @@ public class ArmorSet {
|
||||
ItemStack itemStack = builder.build();
|
||||
|
||||
ArmorUtils.setAdvanced(itemStack, advanced);
|
||||
Tier defaultTier = Tiers.getByName(slotConfig.getString("defaultTier"));
|
||||
Tier defaultTier = Tiers.getByID(slotConfig.getString("defaultTier"));
|
||||
if (defaultTier == null) {
|
||||
Bukkit.getLogger().warning("Default tier specified in " + this.name + " " + slot.name().toLowerCase() + " is invalid! Defaulting to 'default'");
|
||||
Bukkit.getLogger().warning("Default tier specified in " + this.id + " " + slot.name().toLowerCase() + " is invalid! Defaulting to 'default'");
|
||||
ArmorUtils.setTier(itemStack, Tiers.getDefaultTier());
|
||||
} else {
|
||||
ArmorUtils.setTier(itemStack, defaultTier);
|
||||
}
|
||||
|
||||
if (advanced) {
|
||||
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("set_" + name.toLowerCase() + "_" + slot.name().toLowerCase() + "_advanced"), test -> {
|
||||
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("set_" + id.toLowerCase() + "_" + slot.name().toLowerCase() + "_advanced"), test -> {
|
||||
if (ArmorSlot.getSlot(test) != ArmorSlot.getSlot(itemStack)) {
|
||||
return false;
|
||||
}
|
||||
@@ -278,7 +216,7 @@ public class ArmorSet {
|
||||
return Objects.equals(this, ArmorUtils.getSetOnItem(test));
|
||||
}, itemStack).register();
|
||||
} else {
|
||||
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("set_" + name.toLowerCase() + "_" + slot.name().toLowerCase()), test -> {
|
||||
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("set_" + id.toLowerCase() + "_" + slot.name().toLowerCase()), test -> {
|
||||
if (ArmorSlot.getSlot(test) != ArmorSlot.getSlot(itemStack)) {
|
||||
return false;
|
||||
}
|
||||
@@ -317,7 +255,7 @@ public class ArmorSet {
|
||||
|
||||
Recipes.createAndRegisterRecipe(
|
||||
this.getPlugin(),
|
||||
this.getName() + "_" + slot.name().toLowerCase(),
|
||||
this.getId() + "_" + slot.name().toLowerCase(),
|
||||
formattedOut,
|
||||
slotConfig.getStrings("recipe")
|
||||
);
|
||||
@@ -352,8 +290,8 @@ public class ArmorSet {
|
||||
*/
|
||||
public Tier getDefaultTier(@Nullable final ArmorSlot slot) {
|
||||
if (slot == null) return Tiers.getDefaultTier();
|
||||
Tier tier = Tiers.getByName(this.config.getSubsection(slot.name().toLowerCase()).getString("defaultTier"));
|
||||
return tier != null ? tier: Tiers.getDefaultTier();
|
||||
Tier tier = Tiers.getByID(this.config.getSubsection(slot.name().toLowerCase()).getString("defaultTier"));
|
||||
return tier != null ? tier : Tiers.getDefaultTier();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -366,18 +304,18 @@ public class ArmorSet {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.name.equals(set.name);
|
||||
return this.id.equals(set.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.name);
|
||||
return Objects.hash(this.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ArmorSet{"
|
||||
+ this.name
|
||||
+ this.id
|
||||
+ "}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class ArmorSets {
|
||||
/**
|
||||
* Registered armor sets.
|
||||
*/
|
||||
private static final BiMap<String, ArmorSet> BY_NAME = HashBiMap.create();
|
||||
private static final BiMap<String, ArmorSet> BY_ID = HashBiMap.create();
|
||||
|
||||
/**
|
||||
* Get all registered {@link ArmorSet}s.
|
||||
@@ -26,18 +26,18 @@ public class ArmorSets {
|
||||
* @return A list of all {@link ArmorSet}s.
|
||||
*/
|
||||
public static List<ArmorSet> values() {
|
||||
return ImmutableList.copyOf(BY_NAME.values());
|
||||
return ImmutableList.copyOf(BY_ID.values());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get {@link ArmorSet} matching name.
|
||||
* Get {@link ArmorSet} matching ID.
|
||||
*
|
||||
* @param name The name to search for.
|
||||
* @return The matching {@link ArmorSet}, or null if not found.
|
||||
*/
|
||||
@Nullable
|
||||
public static ArmorSet getByName(@NotNull final String name) {
|
||||
return BY_NAME.get(name);
|
||||
public static ArmorSet getByID(@NotNull final String name) {
|
||||
return BY_ID.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,8 +62,8 @@ public class ArmorSets {
|
||||
* @param set The {@link ArmorSet} to add.
|
||||
*/
|
||||
public static void addNewSet(@NotNull final ArmorSet set) {
|
||||
BY_NAME.remove(set.getName());
|
||||
BY_NAME.put(set.getName(), set);
|
||||
BY_ID.remove(set.getId());
|
||||
BY_ID.put(set.getId(), set);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,6 +72,6 @@ public class ArmorSets {
|
||||
* @param set The {@link ArmorSet} to remove.
|
||||
*/
|
||||
public static void removeSet(@NotNull final ArmorSet set) {
|
||||
BY_NAME.remove(set.getName());
|
||||
BY_ID.remove(set.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class ArmorUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
return ArmorSets.getByName(setName);
|
||||
return ArmorSets.getByID(setName);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,7 +151,7 @@ public class ArmorUtils {
|
||||
@Nullable
|
||||
public static Tier getCrystalTier(@NotNull final ItemMeta meta) {
|
||||
if (meta.getPersistentDataContainer().has(PLUGIN.getNamespacedKeyFactory().create("upgrade_crystal"), PersistentDataType.STRING)) {
|
||||
return Tiers.getByName(meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("upgrade_crystal"), PersistentDataType.STRING));
|
||||
return Tiers.getByID(meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("upgrade_crystal"), PersistentDataType.STRING));
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -194,7 +194,7 @@ public class ArmorUtils {
|
||||
}
|
||||
|
||||
if (meta.getPersistentDataContainer().has(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING)) {
|
||||
return Tiers.getByName(meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING));
|
||||
return Tiers.getByID(meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING));
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -218,7 +218,7 @@ public class ArmorUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
meta.getPersistentDataContainer().set(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING, tier.getName());
|
||||
meta.getPersistentDataContainer().set(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING, tier.getId());
|
||||
|
||||
ArmorSlot slot = ArmorSlot.getSlot(itemStack);
|
||||
|
||||
@@ -391,6 +391,6 @@ public class ArmorUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
return ArmorSets.getByName(shardSet);
|
||||
return ArmorSets.getByID(shardSet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
* The tier name.
|
||||
*/
|
||||
@Getter
|
||||
private final String name;
|
||||
private final String id;
|
||||
|
||||
/**
|
||||
* The config of the crystal.
|
||||
@@ -84,7 +84,7 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
public Tier(@NotNull final Config config,
|
||||
@NotNull final EcoPlugin plugin) {
|
||||
super(plugin);
|
||||
this.name = config.getString("name");
|
||||
this.id = config.getString("id");
|
||||
this.config = config;
|
||||
|
||||
Tiers.addNewTier(this);
|
||||
@@ -104,7 +104,7 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
ItemMeta outMeta = out.getItemMeta();
|
||||
assert outMeta != null;
|
||||
PersistentDataContainer container = outMeta.getPersistentDataContainer();
|
||||
container.set(key, PersistentDataType.STRING, name);
|
||||
container.set(key, PersistentDataType.STRING, id);
|
||||
|
||||
outMeta.setDisplayName(this.getConfig().getString("crystal.name"));
|
||||
|
||||
@@ -131,7 +131,7 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
}
|
||||
|
||||
new CustomItem(
|
||||
this.getPlugin().getNamespacedKeyFactory().create("crystal_" + name.toLowerCase()),
|
||||
this.getPlugin().getNamespacedKeyFactory().create("crystal_" + id.toLowerCase()),
|
||||
test -> this.equals(ArmorUtils.getCrystalTier(test)),
|
||||
out
|
||||
).register();
|
||||
@@ -139,12 +139,12 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
if (this.isCraftable()) {
|
||||
ItemStack recipeOut = out.clone();
|
||||
recipeOut.setAmount(this.getConfig().getInt("crystal.giveAmount"));
|
||||
ShapedCraftingRecipe.Builder builder = ShapedCraftingRecipe.builder(this.getPlugin(), "upgrade_crystal_" + name)
|
||||
ShapedCraftingRecipe.Builder builder = ShapedCraftingRecipe.builder(this.getPlugin(), "upgrade_crystal_" + id)
|
||||
.setOutput(recipeOut);
|
||||
|
||||
List<String> recipeStrings = this.getConfig().getStrings("crystal.recipe");
|
||||
|
||||
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("upgrade_crystal_" + name), test -> {
|
||||
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("upgrade_crystal_" + id), test -> {
|
||||
if (test == null) {
|
||||
return false;
|
||||
}
|
||||
@@ -169,7 +169,7 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
* @return The tiers, or a blank list if always available.
|
||||
*/
|
||||
public List<Tier> getRequiredTiersForApplication() {
|
||||
return requiredTiersForApplication.stream().map(Tiers::getByName).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
return requiredTiersForApplication.stream().map(Tiers::getByID).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -182,11 +182,11 @@ public class Tier extends PluginDependent<EcoPlugin> {
|
||||
}
|
||||
|
||||
Tier tier = (Tier) o;
|
||||
return Objects.equals(getName(), tier.getName());
|
||||
return Objects.equals(this.getId(), tier.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getName());
|
||||
return Objects.hash(this.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class Tiers {
|
||||
/**
|
||||
* Registered tiers.
|
||||
*/
|
||||
private static final BiMap<String, Tier> BY_NAME = HashBiMap.create();
|
||||
private static final BiMap<String, Tier> BY_ID = HashBiMap.create();
|
||||
|
||||
/**
|
||||
* Default tier.
|
||||
@@ -27,14 +27,14 @@ public class Tiers {
|
||||
private static Tier defaultTier;
|
||||
|
||||
/**
|
||||
* Get {@link Tiers} matching name.
|
||||
* Get {@link Tiers} matching ID.
|
||||
*
|
||||
* @param name The name to search for.
|
||||
* @return The matching {@link Tiers}, or null if not found.
|
||||
*/
|
||||
@Nullable
|
||||
public static Tier getByName(@Nullable final String name) {
|
||||
return BY_NAME.get(name);
|
||||
public static Tier getByID(@Nullable final String name) {
|
||||
return BY_ID.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -43,7 +43,7 @@ public class Tiers {
|
||||
* @return A list of all {@link Tiers}s.
|
||||
*/
|
||||
public static List<Tier> values() {
|
||||
return ImmutableList.copyOf(BY_NAME.values());
|
||||
return ImmutableList.copyOf(BY_ID.values());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,8 +52,8 @@ public class Tiers {
|
||||
* @param tier The {@link Tier} to add.
|
||||
*/
|
||||
public static void addNewTier(@NotNull final Tier tier) {
|
||||
BY_NAME.remove(tier.getName());
|
||||
BY_NAME.put(tier.getName(), tier);
|
||||
BY_ID.remove(tier.getId());
|
||||
BY_ID.put(tier.getId(), tier);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -63,13 +63,13 @@ public class Tiers {
|
||||
*/
|
||||
@ConfigUpdater
|
||||
public static void reload(@NotNull final EcoArmorPlugin plugin) {
|
||||
BY_NAME.clear();
|
||||
BY_ID.clear();
|
||||
|
||||
for (Config tierConfig : plugin.getEcoArmorYml().getSubsections("tiers")) {
|
||||
new Tier(tierConfig, plugin);
|
||||
}
|
||||
|
||||
defaultTier = Tiers.getByName("default");
|
||||
defaultTier = Tiers.getByID("default");
|
||||
}
|
||||
|
||||
static {
|
||||
|
||||
@@ -62,7 +62,7 @@ public class AdvancementShardListener extends PluginDependent<EcoPlugin> impleme
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ArmorSets.getByName(shardSet).getName().equals(set.getName())) {
|
||||
if (!ArmorSets.getByID(shardSet).getId().equals(set.getId())) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,106 +1,70 @@
|
||||
package com.willfp.ecoarmor.display;
|
||||
package com.willfp.ecoarmor.display
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import com.willfp.eco.core.display.DisplayModule;
|
||||
import com.willfp.eco.core.display.DisplayPriority;
|
||||
import com.willfp.eco.core.fast.FastItemStack;
|
||||
import com.willfp.eco.util.SkullUtils;
|
||||
import com.willfp.ecoarmor.sets.ArmorSet;
|
||||
import com.willfp.ecoarmor.sets.meta.ArmorSlot;
|
||||
import com.willfp.ecoarmor.sets.util.ArmorUtils;
|
||||
import com.willfp.ecoarmor.upgrades.Tier;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.display.DisplayModule
|
||||
import com.willfp.eco.core.display.DisplayPriority
|
||||
import com.willfp.eco.core.fast.FastItemStack
|
||||
import com.willfp.ecoarmor.sets.meta.ArmorSlot
|
||||
import com.willfp.ecoarmor.sets.util.ArmorUtils
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
class ArmorDisplay(plugin: EcoPlugin) : DisplayModule(plugin, DisplayPriority.LOWEST) {
|
||||
override fun display(
|
||||
itemStack: ItemStack,
|
||||
vararg args: Any
|
||||
) {
|
||||
val meta = itemStack.itemMeta ?: return
|
||||
|
||||
public class ArmorDisplay extends DisplayModule {
|
||||
/**
|
||||
* Create armor display.
|
||||
*
|
||||
* @param plugin Instance of EcoArmor.
|
||||
*/
|
||||
public ArmorDisplay(@NotNull final EcoPlugin plugin) {
|
||||
super(plugin, DisplayPriority.LOWEST);
|
||||
}
|
||||
val fis = FastItemStack.wrap(itemStack)
|
||||
|
||||
@Override
|
||||
public void display(@NotNull final ItemStack itemStack,
|
||||
@NotNull final Object... args) {
|
||||
ItemMeta meta = itemStack.getItemMeta();
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
FastItemStack fis = FastItemStack.wrap(itemStack);
|
||||
|
||||
ArmorSet set = ArmorUtils.getSetOnItem(meta);
|
||||
val set = ArmorUtils.getSetOnItem(meta)
|
||||
|
||||
if (set == null) {
|
||||
Tier crystalTier = ArmorUtils.getCrystalTier(meta);
|
||||
val crystalTier = ArmorUtils.getCrystalTier(meta)
|
||||
|
||||
if (crystalTier != null) {
|
||||
List<String> lore = fis.getLore();
|
||||
lore.addAll(FastItemStack.wrap(crystalTier.getCrystal()).getLore());
|
||||
fis.setLore(lore);
|
||||
val lore = fis.lore
|
||||
lore.addAll(FastItemStack.wrap(crystalTier.crystal).lore)
|
||||
fis.lore = lore
|
||||
}
|
||||
|
||||
ArmorSet shardSet = ArmorUtils.getShardSet(meta);
|
||||
val shardSet = ArmorUtils.getShardSet(meta)
|
||||
|
||||
if (shardSet != null) {
|
||||
List<String> lore = fis.getLore();
|
||||
lore.addAll(FastItemStack.wrap(shardSet.getAdvancementShardItem()).getLore());
|
||||
|
||||
itemStack.setItemMeta(shardSet.getAdvancementShardItem().getItemMeta());
|
||||
FastItemStack.wrap(itemStack).setLore(lore);
|
||||
val lore = fis.lore
|
||||
lore.addAll(FastItemStack.wrap(shardSet.advancementShardItem).lore)
|
||||
itemStack.itemMeta = shardSet.advancementShardItem.itemMeta
|
||||
FastItemStack.wrap(itemStack).lore = lore
|
||||
}
|
||||
|
||||
return;
|
||||
return
|
||||
}
|
||||
|
||||
ArmorSlot slot = ArmorSlot.getSlot(itemStack);
|
||||
if (slot == null) {
|
||||
return;
|
||||
}
|
||||
val slot = ArmorSlot.getSlot(itemStack) ?: return
|
||||
|
||||
ItemStack slotStack;
|
||||
|
||||
if (ArmorUtils.isAdvanced(meta)) {
|
||||
slotStack = set.getAdvancedItemStack(slot);
|
||||
val slotStack: ItemStack = if (ArmorUtils.isAdvanced(meta)) {
|
||||
set.getAdvancedItemStack(slot)
|
||||
} else {
|
||||
slotStack = set.getItemStack(slot);
|
||||
set.getItemStack(slot)
|
||||
}
|
||||
ItemMeta slotMeta = slotStack.getItemMeta();
|
||||
assert slotMeta != null;
|
||||
|
||||
Tier tier = ArmorUtils.getTier(meta);
|
||||
val slotMeta = slotStack.itemMeta ?: return
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
|
||||
for (String s : FastItemStack.wrap(slotStack).getLore()) {
|
||||
s = s.replace("%tier%", tier.getDisplayName());
|
||||
lore.add(s);
|
||||
}
|
||||
val tier = ArmorUtils.getTier(meta) ?: return
|
||||
val lore = FastItemStack.wrap(slotStack).lore.map { it.replace("%tier%", tier.displayName) }.toMutableList()
|
||||
|
||||
if (meta.hasLore()) {
|
||||
lore.addAll(fis.getLore());
|
||||
}
|
||||
meta.setDisplayName(slotMeta.getDisplayName());
|
||||
|
||||
if (meta instanceof SkullMeta && slotMeta instanceof SkullMeta) {
|
||||
if (set.getSkullBase64() != null) {
|
||||
SkullUtils.setSkullTexture((SkullMeta) meta, set.getSkullBase64());
|
||||
}
|
||||
lore.addAll(fis.lore)
|
||||
}
|
||||
|
||||
if (meta instanceof LeatherArmorMeta && slotMeta instanceof LeatherArmorMeta) {
|
||||
((LeatherArmorMeta) meta).setColor(((LeatherArmorMeta) slotMeta).getColor());
|
||||
meta.setDisplayName(slotMeta.displayName)
|
||||
|
||||
if (meta is LeatherArmorMeta && slotMeta is LeatherArmorMeta) {
|
||||
meta.setColor(slotMeta.color)
|
||||
}
|
||||
|
||||
itemStack.setItemMeta(meta);
|
||||
FastItemStack.wrap(itemStack).setLore(lore);
|
||||
itemStack.itemMeta = meta
|
||||
FastItemStack.wrap(itemStack).lore = lore
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
sets:
|
||||
- name: reaper
|
||||
- id: reaper
|
||||
conditions: []
|
||||
effects:
|
||||
- id: damage_multiplier
|
||||
@@ -43,19 +43,10 @@ sets:
|
||||
- ecoarmor:set_reaper_boots
|
||||
- prismarine_shard
|
||||
helmet:
|
||||
enchants:
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_helmet
|
||||
leatherColor: "#303030"
|
||||
item: leather_helmet color:#303030
|
||||
name: "&cReaper Helmet"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Helmet"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -76,19 +67,10 @@ sets:
|
||||
- nether_star
|
||||
- air
|
||||
chestplate:
|
||||
enchants:
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_chestplate
|
||||
leatherColor: "#303030"
|
||||
item: leather_chestplate color:#303030
|
||||
name: "&cReaper Chestplate"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Chestplate"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -109,16 +91,10 @@ sets:
|
||||
- nether_star
|
||||
- air
|
||||
elytra:
|
||||
enchants:
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: elytra
|
||||
item: elytra
|
||||
name: "&cReaper Elytra"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Elytra"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -139,19 +115,10 @@ sets:
|
||||
- nether_star
|
||||
- air
|
||||
leggings:
|
||||
enchants:
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_leggings
|
||||
leatherColor: "#303030"
|
||||
item: leather_leggings color:#303030
|
||||
name: "&cReaper Leggings"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Leggings"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -172,19 +139,10 @@ sets:
|
||||
- nether_star
|
||||
- air
|
||||
boots:
|
||||
enchants:
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_boots
|
||||
leatherColor: "#303030"
|
||||
item: leather_boots color:#303030
|
||||
name: "&cReaper Boots"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Boots"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -204,7 +162,7 @@ sets:
|
||||
- air
|
||||
- nether_star
|
||||
- air
|
||||
- name: slayer
|
||||
- id: slayer
|
||||
conditions: []
|
||||
effects:
|
||||
- id: damage_multiplier
|
||||
@@ -258,21 +216,10 @@ sets:
|
||||
- ecoarmor:set_slayer_boots
|
||||
- prismarine_shard
|
||||
helmet:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_helmet
|
||||
leatherColor: "#750909"
|
||||
item: leather_helmet color:#750909
|
||||
name: "&4Slayer Helmet"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&4 Slayer Helmet"
|
||||
effectiveDurability: 768
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&4&lSLAYER SET BONUS"
|
||||
- "&8» &4Deal 50% more damage to bosses"
|
||||
@@ -294,21 +241,11 @@ sets:
|
||||
- ecoitems:armor_core ? nether_star
|
||||
- obsidian
|
||||
chestplate:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_chestplate
|
||||
item: leather_chestplate color:#750909
|
||||
leatherColor: "#750909"
|
||||
name: "&4Slayer Chestplate"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&4 Slayer Chestplate"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&4&lSLAYER SET BONUS"
|
||||
- "&8» &4Deal 50% more damage to bosses"
|
||||
@@ -330,20 +267,10 @@ sets:
|
||||
- ecoitems:armor_core ? nether_star
|
||||
- obsidian
|
||||
elytra:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: elytra
|
||||
item: elytra
|
||||
name: "&4Slayer Elytra"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19> &4Slayer Elytra"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&4&lSLAYER SET BONUS"
|
||||
- "&8» &4Deal 50% more damage to bosses"
|
||||
@@ -365,21 +292,10 @@ sets:
|
||||
- ecoitems:armor_core ? nether_star
|
||||
- obsidian
|
||||
leggings:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_leggings
|
||||
leatherColor: "#750909"
|
||||
item: leather_leggings color:#750909
|
||||
name: "&4Slayer Leggings"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&4 Slayer Leggings"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&4&lSLAYER SET BONUS"
|
||||
- "&8» &4Deal 50% more damage to bosses"
|
||||
@@ -401,21 +317,10 @@ sets:
|
||||
- ecoitems:armor_core ? nether_star
|
||||
- obsidian
|
||||
boots:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_boots
|
||||
leatherColor: "#750909"
|
||||
item: leather_boots color:#750909
|
||||
name: "&4Slayer Boots"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&4 Slayer Boots"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&4&lSLAYER SET BONUS"
|
||||
- "&8» &4Deal 50% more damage to bosses"
|
||||
@@ -436,7 +341,7 @@ sets:
|
||||
- obsidian
|
||||
- ecoitems:armor_core ? nether_star
|
||||
- obsidian
|
||||
- name: angelic
|
||||
- id: angelic
|
||||
conditions: []
|
||||
effects:
|
||||
- id: bonus_health
|
||||
@@ -484,21 +389,10 @@ sets:
|
||||
- ecoarmor:set_angelic_boots
|
||||
- prismarine_shard
|
||||
helmet:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_helmet
|
||||
leatherColor: "#bd15a9"
|
||||
item: leather_helmet color:#bd15a9
|
||||
name: "&5Angelic Helmet"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&5 Angelic Helmet"
|
||||
effectiveDurability: 768
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&5&lANGELIC SET BONUS"
|
||||
- "&8» &dGain 10 more hearts"
|
||||
@@ -521,21 +415,10 @@ sets:
|
||||
- ecoitems:armor_core ? enchanted_book mending:1
|
||||
- gold_block
|
||||
chestplate:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_chestplate
|
||||
leatherColor: "#bd15a9"
|
||||
item: leather_chestplate color:#bd15a9
|
||||
name: "&5Angelic Chestplate"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&5 Angelic Chestplate"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&5&lANGELIC SET BONUS"
|
||||
- "&8» &dGain 10 more hearts"
|
||||
@@ -558,20 +441,10 @@ sets:
|
||||
- ecoitems:armor_core ? enchanted_book mending:1
|
||||
- gold_block
|
||||
elytra:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: elytra
|
||||
item: elytra
|
||||
name: "&5Angelic Elytra"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&5 Angelic Elytra"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&5&lANGELIC SET BONUS"
|
||||
- "&8» &dGain 10 more hearts"
|
||||
@@ -594,21 +467,11 @@ sets:
|
||||
- ecoitems:armor_core ? enchanted_book mending:1
|
||||
- gold_block
|
||||
leggings:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_leggings
|
||||
item: leather_leggings color:#bd15a9
|
||||
leatherColor: "#bd15a9"
|
||||
name: "&5Angelic Leggings"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&5 Angelic Leggings"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&5&lANGELIC SET BONUS"
|
||||
- "&8» &dGain 10 more hearts"
|
||||
@@ -631,21 +494,11 @@ sets:
|
||||
- ecoitems:armor_core ? enchanted_book mending:1
|
||||
- gold_block
|
||||
boots:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_boots
|
||||
item: leather_boots color:#bd15a9
|
||||
leatherColor: "#bd15a9"
|
||||
name: "&5Angelic Boots"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&5 Angelic Boots"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModeldata: -1
|
||||
lore:
|
||||
- "&5&lANGELIC SET BONUS"
|
||||
- "&8» &dGain 10 more hearts"
|
||||
@@ -667,7 +520,7 @@ sets:
|
||||
- gold_block
|
||||
- ecoitems:armor_core ? enchanted_book mending:1
|
||||
- gold_block
|
||||
- name: huntress
|
||||
- id: huntress
|
||||
conditions: []
|
||||
effects:
|
||||
- id: damage_multiplier
|
||||
@@ -721,21 +574,10 @@ sets:
|
||||
- ecoarmor:set_huntress_boots
|
||||
- prismarine_shard
|
||||
helmet:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_helmet
|
||||
leatherColor: "#97fbfc"
|
||||
item: leather_helmet color:#96fbfc
|
||||
name: "&bHuntress Helmet"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&b Huntress Helmet"
|
||||
effectiveDurability: 1024
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&b&lHUNTRESS SET BONUS"
|
||||
- "&8» &bDeal 2.5x trident damage"
|
||||
@@ -765,14 +607,10 @@ sets:
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_chestplate
|
||||
leatherColor: "#97fbfc"
|
||||
item: leather_chestplate color:#97fbfc
|
||||
name: "&bHuntress Chestplate"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&b Huntress Chestplate"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&b&lHUNTRESS SET BONUS"
|
||||
- "&8» &bDeal 2.5x trident damage"
|
||||
@@ -795,20 +633,10 @@ sets:
|
||||
- enchanted_book power:5
|
||||
- spectral_arrow
|
||||
elytra:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: elytra
|
||||
item: elytra
|
||||
name: "&bHuntress Elytra"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&b Huntress Elytra"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&b&lHUNTRESS SET BONUS"
|
||||
- "&8» &bDeal 2.5x trident damage"
|
||||
@@ -831,21 +659,10 @@ sets:
|
||||
- enchanted_book power:5
|
||||
- spectral_arrow
|
||||
leggings:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_leggings
|
||||
leatherColor: "#97fbfc"
|
||||
item: leather_leggings color:#97fbfc
|
||||
name: "&bHuntress Leggings"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&b Huntress Leggings"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModelData: -1
|
||||
lore:
|
||||
- "&b&lHUNTRESS SET BONUS"
|
||||
- "&8» &bDeal 2.5x trident damage"
|
||||
@@ -868,21 +685,10 @@ sets:
|
||||
- enchanted_book power:5
|
||||
- spectral_arrow
|
||||
boots:
|
||||
enchants:
|
||||
- id: evasion
|
||||
level: 3
|
||||
- id: protection
|
||||
level: 4
|
||||
- id: unbreaking
|
||||
level: 3
|
||||
material: leather_boots
|
||||
leatherColor: "#97fbfc"
|
||||
item: leather_boots color:#97fbfc
|
||||
name: "&bHuntress Boots"
|
||||
advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&b Huntress Boots"
|
||||
effectiveDurability: 2048
|
||||
unbreakable: false
|
||||
flags: []
|
||||
customModeldata: -1
|
||||
lore:
|
||||
- "&b&lHUNTRESS SET BONUS"
|
||||
- "&8» &bDeal 2.5x trident damage"
|
||||
@@ -905,7 +711,7 @@ sets:
|
||||
- enchanted_book power:5
|
||||
- spectral_arrow
|
||||
tiers:
|
||||
- name: default
|
||||
- id: default
|
||||
display: "&8&lDEFAULT"
|
||||
requiresTiers: []
|
||||
crystal:
|
||||
@@ -967,7 +773,7 @@ tiers:
|
||||
attackSpeedPercentage: 0
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 0
|
||||
- name: iron
|
||||
- id: iron
|
||||
display: "&7&lIRON"
|
||||
requiresTiers:
|
||||
- default
|
||||
@@ -1032,7 +838,7 @@ tiers:
|
||||
attackSpeedPercentage: 0
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 0
|
||||
- name: diamond
|
||||
- id: diamond
|
||||
display: "&b&lDIAMOND"
|
||||
requiresTiers:
|
||||
- iron
|
||||
@@ -1097,7 +903,7 @@ tiers:
|
||||
attackSpeedPercentage: 0
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 0
|
||||
- name: netherite
|
||||
- id: netherite
|
||||
display: "&c&lNETHERITE"
|
||||
requiresTiers:
|
||||
- diamond
|
||||
@@ -1162,7 +968,7 @@ tiers:
|
||||
attackSpeedPercentage: 0
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 0
|
||||
- name: manyullyn
|
||||
- id: manyullyn
|
||||
display: "&d&k!!&r <GRADIENT:f953c6>&lMANYULLYN</GRADIENT:b91d73>&r &d&k!!&r"
|
||||
requiresTiers:
|
||||
- netherite
|
||||
@@ -1227,7 +1033,7 @@ tiers:
|
||||
attackSpeedPercentage: 0
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 0
|
||||
- name: cobalt
|
||||
- id: cobalt
|
||||
display: "/ab&lCOBALT"
|
||||
requiresTiers:
|
||||
- iron
|
||||
@@ -1292,7 +1098,7 @@ tiers:
|
||||
attackSpeedPercentage: -10
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 10
|
||||
- name: osmium
|
||||
- id: osmium
|
||||
display: "&b&k!!&r <GRADIENT:c7f1ff>&lOSMIUM</GRADIENT:5c92ff>&r &b&k!!"
|
||||
requiresTiers:
|
||||
- cobalt
|
||||
@@ -1357,7 +1163,7 @@ tiers:
|
||||
attackSpeedPercentage: -15
|
||||
attackDamagePercentage: 5
|
||||
attackKnockbackPercentage: 25
|
||||
- name: exotic
|
||||
- id: exotic
|
||||
display: "&6&k!!&r <GRADIENT:f79d00>&lEXOTIC</GRADIENT:64f38c>&r &6&k!!&r"
|
||||
requiresTiers:
|
||||
- netherite
|
||||
@@ -1422,7 +1228,7 @@ tiers:
|
||||
attackSpeedPercentage: 10
|
||||
attackDamagePercentage: -5
|
||||
attackKnockbackPercentage: -20
|
||||
- name: ancient
|
||||
- id: ancient
|
||||
display: "&6&k!!&r <GRADIENT:ffb347>&lANCIENT</GRADIENT:ffcc33>&r &6&k!!&r"
|
||||
requiresTiers: []
|
||||
crystal:
|
||||
@@ -1484,7 +1290,7 @@ tiers:
|
||||
attackSpeedPercentage: 5
|
||||
attackDamagePercentage: 0
|
||||
attackKnockbackPercentage: 0
|
||||
- name: mythic
|
||||
- id: mythic
|
||||
display: "&1&k!!&r <GRADIENT:00c6ff>&lMYTHIC</GRADIENT:0072ff>&r &1&k!!&r"
|
||||
requiresTiers: []
|
||||
crystal:
|
||||
|
||||
Reference in New Issue
Block a user