Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.meloncode.cristalix.prison;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Map;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.InventoryHolder;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.scheduler.BukkitRunnable;
- import org.bukkit.scoreboard.Objective;
- import org.bukkit.scoreboard.Scoreboard;
- import net.md_5.bungee.api.ChatMessageType;
- import net.md_5.bungee.api.chat.ComponentBuilder;
- import ru.luvas.bk.SimpleItemStack;
- import ru.meloncode.cristalix.prison.boosters.Booster;
- import ru.meloncode.cristalix.prison.boosters.BoosterType;
- import ru.meloncode.cristalix.prison.mobs.EntityTypes;
- import ru.meloncode.cristalix.prison.utils.StringUtils;
- public class PrisonPlayer
- {
- private static Map<String, PrisonPlayer> players;
- private String name;
- int level;
- Map<Material, Integer> block_log;
- Map<EntityTypes, Integer> mob_log;
- Map<String, Integer> passives;
- Map<Achievement, Integer> achievements;
- ArrayList<String> accesses;
- Objective obj;
- int kills;
- boolean noPee;
- double exp;
- double shards;
- int deaths;
- boolean free;
- private Inventory enderChest;
- long lastkit;
- Faction faction;
- Scoreboard board;
- int totalblocks;
- double booster;
- private String lastDamager;
- private long lastDamagerHitTime;
- private double donateResourcesMultiplier;
- private double donateExpMultiplier;
- private double donateCrystalsMultiplier;
- private double donateshaftMultiplier;
- private double donateBlocksMultiplier;
- private double resourcesMultiplier;
- private double expMultiplier;
- private double shaftMultiplier;
- private double shardMultiplier;
- private double blocksMultiplier;
- static {
- PrisonPlayer.players = new HashMap<String, PrisonPlayer>();
- }
- public void setLastDamager(final String lastDamager, final int i) {
- this.lastDamager = lastDamager;
- this.lastDamagerHitTime = System.currentTimeMillis() / 1000L;
- }
- public String getLastDamager() {
- return (System.currentTimeMillis() / 1000L - this.lastDamagerHitTime <= 15L) ? this.lastDamager : null;
- }
- public int getNextLevelPrice() {
- return Main.config.getInt("levels." + (this.level + 1) + ".money");
- }
- public int getNextLevelBlockPrice() {
- return Main.config.getInt("levels." + (this.level + 1) + ".exp");
- }
- public int getTPDelay() {
- final Player p = Bukkit.getPlayer(this.name);
- for (int i = 0; i <= 10; ++i) {
- if (p.hasPermission("prison.tpdelay" + i)) {
- return i * 20;
- }
- }
- return 80;
- }
- public void addExp(final double amount) {
- this.exp += amount;
- }
- public void addShards(final double amount) {
- this.shards += amount;
- }
- public PrisonPlayer(final String name) {
- this.lastDamagerHitTime = -1L;
- this.name = name;
- this.level = 1;
- this.kills = 0;
- this.deaths = 0;
- this.booster = 1.0;
- this.shards = 0;
- this.exp = 0;
- this.noPee = false;
- this.accesses = new ArrayList<String>();
- this.block_log = new HashMap<Material, Integer>();
- this.mob_log = new HashMap<EntityTypes, Integer>();
- this.passives = new HashMap<String, Integer>();
- this.achievements = new HashMap<Achievement, Integer>();
- this.faction = null;
- int extraSlots = 0;
- for (int i = 0; i <= 18; ++i) {
- if (Bukkit.getPlayer(name).hasPermission("chest." + i)) {
- extraSlots = i;
- }
- }
- this.enderChest = Bukkit.createInventory((InventoryHolder)null, 45, "\u042d\u043d\u0434\u0435\u0440\u0421\u0443\u043d\u0434\u0443\u043a");
- for (int i = 27 + extraSlots; i < this.enderChest.getSize(); ++i) {
- this.enderChest.setItem(i, (ItemStack)new SimpleItemStack(Material.STAINED_GLASS_PANE, "&c\u0417\u0430\u043a\u0440\u044b\u0442\u043e", "&7\u041a\u0443\u043f\u0438\u0442\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435", new Object[] { (short)7 }));
- }
- PrisonPlayer.players.put(name, this);
- initDonate();
- updateMultipliers();
- }
- public int getAchievemntLevel(final Achievement achievement) {
- return this.achievements.getOrDefault(achievement, 0);
- }
- public int setAchievemntLevel(final Achievement achievement, final int level) {
- return this.achievements.put(achievement, level);
- }
- public PrisonPlayer(final String name, final ConfigurationSection info) {
- this.lastDamagerHitTime = -1L;
- this.name = name;
- this.level = info.getInt("level");
- this.kills = info.getInt("kills");
- this.deaths = info.getInt("deaths");
- this.totalblocks = info.getInt("total-blocks");
- this.shards = info.getInt("shards");
- this.exp = info.getInt("exp");
- this.noPee = info.getBoolean("noPee");
- this.booster = info.getDouble("booster");
- if (this.noPee) {
- Main.disable(name, true);
- }
- this.faction = Faction.getFaction(info.getString("faction"));
- if (info.contains("free")) {
- this.free = info.getBoolean("free");
- }
- this.accesses = new ArrayList<String>();
- if (info.contains("accesses")) {
- this.accesses = (ArrayList<String>)info.getStringList("accesses");
- }
- this.block_log = new HashMap<Material, Integer>();
- if (info.contains("block-log")) {
- final ConfigurationSection bl = info.getConfigurationSection("block-log");
- if (bl.getKeys(false).size() > 0) {
- for (final String cMaterial : bl.getKeys(false)) {
- this.block_log.put(Material.getMaterial(cMaterial), bl.getInt(cMaterial));
- }
- }
- }
- this.mob_log = new HashMap<EntityTypes, Integer>();
- if (info.contains("mob-log")) {
- final ConfigurationSection bl = info.getConfigurationSection("mob-log");
- if (bl.getKeys(false).size() > 0) {
- for (final String type : bl.getKeys(false)) {
- this.mob_log.put(EntityTypes.valueOf(type), bl.getInt(type));
- }
- }
- }
- this.achievements = new HashMap<Achievement, Integer>();
- if (info.contains("achievements")) {
- final ConfigurationSection bl = info.getConfigurationSection("achievements");
- if (bl.getKeys(false).size() > 0) {
- for (final String type : bl.getKeys(false)) {
- this.achievements.put(Achievement.getAchievement(Material.valueOf(type)), bl.getInt(type));
- }
- }
- }
- this.passives = new HashMap<String, Integer>();
- if (info.contains("passives")) {
- final ConfigurationSection bl = info.getConfigurationSection("passives");
- if (!bl.contains("Fortune")) {
- bl.set("Fortune", (Object)0);
- }
- if (!bl.contains("Curse")) {
- bl.set("Curse", (Object)0);
- }
- if (bl.getKeys(false).size() > 0) {
- for (final String type : bl.getKeys(false)) {
- this.passives.put(type, bl.getInt(type));
- }
- }
- }
- else {
- this.passives.put("Strength", 0);
- this.passives.put("Agility", 0);
- this.passives.put("Needs", 0);
- this.passives.put("Fortune", 0);
- this.passives.put("Curse", 0);
- }
- int extraSlots = 0;
- for (int i = 0; i <= 18; ++i) {
- if (Bukkit.getPlayer(name).hasPermission("chest." + i)) {
- extraSlots = i;
- }
- }
- (this.enderChest = Bukkit.createInventory((InventoryHolder)null, 45, "\u042d\u043d\u0434\u0435\u0440\u0421\u0443\u043d\u0434\u0443\u043a")).setContents(Utils.toStack(info.getString("enderchest")));
- for (int i = 27 + extraSlots; i < this.enderChest.getSize(); ++i) {
- this.enderChest.setItem(i, (ItemStack)new SimpleItemStack(Material.STAINED_GLASS_PANE, "&c\u0417\u0430\u043a\u0440\u044b\u0442\u043e", "&7\u041a\u0443\u043f\u0438\u0442\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435", new Object[] { (short)7 }));
- }
- PrisonPlayer.players.put(name, this);
- initDonate();
- updateMultipliers();
- }
- public int getExtraSlots() {
- int extraSlots = 0;
- for (int i = 0; i <= 18; ++i) {
- if (Bukkit.getPlayer(this.name).hasPermission("chest." + i)) {
- extraSlots = i;
- }
- }
- return extraSlots;
- }
- public void save() {
- ConfigurationSection cPlayer;
- if (Main.players_storage.contains(this.name)) {
- cPlayer = Main.players_storage.getConfigurationSection(this.name);
- }
- else {
- cPlayer = Main.players_storage.createSection(this.name);
- }
- cPlayer.set("booster", (Object)this.booster);
- cPlayer.set("level", (Object)this.level);
- cPlayer.set("kills", (Object)this.kills);
- cPlayer.set("deaths", (Object)this.deaths);
- cPlayer.set("total-blocks", (Object)this.totalblocks);
- cPlayer.set("free", (Object)this.free);
- cPlayer.set("shards", (Object)this.shards);
- cPlayer.set("exp", (Object)this.exp);
- cPlayer.set("noPee", (Object)this.noPee);
- ConfigurationSection bLog = null;
- if (this.accesses != null && this.accesses.size() > 0) {
- cPlayer.set("accesses", (Object)this.accesses);
- }
- if (this.block_log != null && this.block_log.size() > 0) {
- if (cPlayer.contains("block-log")) {
- bLog = cPlayer.getConfigurationSection("block-log");
- }
- else {
- bLog = cPlayer.createSection("block-log");
- }
- if (this.block_log.size() > 0) {
- for (final Map.Entry<Material, Integer> entry : this.block_log.entrySet()) {
- bLog.set(entry.getKey().toString(), (Object)entry.getValue());
- }
- }
- }
- if (this.mob_log != null && this.mob_log.size() > 0) {
- if (cPlayer.contains("mob-log")) {
- bLog = cPlayer.getConfigurationSection("mob-log");
- }
- else {
- bLog = cPlayer.createSection("mob-log");
- }
- if (this.mob_log.size() > 0) {
- for (final Map.Entry<EntityTypes, Integer> entry2 : this.mob_log.entrySet()) {
- bLog.set(entry2.getKey().toString(), (Object)entry2.getValue());
- }
- }
- }
- if (this.achievements != null && this.achievements.size() > 0) {
- if (cPlayer.contains("achievements")) {
- bLog = cPlayer.getConfigurationSection("achievements");
- }
- else {
- bLog = cPlayer.createSection("achievements");
- }
- if (this.achievements.size() > 0) {
- for (final Map.Entry<Achievement, Integer> entry3 : this.achievements.entrySet()) {
- bLog.set(entry3.getKey().getMaterial().toString(), (Object)entry3.getValue());
- }
- }
- }
- if (this.passives != null && this.passives.size() > 0) {
- if (cPlayer.contains("passives")) {
- bLog = cPlayer.getConfigurationSection("passives");
- }
- else {
- bLog = cPlayer.createSection("passives");
- }
- if (this.passives.size() > 0) {
- for (final Map.Entry<String, Integer> entry4 : this.passives.entrySet()) {
- bLog.set(entry4.getKey().toString(), (Object)entry4.getValue());
- }
- }
- }
- else {
- if (cPlayer.contains("passives")) {
- bLog = cPlayer.getConfigurationSection("passives");
- }
- else {
- bLog = cPlayer.createSection("passives");
- }
- bLog.set("Strength", (Object)0);
- bLog.set("Agility", (Object)0);
- bLog.set("Needs", (Object)0);
- bLog.set("Fortune", (Object)0);
- bLog.set("Curse", (Object)0);
- }
- cPlayer.set("enderchest", (Object)Utils.toString(this.enderChest.getContents()));
- }
- public static void loadPrisonPlayer(final Player player) {
- final String name = player.getName();
- if (Main.players_storage.contains(player.getName())) {
- final PrisonPlayer prisonPlayer = new PrisonPlayer(name, Main.players_storage.getConfigurationSection(name));
- }
- else {
- final PrisonPlayer pp = new PrisonPlayer(name);
- new BukkitRunnable() {
- public void run() {
- PrisonPlayer.giveStartKit(player);
- }
- }.runTaskLater(Main.getInstance(), 20L);
- pp.save();
- }
- }
- public void initDonate() {
- if (getPlayer().hasPermission("jedi.prince")) {
- donateResourcesMultiplier += 0.1;
- donateExpMultiplier += 0.05;
- donateCrystalsMultiplier += 0.05;
- donateshaftMultiplier += 0.05;
- }
- if (getPlayer().hasPermission("jedi.lord")) {
- donateResourcesMultiplier += 0.1;
- donateExpMultiplier += 0.1;
- donateCrystalsMultiplier += 0.15;
- donateshaftMultiplier += 0.05;
- }
- if (getPlayer().hasPermission("jedi.graf")) {
- donateResourcesMultiplier += 0.1;
- donateExpMultiplier += 0.2;
- donateCrystalsMultiplier += 0.25;
- donateshaftMultiplier += 0.05;
- }
- if (getPlayer().hasPermission("jedi.viking")) {
- donateResourcesMultiplier += 0.1;
- donateExpMultiplier += 0.3;
- donateCrystalsMultiplier += 0.45;
- donateshaftMultiplier += 0.05;
- }
- if (getPlayer().hasPermission("jedi.king")) {
- donateResourcesMultiplier += 0.1;
- donateExpMultiplier += 0.45;
- donateCrystalsMultiplier += 0.6;
- donateshaftMultiplier += 0.05;
- }
- }
- public void updateMultipliers() {
- if (getPlayer() == null)
- return;
- blocksMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_BLOCKS_MULTIPLIER + donateBlocksMultiplier + Booster.getGlobalMultiplier(BoosterType.BLOCKS) + Booster.getLocalMultiplier(BoosterType.BLOCKS, this));
- resourcesMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_RESOURCES_MULTIPLIER + donateResourcesMultiplier + Booster.getGlobalMultiplier(BoosterType.MONEY) + Booster.getLocalMultiplier(BoosterType.MONEY, this));
- expMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_EXP_MULTIPLIER + donateExpMultiplier + Booster.getGlobalMultiplier(BoosterType.EXP) + Booster.getLocalMultiplier(BoosterType.EXP, this));
- shaftMultiplier = StringUtils.fixDouble(100, Main.GLOBAL_SHAFT_MULTIPLIER + donateshaftMultiplier + Booster.getGlobalMultiplier(BoosterType.SHAFT) + Booster.getLocalMultiplier(BoosterType.SHAFT, this));
- shardMultiplier = StringUtils.fixDouble(3, Main.GLOBAL_SHARDS_MULTIPLIER + donateCrystalsMultiplier + Booster.getGlobalMultiplier(BoosterType.SHARD) + Booster.getLocalMultiplier(BoosterType.SHARD, this));
- }
- public static void giveStartKit(final Player player) {
- final Inventory inv = (Inventory)player.getInventory();
- if (Main.startItems.size() > 0 && PrisonItem.items.size() > 0) {
- for (final String cItem : Main.startItems) {
- inv.addItem(new ItemStack[] { PrisonItem.getPrisonItem(cItem).getUsableItem() });
- }
- }
- getPrisonPlayer(player).lastkit = System.currentTimeMillis() / 1000L / 60L;
- }
- public static PrisonPlayer getPrisonPlayer(final Player player) {
- return PrisonPlayer.players.get(player.getName());
- }
- public static PrisonPlayer getPrisonPlayer(String name)
- {
- return players.get(name);
- }
- public int getLevel() {
- return this.level;
- }
- public void levelUp() {
- ++this.level;
- this.save();
- }
- public void setLevel(final int level) {
- this.level = level;
- this.save();
- }
- public void unload() {
- this.save();
- Main.saveConfig(Main.players_storage, "players.yml");
- PrisonPlayer.players.remove(this.name);
- }
- public void grantCellarAcess(final String name) {
- this.accesses.add(name);
- }
- public boolean hasCellarAcess(final String name) {
- return this.accesses.contains(name);
- }
- public double getBalance() {
- return Main.economy.getBalance(this.name);
- }
- public boolean takeMoney(final int money) {
- if (this.hasMoney(money) && Main.economy.withdrawPlayer(this.name, (double)money).transactionSuccess()) {
- Bukkit.getPlayer(this.name).sendMessage(ChatColor.RED + "\u0421 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0447\u0435\u0442\u0430 \u0431\u044b\u043b\u043e \u0441\u043f\u0438\u0441\u0430\u043d\u043e " + ChatColor.DARK_RED + money + "$");
- return true;
- }
- return false;
- }
- public void giveMoney(final double money) {
- if (Bukkit.getPlayer(this.name) != null) {
- try {
- Bukkit.getPlayer(this.name).sendMessage(ChatColor.GREEN + "\u041d\u0430 \u0432\u0430\u0448 \u0441\u0447\u0435\u0442 \u0431\u044b\u043b\u043e \u0437\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e " + ChatColor.GREEN + money + "$");
- Main.economy.depositPlayer(this.name, money);
- }
- catch (NullPointerException ex) {}
- }
- }
- public void sellItems(final double money) {
- if (getPlayer() != null) {
- Player p = getPlayer();
- p.spigot().sendMessage(ChatMessageType.ACTION_BAR, new ComponentBuilder(ChatColor.WHITE + "Вы получили от продажи " + ChatColor.YELLOW + money * PrisonPlayer.getPrisonPlayer(p).getResourcesMultiplier() + "$").color(net.md_5.bungee.api.ChatColor.GOLD).create());
- Main.economy.depositPlayer(p.getName(), money * PrisonPlayer.getPrisonPlayer(p).getResourcesMultiplier());
- }
- }
- public boolean hasMoney(final int money) {
- return Main.economy.has(this.name, (double)money);
- }
- public static Collection<PrisonPlayer> getAll() {
- return PrisonPlayer.players.values();
- }
- public void addBlockDig(final Material material) {
- this.addBlockDig(material, 1);
- }
- public void addBlockDig(final Material material, final int amount) {
- if (this.block_log.containsKey(material)) {
- this.block_log.put(material, this.block_log.get(material) + amount);
- }
- else {
- this.block_log.put(material, amount);
- }
- }
- public int getBlockDigsCount(final Material material) {
- if (this.block_log.containsKey(material)) {
- return this.block_log.get(material);
- }
- return 0;
- }
- public void addMobKill(final EntityTypes type) {
- if (this.mob_log.containsKey(type)) {
- this.mob_log.put(type, this.mob_log.get(type) + 1);
- }
- else {
- this.mob_log.put(type, 1);
- }
- }
- public int getMobKillCount(final EntityTypes type) {
- if (this.mob_log.containsKey(type)) {
- return this.mob_log.get(type);
- }
- return 0;
- }
- public int getKills() {
- return this.kills;
- }
- public Map<String, Integer> getPassives() {
- return this.passives;
- }
- public int getDeaths() {
- return this.deaths;
- }
- public int getAdditionalDamage() {
- return Main.config.getInt("levels." + this.level + ".damage");
- }
- public Scoreboard getScoreboard() {
- if (this.board == null) {
- this.board = Bukkit.getScoreboardManager().getNewScoreboard();
- }
- return this.board;
- }
- public Faction getFaction() {
- return this.faction;
- }
- public String getName() {
- return this.name;
- }
- public void setFaction(final Faction faction) {
- this.faction = faction;
- Main.players_storage.getConfigurationSection(this.name).set("faction", (Object)((faction != null) ? faction.getId() : null));
- }
- public boolean hasFaction() {
- return this.faction != null;
- }
- public Player getPlayer()
- {
- return Bukkit.getPlayer(getName());
- }
- public double getResourcesMultiplier() {
- return resourcesMultiplier;
- }
- public boolean isFree() {
- return this.free;
- }
- public double getShaftMultiplier() {
- return shaftMultiplier;
- }
- public double getCrystalsMultiplier() {
- return shardMultiplier;
- }
- public double getExpMultiplier() {
- return expMultiplier;
- }
- public String getLevelPercent() {
- int percent = (int) (exp / getNextLevelBlockPrice() * 100.0);
- String percentInfo = percent + "%";
- return percent < 33 ? "§c" + percentInfo : (percent < 66 ? "§e" + percentInfo : "§a" + percentInfo);
- }
- public Inventory getEnderChest() {
- return this.enderChest;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement