mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-01-10 07:47:35 +01:00
Removed Advanced Workbench
This commit is contained in:
parent
ecfc885860
commit
145e2ea551
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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.");
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user