Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2013
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.52 KB | None | 0 0
  1. package vc.pvp.skywars;
  2.  
  3. import com.earth2me.essentials.IEssentials;
  4.  
  5. import net.milkbowl.vault.chat.Chat;
  6. import net.milkbowl.vault.economy.Economy;
  7. import net.milkbowl.vault.permission.Permission;
  8.  
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandExecutor;
  12. import org.bukkit.command.CommandSender;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.event.EventHandler;
  15. import org.bukkit.event.Listener;
  16. import org.bukkit.event.player.PlayerJoinEvent;
  17. import org.bukkit.plugin.RegisteredServiceProvider;
  18. import org.bukkit.plugin.java.JavaPlugin;
  19. import org.bukkit.scoreboard.DisplaySlot;
  20. import org.bukkit.scoreboard.Objective;
  21. import org.bukkit.scoreboard.Scoreboard;
  22.  
  23. import vc.pvp.skywars.commands.MainCommand;
  24. import vc.pvp.skywars.controllers.*;
  25. import vc.pvp.skywars.database.Database;
  26. import vc.pvp.skywars.listeners.BlockListener;
  27. import vc.pvp.skywars.listeners.EntityListener;
  28. import vc.pvp.skywars.listeners.InventoryListener;
  29. import vc.pvp.skywars.listeners.PlayerListener;
  30. import vc.pvp.skywars.metrics.MetricsLite;
  31. import vc.pvp.skywars.player.GamePlayer;
  32. import vc.pvp.skywars.storage.DataStorage;
  33. import vc.pvp.skywars.tasks.SyncTask;
  34. import vc.pvp.skywars.utilities.FileUtils;
  35. import vc.pvp.skywars.utilities.Messaging;
  36. import vc.pvp.skywars.utilities.StringUtils;
  37.  
  38. import java.io.File;
  39. import java.io.IOException;
  40. import java.sql.SQLException;
  41. import java.util.logging.Level;
  42.  
  43. public class SkyWars extends JavaPlugin implements Listener {
  44.  
  45.     private static SkyWars instance;
  46.     private static Permission permission;
  47.     private Objective objective;
  48.     private static Economy economy;
  49.     private static Chat chat;
  50.     private Database database;
  51.  
  52.     @Override
  53.     public void onEnable() {
  54.         instance = this;
  55.  
  56.         deleteIslandWorlds();
  57.        
  58.         Bukkit.getPluginManager().registerEvents(this, this);
  59.  
  60.         getConfig().options().copyDefaults(true);
  61.         saveDefaultConfig();
  62.         reloadConfig();
  63.  
  64.         new Messaging(this);
  65.  
  66.         getCommand("skywars").setExecutor(new MainCommand());
  67.         getCommand("global").setExecutor(new CommandExecutor() {
  68.             @Override
  69.             public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  70.                 if (!(sender instanceof Player)) {
  71.                     return false;
  72.                 }
  73.  
  74.                 if (args.length == 0) {
  75.                     sender.sendMessage("\247cUsage: /" + label + " <message>");
  76.                     return true;
  77.                 }
  78.  
  79.                 StringBuilder messageBuilder = new StringBuilder();
  80.                 for (String arg : args) {
  81.                     messageBuilder.append(arg);
  82.                     messageBuilder.append(" ");
  83.                 }
  84.  
  85.                 GamePlayer gamePlayer = PlayerController.get().get((Player) sender);
  86.                 String score = StringUtils.formatScore(gamePlayer.getScore());
  87.  
  88.                 Bukkit.broadcastMessage(new Messaging.MessageFormatter()
  89.                         .setVariable("player", gamePlayer.getBukkitPlayer().getDisplayName())
  90.                         .setVariable("score", score)
  91.                         .setVariable("message", Messaging.stripColor(messageBuilder.toString()))
  92.                         .setVariable("prefix", SkyWars.getChat().getPlayerPrefix(gamePlayer.getBukkitPlayer()))
  93.                         .format("chat.global"));
  94.  
  95.                 return true;
  96.             }
  97.         });
  98.  
  99.         try {
  100.             DataStorage.DataStorageType dataStorageType = DataStorage.DataStorageType.valueOf(getConfig().getString("data-storage", "FILE"));
  101.             if (dataStorageType == DataStorage.DataStorageType.SQL && !setupDatabase()) {
  102.                 getLogger().log(Level.INFO, "Couldn't setup database, now using file storage.");
  103.                 DataStorage.setInstance(DataStorage.DataStorageType.FILE);
  104.  
  105.             } else {
  106.                 DataStorage.setInstance(dataStorageType);
  107.             }
  108.  
  109.         } catch (NullPointerException npe) {
  110.             DataStorage.setInstance(DataStorage.DataStorageType.FILE);
  111.         }
  112.  
  113.         setupPermission();
  114.         setupEconomy();
  115.         setupChat();
  116.  
  117.         SchematicController.get();
  118.         WorldController.get();
  119.         GameController.get();
  120.         PlayerController.get();
  121.         ChestController.get();
  122.         KitController.get();
  123.         IconMenuController.get();
  124.  
  125.         @EventHandler
  126.         public void onPlayerJoin(PlayerJoinEvent event) {
  127.             setupScoreboard(event.getPlayer());
  128.         }
  129.  
  130.        
  131.         try {
  132.             MetricsLite metrics = new MetricsLite(this);
  133.             metrics.start();
  134.         } catch (IOException e) {
  135.             // Failed to submit the stats :-(
  136.         }
  137.  
  138.         /*if (getDB() != null) {
  139.             StatisticsController.get();
  140.             new StatisticsUpdater();
  141.         }*/
  142.  
  143.         Bukkit.getPluginManager().registerEvents(new PlayerListener(), this);
  144.         Bukkit.getPluginManager().registerEvents(new EntityListener(), this);
  145.         Bukkit.getPluginManager().registerEvents(new BlockListener(), this);
  146.         Bukkit.getPluginManager().registerEvents(new InventoryListener(), this);
  147.  
  148.         Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new SyncTask(), 20L, 20L);
  149.     }
  150.  
  151.     @Override
  152.     public void onDisable() {
  153.         objective.unregister();
  154.        
  155.         Bukkit.getScheduler().cancelTasks(this);
  156.  
  157.         GameController.get().shutdown();
  158.         PlayerController.get().shutdown();
  159.  
  160.         if (database != null) {
  161.             database.close();
  162.         }
  163.  
  164.         deleteIslandWorlds();
  165.     }
  166.     private void setupScoreboard(Player player) {
  167.         // Create the new Scoreboard
  168.         Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  169.         Objective objective = scoreboard.registerNewObjective("skywars", "dummy");
  170.        
  171.         objective.setDisplayName("\2476\247lSkyWars \247a\247lServer");
  172.         objective.setDisplaySlot(DisplaySlot.SIDEBAR);
  173.        
  174.         player.setScoreboard(scoreboard);
  175.         updateScoreboard(player);
  176.     }
  177.    
  178.    
  179.     public void updateScoreboard(Player player) {
  180.         Scoreboard scoreboard = player.getScoreboard();
  181.         Objective objective = scoreboard.getObjective("skywars");
  182.        
  183.         objective.getScore(Bukkit.getOfflinePlayer("\2479Online")).setScore(Bukkit.getOnlinePlayers().length);
  184.         objective.getScore(Bukkit.getOfflinePlayer("\247aPoints")).setScore((int) economy.getBalance(player.getName()));
  185.     }
  186.    
  187.     private void deleteIslandWorlds() {
  188.         // Worlds
  189.         File workingDirectory = new File(".");
  190.         File[] contents = workingDirectory.listFiles();
  191.  
  192.         if (contents != null) {
  193.             for (File file : contents) {
  194.                 if (!file.isDirectory() || !file.getName().matches("island-\\d+")) {
  195.                     continue;
  196.                 }
  197.  
  198.                 FileUtils.deleteFolder(file);
  199.             }
  200.         }
  201.  
  202.         // WorldGuard
  203.         workingDirectory = new File("./plugins/WorldGuard/worlds/");
  204.         contents = workingDirectory.listFiles();
  205.  
  206.         if (contents != null) {
  207.             for (File file : contents) {
  208.                 if (!file.isDirectory() || !file.getName().matches("island-\\d+")) {
  209.                     continue;
  210.                 }
  211.  
  212.                 FileUtils.deleteFolder(file);
  213.             }
  214.         }
  215.     }
  216.  
  217.     private boolean setupDatabase() {
  218.         try {
  219.             database = new Database(getConfig().getConfigurationSection("database"));
  220.  
  221.         } catch (ClassNotFoundException exception) {
  222.             getLogger().log(Level.SEVERE, String.format("Unable to register JDCB driver: %s", exception.getMessage()));
  223.             return false;
  224.  
  225.         } catch (SQLException exception) {
  226.             getLogger().log(Level.SEVERE, String.format("Unable to connect to SQL server: %s", exception.getMessage()));
  227.             return false;
  228.         }
  229.  
  230.         try {
  231.             database.createTables();
  232.         } catch (Exception exception) {
  233.             getLogger().log(Level.SEVERE, String.format("An exception was thrown while attempting to create tables: %s", exception.getMessage()));
  234.             return false;
  235.         }
  236.  
  237.         return true;
  238.     }
  239.  
  240.     private void setupPermission() {
  241.         RegisteredServiceProvider<Permission> chatProvider = getServer().getServicesManager().getRegistration(Permission.class);
  242.         if (chatProvider != null) {
  243.             permission = chatProvider.getProvider();
  244.         }
  245.     }
  246.  
  247.     private void setupEconomy() {
  248.         RegisteredServiceProvider<Economy> chatProvider = getServer().getServicesManager().getRegistration(Economy.class);
  249.         if (chatProvider != null) {
  250.             economy = chatProvider.getProvider();
  251.         }
  252.     }
  253.  
  254.     private void setupChat() {
  255.         RegisteredServiceProvider<Chat> chatProvider = getServer().getServicesManager().getRegistration(Chat.class);
  256.         if (chatProvider != null) {
  257.             chat = chatProvider.getProvider();
  258.         }
  259.     }
  260.  
  261.     public static SkyWars get() {
  262.         return instance;
  263.     }
  264.  
  265.     public static IEssentials getEssentials() {
  266.         return (IEssentials) Bukkit.getPluginManager().getPlugin("Essentials");
  267.     }
  268.  
  269.     public static Permission getPermission() {
  270.         return permission;
  271.     }
  272.  
  273.     public static Economy getEconomy() {
  274.         return economy;
  275.     }
  276.  
  277.     public static Chat getChat() {
  278.         return chat;
  279.     }
  280.  
  281.     public static Database getDB() {
  282.         return instance.database;
  283.     }
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement