mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-01-05 06:57:35 +01:00
Compatible Materials stat addition
This commit is contained in:
parent
9508df111b
commit
67eae457ca
@ -158,6 +158,7 @@ public class ItemStats {
|
|||||||
REMOVE_ON_CRAFT = new BooleanStat("REMOVE_ON_CRAFT", Material.GLASS_BOTTLE, "Remove on Craft", new String[]{"If the item should be completely", "removed when used in a recipe,", "or if it should become an", "empty bottle or bucket."}, new String[]{"all"}, Material.POTION, Material.SPLASH_POTION, Material.LINGERING_POTION, Material.MILK_BUCKET, Material.LAVA_BUCKET, Material.WATER_BUCKET),
|
REMOVE_ON_CRAFT = new BooleanStat("REMOVE_ON_CRAFT", Material.GLASS_BOTTLE, "Remove on Craft", new String[]{"If the item should be completely", "removed when used in a recipe,", "or if it should become an", "empty bottle or bucket."}, new String[]{"all"}, Material.POTION, Material.SPLASH_POTION, Material.LINGERING_POTION, Material.MILK_BUCKET, Material.LAVA_BUCKET, Material.WATER_BUCKET),
|
||||||
COMPATIBLE_TYPES = new CompatibleTypes(),
|
COMPATIBLE_TYPES = new CompatibleTypes(),
|
||||||
COMPATIBLE_IDS = new CompatibleIds(),
|
COMPATIBLE_IDS = new CompatibleIds(),
|
||||||
|
COMPATIBLE_MATERIALS = new CompatibleMaterials(),
|
||||||
GEM_SOCKETS = new GemSockets(),
|
GEM_SOCKETS = new GemSockets(),
|
||||||
RANDOM_UNSOCKET = new RandomUnsocket(),
|
RANDOM_UNSOCKET = new RandomUnsocket(),
|
||||||
//todo CAN_UNSOCKET = new CanUnsocket(),
|
//todo CAN_UNSOCKET = new CanUnsocket(),
|
||||||
|
@ -44,22 +44,22 @@ public class ItemSkin extends UseItem {
|
|||||||
|
|
||||||
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Applying onto " + MMOUtils.getDisplayName(target.getItem()));
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Applying onto " + MMOUtils.getDisplayName(target.getItem()));
|
||||||
|
|
||||||
|
// Types compatibility check
|
||||||
if (getMMOItem().hasData(ItemStats.COMPATIBLE_TYPES)) {
|
if (getMMOItem().hasData(ItemStats.COMPATIBLE_TYPES)) {
|
||||||
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Testing that TYPE is compatible: ");
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Testing that TYPE is compatible: ");
|
||||||
|
|
||||||
List<String> acceptedTypes = ((StringListData) getMMOItem().getData(ItemStats.COMPATIBLE_TYPES)).getList();
|
List<String> acceptedTypes = ((StringListData) getMMOItem().getData(ItemStats.COMPATIBLE_TYPES)).getList();
|
||||||
|
|
||||||
for (String type : acceptedTypes) {
|
for (String type : acceptedTypes) {
|
||||||
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7e >\u00a7f " + type);
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7e >\u00a7f " + type);
|
||||||
|
|
||||||
if (type.equalsIgnoreCase(targetType.getId())) {
|
if (type.equalsIgnoreCase(targetType.getId())) {
|
||||||
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7a Matched");
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7a Matched");
|
||||||
compatible = true; break; }
|
compatible = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!compatible && acceptedTypes.size() > 0) {
|
if (!compatible && acceptedTypes.size() > 0) {
|
||||||
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7c Incompatible");
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7c Incompatible");
|
||||||
|
|
||||||
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
|
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
|
||||||
Message.SKIN_INCOMPATIBLE.format(ChatColor.RED, "#item#", MMOUtils.getDisplayName(target.getItem()))
|
Message.SKIN_INCOMPATIBLE.format(ChatColor.RED, "#item#", MMOUtils.getDisplayName(target.getItem()))
|
||||||
.send(player);
|
.send(player);
|
||||||
@ -67,6 +67,7 @@ public class ItemSkin extends UseItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IDs compatibility check
|
||||||
if (getMMOItem().hasData(ItemStats.COMPATIBLE_IDS)) {
|
if (getMMOItem().hasData(ItemStats.COMPATIBLE_IDS)) {
|
||||||
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Testing that ID is compatible: ");
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Testing that ID is compatible: ");
|
||||||
|
|
||||||
@ -90,6 +91,29 @@ public class ItemSkin extends UseItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Material compatibility check
|
||||||
|
if (getMMOItem().hasData(ItemStats.COMPATIBLE_MATERIALS)) {
|
||||||
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a77 Testing that MATERIAL is compatible: ");
|
||||||
|
|
||||||
|
List<String> acceptedMaterials = ((StringListData) getMMOItem().getData(ItemStats.COMPATIBLE_MATERIALS)).getList();
|
||||||
|
|
||||||
|
for (String material : acceptedMaterials) {
|
||||||
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a76 >\u00a7f " + material);
|
||||||
|
|
||||||
|
if (material.equalsIgnoreCase(target.getItem().getType().name())) {
|
||||||
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7a Matched");
|
||||||
|
compatible = true;break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!compatible && acceptedMaterials.size() > 0) {
|
||||||
|
//SKIN//MMOItems.log("\u00a78SKIN \u00a7eCPT\u00a7c Incompatible");
|
||||||
|
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
|
||||||
|
Message.SKIN_INCOMPATIBLE.format(ChatColor.RED, "#item#", MMOUtils.getDisplayName(target.getItem()))
|
||||||
|
.send(player);
|
||||||
|
return new ApplyResult(ResultType.NONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check for success rate
|
// check for success rate
|
||||||
double successRate = getNBTItem().getStat(ItemStats.SUCCESS_RATE.getId());
|
double successRate = getNBTItem().getStat(ItemStats.SUCCESS_RATE.getId());
|
||||||
if (successRate != 0)
|
if (successRate != 0)
|
||||||
|
@ -3,7 +3,10 @@ package net.Indyuce.mmoitems.stat;
|
|||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import com.google.gson.JsonSyntaxException;
|
import com.google.gson.JsonSyntaxException;
|
||||||
|
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||||
import io.lumine.mythic.lib.api.item.SupportedNBTTagValues;
|
import io.lumine.mythic.lib.api.item.SupportedNBTTagValues;
|
||||||
|
import io.lumine.mythic.lib.api.util.AltChar;
|
||||||
|
import io.lumine.mythic.lib.version.VersionMaterial;
|
||||||
import net.Indyuce.mmoitems.ItemStats;
|
import net.Indyuce.mmoitems.ItemStats;
|
||||||
import net.Indyuce.mmoitems.MMOItems;
|
import net.Indyuce.mmoitems.MMOItems;
|
||||||
import net.Indyuce.mmoitems.api.edition.StatEdition;
|
import net.Indyuce.mmoitems.api.edition.StatEdition;
|
||||||
@ -11,12 +14,8 @@ import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder;
|
|||||||
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
||||||
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
|
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
|
||||||
import net.Indyuce.mmoitems.stat.data.StringListData;
|
import net.Indyuce.mmoitems.stat.data.StringListData;
|
||||||
import net.Indyuce.mmoitems.stat.data.random.RandomStatData;
|
|
||||||
import net.Indyuce.mmoitems.stat.data.type.StatData;
|
import net.Indyuce.mmoitems.stat.data.type.StatData;
|
||||||
import net.Indyuce.mmoitems.stat.type.ItemStat;
|
import net.Indyuce.mmoitems.stat.type.ItemStat;
|
||||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
|
||||||
import io.lumine.mythic.lib.api.util.AltChar;
|
|
||||||
import io.lumine.mythic.lib.version.VersionMaterial;
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.event.inventory.InventoryAction;
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
@ -46,8 +45,8 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
if (event.getAction() == InventoryAction.PICKUP_ALL)
|
if (event.getAction() == InventoryAction.PICKUP_ALL)
|
||||||
new StatEdition(inv, ItemStats.COMPATIBLE_IDS).enable("Write in the chat the item id you want to add.");
|
new StatEdition(inv, ItemStats.COMPATIBLE_IDS).enable("Write in the chat the item id you want to add.");
|
||||||
|
|
||||||
if (event.getAction() == InventoryAction.PICKUP_HALF) {
|
if (event.getAction() != InventoryAction.PICKUP_HALF || !inv.getEditedSection().contains("compatible-ids"))
|
||||||
if (inv.getEditedSection().contains("compatible-ids")) {
|
return;
|
||||||
List<String> lore = inv.getEditedSection().getStringList("compatible-ids");
|
List<String> lore = inv.getEditedSection().getStringList("compatible-ids");
|
||||||
if (lore.size() < 1)
|
if (lore.size() < 1)
|
||||||
return;
|
return;
|
||||||
@ -58,8 +57,6 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
inv.registerTemplateEdition();
|
inv.registerTemplateEdition();
|
||||||
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Successfully removed '" + last + "'.");
|
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Successfully removed '" + last + "'.");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
|
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
|
||||||
@ -73,11 +70,9 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenDisplayed(List<String> lore, Optional<StringListData> statData) {
|
public void whenDisplayed(List<String> lore, Optional<StringListData> statData) {
|
||||||
|
|
||||||
if (statData.isPresent()) {
|
if (statData.isPresent()) {
|
||||||
lore.add(ChatColor.GRAY + "Current Value:");
|
lore.add(ChatColor.GRAY + "Current Value:");
|
||||||
((StringListData) statData.get()).getList().forEach(str -> lore.add(ChatColor.GRAY + str));
|
statData.get().getList().forEach(str -> lore.add(ChatColor.GRAY + str));
|
||||||
|
|
||||||
} else
|
} else
|
||||||
lore.add(ChatColor.GRAY + "Current Value: " + ChatColor.RED + "Compatible with any item.");
|
lore.add(ChatColor.GRAY + "Current Value: " + ChatColor.RED + "Compatible with any item.");
|
||||||
|
|
||||||
@ -94,7 +89,6 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringListData data) {
|
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringListData data) {
|
||||||
|
|
||||||
// Copy Array, for lore
|
// Copy Array, for lore
|
||||||
List<String> compatibleIds = new ArrayList<>(data.getList());
|
List<String> compatibleIds = new ArrayList<>(data.getList());
|
||||||
item.getLore().insert("compatible-ids", compatibleIds);
|
item.getLore().insert("compatible-ids", compatibleIds);
|
||||||
@ -106,12 +100,13 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ItemTag> getAppliedNBT(@NotNull StringListData data) {
|
public ArrayList<ItemTag> getAppliedNBT(@NotNull StringListData data) {
|
||||||
|
|
||||||
// Build Json Array
|
// Build Json Array
|
||||||
JsonArray array = new JsonArray();
|
JsonArray array = new JsonArray();
|
||||||
|
|
||||||
// For each string in the ids of the data
|
// For each string in the ids of the data
|
||||||
for (String sts : data.getList()) { array.add(sts); }
|
for (String sts : data.getList()) {
|
||||||
|
array.add(sts);
|
||||||
|
}
|
||||||
|
|
||||||
// Make returning array
|
// Make returning array
|
||||||
ArrayList<ItemTag> tags = new ArrayList<>();
|
ArrayList<ItemTag> tags = new ArrayList<>();
|
||||||
@ -124,7 +119,6 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
||||||
|
|
||||||
// FInd relvant tags
|
// FInd relvant tags
|
||||||
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
||||||
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
||||||
@ -133,34 +127,31 @@ public class CompatibleIds extends ItemStat<StringListData, StringListData> {
|
|||||||
// Generate data
|
// Generate data
|
||||||
StatData data = getLoadedNBT(relevantTags);
|
StatData data = getLoadedNBT(relevantTags);
|
||||||
|
|
||||||
if (data != null) { mmoitem.setData(this, data);}
|
if (data != null)
|
||||||
|
mmoitem.setData(this, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public StringListData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
public StringListData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
||||||
|
|
||||||
// Find relevant tag
|
// Find relevant tag
|
||||||
ItemTag rTag = ItemTag.getTagAtPath(getNBTPath(), storedTags);
|
ItemTag rTag = ItemTag.getTagAtPath(getNBTPath(), storedTags);
|
||||||
|
|
||||||
// Found?
|
// Found?
|
||||||
if (rTag != null) {
|
if (rTag == null)
|
||||||
|
// Nope
|
||||||
|
return null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Parse onto Json Array
|
// Parse onto Json Array
|
||||||
JsonArray array = new JsonParser().parse((String) rTag.getValue()).getAsJsonArray();
|
JsonArray array = new JsonParser().parse((String) rTag.getValue()).getAsJsonArray();
|
||||||
|
|
||||||
// Make and return list
|
// Make and return list
|
||||||
return new StringListData(array);
|
return new StringListData(array);
|
||||||
|
|
||||||
} catch (JsonSyntaxException | IllegalStateException exception) {
|
} catch (JsonSyntaxException | IllegalStateException exception) {
|
||||||
/*
|
/*
|
||||||
* OLD ITEM WHICH MUST BE UPDATED.
|
* OLD ITEM WHICH MUST BE UPDATED.
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Nope
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,167 @@
|
|||||||
|
package net.Indyuce.mmoitems.stat;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
|
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||||
|
import io.lumine.mythic.lib.api.item.SupportedNBTTagValues;
|
||||||
|
import io.lumine.mythic.lib.api.util.AltChar;
|
||||||
|
import io.lumine.mythic.lib.version.VersionMaterial;
|
||||||
|
import net.Indyuce.mmoitems.ItemStats;
|
||||||
|
import net.Indyuce.mmoitems.MMOItems;
|
||||||
|
import net.Indyuce.mmoitems.api.edition.StatEdition;
|
||||||
|
import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder;
|
||||||
|
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
||||||
|
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
|
||||||
|
import net.Indyuce.mmoitems.stat.data.StringListData;
|
||||||
|
import net.Indyuce.mmoitems.stat.data.type.StatData;
|
||||||
|
import net.Indyuce.mmoitems.stat.type.ItemStat;
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class CompatibleMaterials extends ItemStat<StringListData, StringListData> {
|
||||||
|
public CompatibleMaterials() {
|
||||||
|
super("COMPATIBLE_MATERIALS", VersionMaterial.COMMAND_BLOCK.toMaterial(), "Compatible Materials",
|
||||||
|
new String[]{"The item materials this skin is", "compatible with."}, new String[]{"skin"});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public StringListData whenInitialized(Object object) {
|
||||||
|
Validate.isTrue(object instanceof List<?>, "Must specify a string list");
|
||||||
|
return new StringListData((List<String>) object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whenClicked(@NotNull EditionInventory inv, @NotNull InventoryClickEvent event) {
|
||||||
|
if (event.getAction() == InventoryAction.PICKUP_ALL)
|
||||||
|
new StatEdition(inv, ItemStats.COMPATIBLE_TYPES).enable("Write in the chat the name of the material you want to add.");
|
||||||
|
|
||||||
|
if (event.getAction() != InventoryAction.PICKUP_HALF || !inv.getEditedSection().contains("compatible-materials"))
|
||||||
|
return;
|
||||||
|
List<String> lore = inv.getEditedSection().getStringList("compatible-materials");
|
||||||
|
if (lore.size() < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
String last = lore.get(lore.size() - 1);
|
||||||
|
lore.remove(last);
|
||||||
|
inv.getEditedSection().set("compatible-materials", lore);
|
||||||
|
inv.registerTemplateEdition();
|
||||||
|
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Successfully removed '" + last + "'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
|
||||||
|
final Player player = inv.getPlayer();
|
||||||
|
// Check if material exists
|
||||||
|
if (Arrays.stream(VersionMaterial.values()).noneMatch(versionMaterial -> versionMaterial.name().equalsIgnoreCase(message))) {
|
||||||
|
player.sendMessage(MMOItems.plugin.getPrefix() + "Invalid material name.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> lore = inv.getEditedSection().contains("compatible-materials") ? inv.getEditedSection().getStringList("compatible-materials")
|
||||||
|
: new ArrayList<>();
|
||||||
|
lore.add(message.toUpperCase());
|
||||||
|
inv.getEditedSection().set("compatible-materials", lore);
|
||||||
|
inv.registerTemplateEdition();
|
||||||
|
player.sendMessage(MMOItems.plugin.getPrefix() + "Compatible Materials successfully added.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whenDisplayed(List<String> lore, Optional<StringListData> statData) {
|
||||||
|
if (statData.isPresent()) {
|
||||||
|
lore.add(ChatColor.GRAY + "Current Value:");
|
||||||
|
statData.get().getList().forEach(str -> lore.add(ChatColor.GRAY + str));
|
||||||
|
} else
|
||||||
|
lore.add(ChatColor.GRAY + "Current Value: " + ChatColor.RED + "Compatible with any material.");
|
||||||
|
|
||||||
|
lore.add("");
|
||||||
|
lore.add(ChatColor.YELLOW + AltChar.listDash + " Click to add a new material.");
|
||||||
|
lore.add(ChatColor.YELLOW + AltChar.listDash + " Right click to remove the last material.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public StringListData getClearStatData() {
|
||||||
|
return new StringListData();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringListData data) {
|
||||||
|
// Copy Array, for lore
|
||||||
|
List<String> compatibleTypes = new ArrayList<>(data.getList());
|
||||||
|
item.getLore().insert("compatible-materials", compatibleTypes);
|
||||||
|
|
||||||
|
// Add data
|
||||||
|
item.addItemTag(getAppliedNBT(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public ArrayList<ItemTag> getAppliedNBT(@NotNull StringListData data) {
|
||||||
|
// Build Json Array
|
||||||
|
JsonArray array = new JsonArray();
|
||||||
|
|
||||||
|
// For each string in the ids of the data
|
||||||
|
for (String sts : data.getList()) {
|
||||||
|
array.add(sts);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make returning array
|
||||||
|
ArrayList<ItemTag> tags = new ArrayList<>();
|
||||||
|
|
||||||
|
// Add Json Array
|
||||||
|
tags.add(new ItemTag(getNBTPath(), array.toString()));
|
||||||
|
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
||||||
|
// FInd relevant tags
|
||||||
|
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
||||||
|
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
||||||
|
relevantTags.add(ItemTag.getTagAtPath(getNBTPath(), mmoitem.getNBT(), SupportedNBTTagValues.STRING));
|
||||||
|
|
||||||
|
// Generate data
|
||||||
|
StatData data = getLoadedNBT(relevantTags);
|
||||||
|
|
||||||
|
if (data != null)
|
||||||
|
mmoitem.setData(this, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public StringListData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
||||||
|
// Find relevant tag
|
||||||
|
ItemTag rTag = ItemTag.getTagAtPath(getNBTPath(), storedTags);
|
||||||
|
|
||||||
|
// Found?
|
||||||
|
if (rTag == null)
|
||||||
|
// Nope
|
||||||
|
return null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Parse onto Json Array
|
||||||
|
JsonArray array = new JsonParser().parse((String) rTag.getValue()).getAsJsonArray();
|
||||||
|
|
||||||
|
// Make and return list
|
||||||
|
return new StringListData(array);
|
||||||
|
} catch (JsonSyntaxException | IllegalStateException exception) {
|
||||||
|
/*
|
||||||
|
* OLD ITEM WHICH MUST BE UPDATED.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,19 +1,12 @@
|
|||||||
package net.Indyuce.mmoitems.stat;
|
package net.Indyuce.mmoitems.stat;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import com.google.gson.JsonSyntaxException;
|
|
||||||
import io.lumine.mythic.lib.api.item.SupportedNBTTagValues;
|
|
||||||
import org.apache.commons.lang.Validate;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.event.inventory.InventoryAction;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
|
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||||
|
import io.lumine.mythic.lib.api.item.SupportedNBTTagValues;
|
||||||
|
import io.lumine.mythic.lib.api.util.AltChar;
|
||||||
|
import io.lumine.mythic.lib.version.VersionMaterial;
|
||||||
import net.Indyuce.mmoitems.ItemStats;
|
import net.Indyuce.mmoitems.ItemStats;
|
||||||
import net.Indyuce.mmoitems.MMOItems;
|
import net.Indyuce.mmoitems.MMOItems;
|
||||||
import net.Indyuce.mmoitems.api.edition.StatEdition;
|
import net.Indyuce.mmoitems.api.edition.StatEdition;
|
||||||
@ -21,15 +14,19 @@ import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder;
|
|||||||
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
||||||
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
|
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
|
||||||
import net.Indyuce.mmoitems.stat.data.StringListData;
|
import net.Indyuce.mmoitems.stat.data.StringListData;
|
||||||
import net.Indyuce.mmoitems.stat.data.random.RandomStatData;
|
|
||||||
import net.Indyuce.mmoitems.stat.data.type.StatData;
|
import net.Indyuce.mmoitems.stat.data.type.StatData;
|
||||||
import net.Indyuce.mmoitems.stat.type.ItemStat;
|
import net.Indyuce.mmoitems.stat.type.ItemStat;
|
||||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
import org.apache.commons.lang.Validate;
|
||||||
import io.lumine.mythic.lib.api.util.AltChar;
|
import org.bukkit.ChatColor;
|
||||||
import io.lumine.mythic.lib.version.VersionMaterial;
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
||||||
public CompatibleTypes() {
|
public CompatibleTypes() {
|
||||||
super("COMPATIBLE_TYPES", VersionMaterial.COMMAND_BLOCK.toMaterial(), "Compatible Types",
|
super("COMPATIBLE_TYPES", VersionMaterial.COMMAND_BLOCK.toMaterial(), "Compatible Types",
|
||||||
@ -48,8 +45,8 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
if (event.getAction() == InventoryAction.PICKUP_ALL)
|
if (event.getAction() == InventoryAction.PICKUP_ALL)
|
||||||
new StatEdition(inv, ItemStats.COMPATIBLE_TYPES).enable("Write in the chat the name of the type you want to add.");
|
new StatEdition(inv, ItemStats.COMPATIBLE_TYPES).enable("Write in the chat the name of the type you want to add.");
|
||||||
|
|
||||||
if (event.getAction() == InventoryAction.PICKUP_HALF) {
|
if (event.getAction() != InventoryAction.PICKUP_HALF || !inv.getEditedSection().contains("compatible-types"))
|
||||||
if (inv.getEditedSection().contains("compatible-types")) {
|
return;
|
||||||
List<String> lore = inv.getEditedSection().getStringList("compatible-types");
|
List<String> lore = inv.getEditedSection().getStringList("compatible-types");
|
||||||
if (lore.size() < 1)
|
if (lore.size() < 1)
|
||||||
return;
|
return;
|
||||||
@ -60,8 +57,6 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
inv.registerTemplateEdition();
|
inv.registerTemplateEdition();
|
||||||
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Successfully removed '" + last + "'.");
|
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Successfully removed '" + last + "'.");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
|
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
|
||||||
@ -75,11 +70,9 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenDisplayed(List<String> lore, Optional<StringListData> statData) {
|
public void whenDisplayed(List<String> lore, Optional<StringListData> statData) {
|
||||||
|
|
||||||
if (statData.isPresent()) {
|
if (statData.isPresent()) {
|
||||||
lore.add(ChatColor.GRAY + "Current Value:");
|
lore.add(ChatColor.GRAY + "Current Value:");
|
||||||
((StringListData) statData.get()).getList().forEach(str -> lore.add(ChatColor.GRAY + str));
|
statData.get().getList().forEach(str -> lore.add(ChatColor.GRAY + str));
|
||||||
|
|
||||||
} else
|
} else
|
||||||
lore.add(ChatColor.GRAY + "Current Value: " + ChatColor.RED + "Compatible with any item.");
|
lore.add(ChatColor.GRAY + "Current Value: " + ChatColor.RED + "Compatible with any item.");
|
||||||
|
|
||||||
@ -96,9 +89,8 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringListData data) {
|
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringListData data) {
|
||||||
|
|
||||||
// Copy Array, for lore
|
// Copy Array, for lore
|
||||||
List<String> compatibleTypes = new ArrayList<>(((StringListData) data).getList());
|
List<String> compatibleTypes = new ArrayList<>(data.getList());
|
||||||
item.getLore().insert("compatible-types", compatibleTypes);
|
item.getLore().insert("compatible-types", compatibleTypes);
|
||||||
|
|
||||||
// Add data
|
// Add data
|
||||||
@ -108,12 +100,13 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ItemTag> getAppliedNBT(@NotNull StringListData data) {
|
public ArrayList<ItemTag> getAppliedNBT(@NotNull StringListData data) {
|
||||||
|
|
||||||
// Build Json Array
|
// Build Json Array
|
||||||
JsonArray array = new JsonArray();
|
JsonArray array = new JsonArray();
|
||||||
|
|
||||||
// For each string in the ids of the data
|
// For each string in the ids of the data
|
||||||
for (String sts : ((StringListData) data).getList()) { array.add(sts); }
|
for (String sts : data.getList()) {
|
||||||
|
array.add(sts);
|
||||||
|
}
|
||||||
|
|
||||||
// Make returning array
|
// Make returning array
|
||||||
ArrayList<ItemTag> tags = new ArrayList<>();
|
ArrayList<ItemTag> tags = new ArrayList<>();
|
||||||
@ -126,8 +119,7 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
||||||
|
// FInd relevant tags
|
||||||
// FInd relvant tags
|
|
||||||
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
||||||
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
||||||
relevantTags.add(ItemTag.getTagAtPath(getNBTPath(), mmoitem.getNBT(), SupportedNBTTagValues.STRING));
|
relevantTags.add(ItemTag.getTagAtPath(getNBTPath(), mmoitem.getNBT(), SupportedNBTTagValues.STRING));
|
||||||
@ -135,35 +127,32 @@ public class CompatibleTypes extends ItemStat<StringListData, StringListData> {
|
|||||||
// Generate data
|
// Generate data
|
||||||
StatData data = getLoadedNBT(relevantTags);
|
StatData data = getLoadedNBT(relevantTags);
|
||||||
|
|
||||||
if (data != null) { mmoitem.setData(this, data);}
|
if (data != null)
|
||||||
|
mmoitem.setData(this, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public StringListData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
public StringListData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
||||||
|
|
||||||
// Find relevant tag
|
// Find relevant tag
|
||||||
ItemTag rTag = ItemTag.getTagAtPath(getNBTPath(), storedTags);
|
ItemTag rTag = ItemTag.getTagAtPath(getNBTPath(), storedTags);
|
||||||
|
|
||||||
// Found?
|
// Found?
|
||||||
if (rTag != null) {
|
if (rTag == null)
|
||||||
|
// Nope
|
||||||
|
return null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
// Parse onto Json Array
|
// Parse onto Json Array
|
||||||
JsonArray array = new JsonParser().parse((String) rTag.getValue()).getAsJsonArray();
|
JsonArray array = new JsonParser().parse((String) rTag.getValue()).getAsJsonArray();
|
||||||
|
|
||||||
// Make and return list
|
// Make and return list
|
||||||
return new StringListData(array);
|
return new StringListData(array);
|
||||||
|
|
||||||
} catch (JsonSyntaxException | IllegalStateException exception) {
|
} catch (JsonSyntaxException | IllegalStateException exception) {
|
||||||
/*
|
/*
|
||||||
* OLD ITEM WHICH MUST BE UPDATED.
|
* OLD ITEM WHICH MUST BE UPDATED.
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Nope
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user