Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.91 KB | None | 0 0
  1. package ru.h4ckkk.prison.others;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.Material;
  6. import org.bukkit.configuration.ConfigurationSection;
  7. import org.bukkit.enchantments.Enchantment;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.inventory.Inventory;
  10. import org.bukkit.inventory.ItemStack;
  11. import org.bukkit.inventory.meta.ItemMeta;
  12. import ru.h4ckkk.prison.Prison;
  13. import ru.h4ckkk.prison.configs.CustomConfig;
  14. import ru.h4ckkk.prison.handlers.Handler;
  15. import ru.h4ckkk.prison.mobs.EntityTypes;
  16. import ru.h4ckkk.prison.player.PlayerData;
  17. import ru.h4ckkk.prison.utils.Color;
  18. import ru.h4ckkk.prison.utils.ItemBuilder;
  19.  
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24.  
  25. public class PrisonItem {
  26.  
  27. public static Map<String, PrisonItem> items = new HashMap<String, PrisonItem>();
  28.  
  29. private String id;
  30. private String next;
  31. private String name;
  32. private Material material;
  33. private List<String> lore;
  34. private Map<Enchantment, Integer> enchantments;
  35. private boolean drop;
  36. private int price;
  37. private HashMap<String, Integer> requirements;
  38. private HashMap<EntityTypes, Integer> mob_requirements;
  39.  
  40. public PrisonItem(final String id, ConfigurationSection cItem) {
  41. this.drop = false;
  42. this.id = id;
  43. this.material = Material.valueOf(cItem.getString("material"));
  44. this.name = Color.f(cItem.getString("name"));
  45. this.enchantments = new HashMap<Enchantment, Integer>();
  46. this.requirements = new HashMap<String, Integer>();
  47. this.mob_requirements = new HashMap<EntityTypes, Integer>();
  48. if (cItem.contains("lore")) {
  49. this.lore = Color.f(cItem.getStringList("lore"));
  50. }
  51. if (this.lore == null) {
  52. this.lore = new ArrayList<String>();
  53. }
  54. this.lore.add(0, ChatColor.BLACK + id);
  55. if (cItem.contains("enchantments")) {
  56. for (final Map.Entry<String, Object> cEnchant : cItem.getConfigurationSection("enchantments").getValues(false).entrySet()) {
  57. this.enchantments.put(Enchantment.getByName((String)cEnchant.getKey()), (Integer) cEnchant.getValue());
  58. }
  59. }
  60. if (cItem.contains("requirements.blocks")) {
  61. for (Map.Entry<String, Object> cReq : cItem.getConfigurationSection("requirements.blocks").getValues(false).entrySet()) {
  62. this.requirements.put(cReq.getKey(), (Integer) cReq.getValue());
  63. }
  64. }
  65. if (cItem.contains("requirements.mobs")) {
  66. for (final Map.Entry<String, Object> cReq : cItem.getConfigurationSection("mob-requirements").getValues(false).entrySet()) {
  67. this.mob_requirements.put(EntityTypes.valueOf(cReq.getKey()), (Integer) cReq.getValue());
  68. }
  69. }
  70. if (cItem.contains("price")) {
  71. this.price = cItem.getInt("price");
  72. }
  73. if (cItem.contains("next")) {
  74. this.next = cItem.getString("next");
  75. }
  76. if (cItem.contains("drop")) {
  77. this.drop = cItem.getBoolean("drop");
  78. }
  79. PrisonItem.items.put(id, this);
  80. }
  81.  
  82. public ItemStack getUpgradeCurrent(PlayerData playerData){
  83. ItemStack is = new ItemStack(this.material);
  84. ItemMeta im = is.getItemMeta();
  85. im.setDisplayName(this.name);
  86. List<String> lore = new ArrayList<String>(this.lore);
  87. lore.add(ChatColor.GREEN + "\u0426\u0435\u043d\u0430: " + ChatColor.DARK_GREEN + this.price + "$");
  88. if (this.requirements.size() > 0 || this.mob_requirements.size() > 0) {
  89. lore.add(ChatColor.DARK_GREEN + "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e: ");
  90. if (this.requirements.size() > 0) {
  91. lore.add(ChatColor.GOLD + "\u0411\u043b\u043e\u043a\u0438: ");
  92. }
  93. boolean allowed = true;
  94. boolean good = false;
  95. for (Map.Entry<String, Integer> cEntry : this.requirements.entrySet()) {
  96. good = (playerData.getBlockDigsCount(cEntry.getKey()) >= cEntry.getValue());
  97. ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
  98. lore.add(ChatColor.GOLD + cEntry.getKey().toString() + ": " + color + playerData.getBlockDigsCount(cEntry.getKey()) + " / " + cEntry.getValue());
  99. if (!good) {
  100. allowed = false;
  101. }
  102. }
  103. if (this.mob_requirements.size() > 0) {
  104. lore.add(ChatColor.GOLD + "Мобы: ");
  105. }
  106. for (final Map.Entry<EntityTypes, Integer> cEntry2 : this.mob_requirements.entrySet()) {
  107. good = (playerData.getMobKillCount(cEntry2.getKey()) >= cEntry2.getValue());
  108. final ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
  109. lore.add(ChatColor.GOLD + cEntry2.getKey().getName() + ": " + color + playerData.getMobKillCount(cEntry2.getKey()) + " / " + cEntry2.getValue());
  110. if (!good) {
  111. allowed = false;
  112. }
  113. }
  114. if (this.enchantments.size() > 0) {
  115. for (final Map.Entry<Enchantment, Integer> entry : this.enchantments.entrySet()) {
  116. im.addEnchant((Enchantment)entry.getKey(), (int)entry.getValue(), false);
  117. }
  118. }
  119. if (!allowed) {
  120. lore.set(0, ChatColor.BLACK + this.id);
  121. }
  122. }
  123. im.setLore((List)lore);
  124. is.setItemMeta(im);
  125. return is;
  126. }
  127.  
  128. public ItemStack getUpgradingItem(PlayerData prisonPlayer) {
  129. PrisonItem nextItem = getPrisonItem(this.next);
  130. ItemStack is = new ItemStack(nextItem.material);
  131. ItemMeta im = is.getItemMeta();
  132. im.setDisplayName(ChatColor.GOLD + "\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435: " + nextItem.name);
  133. List<String> lore = new ArrayList<String>(nextItem.lore);
  134. lore.add(ChatColor.GREEN + "\u0426\u0435\u043d\u0430: " + ChatColor.DARK_GREEN + nextItem.price + "$");
  135. if (nextItem.requirements.size() > 0 || nextItem.mob_requirements.size() > 0) {
  136. lore.add(ChatColor.DARK_GREEN + "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e: ");
  137. if (nextItem.requirements.size() > 0) {
  138. lore.add(ChatColor.GOLD + "\u0411\u043b\u043e\u043a\u0438: ");
  139. }
  140. boolean allowed = true;
  141. boolean good = false;
  142. for (Map.Entry<String, Integer> cEntry : nextItem.requirements.entrySet()) {
  143. good = (prisonPlayer.getBlockDigsCount(cEntry.getKey()) >= cEntry.getValue());
  144. ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
  145. lore.add(ChatColor.GOLD + cEntry.getKey().toString() + ": " + color + prisonPlayer.getBlockDigsCount(cEntry.getKey()) + " / " + cEntry.getValue());
  146. if (!good) {
  147. allowed = false;
  148. }
  149. }
  150. if (nextItem.mob_requirements.size() > 0) {
  151. lore.add(ChatColor.GOLD + "Мобы: ");
  152. }
  153. for (final Map.Entry<EntityTypes, Integer> cEntry2 : nextItem.mob_requirements.entrySet()) {
  154. good = (prisonPlayer.getMobKillCount(cEntry2.getKey()) >= cEntry2.getValue());
  155. final ChatColor color = good ? ChatColor.DARK_GREEN : ChatColor.DARK_RED;
  156. lore.add(ChatColor.GOLD + cEntry2.getKey().getName() + ": " + color + prisonPlayer.getMobKillCount(cEntry2.getKey()) + " / " + cEntry2.getValue());
  157. if (!good) {
  158. allowed = false;
  159. }
  160. }
  161. if (nextItem.enchantments.size() > 0) {
  162. for (final Map.Entry<Enchantment, Integer> entry : nextItem.enchantments.entrySet()) {
  163. im.addEnchant((Enchantment)entry.getKey(), (int)entry.getValue(), false);
  164. }
  165. }
  166. if (!allowed) {
  167. lore.set(0, ChatColor.BLACK + "not_allowed");
  168. }
  169. }
  170. im.setLore((List)lore);
  171. if (is.getType().getMaxDurability() > 16) {
  172. im.spigot().setUnbreakable(true);
  173. }
  174. is.setItemMeta(im);
  175. return is;
  176. }
  177.  
  178. public ItemStack getUsableItem() {
  179. ItemStack is = new ItemStack(this.material);
  180. ItemMeta im = is.getItemMeta();
  181. im.setDisplayName(ChatColor.RESET + this.name);
  182. im.setLore((List)this.lore);
  183. if (this.enchantments.size() > 0) {
  184. for (final Map.Entry<Enchantment, Integer> entry : this.enchantments.entrySet()) {
  185. im.addEnchant((Enchantment)entry.getKey(), (int)entry.getValue(), false);
  186. }
  187. }
  188. if (is.getType().getMaxDurability() > 16) {
  189. im.spigot().setUnbreakable(true);
  190. }
  191. is.setItemMeta(im);
  192. return is;
  193. }
  194.  
  195. public PrisonItem getNext() {
  196. if (PrisonItem.items.containsKey(this.next)) {
  197. return PrisonItem.items.get(this.next);
  198. }
  199. return null;
  200. }
  201.  
  202. public boolean hasNext() {
  203. return this.getNext() != null;
  204. }
  205.  
  206. public static PrisonItem getPrisonItem(final ItemStack is) {
  207. try {
  208. return PrisonItem.items.get(ChatColor.stripColor((String)is.getItemMeta().getLore().get(0)));
  209. }
  210. catch (NullPointerException ex) {
  211. return null;
  212. }
  213. }
  214.  
  215. public static PrisonItem getPrisonItem(final String id) {
  216. try {
  217. return PrisonItem.items.get(id);
  218. }
  219. catch (NullPointerException ex) {
  220. return null;
  221. }
  222. }
  223.  
  224. public static boolean isCustomItem(final ItemStack is) {
  225. try {
  226. return PrisonItem.items.containsKey(ChatColor.stripColor((String)is.getItemMeta().getLore().get(0)));
  227. }
  228. catch (NullPointerException ex) {
  229. return false;
  230. }
  231. }
  232.  
  233. public static boolean isAvailable(final String id) {
  234. return PrisonItem.items.containsKey(id);
  235. }
  236.  
  237. public String getId() {
  238. return this.id;
  239. }
  240.  
  241. public String getName() {
  242. return this.name;
  243. }
  244.  
  245. public Material getMaterial() {
  246. return this.material;
  247. }
  248.  
  249. public List<String> getLore() {
  250. return this.lore;
  251. }
  252.  
  253. public Map<Enchantment, Integer> getEnchantments() {
  254. return this.enchantments;
  255. }
  256.  
  257. public boolean willDrop() {
  258. return this.drop;
  259. }
  260.  
  261. public int getPrice() {
  262. return this.price;
  263. }
  264.  
  265. public HashMap<String, Integer> getRequirements() {
  266. return this.requirements;
  267. }
  268. public HashMap<EntityTypes, Integer> getMob_requirements() {
  269. return this.mob_requirements;
  270. }
  271.  
  272. public void openGUIUpgrade(Player player) {
  273. Inventory inv = Bukkit.createInventory(null,54, Handler.UPGRADE_INV);
  274. PlayerData playerData = PlayerData.getPlayerData(player);
  275. String type = this.id.split("_")[0];
  276.  
  277. int slot = 0;
  278. CustomConfig cfg = Prison.getConfigs().get("items");
  279. for (final String cItemString : cfg.get().getKeys(false)) {
  280. if (cItemString.split("_")[0].equalsIgnoreCase(type)){
  281. inv.setItem(slot, PrisonItem.getPrisonItem(cItemString).getUpgradeCurrent(playerData));
  282. slot++;
  283. }
  284. }
  285. ItemStack is = new ItemBuilder(Material.STAINED_GLASS_PANE).setDurability((byte)7).setName(" ").toItemStack();
  286.  
  287. inv.setItem(36,is);
  288. inv.setItem(37,is);
  289. inv.setItem(38,is);
  290. inv.setItem(39,is);
  291. inv.setItem(40,is);
  292. inv.setItem(41,is);
  293. inv.setItem(42,is);
  294. inv.setItem(43,is);
  295. inv.setItem(44,is);
  296.  
  297. inv.setItem(49,this.getUpgradingItem(playerData));
  298.  
  299.  
  300. player.openInventory(inv);
  301. }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement