Package de.bananaco.permissions

Source Code of de.bananaco.permissions.Permissions

package de.bananaco.permissions;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.java.JavaPlugin;

import de.bananaco.help.Help;
import de.bananaco.permissions.commands.GlobalCommands;
import de.bananaco.permissions.commands.LocalCommands;
import de.bananaco.permissions.commands.WorldCommands;
import de.bananaco.permissions.debug.Debugger;
import de.bananaco.permissions.debug.MCMA;
import de.bananaco.permissions.fornoobs.BackupPermissionsCommand;
import de.bananaco.permissions.fornoobs.ForNoobs;
import de.bananaco.permissions.fornoobs.PermissionsCommandSuggestions;
import de.bananaco.permissions.info.InfoReader;
import de.bananaco.permissions.interfaces.PermissionSet;
import de.bananaco.permissions.worlds.PermissionClass;

import de.bananaco.permissions.worlds.HasPermission;
import de.bananaco.permissions.worlds.WorldPermissionSet;
import de.bananaco.permissions.worlds.WorldPermissionsManager;

import de.bananaco.permissions.oldschool.Configuration;

public class Permissions extends JavaPlugin {

  private static Set<String> commands = new HashSet<String>();

  public static boolean idiotVariable = false;
  private static InfoReader info;

  private static Set<String> listCommands = new HashSet<String>();
  private static WorldPermissionsManager perm;

  private static String sworldCommand;

  private static Set<String> worldCommands = new HashSet<String>();

  public static Set<String> getCommands() {
    return commands;
  }

  public static InfoReader getInfoReader() {
    return info;
  }

  public static Set<String> getListCommands() {
    return listCommands;
  }

  public static String getWorldCommand() {
    return sworldCommand;
  }

  public static Set<String> getWorldCommands() {
    return worldCommands;
  }

  public static WorldPermissionsManager getWorldPermissionsManager() {
    return Permissions.perm;
  }
  public String addGroup;
  public String addGroupToGroup;
  public String addNode;
  public String addPlayerNode;
  private BackupPermissionsCommand bpc;
  public Configuration c;
  public boolean cacheValues;
  public String database = "bPermissions";
  public String demotePlayer;
  public String globalCommand;
  public GlobalCommands globalExec;

  public String hostname = "localhost";
  public ImportManager im;
  public String inGroup;
  public String listGroup;
  public String listGroupGroup;
  public String listNode;
  public String listPlayerNode;

  public String localCommand;

  public LocalCommands localExec;

  public Map<String, String> mirror;

  public String password = "minecraft";

  public PermissionsExec permissionsExec;

  public WorldPermissionsManager pm;

  public String port = "3306";
  public String promotePlayer;

  public String removeGroup;
  public String removeGroupFromGroup;
  public String removeNode;

  public String removePlayerNode;

  public String setGroup;

  public boolean suggestSimilarCommands;

  public String username = "minecraft";

  public String worldCommand;

  public WorldCommands worldExec;

  public WorldPermissionSet wps;

  /**
   * Just the logger man
   *
   * @param input
   */
  public void log(Object input) {
    System.out.println("[bPermissions "
        + this.getDescription().getVersion() + "] "
        + String.valueOf(input));
  }

  @Override
  public boolean onCommand(CommandSender sender, Command command,
      String label, String[] args) {
    boolean allowed = true;
    if (args.length == 0 && sender.hasPermission("bPermissions.admin")) {
      sender.sendMessage("Type: \"/" + label
          + " tutorial\" in-game for help");
      return true;
    }

    if (args.length == 1) {
      if (args[0].equalsIgnoreCase("reload")) {
        if (sender.hasPermission("bPermissions.admin")
            || sender.hasPermission("bPermissions.reload")
            || !(sender instanceof Player)) {
          for (PermissionSet ps : pm.getPermissionSets())
            ps.reload();

          sender.sendMessage("Permissions reloaded.");
          return true;
        } else {
          sender.sendMessage("Reload? Nope.");
          return true;
        }
      }
    }

    if (sender instanceof Player) {
      Player player = (Player) sender;
      allowed = (player.hasPermission("bPermissions.admin") || player
          .isOp());
    }
    if (!allowed) {
      sender.sendMessage("Are you sure you're doing that right?");
      return true;
    }
    if (args.length > 1) {
      if (args[0].equalsIgnoreCase("haspermission")) {
        if (args.length == 2) {
          boolean perm = sender.hasPermission(args[1]);
          sender.sendMessage(ChatColor.AQUA + args[1]
              + ChatColor.GREEN + ":" + ChatColor.AQUA + perm);
          return true;
        } else {
          Player player = getServer().getPlayer(args[1]);
          boolean perm = false;
          if (player == null) {
            perm = false;
            perm = HasPermission.has(args[1],
            getServer().getWorlds().get(0).getName(), args[2]);
          } else {
            perm = sender.hasPermission(args[2]);
          }
          PermissionClass.isRangePermission(args[2]);
          sender.sendMessage(ChatColor.AQUA + args[2]
              + ChatColor.GREEN + ":" + ChatColor.AQUA + perm);
          return true;
        }
      }
    }

    if (args.length > 0) {
      if (args.length == 1) {
        if (args[0].equals("helpme")) {
          new ForNoobs(this).addAll();
          sender.sendMessage("Attempted to setup default groups - please view your worldname.yml files");
          return true;
        }
        if (args[0].equals("backup")) {
          bpc.backup();
          sender.sendMessage("Permissions files backed up, share this zip with codename_B if you have issues.");
          return true;
        }
      }
      if (args.length == 2) {
        if (args[0].equalsIgnoreCase("import")) {
          if (args[1].equalsIgnoreCase("p3")) {
            sender.sendMessage("Ok? Here goes!");
            im.importPermissions3();
            return true;
          }
          if (args[1].equalsIgnoreCase("gm")) {
            sender.sendMessage("Ok? Here goes!");
            im.importGroupManager();
            return true;
          }
          if (args[1].equalsIgnoreCase("yml")) {
            sender.sendMessage("Ok? Here goes!");
            im.importYML();
            return true;
          }
          if (args[1].equalsIgnoreCase("pb")) {
            sender.sendMessage("Ok? Here goes!");
            im.importPermissionsBukkit();
            return true;
          }
          if (args[1].equalsIgnoreCase("pex")) {
            sender.sendMessage("Why did you use PEX? You fool!");
            im.importPEX();
            return true;
          }
        }
      }
      if(args.length>=3)
      if (args[0].equalsIgnoreCase(this.globalCommand))
        return this.globalExec.onCommand(sender, command, label, args);
      else if (args[0].equalsIgnoreCase(this.worldCommand))
        return this.worldExec.onCommand(sender, command, label, args);
      else if (args[0].equalsIgnoreCase(this.localCommand)
          && sender instanceof Player)
        return this.localExec.onCommand((Player) sender, command,
            label, args);
    }
    if (suggestSimilarCommands) {
      return suggest(sender, command, args, label);
    } else {
      sender.sendMessage("Please check out the tutorial for help.");
    }

    return false;
  }

  @Override
  public void onDisable() {
    getServer().getScheduler().cancelTasks(this);
    log("Disabled");
  }

  @Override
  public void onEnable() {

    com.arandomappdev.bukkitstats.CallHome.load(this);
    registerPermissions();

    Help.load(this);
    SuperPermissionHandler.setPlugin(this);

    bpc = new BackupPermissionsCommand(this);

    mirror = new HashMap<String, String>();

    im = new ImportManager(this);
    setupConfig();

    log("Using " + wps.toString() + " for Permissions");

    setupCommands();
    if (pm == null)
      pm = new WorldPermissionsManager(this);

    pm.engage();

    if (info == null)
      info = new InfoReader();

    info.instantiate();
    PermissionsPlayerListener pl = new PermissionsPlayerListener(this);

    getServer().getPluginManager().registerEvent(
        Event.Type.PLAYER_COMMAND_PREPROCESS,
        new CommandPreprocess(this), Priority.Lowest, this);
    getServer().getPluginManager().registerEvent(Event.Type.PLAYER_LOGIN,
        pl, Priority.Low, this);

    // NEW THINGS
    getServer().getPluginManager().registerEvent(
        Event.Type.PLAYER_TELEPORT, pl, Priority.Monitor, this);
    getServer().getPluginManager().registerEvent(Event.Type.PLAYER_RESPAWN,
        pl, Priority.Monitor, this);
    getServer().getPluginManager().registerEvent(
        Event.Type.PLAYER_CHANGED_WORLD, pl, Priority.Monitor, this);

    getServer().getPluginManager().registerEvent(
        Event.Type.PLAYER_INTERACT, pl, Priority.Normal, this);
    getServer().getPluginManager().registerEvent(
        Event.Type.PLAYER_INTERACT_ENTITY, pl, Priority.Normal, this);

    log("Enabled");
  }

  @Override
  public void onLoad() {
    pm = new WorldPermissionsManager(this);
    perm = pm;
    info = new InfoReader();
    PermissionBridge.loadPseudoPlugin(this, getClassLoader());
  }

  private void registerPermissions() {

    getServer().getPluginManager().addPermission(
        new Permission("bPermissions.admin", PermissionDefault.OP));
    getServer().getPluginManager().addPermission(
        new Permission("bPermissions.build", PermissionDefault.OP));

  }

  public void setupCommands() {
    this.globalExec = new GlobalCommands(this);
    this.localExec = new LocalCommands(this);
    this.worldExec = new WorldCommands(this);
    this.permissionsExec = new PermissionsExec(this);
  }

