/src/redsgreens/SupplySign/SupplySign.java

https://github.com/ZachBora/SupplySign · Java · 175 lines · 134 code · 27 blank · 14 comment · 25 complexity · 93f4c9ecb74435be7cca8af0b6880a6a MD5 · raw file

  1. package redsgreens.SupplySign;
  2. import java.io.File;
  3. import java.util.*;
  4. import java.util.logging.Logger;
  5. import org.bukkit.command.*;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.Event.Priority;
  8. import org.bukkit.plugin.Plugin;
  9. import org.bukkit.plugin.PluginDescriptionFile;
  10. import org.bukkit.plugin.java.JavaPlugin;
  11. import org.bukkit.plugin.PluginManager;
  12. import org.bukkit.event.Event.Type;
  13. import com.nijiko.permissions.PermissionHandler;
  14. import com.nijikokun.bukkit.Permissions.Permissions;
  15. /**
  16. * SupplySign for Bukkit
  17. *
  18. * @author redsgreens
  19. */
  20. public class SupplySign extends JavaPlugin {
  21. private final SupplySignBlockListener blockListener = new SupplySignBlockListener(this);
  22. private final SupplySignPlayerListener playerListener = new SupplySignPlayerListener(this);
  23. private final HashMap<Player, Boolean> debugees = new HashMap<Player, Boolean>();
  24. public final Logger logger = Logger.getLogger("Minecraft");
  25. public final SupplySignConfig Config = new SupplySignConfig(this);
  26. public final SupplySignKits Kits = new SupplySignKits(this);
  27. public final SupplySignItems Items = new SupplySignItems(this);
  28. public PermissionHandler Permissions = null;
  29. public void onEnable() {
  30. // link to permissions
  31. setupPermissions();
  32. try {
  33. // create the data folder if it doesn't exist
  34. File folder = this.getDataFolder();
  35. if(!folder.exists()){
  36. folder.mkdirs();
  37. }
  38. Config.loadConfig();
  39. Items.loadItems();
  40. Kits.loadKits();
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. // Register our events
  45. PluginManager pm = getServer().getPluginManager();
  46. pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Highest, this);
  47. pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Highest, this);
  48. pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
  49. pm.registerEvent(Type.BLOCK_DISPENSE, blockListener, Priority.Monitor, this);
  50. pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.Highest, this);
  51. // print loaded message
  52. PluginDescriptionFile pdfFile = this.getDescription();
  53. System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
  54. }
  55. @Override
  56. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
  57. // catches the /supplysign command
  58. {
  59. String commandName = cmd.getName().toLowerCase();
  60. if(sender instanceof Player)
  61. {
  62. System.out.println("Command cmd = " + sender);
  63. System.out.println("Args = " + args);
  64. Player player = (Player) sender;
  65. // supplysign command
  66. if(commandName.equals("supplysign") && args.length == 1)
  67. {
  68. if(args[0].equalsIgnoreCase("reload"))
  69. {
  70. if(isAuthorized(player, "reload"))
  71. {
  72. // supplysign reload
  73. try{
  74. Config.loadConfig();
  75. Items.loadItems();
  76. Kits.loadKits();
  77. } catch (Exception e) {
  78. System.out.println("SupplySign error: " + e.getMessage());
  79. }
  80. player.sendMessage("SupplySign data reloaded.");
  81. return true;
  82. }
  83. else
  84. player.sendMessage("§cErr: You don't have SupplySign reload permission.");
  85. }
  86. else if(args[0].equalsIgnoreCase("listkits"))
  87. {
  88. player.sendMessage("Available SupplySign kits:");
  89. // supplysign/ss list
  90. Iterator<String> i = Kits.getKitNames().iterator();
  91. while(i.hasNext())
  92. player.sendMessage(i.next());
  93. return true;
  94. }
  95. }
  96. }
  97. return false;
  98. }
  99. // return true if Player p has the permission perm
  100. public boolean isAuthorized(Player p, String perm){
  101. boolean retval = p.isOp();
  102. if(Permissions == null && retval == false)
  103. {
  104. if(Config.AllowNonOpAccess == true && perm.equalsIgnoreCase("access"))
  105. return true;
  106. try
  107. {
  108. return p.hasPermission("supplysign." + perm);
  109. }
  110. catch (Exception ex){}
  111. }
  112. else
  113. {
  114. try{
  115. if(Permissions != null)
  116. if (Permissions.has(p, "supplysign." + perm))
  117. retval = true;
  118. }
  119. catch (Exception ex){}
  120. }
  121. return retval;
  122. }
  123. private void setupPermissions() {
  124. try{
  125. Plugin test = this.getServer().getPluginManager().getPlugin("Permissions");
  126. if (Permissions == null) {
  127. if (test != null) {
  128. Permissions = ((Permissions)test).getHandler();
  129. }
  130. }
  131. }
  132. catch (Exception ex){}
  133. }
  134. public void onDisable() {
  135. PluginDescriptionFile pdfFile = this.getDescription();
  136. System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!" );
  137. }
  138. public boolean isDebugging(final Player player) {
  139. if (debugees.containsKey(player)) {
  140. return debugees.get(player);
  141. } else {
  142. return false;
  143. }
  144. }
  145. public void setDebugging(final Player player, final boolean value) {
  146. debugees.put(player, value);
  147. }
  148. }