Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.h4ckkk.prison.others;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.enchantments.Enchantment;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import ru.h4ckkk.prison.Prison;
- import ru.h4ckkk.prison.configs.CustomConfig;
- import ru.h4ckkk.prison.handlers.Handler;
- import ru.h4ckkk.prison.mobs.EntityTypes;
- import ru.h4ckkk.prison.player.PlayerData;
- import ru.h4ckkk.prison.utils.Color;
- import ru.h4ckkk.prison.utils.ItemBuilder;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class PrisonItem {
- public static Map<String, PrisonItem> items = new HashMap<String, PrisonItem>();
- private String id;
- private String next;
- private String name;
- private Material material;
- private List<String> lore;
- private Map<Enchantment, Integer> enchantments;
- private boolean drop;
- private int price;
- private HashMap<String, Integer> requirements;
- private HashMap<EntityTypes, Integer> mob_requirements;
- public PrisonItem(final String id, ConfigurationSection cItem) {
- this.drop = false;
- this.id = id;
- this.material = Material.valueOf(cItem.getString("material"));
- this.name = Color.f(cItem.getString("name"));
- this.enchantments = new HashMap<Enchantment, Integer>();
- this.requirements = new HashMap<String, Integer>();
- this.mob_requirements = new HashMap<EntityTypes, Integer>();
- if (cItem.contains("lore")) {
- this.lore = Color.f(cItem.getStringList("lore"));
- }
- if (this.lore == null) {
- this.lore = new ArrayList<String>();
- }
- this.lore.add(0, ChatColor.BLACK + id);
- if (cItem.contains("enchantments")) {
- for (final Map.Entry<String, Object> cEnchant : cItem.getConfigurationSection("enchantments").getValues(false).entrySet()) {
- this.enchantments.put(Enchantment.getByName((String)cEnchant.getKey()), (Integer) cEnchant.getValue());
- }
- }
- if (cItem.contains("requirements.blocks")) {
- for (Map.Entry<String, Object> cReq : cItem.getConfigurationSection("requirements.blocks").getValues(false).entrySet()) {
- this.requirements.put(cReq.getKey(), (Integer) cReq.getValue());
- }
- }
- if (cItem.contains("requirements.mobs")) {
- for (final Map.Entry<String, Object> cReq : cItem.getConfigurationSection("mob-requirements").getValues(false).entrySet()) {
- this.mob_requirements.put(EntityTypes.valueOf(cReq.getKey()), (Integer) cReq.getValue());
- }
- }
- if (cItem.contains("price")) {
- this.price = cItem.getInt("price");
- }
- if (cItem.contains("next")) {
- this.next = cItem.getString("next");
- }
- if (cItem.contains("drop")) {
- this.drop = cItem.getBoolean("drop");
- }
- PrisonItem.items.put(id, this);
- }
- public ItemStack getUpgradeCurrent(PlayerData playerData){
- ItemStack is = new ItemStack(this.material);
- ItemMeta im = is.getItemMeta();
- im.setDisplayName(this.name);
- List<String> lore = new ArrayList<String>(this.lore);
- lore.add(ChatColor.GREEN + "\u0426\u0435\u043d\u0430: " + ChatColor.DARK_GREEN + this.price + "$");
- if (this.requirements.size() > 0 || this.mob_requirements.size() > 0) {
- lore.add(ChatColor.DARK_GREEN + "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e: ");
- if (this.requirements.size() > 0) {
- lore.add(ChatColor.GOLD + "\u0411\u043b\u043e\u043a\u0438: ");
- }
- boolean allowed = true;
- boolean good = false;
- for (Map.Entry<String, Integer> cEntry : this.requirements.entrySet()) {
- good = (playerData.getBlockDigsCount(cEntry.getKey()) >= cEntry.getValue());
- ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
- lore.add(ChatColor.GOLD + cEntry.getKey().toString() + ": " + color + playerData.getBlockDigsCount(cEntry.getKey()) + " / " + cEntry.getValue());
- if (!good) {
- allowed = false;
- }
- }
- if (this.mob_requirements.size() > 0) {
- lore.add(ChatColor.GOLD + "Мобы: ");
- }
- for (final Map.Entry<EntityTypes, Integer> cEntry2 : this.mob_requirements.entrySet()) {
- good = (playerData.getMobKillCount(cEntry2.getKey()) >= cEntry2.getValue());
- final ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
- lore.add(ChatColor.GOLD + cEntry2.getKey().getName() + ": " + color + playerData.getMobKillCount(cEntry2.getKey()) + " / " + cEntry2.getValue());
- if (!good) {
- allowed = false;
- }
- }
- if (this.enchantments.size() > 0) {
- for (final Map.Entry<Enchantment, Integer> entry : this.enchantments.entrySet()) {
- im.addEnchant((Enchantment)entry.getKey(), (int)entry.getValue(), false);
- }
- }
- if (!allowed) {
- lore.set(0, ChatColor.BLACK + this.id);
- }
- }
- im.setLore((List)lore);
- is.setItemMeta(im);
- return is;
- }
- public ItemStack getUpgradingItem(PlayerData prisonPlayer) {
- PrisonItem nextItem = getPrisonItem(this.next);
- ItemStack is = new ItemStack(nextItem.material);
- ItemMeta im = is.getItemMeta();
- im.setDisplayName(ChatColor.GOLD + "\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435: " + nextItem.name);
- List<String> lore = new ArrayList<String>(nextItem.lore);
- lore.add(ChatColor.GREEN + "\u0426\u0435\u043d\u0430: " + ChatColor.DARK_GREEN + nextItem.price + "$");
- if (nextItem.requirements.size() > 0 || nextItem.mob_requirements.size() > 0) {
- lore.add(ChatColor.DARK_GREEN + "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e: ");
- if (nextItem.requirements.size() > 0) {
- lore.add(ChatColor.GOLD + "\u0411\u043b\u043e\u043a\u0438: ");
- }
- boolean allowed = true;
- boolean good = false;
- for (Map.Entry<String, Integer> cEntry : nextItem.requirements.entrySet()) {
- good = (prisonPlayer.getBlockDigsCount(cEntry.getKey()) >= cEntry.getValue());
- ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
- lore.add(ChatColor.GOLD + cEntry.getKey().toString() + ": " + color + prisonPlayer.getBlockDigsCount(cEntry.getKey()) + " / " + cEntry.getValue());
- if (!good) {
- allowed = false;
- }
- }
- if (nextItem.mob_requirements.size() > 0) {
- lore.add(ChatColor.GOLD + "Мобы: ");
- }
- for (final Map.Entry<EntityTypes, Integer> cEntry2 : nextItem.mob_requirements.entrySet()) {
- good = (prisonPlayer.getMobKillCount(cEntry2.getKey()) >= cEntry2.getValue());
- final ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
- lore.add(ChatColor.GOLD + cEntry2.getKey().getName() + ": " + color + prisonPlayer.getMobKillCount(cEntry2.getKey()) + " / " + cEntry2.getValue());
- if (!good) {
- allowed = false;
- }
- }
- if (nextItem.enchantments.size() > 0) {
- for (final Map.Entry<Enchantment, Integer> entry : nextItem.enchantments.entrySet()) {
- im.addEnchant((Enchantment)entry.getKey(), (int)entry.getValue(), false);
- }
- }
- if (!allowed) {
- lore.set(0, ChatColor.BLACK + "not_allowed");
- }
- }
- im.setLore((List)lore);
- if (is.getType().getMaxDurability() > 16) {
- im.spigot().setUnbreakable(true);
- }
- is.setItemMeta(im);
- return is;
- }
- public ItemStack getUsableItem() {
- ItemStack is = new ItemStack(this.material);
- ItemMeta im = is.getItemMeta();
- im.setDisplayName(ChatColor.RESET + this.name);
- im.setLore((List)this.lore);
- if (this.enchantments.size() > 0) {
- for (final Map.Entry<Enchantment, Integer> entry : this.enchantments.entrySet()) {
- im.addEnchant((Enchantment)entry.getKey(), (int)entry.getValue(), false);
- }
- }
- if (is.getType().getMaxDurability() > 16) {
- im.spigot().setUnbreakable(true);
- }
- is.setItemMeta(im);
- return is;
- }
- public PrisonItem getNext() {
- if (PrisonItem.items.containsKey(this.next)) {
- return PrisonItem.items.get(this.next);
- }
- return null;
- }
- public boolean hasNext() {
- return this.getNext() != null;
- }
- public static PrisonItem getPrisonItem(final ItemStack is) {
- try {
- return PrisonItem.items.get(ChatColor.stripColor((String)is.getItemMeta().getLore().get(0)));
- }
- catch (NullPointerException ex) {
- return null;
- }
- }
- public static PrisonItem getPrisonItem(final String id) {
- try {
- return PrisonItem.items.get(id);
- }
- catch (NullPointerException ex) {
- return null;
- }
- }
- public static boolean isCustomItem(final ItemStack is) {
- try {
- return PrisonItem.items.containsKey(ChatColor.stripColor((String)is.getItemMeta().getLore().get(0)));
- }
- catch (NullPointerException ex) {
- return false;
- }
- }
- public static boolean isAvailable(final String id) {
- return PrisonItem.items.containsKey(id);
- }
- public String getId() {
- return this.id;
- }
- public String getName() {
- return this.name;
- }
- public Material getMaterial() {
- return this.material;
- }
- public List<String> getLore() {
- return this.lore;
- }
- public Map<Enchantment, Integer> getEnchantments() {
- return this.enchantments;
- }
- public boolean willDrop() {
- return this.drop;
- }
- public int getPrice() {
- return this.price;
- }
- public HashMap<String, Integer> getRequirements() {
- return this.requirements;
- }
- public HashMap<EntityTypes, Integer> getMob_requirements() {
- return this.mob_requirements;
- }
- public void openGUIUpgrade(Player player) {
- Inventory inv = Bukkit.createInventory(null,54, Handler.UPGRADE_INV);
- PlayerData playerData = PlayerData.getPlayerData(player);
- String type = this.id.split("_")[0];
- int slot = 0;
- CustomConfig cfg = Prison.getConfigs().get("items");
- for (final String cItemString : cfg.get().getKeys(false)) {
- if (cItemString.split("_")[0].equalsIgnoreCase(type)){
- inv.setItem(slot, PrisonItem.getPrisonItem(cItemString).getUpgradeCurrent(playerData));
- slot++;
- }
- }
- ItemStack is = new ItemBuilder(Material.STAINED_GLASS_PANE).setDurability((byte)7).setName(" ").toItemStack();
- inv.setItem(36,is);
- inv.setItem(37,is);
- inv.setItem(38,is);
- inv.setItem(39,is);
- inv.setItem(40,is);
- inv.setItem(41,is);
- inv.setItem(42,is);
- inv.setItem(43,is);
- inv.setItem(44,is);
- inv.setItem(49,this.getUpgradingItem(playerData));
- player.openInventory(inv);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement