/src/main/java/com/mast3rplan/alphachest/AlphaChestPlugin.java

https://github.com/talmor/AlphaChest-for-Canary · Java · 126 lines · 101 code · 19 blank · 6 comment · 16 complexity · a4536c06f3a41e8a66a4966b5b3193af MD5 · raw file

  1. package com.mast3rplan.alphachest;
  2. import com.mast3rplan.alphachest.commands.ChestCommands;
  3. import com.mast3rplan.alphachest.commands.WorkbenchCommand;
  4. import com.nijiko.permissions.PermissionHandler;
  5. import com.nijikokun.bukkit.Permissions.Permissions;
  6. import java.io.BufferedReader;
  7. import java.io.File;
  8. import java.io.FileReader;
  9. import java.io.IOException;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.logging.Logger;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.plugin.Plugin;
  15. import org.bukkit.plugin.PluginDescriptionFile;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17. import org.bukkit.util.config.Configuration;
  18. public class AlphaChestPlugin extends JavaPlugin {
  19. private static final Logger log = Logger.getLogger("Minecraft");
  20. private PermissionHandler permissionHandler;
  21. private AlphaChestManager chestManager;
  22. public void onEnable() {
  23. // Load/create configuration
  24. final Configuration config = getConfiguration();
  25. if (!new File(getDataFolder(), "config.yml").exists()) {
  26. ArrayList<String> admincmds = new ArrayList<String>();
  27. admincmds.add("ac.admin");
  28. admincmds.add("ac.save");
  29. admincmds.add("ac.reload");
  30. config.setProperty("admincmds", admincmds);
  31. config.setProperty("admins", getOps());
  32. config.setProperty("autosave", 10);
  33. config.save();
  34. }
  35. // Load Permissions plugin, if available
  36. setupPermissions();
  37. // Initialize
  38. chestManager = new AlphaChestManager(new File(getDataFolder(), "chests"));
  39. chestManager.load();
  40. // Set command executors
  41. final ChestCommands chestCommands = new ChestCommands(this, chestManager);
  42. getCommand("chest").setExecutor(chestCommands);
  43. getCommand("clearchest").setExecutor(chestCommands);
  44. getCommand("savechests").setExecutor(chestCommands);
  45. getCommand("workbench").setExecutor(new WorkbenchCommand(this));
  46. // Schedule auto-saving
  47. int autosaveInterval = config.getInt("autosave", 10) * 3000;
  48. getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
  49. public void run() {
  50. chestManager.save();
  51. log.fine("[AlphaChest] auto-saved chests");
  52. }
  53. }, autosaveInterval, autosaveInterval);
  54. // Success
  55. PluginDescriptionFile pdfFile = getDescription();
  56. log.info("[" + pdfFile.getName() + "] version [" + pdfFile.getVersion() + "] enabled");
  57. }
  58. public void onDisable() {
  59. chestManager.save();
  60. PluginDescriptionFile pdfFile = getDescription();
  61. log.info("[" + pdfFile.getName() + "] version [" + pdfFile.getVersion() + "] disabled");
  62. }
  63. private void setupPermissions() {
  64. if (permissionHandler == null) {
  65. final Plugin permissions = getServer().getPluginManager().getPlugin("Permissions");
  66. if (permissions != null) {
  67. permissionHandler = ((Permissions) permissions).getHandler();
  68. } else {
  69. PluginDescriptionFile pdfFile = getDescription();
  70. log.info("[" + pdfFile.getName() + "] Permission system not enabled. Using seperate settings.");
  71. }
  72. }
  73. }
  74. private List<String> getOps() {
  75. ArrayList<String> ops = new ArrayList<String>();
  76. try {
  77. BufferedReader e = new BufferedReader(new FileReader("ops.txt"));
  78. String s = "";
  79. while ((s = e.readLine()) != null)
  80. if (!s.equals(""))
  81. ops.add(s);
  82. e.close();
  83. } catch (IOException e) {
  84. e.printStackTrace();
  85. }
  86. return ops;
  87. }
  88. public boolean hasPermission(Player player, String permission) {
  89. if (permissionHandler != null) {
  90. return permissionHandler.has(player, permission);
  91. } else {
  92. final Configuration config = getConfiguration();
  93. final List<String> admincmds = config.getStringList("admincmds", null);
  94. if (!admincmds.contains(permission)) {
  95. return true;
  96. } else {
  97. final List<String> admins = config.getStringList("admins", null);
  98. for (String admin : admins) {
  99. if (admin.equalsIgnoreCase(player.getName())) {
  100. return true;
  101. }
  102. }
  103. return false;
  104. }
  105. }
  106. }
  107. }