/**
   * Called when a player attempts to log in to the server
   *
   * @param event Relevant event details
   */
  @Override
  public void onPlayerLogin(PlayerLoginEvent event) {
    Player player = event.getPlayer();

    GlobalConfiguration cfg = plugin.getGlobalConfiguration();
    WorldConfiguration wcfg = cfg.getWorldConfig(player.getWorld().getName());

    if (wcfg.enforceOneSession) {
      String name = player.getName();

      for (Player pl : plugin.getServer().getOnlinePlayers()) {
        if (pl.getName().equalsIgnoreCase(name)) {
          pl.kickPlayer("Logged in from another location.");
        }
      }
    }

    if (!checkediConomy) {
      iConomy iconomy = (iConomy) plugin.getServer().getPluginManager().getPlugin("iConomy");
      if (iconomy != null) {
        plugin.getGlobalConfiguration().setiConomy(iconomy);
      }

      checkediConomy = true;
    }
  }
  public void registerEvents() {

    PluginManager pm = plugin.getServer().getPluginManager();

    pm.registerEvent(Event.Type.ENTITY_DAMAGED, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.ENTITY_EXPLODE, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.CREATURE_SPAWN, this, Priority.High, plugin);
  }
 public void updateCommandBookGodMode() {
   try {
     if (plugin.getServer().getPluginManager().isPluginEnabled("CommandBook")) {
       Class.forName("com.sk89q.commandbook.GodComponent");
       hasCommandBookGodMode = true;
       return;
     }
   } catch (ClassNotFoundException ignore) {
   }
   hasCommandBookGodMode = false;
 }
  public void registerEvents() {
    PluginManager pm = plugin.getServer().getPluginManager();

    /* pm.registerEvent(Event.Type.PLAYER_ITEM, this, Priority.High, plugin); */
    pm.registerEvent(Event.Type.PLAYER_INTERACT, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.PLAYER_PICKUP_ITEM, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.PLAYER_JOIN, this, Priority.Normal, plugin);
    pm.registerEvent(Event.Type.PLAYER_LOGIN, this, Priority.Normal, plugin);
    pm.registerEvent(Event.Type.PLAYER_QUIT, this, Priority.Normal, plugin);
    pm.registerEvent(Event.Type.PLAYER_RESPAWN, this, Priority.High, plugin);
  }
  public void registerEvents() {

    PluginManager pm = plugin.getServer().getPluginManager();

    pm.registerEvent(Event.Type.BLOCK_DAMAGE, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.BLOCK_BREAK, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.BLOCK_FROMTO, this, Priority.Normal, plugin);
    pm.registerEvent(Event.Type.BLOCK_IGNITE, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.BLOCK_PHYSICS, this, Priority.Normal, plugin);
    pm.registerEvent(Event.Type.BLOCK_PLACE, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.BLOCK_BURN, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.SIGN_CHANGE, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.REDSTONE_CHANGE, this, Priority.High, plugin);
    pm.registerEvent(Event.Type.SNOW_FORM, this, Priority.High, plugin);
  }
 /** Register events. */
 public void registerEvents() {
   plugin.getServer().getPluginManager().registerEvents(this, plugin);
 }
  /** Load the configuration. */
  @SuppressWarnings("unchecked")
  public void load() {
    // Create the default configuration file
    plugin.createDefaultConfiguration(new File(plugin.getDataFolder(), "config.yml"), "config.yml");

    config =
        new YAMLProcessor(
            new File(plugin.getDataFolder(), "config.yml"), true, YAMLFormat.EXTENDED);
    try {
      config.load();
    } catch (IOException e) {
      log.severe("Error reading configuration for global config: ");
      e.printStackTrace();
    }

    config.removeProperty("suppress-tick-sync-warnings");
    useRegionsScheduler = config.getBoolean("regions.use-scheduler", true);
    migrateRegionsToUuid = config.getBoolean("regions.uuid-migration.perform-on-next-start", true);
    keepUnresolvedNames =
        config.getBoolean("regions.uuid-migration.keep-names-that-lack-uuids", true);
    useRegionsCreatureSpawnEvent = config.getBoolean("regions.use-creature-spawn-event", true);
    useGodPermission =
        config.getBoolean(
            "auto-invincible", config.getBoolean("auto-invincible-permission", false));
    useGodGroup = config.getBoolean("auto-invincible-group", false);
    useAmphibiousGroup = config.getBoolean("auto-no-drowning-group", false);
    config.removeProperty("auto-invincible-permission");
    usePlayerMove = config.getBoolean("use-player-move-event", true);
    usePlayerTeleports = config.getBoolean("use-player-teleports", true);

    deopOnJoin = config.getBoolean("security.deop-everyone-on-join", false);
    blockInGameOp = config.getBoolean("security.block-in-game-op-command", false);

    hostKeys = new HashMap<String, String>();
    Object hostKeysRaw = config.getProperty("host-keys");
    if (hostKeysRaw == null || !(hostKeysRaw instanceof Map)) {
      config.setProperty("host-keys", new HashMap<String, String>());
    } else {
      for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) hostKeysRaw).entrySet()) {
        String key = String.valueOf(entry.getKey());
        String value = String.valueOf(entry.getValue());
        hostKeys.put(key.toLowerCase(), value);
      }
    }

    // ====================================================================
    // Region store drivers
    // ====================================================================

    boolean useSqlDatabase = config.getBoolean("regions.sql.use", false);
    String sqlDsn = config.getString("regions.sql.dsn", "jdbc:mysql://localhost/worldguard");
    String sqlUsername = config.getString("regions.sql.username", "worldguard");
    String sqlPassword = config.getString("regions.sql.password", "worldguard");
    String sqlTablePrefix = config.getString("regions.sql.table-prefix", "");

    DataSourceConfig dataSourceConfig =
        new DataSourceConfig(sqlDsn, sqlUsername, sqlPassword, sqlTablePrefix);
    SQLDriver sqlDriver = new SQLDriver(dataSourceConfig);
    DirectoryYamlDriver yamlDriver = new DirectoryYamlDriver(getWorldsDataFolder(), "regions.yml");

    this.regionStoreDriverMap =
        ImmutableMap.<DriverType, RegionDriver>builder()
            .put(DriverType.MYSQL, sqlDriver)
            .put(DriverType.YAML, yamlDriver)
            .build();
    this.selectedRegionStoreDriver = useSqlDatabase ? sqlDriver : yamlDriver;

    // Load configurations for each world
    for (World world : plugin.getServer().getWorlds()) {
      get(world);
    }

    config.setHeader(CONFIG_HEADER);
  }