  public void setupConfig() {
    c = new Configuration(this);

    List<String> mirrors = c.getKeys("mirrors");
    if (mirrors != null)
      for (String world : mirrors)
        mirror.put(world, c.getString("mirrors." + world));

    globalCommand = c.getString("commands.global-command", "global");
    localCommand = c.getString("commands.local-command", "local");
    worldCommand = c.getString("commands.world-command", "world");

    promotePlayer = c.getString("commands.promote-player", "promote");
    demotePlayer = c.getString("commands.demote-player", "demote");

    addGroup = c.getString("commands.add-group", "addgroup");
    addGroupToGroup = c.getString("commands.add-group-to-group",
        "addgroupgroup");
    setGroup = c.getString("commands.set-group", "setgroup");
    removeGroup = c.getString("commands.remove-group", "rmgroup");
    removeGroupFromGroup = c.getString("commands.remove-group-from-group",
        "rmgroupgroup");
    listGroup = c.getString("commands.list-group", "lsgroup");
    listGroupGroup = c.getString("commands.list-group-group",
        "lsgroupgroup");
    inGroup = c.getString("commands.in-group", "ingroup");

    addNode = c.getString("commands.add-node", "addnode");
    addPlayerNode = c.getString("commands.add-player-node", "addplnode");
    removeNode = c.getString("commands.remove-node", "rmnode");
    removePlayerNode = c.getString("commands.remove-player-node",
        "rmplnode");
    listNode = c.getString("commands.list-node", "lsnode");
    listPlayerNode = c.getString("commands.list-player-node", "lsplnode");

    idiotVariable = c.getBoolean("lowercase-all", false);

    c.setProperty("lowercase-all", idiotVariable);

    boolean debug = c.getBoolean("enable-debug", true);
    Debugger.setDebugging(debug);
    c.setProperty("enable-debug", debug);

    boolean mcma = c.getBoolean("enable-mcma", false);
    MCMA.setDebugging(debug);
    c.setProperty("enable-mcma", mcma);

    suggestSimilarCommands = c.getBoolean("suggest-similar-commands", true);

    c.setProperty("cache-values", cacheValues);

    c.setProperty("permission-type", c.getString("permission-type", "yaml"));
    wps = WorldPermissionSet.getSet(c.getString("permission-type"));

    c.removeProperty("use-bml");
    c.removeProperty("override-player");
    c.removeProperty("cache-values");

    c.setProperty("suggest-similar-commands", suggestSimilarCommands);

    c.setProperty("commands.global-command", globalCommand);
    c.setProperty("commands.local-command", localCommand);
    c.setProperty("commands.world-command", worldCommand);

    c.setProperty("commands.promote-player", promotePlayer);
    c.setProperty("commands.demote-player", demotePlayer);

    c.setProperty("commands.set-group", setGroup);
    c.setProperty("commands.add-group", addGroup);
    c.setProperty("commands.add-group-to-group", addGroupToGroup);
    c.setProperty("commands.remove-group", removeGroup);
    c.setProperty("commands.remove-group-from-group", removeGroupFromGroup);
    c.setProperty("commands.list-group", listGroup);
    c.setProperty("commands.list-group-group", listGroupGroup);
    c.setProperty("commands.in-group", inGroup);

    c.setProperty("commands.add-node", addNode);
    c.setProperty("commands.remove-node", removeNode);
    c.setProperty("commands.list-node", listNode);

    c.setProperty("commands.add-player-node", addPlayerNode);
    c.setProperty("commands.remove-player-node", removePlayerNode);
    c.setProperty("commands.list-player-node", listPlayerNode);

    c.removeProperty("format-chat");

    c.save();

    sworldCommand = this.worldCommand;

    worldCommands.add(this.globalCommand);
    worldCommands.add(this.localCommand);
    worldCommands.add(this.worldCommand);

    commands.add(this.setGroup);
    commands.add(this.addGroup);
    commands.add(this.removeGroup);
    commands.add(this.addGroupToGroup);
    commands.add(this.removeGroupFromGroup);

    commands.add(this.addNode);
    commands.add(this.removeNode);
    commands.add(this.addPlayerNode);
    commands.add(this.removePlayerNode);

    commands.add(this.listGroup);
    commands.add(this.listNode);
    commands.add(this.inGroup);

    listCommands.add(this.listGroup);
    listCommands.add(this.listNode);
    listCommands.add(this.listGroupGroup);
    listCommands.add(this.listPlayerNode);
    listCommands.add(this.inGroup);
  }

  public boolean suggest(CommandSender sender, Command command,
      String[] args, String label) {
    String message = PermissionsCommandSuggestions.suggestSimilarCommands(
        sender, args, label);
    sender.sendMessage(ChatColor.BLUE + "[bPermissions] " + ChatColor.AQUA
        + "Did you mean:");
    sender.sendMessage(ChatColor.AQUA + message);
    return true;
  }
}
TOP

Related Classes of de.bananaco.permissions.Permissions

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.