Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2013
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.50 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.         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.     @EventHandler
  161.     public void onPlayerJoin(PlayerJoinEvent event) {
  162.         setupScoreboard(event.getPlayer());
  163.     }
  164.    
  165.     private void setupScoreboard(Player player) {
  166.         // Create the new Scoreboard
  167.         Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  168.         Objective objective = scoreboard.registerNewObjective("skywars", "dummy");
  169.        
  170.         objective.setDisplayName("\2476\247lSkyWars \247a\247lServer");
  171.         objective.setDisplaySlot(DisplaySlot.SIDEBAR);
  172.        
  173.         player.setScoreboard(scoreboard);
  174.         updateScoreboard(player);
  175.     }
  176.    
  177.    
  178.     public void updateScoreboard(Player player) {
  179.         Scoreboard scoreboard = player.getScoreboard();
  180.         Objective objective = scoreboard.getObjective("skywars");
  181.        
  182.         objective.getScore(Bukkit.getOfflinePlayer("\2479Online")).setScore(Bukkit.getOnlinePlayers().length);
  183.         objective.getScore(Bukkit.getOfflinePlayer("\247aPoints")).setScore((int) economy.getBalance(player.getName()));
  184.     }
  185.    
  186.     private void deleteIslandWorlds() {
  187.         // Worlds
  188.         File workingDirectory = new File(".");
  189.         File[] contents = workingDirectory.listFiles();
  190.  
  191.         if (contents != null) {
  192.             for (File file : contents) {
  193.                 if (!file.isDirectory() || !file.getName().matches("island-\\d+")) {
  194.                     continue;
  195.                 }
  196.  
  197.                 FileUtils.deleteFolder(file);
  198.             }
  199.         }
  200.  
  201.         // WorldGuard
  202.         workingDirectory = new File("./plugins/WorldGuard/worlds/");
  203.         contents = workingDirectory.listFiles();
  204.  
  205.         if (contents != null) {
  206.             for (File file : contents) {
  207.                 if (!file.isDirectory() || !file.getName().matches("island-\\d+")) {
  208.                     continue;
  209.                 }
  210.  
  211.                 FileUtils.deleteFolder(file);
  212.             }
  213.         }
  214.     }
  215.  
  216.     private boolean setupDatabase() {
  217.         try {
  218.             database = new Database(getConfig().getConfigurationSection("database"));
  219.  
  220.         } catch (ClassNotFoundException exception) {
  221.             getLogger().log(Level.SEVERE, String.format("Unable to register JDCB driver: %s", exception.getMessage()));
  222.             return false;
  223.  
  224.         } catch (SQLException exception) {
  225.             getLogger().log(Level.SEVERE, String.format("Unable to connect to SQL server: %s", exception.getMessage()));
  226.             return false;
  227.         }
  228.  
  229.         try {
  230.             database.createTables();
  231.         } catch (Exception exception) {
  232.             getLogger().log(Level.SEVERE, String.format("An exception was thrown while attempting to create tables: %s", exception.getMessage()));
  233.             return false;
  234.         }
  235.  
  236.         return true;
  237.     }
  238.  
  239.     private void setupPermission() {
  240.         RegisteredServiceProvider<Permission> chatProvider = getServer().getServicesManager().getRegistration(Permission.class);
  241.         if (chatProvider != null) {
  242.             permission = chatProvider.getProvider();
  243.         }
  244.     }
  245.  
  246.     private void setupEconomy() {
  247.         RegisteredServiceProvider<Economy> chatProvider = getServer().getServicesManager().getRegistration(Economy.class);
  248.         if (chatProvider != null) {
  249.             economy = chatProvider.getProvider();
  250.         }
  251.     }
  252.  
  253.     private void setupChat() {
  254.         RegisteredServiceProvider<Chat> chatProvider = getServer().getServicesManager().getRegistration(Chat.class);
  255.         if (chatProvider != null) {
  256.             chat = chatProvider.getProvider();
  257.         }
  258.     }
  259.  
  260.     public static SkyWars get() {
  261.         return instance;
  262.     }
  263.  
  264.     public static IEssentials getEssentials() {
  265.         return (IEssentials) Bukkit.getPluginManager().getPlugin("Essentials");
  266.     }
  267.  
  268.     public static Permission getPermission() {
  269.         return permission;
  270.     }
  271.  
  272.     public static Economy getEconomy() {
  273.         return economy;
  274.     }
  275.  
  276.     public static Chat getChat() {
  277.         return chat;
  278.     }
  279.  
  280.     public static Database getDB() {
  281.         return instance.database;
  282.     }
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement