9
0
mirror of https://github.com/Auxilor/EcoArmor.git synced 2025-12-28 19:39:13 +00:00

Optimised armor display

This commit is contained in:
Auxilor
2021-04-29 20:12:27 +01:00
parent e2b492836f
commit 94ad96e4af
2 changed files with 69 additions and 8 deletions

View File

@@ -35,17 +35,17 @@ public class ArmorDisplay extends DisplayModule {
return;
}
ArmorSet set = ArmorUtils.getSetOnItem(itemStack);
ArmorSet set = ArmorUtils.getSetOnItem(meta);
if (set == null) {
Tier crystalTier = ArmorUtils.getCrystalTier(itemStack);
Tier crystalTier = ArmorUtils.getCrystalTier(meta);
if (crystalTier != null) {
meta.setLore(crystalTier.getCrystal().getItemMeta().getLore());
itemStack.setItemMeta(meta);
}
ArmorSet shardSet = ArmorUtils.getShardSet(itemStack);
ArmorSet shardSet = ArmorUtils.getShardSet(meta);
if (shardSet != null) {
itemStack.setItemMeta(shardSet.getAdvancementShardItem().getItemMeta());
@@ -61,7 +61,7 @@ public class ArmorDisplay extends DisplayModule {
ItemStack slotStack;
if (ArmorUtils.isAdvanced(itemStack)) {
if (ArmorUtils.isAdvanced(meta)) {
slotStack = set.getAdvancedItemStack(slot);
} else {
slotStack = set.getItemStack(slot);
@@ -69,7 +69,7 @@ public class ArmorDisplay extends DisplayModule {
ItemMeta slotMeta = slotStack.getItemMeta();
assert slotMeta != null;
Tier tier = ArmorUtils.getTier(itemStack);
Tier tier = ArmorUtils.getTier(meta);
List<String> lore = new ArrayList<>();

View File

@@ -19,6 +19,7 @@ import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.xml.bind.annotation.XmlType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -45,6 +46,17 @@ public class ArmorUtils {
return null;
}
return getSetOnItem(meta);
}
/**
* Get armor set on an item.
*
* @param meta The itemStack to check.
* @return The set, or null if no set is found.
*/
@Nullable
public ArmorSet getSetOnItem(@NotNull final ItemMeta meta) {
PersistentDataContainer container = meta.getPersistentDataContainer();
String setName = container.get(PLUGIN.getNamespacedKeyFactory().create("set"), PersistentDataType.STRING);
@@ -133,6 +145,17 @@ public class ArmorUtils {
return null;
}
return getCrystalTier(meta);
}
/**
* Get tier on upgrade crystal.
*
* @param meta The item to check.
* @return The found tier, or null.
*/
@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));
}
@@ -154,7 +177,25 @@ public class ArmorUtils {
return null;
}
if (getSetOnItem(itemStack) == null) {
Tier tier = getTier(meta);
if (getSetOnItem(meta) != null && tier == null) {
setTier(itemStack, Tiers.DEFAULT);
return Tiers.DEFAULT;
} else {
return tier;
}
}
/**
* Get tier on item.
*
* @param meta The item to check.
* @return The found tier, or null if not found.
*/
@Nullable
public static Tier getTier(@NotNull final ItemMeta meta) {
if (getSetOnItem(meta) == null) {
return null;
}
@@ -162,8 +203,7 @@ public class ArmorUtils {
return Tiers.getByName(meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING));
}
setTier(itemStack, Tiers.DEFAULT);
return getTier(itemStack);
return null;
}
/**
@@ -290,6 +330,16 @@ public class ArmorUtils {
return false;
}
return isAdvanced(meta);
}
/**
* Get if item is advanced.
*
* @param meta The item to check.
* @return If advanced.
*/
public static boolean isAdvanced(@NotNull final ItemMeta meta) {
if (meta.getPersistentDataContainer().has(PLUGIN.getNamespacedKeyFactory().create("advanced"), PersistentDataType.INTEGER)) {
return meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("advanced"), PersistentDataType.INTEGER) == 1;
}
@@ -334,6 +384,17 @@ public class ArmorUtils {
return null;
}
return getShardSet(meta);
}
/**
* Get the set from a shard.
*
* @param meta The item to check.
* @return The set, or null if not a shard.
*/
@Nullable
public static ArmorSet getShardSet(@NotNull final ItemMeta meta) {
String shardSet = meta.getPersistentDataContainer().get(PLUGIN.getNamespacedKeyFactory().create("advancement-shard"), PersistentDataType.STRING);
if (shardSet == null) {