Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.shin1gamix.xpshop.objects;
- import java.util.List;
- import java.util.Map;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.enchantments.Enchantment;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemFlag;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import com.google.common.collect.Maps;
- import net.shin1gamix.xpshop.Core;
- import net.shin1gamix.xpshop.utilities.MessagesX;
- import net.shin1gamix.xpshop.utilities.Utils;
- public class Points implements ShopItemCharge {
- private final Core core;
- private final int id;
- private final String[] matArr;
- private final ItemStack item;
- private final Player player;
- public Points(final Core core, final Player player, final int id) {
- this.core = core;
- this.player = player;
- this.matArr = core.getOptions().getFile().getString("menu." + id + ".material").split(":");
- this.id = id;
- final int amount = core.getOptions().getFile().contains("menu." + id + ".amount")
- ? core.getOptions().getFile().getInt("menu." + id + ".amount")
- : 1;
- final int durability = this.matArr.length < 2 ? 0 : Integer.valueOf(this.matArr[1]);
- final Material material = Material.getMaterial(this.matArr[0]);
- this.item = new ItemStack(material, amount, (short) durability);
- final ItemMeta meta = this.item.getItemMeta();
- meta.setDisplayName(Utils.colorize(this.getName()));
- meta.setLore(Utils.colorize(this.getLore()));
- if (this.isGlowing()) {
- meta.addEnchant(Enchantment.DURABILITY, 1, false);
- meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
- }
- meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
- this.item.setItemMeta(meta);
- }
- @Override
- public ItemStack getItem() {
- return this.item;
- }
- @Override
- public int[] getSlots() {
- String[] splt = core.getOptions().getFile().getString("menu." + id + ".slots").split(" ");
- if (splt.length == 1) {
- return new int[] { Integer.parseInt(splt[0]) };
- }
- final int[] slots = new int[splt.length];
- for (int i = 0; i < splt.length; i++) {
- int slot = Integer.parseInt(splt[i]);
- slots[i] = slot;
- }
- return slots;
- }
- @Override
- public String getName() {
- return core.getOptions().getFile().getString("menu." + id + ".name");
- }
- @Override
- public List<String> getLore() {
- final Map<String, String> map = Maps.newHashMap();
- int exp = this.core.getPlayerExp(this.player);
- map.put("%XP_POINTS%", String.valueOf(exp));
- map.put("%XP_POINTS_NEED%", String.valueOf(this.getPrice() - exp < 0 ? 0 : this.getPrice() - exp));
- return Utils.placeHolder(core.getOptions().getFile().getStringList("menu." + id + ".lore"), map, true);
- }
- /**
- * @return the id
- */
- public int getId() {
- return this.id;
- }
- @Override
- public boolean isGlowing() {
- return core.getOptions().getFile().contains("menu." + id + ".glowing")
- ? core.getOptions().getFile().getBoolean("menu." + id + ".glowing")
- : false;
- }
- @Override
- public int getPrice() {
- return core.getOptions().getFile().getInt("menu." + id + ".price");
- }
- @Override
- public boolean charge() {
- final int balance = this.core.getPlayerExp(this.player);
- final int price = this.getPrice();
- if (balance >= price) {
- this.core.setPlayerExp(player, balance - price);
- return true;
- }
- return false;
- }
- @Override
- public void executeTask() {
- this.player.closeInventory();
- if (!this.charge()) {
- MessagesX.NOT_ENOUGH_EXP.msg(this.player);
- return;
- }
- final Map<String, String> map = Maps.newHashMap();
- map.put("%player%", this.player.getName());
- this.core.getOptions().getFile().getStringList("menu." + this.id + ".commands")
- .forEach(cmd -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), Utils.placeHolder(cmd, map, false)));
- map.remove("%player%");
- map.put("%amount%", this.getPrice() + " EXP");
- map.put("%item%", this.getName());
- MessagesX.PURCHASE_SUCCESS.msg(this.player, map, true);
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement