P2P-Develop/PeyangSuperbAntiCheat

View on GitHub
src/main/java/ml/peya/plugins/Gui/Item.java

Summary

Maintainability
A
0 mins
Test Coverage
package ml.peya.plugins.Gui;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * アイテム自体をなんとなく管理してくれるクラス。
 */
public class Item
{
    /**
     * 登録されたアイテム
     */
    private final ArrayList<IItems> items;

    public Item()
    {
        this.items = new ArrayList<>();
    }

    /**
     * GUIで表示できるアイテムであるか。
     *
     * @param item チェックするアイテム。
     * @return GUI表示可能であればちゃんとしてくれる。
     */
    public static boolean canGuiItem(ItemStack item)
    {
        if (item == null || item.getType() == Material.AIR || !item.hasItemMeta())
            return true;

        ItemMeta meta = item.getItemMeta();

        if (!meta.hasLore() || meta.getLore().size() <= 1) return true;

        return !meta.getLore().get(0).equals(ChatColor.GRAY + ChatColor.ITALIC.toString() + "Lynx item.");
    }

    /**
     * どのようなアイテムであるかStringで取得できる奴。
     *
     * @param item チェックするアイテム。
     * @return 説明付きのString結果。
     */
    public static String getType(ItemStack item)
    {
        if (canGuiItem(item))
            return null;
        return item.getItemMeta().getLore().get(1)
            .replace(ChatColor.GRAY + ChatColor.ITALIC.toString() + "Execution type: ", "");
    }

    /**
     * トラッキングに関わる関数。トラッキングしているプレイヤーを表示する。
     *
     * @param item チェックするアイテム。
     * @return トラッキングしているプレイヤー付きのString。
     */
    public static String getTarget(ItemStack item)
    {
        if (canGuiItem(item))
            return null;
        return item.getItemMeta().getLore().get(2)
            .replace(ChatColor.GRAY + ChatColor.ITALIC.toString() + "Target: ", "");
    }

    /**
     * アイテムの説明を取得する関数。
     *
     * @param item   チェックするアイテム。
     * @param target ターゲット(?)
     * @return チェックした後のArrayList。
     */
    public static ArrayList<String> getLore(IItems item, String target)
    {

        ArrayList<String> list = new ArrayList<>(Arrays
            .asList(ChatColor.GRAY + ChatColor.ITALIC.toString() + "Lynx item.", ChatColor.GRAY + ChatColor.ITALIC
                .toString() + "Execution type: " + item.getExecName()));

        if (item.getType() == IItems.Type.TARGET || item.getType() == IItems.Type.TARGET_2)
            list.add(ChatColor.GRAY + ChatColor.ITALIC.toString() + "Target: " + target);

        list.add(ChatColor.GRAY + ChatColor.ITALIC.toString() + "Type: " + item.getType());

        return list;
    }

    /**
     * アイテムを登録する...らしい。
     *
     * @param item 登録するアイテム。
     */
    public void register(IItems item)
    {
        for (IItems items : this.items)
            if (items.getExecName().equals(item.getExecName()))
                return;

        items.add(item);
    }

    /**
     * アイテムの登録を解除する...らしい。
     *
     * @param item 解除するアイテム。
     */
    public void unRegister(IItems item)
    {
        this.items.removeIf(iItems -> iItems.getExecName().equals(item.getExecName()));
    }

    /**
     * アイテムを取得するゲッター。
     *
     * @return アイテムたち。
     */
    public ArrayList<IItems> getItems()
    {
        return items;
    }
}