Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.raauhh.uhc.manager;
- import lombok.Data;
- import lombok.Getter;
- import lombok.Setter;
- import net.raauhh.uhc.UHC;
- import net.raauhh.uhc.manager.assignation.Assignation;
- import net.raauhh.uhc.manager.logger.Logger;
- import net.raauhh.uhc.menu.submenu.cosmetics.ArrowTrail;
- import net.raauhh.uhc.menu.submenu.cosmetics.RodTrail;
- import net.raauhh.uhc.util.Cooldown;
- import net.raauhh.uhc.util.Skin;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemStack;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.text.DecimalFormat;
- import java.util.*;
- import static org.bukkit.GameMode.SURVIVAL;
- @Getter
- @Setter
- public class UHCPlayer {
- @Getter
- private static Map<UUID, UHCPlayer> players = new HashMap<>();
- @Getter
- private static Map<String, UHCPlayer> playersNames = new HashMap<>();
- private Skin skin;
- private String name;
- private UUID uuid;
- private UHCTeam uhcTeam;
- private Logger logger;
- private State state;
- private ArrowTrail arrowTrail;
- private RodTrail rodTrail;
- private int coins;
- private ItemStack[] armor;
- private ItemStack[] inventory;
- private Location deadLocation;
- private boolean respawned;
- private boolean lateScattered;
- private boolean givenGoneFishing;
- private Location scatterLocation;
- private Cooldown helpopCooldown = new Cooldown(0);
- private Cooldown noCleanCooldown = new Cooldown(0);
- private Cooldown lastAssignation = new Cooldown(0);
- private Cooldown deadCooldown = new Cooldown(0);
- private Cooldown savingCooldown = new Cooldown(0);
- private Statistics statistics = new Statistics();
- private Assignation assignation;
- private boolean freezed;
- private boolean hasPlayed;
- private boolean seeSpectators = false;
- private boolean goldAlerts = false;
- private boolean diamondAlerts = true;
- private boolean pvpAlerts = false;
- private boolean pveAlerts = false;
- private boolean inPractice = false;
- private boolean teamChat = false;
- private Stat whitelists = new Stat();
- private List<String> whitelistedPlayers = new ArrayList<>();
- private Stat kills = new Stat(), diamond = new Stat(), gold = new Stat();
- public UHCPlayer(String name, UUID uuid) {
- this.name = name;
- this.uuid = uuid;
- this.state = State.WAITING;
- players.put(uuid, this);
- playersNames.put(name, this);
- }
- public Player getPlayer() {
- return Bukkit.getPlayer(this.uuid);
- }
- public static UHCPlayer getByName(String name) {
- return playersNames.get(name);
- }
- public static UHCPlayer getByUuid(UUID uuid) {
- return players.get(uuid);
- }
- public String getKDR() {
- double kills = this.statistics.getKills().getAmount();
- double deaths = this.statistics.getDeaths().getAmount();
- double kdr = deaths == 0 ? kills : kills / deaths;
- return new DecimalFormat("#.##").format(kdr).replace(",", ".");
- }
- public boolean isOnline() {
- return Bukkit.getPlayer(this.uuid) != null;
- }
- public boolean isAlive() {
- return this.state == State.PLAYING;
- }
- public boolean isWaiting() {
- return this.state == State.WAITING;
- }
- public boolean isSpectating() {
- return this.state == State.SPECTATING;
- }
- public boolean isAssigned() {
- return this.assignation != null;
- }
- public void setState(State state) {
- this.state = state;
- if(!this.isOnline()) return;
- Player player = this.getPlayer();
- if (state != State.SPECTATING && player.getGameMode() != SURVIVAL) player.setGameMode(SURVIVAL);
- if (state == State.PLAYING) { // Fix some weird occurrences with Superheroes
- player.setMaxHealth(20.0D);
- }
- }
- public enum State {
- WAITING, PLAYING, SPECTATING, DEAD
- }
- @Getter
- @Setter
- public class Statistics {
- private boolean loaded;
- private Stat kills = new Stat(), deaths = new Stat(), wins = new Stat(), kdr = new Stat();
- private Stat goldenHeadsEaten = new Stat(), goldenApplesEaten = new Stat();
- private Stat coalMined = new Stat(), ironMined = new Stat(), goldMined = new Stat(), lapisMined = new Stat(), redstoneMined = new Stat(), diamondMined = new Stat(), emeraldMined = new Stat();
- public void load() {
- Connection connection = UHC.getInstance().getDb().getConnection();
- PreparedStatement statement = null;
- ResultSet resultSet;
- try {
- statement = connection.prepareStatement("SELECT * FROM `" + UHC.getInstance().getDb().getTable() + "` WHERE `uuid` = ? LIMIT 1;");
- statement.setString(1, getUuid().toString());
- statement.executeQuery();
- resultSet = statement.getResultSet();
- if (resultSet.next()) {
- this.wins.setAmount(resultSet.getInt("wins"));
- this.kills.setAmount(resultSet.getInt("kills"));
- this.deaths.setAmount(resultSet.getInt("deaths"));
- this.goldenApplesEaten.setAmount(resultSet.getInt("goldenapples-eaten"));
- this.goldenHeadsEaten.setAmount(resultSet.getInt("goldenheads-eaten"));
- this.coalMined.setAmount(resultSet.getInt("coal-mined"));
- this.ironMined.setAmount(resultSet.getInt("iron-mined"));
- this.goldMined.setAmount(resultSet.getInt("gold-mined"));
- this.lapisMined.setAmount(resultSet.getInt("lapis-mined"));
- this.redstoneMined.setAmount(resultSet.getInt("redstone-mined"));
- this.diamondMined.setAmount(resultSet.getInt("diamond-mined"));
- this.emeraldMined.setAmount(resultSet.getInt("emerald-mined"));
- if (resultSet.getString("arrow-trail") == null) {
- arrowTrail = ArrowTrail.valueOf("NONE");
- } else {
- arrowTrail = ArrowTrail.valueOf(resultSet.getString("arrow-trail").toUpperCase());
- }
- if (resultSet.getString("rod-trail") == null) {
- rodTrail = RodTrail.valueOf("NONE");
- } else {
- rodTrail = RodTrail.valueOf(resultSet.getString("rod-trail").toUpperCase());
- }
- } else {
- statement = connection.prepareStatement("INSERT INTO `" + UHC.getInstance().getDb().getTable() + "` (uuid, `name`) VALUES (?, ?);");
- statement.setString(1, uuid.toString());
- statement.setString(2, name);
- statement.executeUpdate();
- statement.close();
- }
- this.loaded = true;
- UHC.getInstance().getLogger().info(getName() + "'s data was successfully loaded.");
- } catch (SQLException ex) {
- this.loaded = false;
- ex.printStackTrace();
- } finally {
- try {
- if (statement != null) statement.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void save() {
- try {
- Connection connection = UHC.getInstance().getDb().getConnection();
- PreparedStatement statement = connection.prepareStatement("UPDATE " + UHC.getInstance().getDb().getTable() + " SET" +
- " `name` = ?" +
- ", `wins` = " + wins.getAmount() +
- ", `kills` = " + kills.getAmount() +
- ", `deaths` = " + deaths.getAmount() +
- ", `goldenapples-eaten` = " + goldenApplesEaten.getAmount() +
- ", `goldenheads-eaten` = " + goldenHeadsEaten.getAmount() +
- ", `coal-mined` = " + coalMined.getAmount() +
- ", `iron-mined` = " + ironMined.getAmount() +
- ", `gold-mined` = " + goldMined.getAmount() +
- ", `lapis-mined` = " + lapisMined.getAmount() +
- ", `redstone-mined` = " + redstoneMined.getAmount() +
- ", `diamond-mined` = " + diamondMined.getAmount() +
- ", `emerald-mined` = " + emeraldMined.getAmount() +
- " WHERE `uuid` = ?;");
- statement.setString(1, name);
- statement.setString(2, uuid.toString());
- statement.executeUpdate();
- statement.close();
- } catch (SQLException ex) {
- ex.printStackTrace();
- }
- }
- }
- @Data
- public class Stat {
- @Setter
- private int amount;
- public void increment() {
- this.amount++;
- }
- public void decrement() {
- this.amount--;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment