Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. package net.shin1gamix.xpshop.objects;
  2.  
  3. import java.util.List;
  4. import java.util.Map;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Material;
  8. import org.bukkit.enchantments.Enchantment;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.inventory.ItemFlag;
  11. import org.bukkit.inventory.ItemStack;
  12. import org.bukkit.inventory.meta.ItemMeta;
  13.  
  14. import com.google.common.collect.Maps;
  15.  
  16. import net.shin1gamix.xpshop.Core;
  17. import net.shin1gamix.xpshop.utilities.MessagesX;
  18. import net.shin1gamix.xpshop.utilities.Utils;
  19.  
  20. public class Points implements ShopItemCharge {
  21.  
  22. private final Core core;
  23. private final int id;
  24. private final String[] matArr;
  25. private final ItemStack item;
  26. private final Player player;
  27.  
  28. public Points(final Core core, final Player player, final int id) {
  29. this.core = core;
  30. this.player = player;
  31. this.matArr = core.getOptions().getFile().getString("menu." + id + ".material").split(":");
  32. this.id = id;
  33.  
  34. final int amount = core.getOptions().getFile().contains("menu." + id + ".amount")
  35. ? core.getOptions().getFile().getInt("menu." + id + ".amount")
  36. : 1;
  37.  
  38. final int durability = this.matArr.length < 2 ? 0 : Integer.valueOf(this.matArr[1]);
  39.  
  40. final Material material = Material.getMaterial(this.matArr[0]);
  41.  
  42. this.item = new ItemStack(material, amount, (short) durability);
  43.  
  44. final ItemMeta meta = this.item.getItemMeta();
  45.  
  46. meta.setDisplayName(Utils.colorize(this.getName()));
  47.  
  48. meta.setLore(Utils.colorize(this.getLore()));
  49.  
  50. if (this.isGlowing()) {
  51. meta.addEnchant(Enchantment.DURABILITY, 1, false);
  52. meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
  53. }
  54. meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
  55. this.item.setItemMeta(meta);
  56. }
  57.  
  58. @Override
  59. public ItemStack getItem() {
  60. return this.item;
  61. }
  62.  
  63. @Override
  64. public int[] getSlots() {
  65. String[] splt = core.getOptions().getFile().getString("menu." + id + ".slots").split(" ");
  66. if (splt.length == 1) {
  67. return new int[] { Integer.parseInt(splt[0]) };
  68. }
  69. final int[] slots = new int[splt.length];
  70.  
  71. for (int i = 0; i < splt.length; i++) {
  72. int slot = Integer.parseInt(splt[i]);
  73. slots[i] = slot;
  74. }
  75. return slots;
  76. }
  77.  
  78. @Override
  79. public String getName() {
  80. return core.getOptions().getFile().getString("menu." + id + ".name");
  81. }
  82.  
  83. @Override
  84. public List<String> getLore() {
  85. final Map<String, String> map = Maps.newHashMap();
  86. int exp = this.core.getPlayerExp(this.player);
  87. map.put("%XP_POINTS%", String.valueOf(exp));
  88. map.put("%XP_POINTS_NEED%", String.valueOf(this.getPrice() - exp < 0 ? 0 : this.getPrice() - exp));
  89. return Utils.placeHolder(core.getOptions().getFile().getStringList("menu." + id + ".lore"), map, true);
  90. }
  91.  
  92. /**
  93. * @return the id
  94. */
  95. public int getId() {
  96. return this.id;
  97. }
  98.  
  99. @Override
  100. public boolean isGlowing() {
  101. return core.getOptions().getFile().contains("menu." + id + ".glowing")
  102. ? core.getOptions().getFile().getBoolean("menu." + id + ".glowing")
  103. : false;
  104. }
  105.  
  106. @Override
  107. public int getPrice() {
  108. return core.getOptions().getFile().getInt("menu." + id + ".price");
  109. }
  110.  
  111. @Override
  112. public boolean charge() {
  113. final int balance = this.core.getPlayerExp(this.player);
  114. final int price = this.getPrice();
  115. if (balance >= price) {
  116. this.core.setPlayerExp(player, balance - price);
  117. return true;
  118. }
  119. return false;
  120. }
  121.  
  122. @Override
  123. public void executeTask() {
  124. this.player.closeInventory();
  125. if (!this.charge()) {
  126. MessagesX.NOT_ENOUGH_EXP.msg(this.player);
  127. return;
  128. }
  129.  
  130. final Map<String, String> map = Maps.newHashMap();
  131. map.put("%player%", this.player.getName());
  132. this.core.getOptions().getFile().getStringList("menu." + this.id + ".commands")
  133. .forEach(cmd -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), Utils.placeHolder(cmd, map, false)));
  134. map.remove("%player%");
  135. map.put("%amount%", this.getPrice() + " EXP");
  136. map.put("%item%", this.getName());
  137. MessagesX.PURCHASE_SUCCESS.msg(this.player, map, true);
  138. return;
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement