Removed Advanced Workbench

This commit is contained in:
Aria Sangarin 2020-01-28 13:39:05 +01:00
parent ecfc885860
commit 145e2ea551
9 changed files with 0 additions and 692 deletions

View File

@ -1,92 +0,0 @@
package net.Indyuce.mmoitems.api;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmoitems.MMOItems;
public class AdvancedRecipe {
/*
* must not save the item as an itemStack otherwise the item will be the
* same, random stats will be useless
*/
private Type type;
private String id;
/*
* only saves once the itemstack for a preview, so spamming doesn't decrease
* performance generating the item. once the item is clicked, a new item
* will be generated and will replace the clicked one
*/
private ItemStack preview;
/*
* amounts of ingredients that are needed. the amount data is NOT stored in
* the key of the advanced recipes map. the key here represents the item
* format (not recipe)
*/
private Map<Integer, Integer> amountData = new HashMap<>();
// permission needed for the recipe
private String permission = "";
// parsed recipe format
private String parsed;
public AdvancedRecipe(Type type, String id) {
this.type = type;
this.id = id;
}
public Type getItemType() {
return type;
}
public String getItemId() {
return id;
}
public ItemStack getPreviewItem() {
return preview;
}
public ItemStack generateNewItem() {
return MMOItems.plugin.getItems().getItem(type, id);
}
public void setPreviewItem(ItemStack value) {
preview = value;
}
public int getAmount(int index) {
return amountData.get(index);
}
public boolean isParsed(String parsed) {
return parsed.equals(this.parsed);
}
public void setParsed(String value) {
parsed = value;
}
public String getParsed() {
return parsed;
}
public boolean hasPermission(Player player) {
return permission == null || permission.equals("") || player.hasPermission(permission);
}
public void setPermission(String value) {
permission = value;
}
public void setAmount(int slot, int amount) {
amountData.put(slot, amount);
}
}

View File

@ -1,38 +0,0 @@
package net.Indyuce.mmoitems.command;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import net.Indyuce.mmoitems.gui.AdvancedWorkbench;
public class AdvancedWorkbenchCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!sender.hasPermission("mmoitems.awb"))
return true;
if(args.length < 1)
{
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You need to specify a player. '/awb [player]'");
return true;
}
new AdvancedWorkbench((Player) sender).open();
return true;
}
Player player = Bukkit.getPlayer(args[0]);
if(player == null) {
sender.sendMessage(ChatColor.RED + "Player '" + args[0] + "' not found.");
return true;
}
new AdvancedWorkbench(player).open();
return true;
}
}

View File

@ -1,94 +0,0 @@
package net.Indyuce.mmoitems.gui;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.MMOUtils;
import net.Indyuce.mmoitems.api.AdvancedRecipe;
import net.Indyuce.mmoitems.api.Type;
import net.Indyuce.mmoitems.api.item.plugin.ConfigItem;
import net.Indyuce.mmoitems.api.util.AltChar;
import net.Indyuce.mmoitems.api.util.IsSimilar;
import net.Indyuce.mmoitems.api.util.message.Message;
import net.mmogroup.mmolib.api.item.ItemTag;
import net.mmogroup.mmolib.api.item.NBTItem;
public class AdvancedRecipeList extends PluginInventory {
private Type type;
public AdvancedRecipeList(Player player, Type type) {
super(player);
this.type = type;
}
@Override
public Inventory getInventory() {
Inventory inv = Bukkit.createInventory(this, 27, Message.ADVANCED_RECIPES.formatRaw(ChatColor.UNDERLINE));
Integer[] slots = new Integer[] { 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25 };
List<AdvancedRecipe> recipes = MMOItems.plugin.getRecipes().getTypeRecipes(type);
int min = (page - 1) * 21;
int max = page * 21;
for (int j = min; j < max && j < recipes.size(); j++) {
AdvancedRecipe recipe = recipes.get(j);
ItemStack item = recipe.getPreviewItem().clone();
ItemMeta itemMeta = item.getItemMeta();
List<String> itemLore = itemMeta.hasLore() ? itemMeta.getLore() : new ArrayList<String>();
itemLore.add("");
itemLore.add(Message.CLICK_ADVANCED_RECIPE.formatRaw(ChatColor.YELLOW, "#d", AltChar.listDash));
itemMeta.setLore(itemLore);
item.setItemMeta(itemMeta);
inv.setItem(slots[j - min], NBTItem.get(item).addTag(new ItemTag("itemId", recipe.getItemId())).toItem());
}
for (int j : slots)
if (inv.getItem(j) == null)
inv.setItem(j, ConfigItem.NO_ITEM.getItem());
inv.setItem(9, page > 1 ? ConfigItem.PREVIOUS_PAGE.getItem() : ConfigItem.BACK.getItem());
inv.setItem(17, inv.getItem(slots[slots.length - 1]).equals(ConfigItem.NO_ITEM.getItem()) ? null : ConfigItem.NEXT_PAGE.getItem());
return inv;
}
@Override
public void whenClicked(InventoryClickEvent event) {
ItemStack item = event.getCurrentItem();
event.setCancelled(true);
if (event.getClickedInventory() != event.getInventory())
return;
if (MMOUtils.isPluginItem(item, false)) {
if (IsSimilar.check(item, ConfigItem.BACK.getItem()))
new AdvancedRecipeTypeList(player).open();
if (IsSimilar.check(item, ConfigItem.NEXT_PAGE.getItem())) {
page++;
open();
}
if (IsSimilar.check(item, ConfigItem.PREVIOUS_PAGE.getItem()) && page > 1) {
page--;
open();
}
}
// show recipe when click
String tag = NBTItem.get(item).getString("itemId");
if (!tag.equals(""))
new AdvancedRecipePreview(player, type, tag).open();
}
}

View File

@ -1,86 +0,0 @@
package net.Indyuce.mmoitems.gui;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.MMOUtils;
import net.Indyuce.mmoitems.api.AdvancedRecipe;
import net.Indyuce.mmoitems.api.Type;
import net.Indyuce.mmoitems.api.item.plugin.ConfigItem;
import net.Indyuce.mmoitems.api.util.IsSimilar;
import net.Indyuce.mmoitems.api.util.message.Message;
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
import net.mmogroup.mmolib.version.VersionMaterial;
public class AdvancedRecipePreview extends EditionInventory {
private static final int[] glassSlots = { 0, 1, 2, 6, 7, 8, 9, 11, 15, 17, 18, 19, 20, 24, 25, 26 };
private static final int[] ingredientSlots = { 3, 4, 5, 12, 13, 14, 21, 22, 23 };
public AdvancedRecipePreview(Player player, Type type, String id) {
super(player, type, id);
}
@Override
public Inventory getInventory() {
AdvancedRecipe data = MMOItems.plugin.getRecipes().getData(type, id);
ItemStack item = data.getPreviewItem().clone();
Inventory inv = Bukkit.createInventory(this, 27, Message.ADVANCED_RECIPES.formatRaw(ChatColor.UNDERLINE));
String[] ingredients = data.getParsed().split("\\|");
// mat:name:MN|mat:name:MN|mat:name:MN|...
// or type:id|type:id|type:id|...
for (int j = 0; j < 9; j++) {
String formattedIngredient = ingredients[j];
if (formattedIngredient.equals("AIR"))
continue;
String[] split = formattedIngredient.split("\\:");
// type, id
if (split.length == 2 && !formattedIngredient.endsWith(":MN")) {
ItemStack ingredient = MMOItems.plugin.getItems().getItem(MMOItems.plugin.getTypes().get(split[0]), split[1]);
ingredient.setAmount(data.getAmount(j));
inv.setItem(ingredientSlots[j], ingredient);
continue;
}
// material, name
ItemStack ingredient = new ItemStack(Material.valueOf(split[0]), data.getAmount(j));
ingredient.setAmount(data.getAmount(j));
ItemMeta meta = ingredient.getItemMeta();
meta.setDisplayName(split[1]);
ingredient.setItemMeta(meta);
inv.setItem(ingredientSlots[j], ingredient);
}
ItemStack glass = VersionMaterial.GRAY_STAINED_GLASS_PANE.toItem();
ItemMeta glassMeta = glass.getItemMeta();
glassMeta.setDisplayName(ChatColor.GREEN + "");
glass.setItemMeta(glassMeta);
for (int j : glassSlots)
inv.setItem(j, glass);
inv.setItem(16, item);
inv.setItem(10, ConfigItem.BACK.getItem());
return inv;
}
@Override
public void whenClicked(InventoryClickEvent event) {
ItemStack item = event.getCurrentItem();
event.setCancelled(true);
if (MMOUtils.isPluginItem(item, false))
if (IsSimilar.check(item, ConfigItem.BACK.getItem()))
new AdvancedRecipeList(player, type).open();
}
}

View File

@ -1,94 +0,0 @@
package net.Indyuce.mmoitems.gui;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.MMOUtils;
import net.Indyuce.mmoitems.api.Type;
import net.Indyuce.mmoitems.api.item.plugin.ConfigItem;
import net.Indyuce.mmoitems.api.util.IsSimilar;
import net.Indyuce.mmoitems.api.util.message.Message;
import net.mmogroup.mmolib.api.item.ItemTag;
import net.mmogroup.mmolib.api.item.NBTItem;
public class AdvancedRecipeTypeList extends PluginInventory {
private static final int[] slots = { 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25 };
public AdvancedRecipeTypeList(Player player) {
super(player);
}
@Override
public Inventory getInventory() {
Inventory inv = Bukkit.createInventory(this, 27, Message.ADVANCED_RECIPES.formatRaw(ChatColor.UNDERLINE));
List<Type> types = MMOItems.plugin.getRecipes().getAvailableTypes();
int min = (page - 1) * 21;
int max = page * 21;
for (int j = min; j < Math.min(max, types.size()); j++) {
Type type = types.get(j);
int recipes = MMOItems.plugin.getRecipes().getTypeRecipes(type).size();
ItemStack item = type.getItem();
ItemMeta meta = item.getItemMeta();
meta.addItemFlags(ItemFlag.values());
meta.setDisplayName(ConfigItem.TYPE_DISPLAY.getItem().getItemMeta().getDisplayName().replace("#type#", type.getName()));
item.setAmount(Math.max(1, Math.min(64, recipes)));
List<String> lore = ConfigItem.TYPE_DISPLAY.getItem().getItemMeta().getLore();
for (int k = 0; k < lore.size(); k++)
lore.set(k, lore.get(k).replace("#recipes#", "" + recipes));
meta.setLore(lore);
item.setItemMeta(meta);
inv.setItem(slots[j - min], NBTItem.get(item).addTag(new ItemTag("typeId", type.getId())).toItem());
}
ItemStack noType = ConfigItem.NO_TYPE.getItem();
for (int j : slots)
if (inv.getItem(j) == null)
inv.setItem(j, noType);
inv.setItem(9, page > 1 ? ConfigItem.PREVIOUS_PAGE.getItem() : ConfigItem.BACK.getItem());
inv.setItem(17, inv.getItem(slots[slots.length - 1]).equals(noType) ? null : ConfigItem.NEXT_PAGE.getItem());
return inv;
}
@Override
public void whenClicked(InventoryClickEvent event) {
ItemStack item = event.getCurrentItem();
event.setCancelled(true);
if (event.getClickedInventory() != event.getInventory())
return;
if (MMOUtils.isPluginItem(item, false)) {
if (IsSimilar.check(item, ConfigItem.BACK.getItem()))
new AdvancedWorkbench(player).open();
if (IsSimilar.check(item, ConfigItem.NEXT_PAGE.getItem())) {
page++;
open();
}
if (IsSimilar.check(item, ConfigItem.PREVIOUS_PAGE.getItem()) && page > 1) {
page--;
open();
}
}
// show recipe when click
String tag = NBTItem.get(item).getString("typeId");
if (!tag.equals(""))
new AdvancedRecipeList(player, MMOItems.plugin.getTypes().get(tag)).open();
}
}

View File

@ -1,145 +0,0 @@
package net.Indyuce.mmoitems.gui;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.MMOUtils;
import net.Indyuce.mmoitems.api.AdvancedRecipe;
import net.Indyuce.mmoitems.api.item.plugin.ConfigItem;
import net.Indyuce.mmoitems.api.util.message.Message;
import net.mmogroup.mmolib.version.VersionMaterial;
public class AdvancedWorkbench extends PluginInventory {
private List<InventoryAction> allowedCraftingClicks = Arrays.asList(new InventoryAction[] { InventoryAction.PICKUP_ALL, InventoryAction.MOVE_TO_OTHER_INVENTORY });
public AdvancedWorkbench(Player player) {
super(player);
}
@Override
public Inventory getInventory() {
new BukkitRunnable() {
public void run() {
Inventory inv = player.getOpenInventory().getTopInventory();
if (!(inv.getHolder() instanceof AdvancedWorkbench)) {
cancel();
return;
}
AdvancedRecipe data = MMOItems.plugin.getRecipes().getCurrentRecipe(player, inv);
if (data != null) {
inv.setItem(16, data.getPreviewItem());
return;
}
inv.setItem(16, null);
}
}.runTaskTimer(MMOItems.plugin, 0, 10);
Inventory inv = (Inventory) Bukkit.createInventory(this, 27, Message.ADVANCED_WORKBENCH.formatRaw(ChatColor.UNDERLINE));
ItemStack glass = VersionMaterial.GRAY_STAINED_GLASS_PANE.toItem();
ItemMeta glassMeta = glass.getItemMeta();
glassMeta.setDisplayName(ChatColor.GREEN + "");
glass.setItemMeta(glassMeta);
for (int j : new int[] { 0, 1, 2, 6, 7, 8, 9, 10, 11, 15, 17, 18, 19, 20, 24, 25, 26 })
inv.setItem(j, glass);
// advanced recipes list
if (MMOItems.plugin.getConfig().getBoolean("advanced-workbench.recipe-list"))
inv.setItem(10, ConfigItem.RECIPE_LIST.getItem());
return inv;
}
@Override
public void whenClicked(InventoryClickEvent event) {
ItemStack item = event.getCurrentItem();
Inventory inv = event.getInventory();
// prevent dupe bug
if (event.getAction() == InventoryAction.COLLECT_TO_CURSOR) {
event.setCancelled(true);
return;
}
if (MMOUtils.isPluginItem(item, false))
if (item.getItemMeta().getDisplayName().equals(ChatColor.GREEN + "")) {
event.setCancelled(true);
return;
}
/*
* click to open the advanced recipe list, it's not compulsory to check
* the current item display name, since the item is always on the same
* slot, simply check for the clicked slot
*/
if (event.getRawSlot() == 10) {
event.setCancelled(true);
for (int j : MMOItems.plugin.getRecipes().recipeSlots)
if (inv.getItem(j) != null) {
Message.EMPTY_WORKBENCH_FIRST.format(ChatColor.YELLOW).send(player);
return;
}
new AdvancedRecipeTypeList(player).open();
return;
}
// click to craft
if (event.getRawSlot() == 16) {
if (event.getCursor() != null && event.getCursor().getType() != Material.AIR) {
event.setCancelled(true);
return;
}
// check for recipe
AdvancedRecipe data = MMOItems.plugin.getRecipes().getCurrentRecipe(player, event.getInventory());
if (data == null) {
event.setCancelled(true);
return;
}
// prevent any buguing click
if ((event.getCursor() != null && event.getCursor().getType() != Material.AIR) || !allowedCraftingClicks.contains(event.getAction())) {
event.setCancelled(true);
return;
}
// check for permission
if (!data.hasPermission(player)) {
event.setCancelled(true);
Message.NOT_ENOUGH_PERMS_CRAFT.format(ChatColor.RED).send(player);
return;
}
// generate new item so the item isn't always the same
player.playSound(player.getLocation(), Sound.BLOCK_ANVIL_USE, 1, 1);
inv.setItem(16, data.generateNewItem());
// remove used ingredients
for (int j = 0; j < 9; j++) {
int slot = MMOItems.plugin.getRecipes().recipeSlots[j];
ItemStack slotItem = inv.getItem(slot);
if (slotItem == null || slotItem.getType() == Material.AIR)
continue;
slotItem.setAmount(inv.getItem(slot).getAmount() - data.getAmount(j));
inv.setItem(slot, slotItem.getAmount() < 1 ? null : slotItem);
}
}
}
}

View File

@ -1,43 +0,0 @@
package net.Indyuce.mmoitems.listener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.gui.AdvancedWorkbench;
import net.mmogroup.mmolib.version.VersionMaterial;
public class AdvancedWorkbenchListener implements Listener {
@EventHandler
public void a(PlayerInteractEvent event) {
if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getClickedBlock().getType() != VersionMaterial.CRAFTING_TABLE.toMaterial())
return;
boolean shiftClick = MMOItems.plugin.getConfig().getBoolean("advanced-workbench.open-when.shift-click");
boolean simpleClick = MMOItems.plugin.getConfig().getBoolean("advanced-workbench.open-when.simple-click");
Player player = event.getPlayer();
if ((shiftClick && player.isSneaking()) || (simpleClick && !player.isSneaking())) {
event.setCancelled(true);
new AdvancedWorkbench(player).open();
}
}
@EventHandler
public void b(InventoryCloseEvent event) {
Player player = (Player) event.getPlayer();
Inventory inv = event.getInventory();
if (inv.getHolder() instanceof AdvancedWorkbench)
for (int j : MMOItems.plugin.getRecipes().recipeSlots) {
ItemStack drop = inv.getItem(j);
if (drop != null)
player.getWorld().dropItemNaturally(player.getLocation(), drop);
}
}
}

View File

@ -1,69 +0,0 @@
package net.Indyuce.mmoitems.stat;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.ConfigFile;
import net.Indyuce.mmoitems.api.item.MMOItem;
import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder;
import net.Indyuce.mmoitems.api.util.AltChar;
import net.Indyuce.mmoitems.gui.edition.AdvancedRecipeEdition;
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
import net.Indyuce.mmoitems.stat.data.StatData;
import net.Indyuce.mmoitems.stat.type.StringStat;
import net.mmogroup.mmolib.api.item.NBTItem;
import net.mmogroup.mmolib.version.VersionMaterial;
public class Advanced_Crafting_Recipe extends StringStat {
public Advanced_Crafting_Recipe() {
super(new ItemStack(VersionMaterial.CRAFTING_TABLE.toMaterial()), "Advanced Crafting Recipe", new String[] { "The advanced recipe of your item.", "Changing this value requires &o/mi reload adv-recipes&7." }, "advanced-craft", new String[] { "all" });
}
@Override
public boolean whenLoaded(MMOItem item, ConfigurationSection config) {
return true;
}
@Override
public boolean whenClicked(EditionInventory inv, InventoryClickEvent event) {
ConfigFile config = inv.getItemType().getConfigFile();
if (event.getAction() == InventoryAction.PICKUP_ALL)
new AdvancedRecipeEdition(inv.getPlayer(), inv.getItemType(), inv.getItemId()).open(inv.getPage());
if (event.getAction() == InventoryAction.PICKUP_HALF)
if (config.getConfig().getConfigurationSection(inv.getItemId()).contains("advanced-craft")) {
config.getConfig().set(inv.getItemId() + ".advanced-craft", null);
inv.registerItemEdition(config);
inv.open();
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Advanced Crafting Recipe successfully removed.");
}
return true;
}
@Override
public boolean whenApplied(MMOItemBuilder item, StatData data) {
return true;
}
@Override
public void whenLoaded(MMOItem mmoitem, NBTItem item) {
}
@Override
public boolean whenInput(EditionInventory inv, ConfigFile config, String message, Object... info) {
return true;
}
@Override
public void whenDisplayed(List<String> lore, FileConfiguration config, String path) {
lore.add("");
lore.add(ChatColor.YELLOW + AltChar.listDash + " Click to edit the advanced crafting recipe.");
lore.add(ChatColor.YELLOW + AltChar.listDash + " Right click to remove the advanced crafting recipe.");
}
}

View File

@ -1,31 +0,0 @@
package net.Indyuce.mmoitems.stat;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmoitems.api.item.MMOItem;
import net.Indyuce.mmoitems.api.item.build.MMOItemBuilder;
import net.Indyuce.mmoitems.stat.data.StatData;
import net.Indyuce.mmoitems.stat.type.StringStat;
import net.mmogroup.mmolib.api.item.NBTItem;
import net.mmogroup.mmolib.version.VersionMaterial;
public class Advanced_Crafting_Recipe_Permission extends StringStat {
public Advanced_Crafting_Recipe_Permission() {
super(new ItemStack(VersionMaterial.OAK_SIGN.toMaterial()), "Advanced Recipe Permission", new String[] { "The permission needed to craft this item.", "Changing this value requires &o/mi reload adv-recipes&7." }, "advanced-craft-permission", new String[] { "all" });
}
@Override
public boolean whenLoaded(MMOItem item, ConfigurationSection config) {
return true;
}
@Override
public void whenLoaded(MMOItem mmoitem, NBTItem item) {
}
@Override
public boolean whenApplied(MMOItemBuilder item, StatData data) {
return true;
}
}