Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ecrosogames.mcmurderer.arena;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.potion.PotionEffect;
- import ecrosogames.mcmurderer.file.ArenaConfig;
- public class ArenaManager {
- private static ArenaManager am = new ArenaManager();
- private Map<Player, ItemStack[]> inv = new HashMap<Player, ItemStack[]>();
- private Map<Player, ItemStack[]> armor = new HashMap<Player, ItemStack[]>();
- private Map<Player, Double> health = new HashMap<Player, Double>();
- private Map<Player, Integer> food = new HashMap<Player, Integer>();
- private static List<Arena> arenas = new ArrayList<Arena>();
- private static int arenaSize = arenas.size();
- private static int lastCreated = 0;
- public Arena getArenaById(int i) {
- for (Arena a : arenas) {
- if (a.getId() == i) return a;
- }
- return null;
- }
- public void addPlayer(Player p, int i) {
- Arena a = getArenaById(i);
- if (a == null) {
- p.sendMessage(ChatColor.RED + "Invalid Arena!");
- return;
- }
- a.getPlayers().add(p);
- inv.put(p, p.getInventory().getContents());
- armor.put(p, p.getInventory().getArmorContents());
- health.put(p, p.getHealth());
- food.put(p, p.getFoodLevel());
- p.getInventory().setArmorContents(null);
- p.getInventory().clear();
- p.teleport(a.getSpawn());
- }
- public void removePlayer(Player p) {
- Arena a = null;
- for (Arena arena : arenas) {
- if (arena.getPlayers().contains(p)) a = arena;
- }
- if (a == null || !a.getPlayers().contains(p)) {
- p.sendMessage(ChatColor.RED + "An error has ocurred, are you even in-game?");
- return;
- }
- a.getPlayers().remove(p);
- p.getInventory().setContents(inv.get(p));
- p.getInventory().setArmorContents(armor.get(p));
- p.setHealth(health.get(p));
- p.setFoodLevel(food.get(p));
- inv.remove(p);
- armor.remove(p);
- health.remove(p);
- food.remove(p);
- if (p.getActivePotionEffects().size() > 0) {
- for (PotionEffect pe : p.getActivePotionEffects())
- p.removePotionEffect(pe.getType());
- }
- p.setFireTicks(0);
- }
- public Arena createArena(Location loc) {
- int num = arenaSize + 1;
- arenaSize++;
- for (int i = 0; i < arenas.size(); i++) {
- if (i + 1 != arenas.get(i).getId()) num = i + 1;
- }
- setLastCreated(num);
- Arena a = new Arena(loc, num);
- arenas.add(a);
- ArenaConfig.getConfig().set("arena." + num, serializeLoc(loc));
- List<Integer> list = ArenaConfig.getConfig().getIntegerList("arenas");
- list.add(num);
- ArenaConfig.getConfig().set("arenas", list);
- ArenaConfig.save();
- sortLists();
- return a;
- }
- public Arena reloadArena(Location loc) {
- int num = arenaSize + 1;
- arenaSize++;
- Arena a = new Arena(loc, num);
- arenas.add(a);
- return a;
- }
- public void removeArena(int i) {
- Arena a = getArenaById(i);
- if (a == null) return;
- List<Integer> list = ArenaConfig.getConfig().getIntegerList("arenas");
- for (int j = 0; j < list.size(); j++)
- if (arenas.get(j).getId() == i) list.remove(j);
- arenas.remove(a);
- ArenaConfig.getConfig().set("arena." + i, null);
- ArenaConfig.getConfig().set("arenas", list);
- ArenaConfig.save();
- sortLists();
- arenaSize--;
- }
- public boolean isInGame(Player p) {
- for (Arena a : arenas) {
- if (a.getPlayers().contains(p)) return true;
- }
- return false;
- }
- public void loadAllArenas() {
- arenaSize = 0;
- if (ArenaConfig.getConfig().getIntegerList("arenas").isEmpty()) return;
- for (int i : ArenaConfig.getConfig().getIntegerList("arenas")) {
- Arena a = reloadArena(deserializeLoc(ArenaConfig.getConfig().getString("arena." + i)));
- a.setId(i);
- }
- }
- public static ArenaManager getInstance() {
- return am;
- }
- public static int getSize() {
- return arenaSize;
- }
- public static int getLastCreated() {
- return lastCreated;
- }
- private static void setLastCreated(int lastCreated) {
- ArenaManager.lastCreated = lastCreated;
- }
- public String serializeLoc(Location loc) {
- return loc.getWorld().getName() + "," + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ();
- }
- public Location deserializeLoc(String s) {
- String[] s2 = s.split(",");
- return new Location(Bukkit.getWorld(s2[0]), Integer.parseInt(s2[1]), Integer.parseInt(s2[2]), Integer.parseInt(s2[3]));
- }
- private void sortLists() {
- Collections.sort(arenas, new Comparator<Arena>() {
- @Override
- public int compare(Arena a, Arena b) {
- return a.getId() - b.getId();
- }
- });
- ArenaConfig.getConfig().set("arena", null);
- for (int i = 0; i < arenas.size(); i++) {
- ArenaConfig.getConfig().set("arena." + arenas.get(i).getId(), serializeLoc(arenas.get(i).getSpawn()));
- }
- List<Integer> arenasList = ArenaConfig.getConfig().getIntegerList("arenas");
- Collections.sort(arenasList);
- ArenaConfig.getConfig().set("arenas", null);
- ArenaConfig.getConfig().set("arenas", arenasList);
- ArenaConfig.save();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement