Advertisement
Guest User

Untitled

a guest
Dec 31st, 2013
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.13 KB | None | 0 0
  1. package ecrosogames.mcmurderer.arena;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.Comparator;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. import org.bukkit.Bukkit;
  11. import org.bukkit.ChatColor;
  12. import org.bukkit.Location;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.inventory.ItemStack;
  15. import org.bukkit.potion.PotionEffect;
  16.  
  17. import ecrosogames.mcmurderer.file.ArenaConfig;
  18.  
  19. public class ArenaManager {
  20.  
  21.     private static ArenaManager am = new ArenaManager();
  22.  
  23.     private Map<Player, ItemStack[]> inv = new HashMap<Player, ItemStack[]>();
  24.     private Map<Player, ItemStack[]> armor = new HashMap<Player, ItemStack[]>();
  25.     private Map<Player, Double> health = new HashMap<Player, Double>();
  26.     private Map<Player, Integer> food = new HashMap<Player, Integer>();
  27.  
  28.     private static List<Arena> arenas = new ArrayList<Arena>();
  29.     private static int arenaSize = arenas.size();
  30.     private static int lastCreated = 0;
  31.  
  32.     public Arena getArenaById(int i) {
  33.         for (Arena a : arenas) {
  34.             if (a.getId() == i) return a;
  35.         }
  36.         return null;
  37.     }
  38.  
  39.     public void addPlayer(Player p, int i) {
  40.         Arena a = getArenaById(i);
  41.         if (a == null) {
  42.             p.sendMessage(ChatColor.RED + "Invalid Arena!");
  43.             return;
  44.         }
  45.         a.getPlayers().add(p);
  46.         inv.put(p, p.getInventory().getContents());
  47.         armor.put(p, p.getInventory().getArmorContents());
  48.         health.put(p, p.getHealth());
  49.         food.put(p, p.getFoodLevel());
  50.  
  51.         p.getInventory().setArmorContents(null);
  52.         p.getInventory().clear();
  53.  
  54.         p.teleport(a.getSpawn());
  55.     }
  56.  
  57.     public void removePlayer(Player p) {
  58.         Arena a = null;
  59.         for (Arena arena : arenas) {
  60.             if (arena.getPlayers().contains(p)) a = arena;
  61.         }
  62.  
  63.         if (a == null || !a.getPlayers().contains(p)) {
  64.             p.sendMessage(ChatColor.RED + "An error has ocurred, are you even in-game?");
  65.             return;
  66.         }
  67.         a.getPlayers().remove(p);
  68.  
  69.         p.getInventory().setContents(inv.get(p));
  70.         p.getInventory().setArmorContents(armor.get(p));
  71.         p.setHealth(health.get(p));
  72.         p.setFoodLevel(food.get(p));
  73.  
  74.         inv.remove(p);
  75.         armor.remove(p);
  76.         health.remove(p);
  77.         food.remove(p);
  78.  
  79.         if (p.getActivePotionEffects().size() > 0) {
  80.             for (PotionEffect pe : p.getActivePotionEffects())
  81.                 p.removePotionEffect(pe.getType());
  82.         }
  83.         p.setFireTicks(0);
  84.     }
  85.  
  86.     public Arena createArena(Location loc) {
  87.         int num = arenaSize + 1;
  88.         arenaSize++;
  89.  
  90.         for (int i = 0; i < arenas.size(); i++) {
  91.             if (i + 1 != arenas.get(i).getId()) num = i + 1;
  92.         }
  93.  
  94.         setLastCreated(num);
  95.  
  96.         Arena a = new Arena(loc, num);
  97.         arenas.add(a);
  98.         ArenaConfig.getConfig().set("arena." + num, serializeLoc(loc));
  99.         List<Integer> list = ArenaConfig.getConfig().getIntegerList("arenas");
  100.         list.add(num);
  101.         ArenaConfig.getConfig().set("arenas", list);
  102.         ArenaConfig.save();
  103.         sortLists();
  104.  
  105.         return a;
  106.     }
  107.  
  108.     public Arena reloadArena(Location loc) {
  109.         int num = arenaSize + 1;
  110.         arenaSize++;
  111.  
  112.         Arena a = new Arena(loc, num);
  113.         arenas.add(a);
  114.  
  115.         return a;
  116.     }
  117.  
  118.     public void removeArena(int i) {
  119.         Arena a = getArenaById(i);
  120.         if (a == null) return;
  121.  
  122.         List<Integer> list = ArenaConfig.getConfig().getIntegerList("arenas");
  123.  
  124.         for (int j = 0; j < list.size(); j++)
  125.             if (arenas.get(j).getId() == i) list.remove(j);
  126.  
  127.         arenas.remove(a);
  128.         ArenaConfig.getConfig().set("arena." + i, null);
  129.         ArenaConfig.getConfig().set("arenas", list);
  130.         ArenaConfig.save();
  131.         sortLists();
  132.         arenaSize--;
  133.     }
  134.  
  135.     public boolean isInGame(Player p) {
  136.         for (Arena a : arenas) {
  137.             if (a.getPlayers().contains(p)) return true;
  138.         }
  139.         return false;
  140.     }
  141.  
  142.     public void loadAllArenas() {
  143.         arenaSize = 0;
  144.  
  145.         if (ArenaConfig.getConfig().getIntegerList("arenas").isEmpty()) return;
  146.  
  147.         for (int i : ArenaConfig.getConfig().getIntegerList("arenas")) {
  148.             Arena a = reloadArena(deserializeLoc(ArenaConfig.getConfig().getString("arena." + i)));
  149.             a.setId(i);
  150.         }
  151.     }
  152.  
  153.     public static ArenaManager getInstance() {
  154.         return am;
  155.     }
  156.  
  157.     public static int getSize() {
  158.         return arenaSize;
  159.     }
  160.  
  161.     public static int getLastCreated() {
  162.         return lastCreated;
  163.     }
  164.  
  165.     private static void setLastCreated(int lastCreated) {
  166.         ArenaManager.lastCreated = lastCreated;
  167.     }
  168.  
  169.     public String serializeLoc(Location loc) {
  170.         return loc.getWorld().getName() + "," + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ();
  171.     }
  172.  
  173.     public Location deserializeLoc(String s) {
  174.         String[] s2 = s.split(",");
  175.         return new Location(Bukkit.getWorld(s2[0]), Integer.parseInt(s2[1]), Integer.parseInt(s2[2]), Integer.parseInt(s2[3]));
  176.     }
  177.  
  178.     private void sortLists() {
  179.         Collections.sort(arenas, new Comparator<Arena>() {
  180.             @Override
  181.             public int compare(Arena a, Arena b) {
  182.                 return a.getId() - b.getId();
  183.             }
  184.         });
  185.  
  186.         ArenaConfig.getConfig().set("arena", null);
  187.  
  188.         for (int i = 0; i < arenas.size(); i++) {
  189.             ArenaConfig.getConfig().set("arena." + arenas.get(i).getId(), serializeLoc(arenas.get(i).getSpawn()));
  190.         }
  191.  
  192.         List<Integer> arenasList = ArenaConfig.getConfig().getIntegerList("arenas");
  193.         Collections.sort(arenasList);
  194.         ArenaConfig.getConfig().set("arenas", null);
  195.         ArenaConfig.getConfig().set("arenas", arenasList);
  196.         ArenaConfig.save();
  197.     }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement