Guest User

Main Class

a guest
Apr 19th, 2018
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.58 KB | None | 0 0
  1. package me.kbabe.firework;
  2.  
  3. import com.mongodb.MongoClient;
  4. import com.mongodb.MongoCredential;
  5. import com.mongodb.ServerAddress;
  6. import com.mongodb.client.MongoDatabase;
  7. import me.kbabe.firework.command.FactionCommand;
  8. import org.bukkit.ChatColor;
  9. import org.bukkit.Server;
  10. import org.bukkit.configuration.file.FileConfiguration;
  11. import org.bukkit.plugin.PluginManager;
  12. import org.bukkit.plugin.java.JavaPlugin;
  13. import org.bukkit.scheduler.BukkitScheduler;
  14. import me.kbabe.firework.listener.PlayerListener;
  15. import me.kbabe.firework.manager.FactionManager;
  16. import me.kbabe.firework.manager.ProfileManager;
  17. import me.kbabe.firework.messages.Message;
  18. import me.kbabe.firework.messages.Messages;
  19. import me.kbabe.firework.packet.PacketHandler;
  20. import me.kbabe.firework.player.FactionProfile;
  21. import me.kbabe.firework.utils.file.YMLFile;
  22.  
  23. import java.util.*;
  24.  
  25. public class HCFactions extends JavaPlugin {
  26.     private YMLFile langYML, databaseYML;
  27.     private MongoDatabase database;
  28.  
  29.     private FactionManager factionManager;
  30.     private ProfileManager profileManager;
  31.  
  32.     //TODO: make this editable in config
  33.     public static final int MAX_FACTION_AMOUNT = 15;
  34.  
  35.     //TODO: make permission based deathban times
  36.     public static final long
  37.             STARTUP = System.currentTimeMillis(),
  38.             DEATHBAN_TIME = 5400000; // 1.5 hours
  39.  
  40.     @Override
  41.     public void onEnable() {
  42.         if (!getDataFolder().exists()) getDataFolder().mkdirs();
  43.         langYML = new YMLFile(this, "lang.yml");
  44.         databaseYML = new YMLFile(this, "database.yml");
  45.         FileConfiguration
  46.                 langConfig = langYML.getConfig(),
  47.                 databaseConfig = databaseYML.getConfig();
  48.  
  49.         Map<String, Object>
  50.                 langDefaults = new HashMap<>(),
  51.                 databaseDefaults = new HashMap<>();
  52.  
  53.         for (Message message : Messages.MESSAGES.values()) {
  54.             langDefaults.put(message.getName(), message.getValue());
  55.         }
  56.  
  57.         databaseDefaults.put("Database.hostname", "127.0.0.1");
  58.         databaseDefaults.put("Database.port", 27017);
  59.         databaseDefaults.put("Database.name", "hcfactions");
  60.         databaseDefaults.put("Database.username", "username");
  61.         databaseDefaults.put("Database.password", "password");
  62.  
  63.         langYML.setDefaults(langDefaults);
  64.         databaseYML.setDefaults(databaseDefaults);
  65.  
  66.         String
  67.                 host = databaseConfig.getString("Database.hostname"),
  68.                 databaseName = databaseConfig.getString("Database.name"),
  69.                 userName = databaseConfig.getString("Database.username"),
  70.                 password = databaseConfig.getString("Database.password");
  71.         int port = databaseConfig.getInt("Database.port");
  72.         MongoClient client = new MongoClient(new ServerAddress(host, port), Collections.singletonList(MongoCredential.createCredential(userName, databaseName, password.toCharArray())));
  73.         database = client.getDatabase(databaseName);
  74.  
  75.         for (String name : Messages.MESSAGES.keySet()) {
  76.             setMessage(name, langConfig.getString(name));
  77.         }
  78.  
  79.         factionManager = new FactionManager(this);
  80.         profileManager = new ProfileManager(this);
  81.  
  82.         BukkitScheduler scheduler = getServer().getScheduler();
  83.         scheduler.runTaskLaterAsynchronously(this, factionManager::loadFactions, 10L);
  84.         scheduler.runTaskTimerAsynchronously(this, () -> {
  85.             factionManager.saveFactions();
  86.             for (FactionProfile profile : profileManager.getProfileMap().values())
  87.                 profile.save();
  88.         }, 12L, 200L);
  89.  
  90.         PluginManager pluginManager = getServer().getPluginManager();
  91.         pluginManager.registerEvents(new PlayerListener(this), this);
  92.  
  93.         getServer().getCommandMap().register("hcfactions", new FactionCommand(this));
  94.  
  95.         new PacketHandler(this);
  96.     }
  97.     @Override
  98.     public void onDisable() {
  99.         Server server = getServer();
  100.         server.getOnlinePlayers().forEach(player -> player.kickPlayer(ChatColor.translateAlternateColorCodes('&', "&dRestarting.")));
  101.         factionManager.saveFactions();
  102.     }
  103.     public MongoDatabase getMongoDatabase() {
  104.         return database;
  105.     }
  106.  
  107.     public FactionManager getFactionManager() {
  108.         return factionManager;
  109.     }
  110.     public ProfileManager getProfileManager() {
  111.         return profileManager;
  112.     }
  113.  
  114.     private void setMessage(String name, String value) {
  115.         getMessage(name).setValue(value);
  116.     }
  117.  
  118.     public Message getMessage(String name) {
  119.         return Messages.MESSAGES.get(name);
  120.     }
  121. }
Add Comment
Please, Sign In to add comment