Advertisement
Guest User

Untitled

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