2016-04-14 16:24:03 +00:00
|
|
|
package me.mrCookieSlime.Slimefun.Setup;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2017-04-09 07:59:45 +00:00
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import org.bukkit.potion.PotionEffect;
|
|
|
|
|
2016-04-14 16:24:03 +00:00
|
|
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
|
|
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|
|
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
|
|
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
|
|
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
2017-04-09 07:59:45 +00:00
|
|
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
2016-04-14 16:24:03 +00:00
|
|
|
|
2019-08-27 21:08:13 +00:00
|
|
|
public final class SlimefunManager {
|
|
|
|
|
|
|
|
private SlimefunManager() {}
|
2016-04-14 16:24:03 +00:00
|
|
|
|
|
|
|
public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) {
|
|
|
|
String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"};
|
|
|
|
Category cat = special ? Categories.MAGIC_ARMOR: Categories.ARMOR;
|
2019-08-27 21:08:13 +00:00
|
|
|
List<ItemStack[]> recipes = new ArrayList<>();
|
2016-04-14 16:24:03 +00:00
|
|
|
recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, null, null, null});
|
|
|
|
recipes.add(new ItemStack[] {baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent});
|
|
|
|
recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent});
|
|
|
|
recipes.add(new ItemStack[] {null, null, null, baseComponent, null, baseComponent, baseComponent, null, baseComponent});
|
2019-08-29 23:11:33 +00:00
|
|
|
|
2016-04-14 16:24:03 +00:00
|
|
|
for (int i = 0; i < 4; i++) {
|
2019-08-29 23:11:33 +00:00
|
|
|
if (i < effects.length && effects[i].length > 0) {
|
2019-08-29 21:18:04 +00:00
|
|
|
new SlimefunArmorPiece(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i), effects[i]).register(slimefun);
|
2019-08-29 23:11:33 +00:00
|
|
|
}
|
|
|
|
else {
|
2019-08-29 21:18:04 +00:00
|
|
|
new SlimefunItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun);
|
|
|
|
}
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-04-09 07:59:45 +00:00
|
|
|
public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, boolean slimefun, boolean vanilla) {
|
2016-04-14 16:24:03 +00:00
|
|
|
String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"};
|
|
|
|
Category cat = Categories.ARMOR;
|
2019-08-27 21:08:13 +00:00
|
|
|
List<ItemStack[]> recipes = new ArrayList<>();
|
2016-04-14 16:24:03 +00:00
|
|
|
recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, null, null, null});
|
|
|
|
recipes.add(new ItemStack[] {baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent});
|
|
|
|
recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent});
|
|
|
|
recipes.add(new ItemStack[] {null, null, null, baseComponent, null, baseComponent, baseComponent, null, baseComponent});
|
2019-08-29 23:11:33 +00:00
|
|
|
|
2016-04-14 16:24:03 +00:00
|
|
|
for (int i = 0; i < 4; i++) {
|
2017-04-09 07:59:45 +00:00
|
|
|
if (vanilla) {
|
|
|
|
new VanillaItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun);
|
2019-08-29 23:11:33 +00:00
|
|
|
}
|
|
|
|
else {
|
2017-04-09 07:59:45 +00:00
|
|
|
new SlimefunItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun);
|
|
|
|
}
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
}
|
2018-09-04 16:41:34 +00:00
|
|
|
|
|
|
|
//ToDO: ALl all
|
|
|
|
//Charcoal=coal?
|
|
|
|
// public static List<Material> data_safe = Arrays.asList(Material.WHITE_WOOL,
|
|
|
|
// Material.WHITE_CARPET,
|
|
|
|
// Material.WHITE_TERRACOTTA,
|
|
|
|
// Material.WHITE_STAINED_GLASS,
|
|
|
|
// Material.WHITE_STAINED_GLASS_PANE,
|
|
|
|
// Material.INK_SAC,
|
|
|
|
// Material.STONE,
|
|
|
|
// Material.COAL, Material.SKULL_ITEM, Material.RAW_FISH, Material.COOKED_FISH);
|
2016-04-14 16:24:03 +00:00
|
|
|
|
2019-08-30 20:49:18 +00:00
|
|
|
public static boolean isItemSimiliar(ItemStack item, ItemStack sfitem, boolean lore) {
|
|
|
|
if (item == null) return sfitem == null;
|
|
|
|
if (sfitem == null) return false;
|
2016-04-14 16:24:03 +00:00
|
|
|
|
2019-08-30 20:49:18 +00:00
|
|
|
if (item.getType() == sfitem.getType() && item.getAmount() >= sfitem.getAmount()) {
|
|
|
|
if (item.hasItemMeta() && sfitem.hasItemMeta()) {
|
|
|
|
if (item.getItemMeta().hasDisplayName() && sfitem.getItemMeta().hasDisplayName()) {
|
|
|
|
if (item.getItemMeta().getDisplayName().equals(sfitem.getItemMeta().getDisplayName())) {
|
2016-04-14 16:24:03 +00:00
|
|
|
if (lore) {
|
2019-08-30 20:49:18 +00:00
|
|
|
if (item.getItemMeta().hasLore() && sfitem.getItemMeta().hasLore()) {
|
|
|
|
return equalsLore(item.getItemMeta().getLore(), sfitem.getItemMeta().getLore());
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
2019-08-30 20:49:18 +00:00
|
|
|
else return !item.getItemMeta().hasLore() && !sfitem.getItemMeta().hasLore();
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
else return true;
|
|
|
|
}
|
|
|
|
else return false;
|
|
|
|
}
|
2019-08-30 20:49:18 +00:00
|
|
|
else if (!item.getItemMeta().hasDisplayName() && !sfitem.getItemMeta().hasDisplayName()) {
|
2016-04-14 16:24:03 +00:00
|
|
|
if (lore) {
|
2019-08-30 20:49:18 +00:00
|
|
|
if (item.getItemMeta().hasLore() && sfitem.getItemMeta().hasLore()) {
|
|
|
|
return equalsLore(item.getItemMeta().getLore(), sfitem.getItemMeta().getLore());
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
2019-08-30 20:49:18 +00:00
|
|
|
else return !item.getItemMeta().hasLore() && !sfitem.getItemMeta().hasLore();
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
else return true;
|
|
|
|
}
|
|
|
|
else return false;
|
|
|
|
}
|
2019-08-30 20:49:18 +00:00
|
|
|
else return !item.hasItemMeta() && !sfitem.hasItemMeta();
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
else return false;
|
|
|
|
}
|
|
|
|
|
2019-08-29 14:19:23 +00:00
|
|
|
|
|
|
|
@Deprecated
|
|
|
|
public static enum DataType {
|
|
|
|
|
|
|
|
ALWAYS,
|
|
|
|
NEVER,
|
|
|
|
IF_COLORED;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Deprecated
|
2019-08-30 20:49:18 +00:00
|
|
|
public static boolean isItemSimiliar(ItemStack item, ItemStack sfitem, boolean lore, DataType data) {
|
|
|
|
return isItemSimiliar(item, sfitem, lore);
|
2019-08-29 14:19:23 +00:00
|
|
|
}
|
|
|
|
|
2016-04-14 16:24:03 +00:00
|
|
|
private static boolean equalsLore(List<String> lore, List<String> lore2) {
|
2019-08-29 20:46:03 +00:00
|
|
|
String string1 = "";
|
|
|
|
String string2 = "";
|
2016-04-14 16:24:03 +00:00
|
|
|
for (String string: lore) {
|
2016-11-23 15:51:57 +00:00
|
|
|
if (!string.startsWith("&e&e&7")) string1 = string1 + "-NEW LINE-" + string;
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
for (String string: lore2) {
|
2016-11-23 15:51:57 +00:00
|
|
|
if (!string.startsWith("&e&e&7")) string2 = string2 + "-NEW LINE-" + string;
|
2016-04-14 16:24:03 +00:00
|
|
|
}
|
|
|
|
return string1.equals(string2);
|
|
|
|
}
|
|
|
|
}
|