Esempio n. 1
0
  private static void loadPropertiesFiles(File dataFolder) {
    // Use Configuration once it's finished.
    PropertiesFile pf = new PropertiesFile(new File(dataFolder, "watching.properties"));
    blockBreak = pf.getBoolean("blockBreak", true, "Watch when players break blocks");
    blockPlace = pf.getBoolean("blockPlace", true, "Watch when players place blocks");
    teleport = pf.getBoolean("teleport", true, "Watch when players teleport around");
    chestChanges =
        pf.getBoolean("chestChanges", true, "Watch when players add/remove items from chests");
    commands = pf.getBoolean("commands", true, "Watch for all player commands");
    chat = pf.getBoolean("chat", true, "Watch for player chat");
    login = pf.getBoolean("login", true, "Watch for player logins");
    disconnect = pf.getBoolean("disconnect", true, "Watch for player disconnects");
    doorOpen = pf.getBoolean("doorOpen", false, "Watch for when player opens doors");
    buttonPress = pf.getBoolean("buttonPress", false, "Watch for when player pushes buttons");
    leverSwitch = pf.getBoolean("leverSwitch", false, "Watch for when player switches levers");
    fire = pf.getBoolean("fireLogging", true, "Watch for when players start fires");
    leafDrops = pf.getBoolean("leafDrops", true, "Watch for when leaves drop");
    tntExplosions = pf.getBoolean("tntExplosions", true, "Watch for when TNT explodes");
    creeperExplosions =
        pf.getBoolean("creeperExplosions", true, "Watch for when Creepers explodes");
    miscExplosions = pf.getBoolean("miscExplosions", true, "Watch for miscellaneous explosions");
    ipPlayer = pf.getBoolean("ipPlayer", false, "Add player's IP when login");
    pf.save();

    pf = new PropertiesFile(new File(dataFolder, "BigBrother.properties"));
    freedMem = pf.getDouble("freedMem", 0.0, "The amount of memory freed by BB");
    stickItem = pf.getLong("stickItem", 280l, "The item used for /bb stick");
    restoreFire = pf.getBoolean("restoreFire", false, "Restore fire when rolling back");
    autoWatch = pf.getBoolean("autoWatch", true, "Automatically start watching players");
    defaultSearchRadius =
        pf.getInt("defaultSearchRadius", 2, "Default search radius for bbhere and bbfind");
    mysql = pf.getBoolean("MySQL", true, "If true, uses MySQL. If false, uses Sqlite");
    flatLog =
        pf.getBoolean(
            "flatFileLogs", false, "If true, will also log actions to .logs (one for each player)");
    mysqlUser = pf.getString("mysqlUser", "root", "Username for MySQL db (if applicable)");
    mysqlPass = pf.getString("mysqlPass", "root", "Password for MySQL db (if applicable)");
    mysqlDB =
        pf.getString(
            "mysqlDB", "jdbc:mysql://localhost:3306/minecraft", "DB for MySQL (if applicable)");
    BBDataBlock.BBDATA_TABLE_MYSQL =
        BBDataBlock.BBDATA_TABLE_MYSQL
            + " ENGINE="
            + pf.getString("engine", "INNODB", "Engine for the Database (INNODB is recommended)")
            + ";";

    sendDelay =
        pf.getInt("sendDelay", 4, "Delay to batch send updates to database (4-5 recommended)");
    pf.save();
  }
  public DestroySpell(MagicSpellsListener listener, PropertiesFile properties) {
    super(listener, properties);

    // register spell
    listener.registerSpellName(
        properties.getString("destroy-spellname", "destroy"),
        this,
        properties.getString("destroy-desc", "Destroys target blocks"));

    // get properties
    REDSTONE_COST = properties.getInt("destroy-redstone-cost", 10);
    OTHER_COST = properties.getInt("destroy-other-cost-type", 289);
    OTHER_COST_NAME = properties.getString("destroy-other-cost-name", "gunpowder");
    OTHER_COST_AMT = properties.getInt("destroy-other-cost-amt", 1);

    BLAST_RADIUS = properties.getInt("destroy-blast-radius", 2);

    STR_CAST = properties.getString("destroy-cast-str", "Boom!");
    STR_CAST_OTHERS = properties.getString("destroy-cast-others-str", "Boom!");

    // setup reagents
    reagents = new int[][] {{REDSTONE_DUST, REDSTONE_COST}, {OTHER_COST, OTHER_COST_AMT}};
  }
Esempio n. 3
0
  public static void initialize(File dataFolder) {
    if (!dataFolder.exists()) {
      dataFolder.mkdirs();
    }

    File configFile = new File(dataFolder, settingsFile);
    PropertiesFile file = new PropertiesFile(configFile);
    dataDir = dataFolder;

    maxPublic = file.getInt("maxPublic", 5, "Maximum number of public warps any player can make");
    maxPrivate =
        file.getInt("maxPrivate", 10, "Maximum number of private warps any player can make");
    adminsObeyLimits =
        file.getBoolean("adminsObeyLimits", false, "Whether or not admins can disobey warp limits");
    adminPrivateWarps =
        file.getBoolean(
            "adminPrivateWarps", true, "Whether or not admins can see private warps in their list");
    loadChunks =
        file.getBoolean(
            "loadChunks",
            false,
            "Force sending of the chunk which people teleport to - default: false");

    usemySQL =
        file.getBoolean(
            "usemySQL", false, "MySQL usage --  true = use MySQL database / false = use SQLite");
    mySQLconn =
        file.getString(
            "mySQLconn",
            "jdbc:mysql://localhost:3306/minecraft",
            "MySQL Connection (only if using MySQL)");
    mySQLuname = file.getString("mySQLuname", "root", "MySQL Username (only if using MySQL)");
    mySQLpass = file.getString("mySQLpass", "password", "MySQL Password (only if using MySQL)");

    file.save();
  }
  public void Load() {
    String numkey = "sign-amount";
    String signprefix = "sign-";
    // clear list
    mSensorList.clear();

    // save
    int num = mPropertiesFile.getInt(numkey, 0);
    for (int i = 0; i < num; ++i) {
      SensorBlock s = SensorBlock.deserialize(mPropertiesFile.getString(signprefix + i, ""));
      if (s != null) {
        mSensorList.add(s);
      } else {
        Logger.getLogger("Minecraft")
            .warning(
                "[TOWNDEFENSE] Sensor at line "
                    + i
                    + " could not be deserialized or is invalid. Deleting.");
      }
    }
    TownDefense.Broadcast("Loaded " + mSensorList.size() + " of " + num + " Sensors.");
  }
Esempio n. 5
0
  public static Warzone load(String name, boolean createNewVolume) {
    // war.getLogger().info("Loading warzone " + name + " config and blocks...");
    PropertiesFile warzoneConfig =
        new PropertiesFile(War.war.getDataFolder().getPath() + "/warzone-" + name + ".txt");
    try {
      warzoneConfig.load();
    } catch (IOException e) {
      War.war.getLogger().info("Failed to load warzone-" + name + ".txt file.");
      e.printStackTrace();
    }

    // world
    String worldStr = warzoneConfig.getProperty("world");
    World world = null;
    if (worldStr == null || worldStr.equals("")) {
      world = War.war.getServer().getWorlds().get(0); // default to first world
    } else {
      world = War.war.getServer().getWorld(worldStr);
    }

    if (world == null) {
      War.war.log(
          "Failed to restore warzone "
              + name
              + ". The specified world (name: "
              + worldStr
              + ") does not exist!",
          Level.WARNING);
    } else {
      // Create the zone
      Warzone warzone = new Warzone(world, name);

      // Create file if needed
      if (!warzoneConfig.containsKey("name")) {
        WarzoneTxtMapper.save(warzone, false);
        War.war.getLogger().info("Warzone " + name + " config file created.");
        try {
          warzoneConfig.load();
        } catch (IOException e) {
          // war.getLogger().info("Failed to reload warzone-" + name + ".txt file after creating
          // it.");
          e.printStackTrace();
        }
      }

      // teleport
      String teleportStr = warzoneConfig.getString("teleport");
      if (teleportStr != null && !teleportStr.equals("")) {
        String[] teleportSplit = teleportStr.split(",");
        int teleX = Integer.parseInt(teleportSplit[0]);
        int teleY = Integer.parseInt(teleportSplit[1]);
        int teleZ = Integer.parseInt(teleportSplit[2]);
        int yaw = Integer.parseInt(teleportSplit[3]);
        warzone.setTeleport(new Location(world, teleX, teleY, teleZ, yaw, 0));
      }

      // ff
      if (warzoneConfig.containsKey("friendlyFire")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.FRIENDLYFIRE, warzoneConfig.getBoolean("friendlyFire"));
      }

      // loadout
      warzone.getDefaultInventories().getLoadouts().clear();

      String loadoutStr = warzoneConfig.getString("loadout");
      if (loadoutStr != null && !loadoutStr.equals("")) {
        warzone
            .getDefaultInventories()
            .getLoadouts()
            .put("default", new HashMap<Integer, ItemStack>());
        LoadoutTxtMapper.fromStringToLoadout(
            loadoutStr, warzone.getDefaultInventories().getLoadouts().get("default"));
      }

      // extraLoadouts
      String extraLoadoutStr = warzoneConfig.getString("extraLoadouts");
      String[] extraLoadoutsSplit = extraLoadoutStr.split(",");

      for (String nameStr : extraLoadoutsSplit) {
        if (nameStr != null && !nameStr.equals("")) {
          warzone
              .getDefaultInventories()
              .getLoadouts()
              .put(nameStr, new HashMap<Integer, ItemStack>());
        }
      }

      for (String extraName : extraLoadoutsSplit) {
        if (extraName != null && !extraName.equals("")) {
          String loadoutString = warzoneConfig.getString(extraName + "Loadout");
          HashMap<Integer, ItemStack> loadout =
              warzone.getDefaultInventories().getLoadouts().get(extraName);
          LoadoutTxtMapper.fromStringToLoadout(loadoutString, loadout);
        }
      }

      // authors
      if (warzoneConfig.containsKey("author") && !warzoneConfig.getString("author").equals("")) {
        for (String authorStr : warzoneConfig.getString("author").split(",")) {
          if (!authorStr.equals("")) {
            warzone.addAuthor(authorStr);
          }
        }
      }

      // life pool (always set after teams, so the teams' remaining lives get initialized properly
      // by this setter)
      if (warzoneConfig.containsKey("lifePool")) {
        warzone.getTeamDefaultConfig().put(TeamConfig.LIFEPOOL, warzoneConfig.getInt("lifePool"));
      }

      // monument heal
      if (warzoneConfig.containsKey("monumentHeal")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.MONUMENTHEAL, warzoneConfig.getInt("monumentHeal"));
      }

      // autoAssignOnly
      if (warzoneConfig.containsKey("autoAssignOnly")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.AUTOASSIGN, warzoneConfig.getBoolean("autoAssignOnly"));
      }

      // flagPointsOnly
      if (warzoneConfig.containsKey("flagPointsOnly")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.FLAGPOINTSONLY, warzoneConfig.getBoolean("flagPointsOnly"));
      }

      // flagMustBeHome
      if (warzoneConfig.containsKey("flagMustBeHome")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.FLAGMUSTBEHOME, warzoneConfig.getBoolean("flagMustBeHome"));
      }

      // team cap
      if (warzoneConfig.containsKey("teamCap")) {
        warzone.getTeamDefaultConfig().put(TeamConfig.TEAMSIZE, warzoneConfig.getInt("teamCap"));
      }

      // score cap
      if (warzoneConfig.containsKey("scoreCap")) {
        warzone.getTeamDefaultConfig().put(TeamConfig.MAXSCORE, warzoneConfig.getInt("scoreCap"));
      }

      // respawn timer
      if (warzoneConfig.containsKey("respawnTimer")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.RESPAWNTIMER, warzoneConfig.getInt("respawnTimer"));
      }

      // blockHeads
      if (warzoneConfig.containsKey("blockHeads")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.BLOCKHEADS, warzoneConfig.getBoolean("blockHeads"));
      }

      // spawnStyle
      String spawnStyle = warzoneConfig.getString("spawnStyle");
      if (spawnStyle != null && !spawnStyle.equals("")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.SPAWNSTYLE, TeamSpawnStyle.getStyleFromString(spawnStyle));
      }

      // flagReturn
      String flagReturn = warzoneConfig.getString("flagReturn");
      if (flagReturn != null && !flagReturn.equals("")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.FLAGRETURN, FlagReturn.getFromString(flagReturn));
      }

      // reward
      String rewardStr = warzoneConfig.getString("reward");
      if (rewardStr != null && !rewardStr.equals("")) {
        HashMap<Integer, ItemStack> reward = new HashMap<Integer, ItemStack>();
        LoadoutTxtMapper.fromStringToLoadout(rewardStr, reward);
        warzone.getDefaultInventories().setReward(reward);
      }

      // unbreakableZoneBlocks
      if (warzoneConfig.containsKey("unbreakableZoneBlocks")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.UNBREAKABLE, warzoneConfig.getBoolean("unbreakableZoneBlocks"));
      }

      // disabled
      if (warzoneConfig.containsKey("disabled")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.DISABLED, warzoneConfig.getBoolean("disabled"));
      }

      // noCreatures
      if (warzoneConfig.containsKey("noCreatures")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.NOCREATURES, warzoneConfig.getBoolean("noCreatures"));
      }

      // glassWalls
      if (warzoneConfig.containsKey("glassWalls")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.GLASSWALLS, warzoneConfig.getBoolean("glassWalls"));
      }

      // pvpInZone
      if (warzoneConfig.containsKey("pvpInZone")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.PVPINZONE, warzoneConfig.getBoolean("pvpInZone"));
      }

      // instaBreak
      if (warzoneConfig.containsKey("instaBreak")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.INSTABREAK, warzoneConfig.getBoolean("instaBreak"));
      }

      // noDrops
      if (warzoneConfig.containsKey("noDrops")) {
        warzone.getWarzoneConfig().put(WarzoneConfig.NODROPS, warzoneConfig.getBoolean("noDrops"));
      }

      // noHunger
      if (warzoneConfig.containsKey("noHunger")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.NOHUNGER, warzoneConfig.getBoolean("noHunger"));
      }

      // saturation
      if (warzoneConfig.containsKey("saturation")) {
        warzone
            .getTeamDefaultConfig()
            .put(TeamConfig.SATURATION, warzoneConfig.getInt("saturation"));
      }

      // minPlayers
      if (warzoneConfig.containsKey("minPlayers")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.MINPLAYERS, warzoneConfig.getInt("minPlayers"));
      }

      // minTeams
      if (warzoneConfig.containsKey("minTeams")) {
        warzone.getWarzoneConfig().put(WarzoneConfig.MINTEAMS, warzoneConfig.getInt("minTeams"));
      }

      // resetOnEmpty
      if (warzoneConfig.containsKey("resetOnEmpty")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.RESETONEMPTY, warzoneConfig.getBoolean("resetOnEmpty"));
      }

      // resetOnLoad
      if (warzoneConfig.containsKey("resetOnLoad")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.RESETONLOAD, warzoneConfig.getBoolean("resetOnLoad"));
      }

      // resetOnUnload
      if (warzoneConfig.containsKey("resetOnUnload")) {
        warzone
            .getWarzoneConfig()
            .put(WarzoneConfig.RESETONUNLOAD, warzoneConfig.getBoolean("resetOnUnload"));
      }

      // rallyPoint
      String rallyPointStr = warzoneConfig.getString("rallyPoint");
      if (rallyPointStr != null && !rallyPointStr.equals("")) {
        String[] rallyPointStrSplit = rallyPointStr.split(",");

        int rpX = Integer.parseInt(rallyPointStrSplit[0]);
        int rpY = Integer.parseInt(rallyPointStrSplit[1]);
        int rpZ = Integer.parseInt(rallyPointStrSplit[2]);
        Location rallyPoint = new Location(world, rpX, rpY, rpZ);
        warzone.setRallyPoint(rallyPoint);
      }

      // monuments
      String monumentsStr = warzoneConfig.getString("monuments");
      if (monumentsStr != null && !monumentsStr.equals("")) {
        String[] monumentsSplit = monumentsStr.split(";");
        warzone.getMonuments().clear();
        for (String monumentStr : monumentsSplit) {
          if (monumentStr != null && !monumentStr.equals("")) {
            String[] monumentStrSplit = monumentStr.split(",");
            int monumentX = Integer.parseInt(monumentStrSplit[1]);
            int monumentY = Integer.parseInt(monumentStrSplit[2]);
            int monumentZ = Integer.parseInt(monumentStrSplit[3]);
            Monument monument =
                new Monument(
                    monumentStrSplit[0],
                    warzone,
                    new Location(world, monumentX, monumentY, monumentZ));
            warzone.getMonuments().add(monument);
          }
        }
      }

      // teams
      String teamsStr = warzoneConfig.getString("teams");
      if (teamsStr != null && !teamsStr.equals("")) {
        String[] teamsSplit = teamsStr.split(";");
        warzone.getTeams().clear();
        for (String teamStr : teamsSplit) {
          if (teamStr != null && !teamStr.equals("")) {
            String[] teamStrSplit = teamStr.split(",");
            int teamX = Integer.parseInt(teamStrSplit[1]);
            int teamY = Integer.parseInt(teamStrSplit[2]);
            int teamZ = Integer.parseInt(teamStrSplit[3]);
            Location teamLocation = new Location(world, teamX, teamY, teamZ);
            if (teamStrSplit.length > 4) {
              int yaw = Integer.parseInt(teamStrSplit[4]);
              teamLocation.setYaw(yaw);
            }
            Team team =
                new Team(
                    teamStrSplit[0],
                    TeamKind.teamKindFromString(teamStrSplit[0]),
                    teamLocation,
                    warzone);
            team.setRemainingLives(warzone.getTeamDefaultConfig().resolveInt(TeamConfig.LIFEPOOL));
            warzone.getTeams().add(team);
          }
        }
      }

      // teamFlags
      String teamFlagsStr = warzoneConfig.getString("teamFlags");
      if (teamFlagsStr != null && !teamFlagsStr.equals("")) {
        String[] teamFlagsSplit = teamFlagsStr.split(";");
        for (String teamFlagStr : teamFlagsSplit) {
          if (teamFlagStr != null && !teamFlagStr.equals("")) {
            String[] teamFlagStrSplit = teamFlagStr.split(",");
            Team team = warzone.getTeamByKind(TeamKind.teamKindFromString(teamFlagStrSplit[0]));
            if (team != null) {
              int teamFlagX = Integer.parseInt(teamFlagStrSplit[1]);
              int teamFlagY = Integer.parseInt(teamFlagStrSplit[2]);
              int teamFlagZ = Integer.parseInt(teamFlagStrSplit[3]);
              Location teamFlagLocation = new Location(world, teamFlagX, teamFlagY, teamFlagZ);
              if (teamFlagStrSplit.length > 4) {
                int yaw = Integer.parseInt(teamFlagStrSplit[4]);
                teamFlagLocation.setYaw(yaw);
              }
              team.setTeamFlag(teamFlagLocation); // this may screw things up
            }
          }
        }
      }

      // lobby
      String lobbyStr = warzoneConfig.getString("lobby");

      warzoneConfig.close();

      if (createNewVolume) {
        ZoneVolume zoneVolume =
            new ZoneVolume(
                warzone.getName(),
                world,
                warzone); // VolumeMapper.loadZoneVolume(warzone.getName(), warzone.getName(), war,
                          // warzone.getWorld(), warzone);
        warzone.setVolume(zoneVolume);
      }

      // monument blocks
      for (Monument monument : warzone.getMonuments()) {
        monument.setVolume(VolumeMapper.loadVolume(monument.getName(), warzone.getName(), world));
      }

      // team spawn blocks
      for (Team team : warzone.getTeams()) {
        team.setSpawnVolume(VolumeMapper.loadVolume(team.getName(), warzone.getName(), world));
        if (team.getTeamFlag() != null) {
          team.setFlagVolume(
              VolumeMapper.loadVolume(team.getName() + "flag", warzone.getName(), world));
        }
      }

      // lobby
      BlockFace lobbyFace = null;
      if (lobbyStr != null && !lobbyStr.equals("")) {
        String[] lobbyStrSplit = lobbyStr.split(",");
        if (lobbyStrSplit.length > 0) {
          // lobby orientation
          if (lobbyStrSplit[0].equals("south")) {
            lobbyFace = Direction.SOUTH();
          } else if (lobbyStrSplit[0].equals("east")) {
            lobbyFace = Direction.EAST();
          } else if (lobbyStrSplit[0].equals("north")) {
            lobbyFace = Direction.NORTH();
          } else if (lobbyStrSplit[0].equals("west")) {
            lobbyFace = Direction.WEST();
          }

          // lobby world
          World lobbyWorld = world; // by default, warzone world
          if (lobbyStrSplit.length > 1) {
            World strWorld = War.war.getServer().getWorld(lobbyStrSplit[1]);
            if (strWorld != null) {
              lobbyWorld = strWorld;
            }
          }

          // create the lobby
          Volume lobbyVolume = VolumeMapper.loadVolume("lobby", warzone.getName(), lobbyWorld);
          ZoneLobby lobby = new ZoneLobby(warzone, lobbyFace, lobbyVolume);
          warzone.setLobby(lobby);
        }
      }

      return warzone;
    }
    return null;
  }
Esempio n. 6
0
  /** Loads or reloads the mod */
  public final void load() {
    if (properties == null) {
      properties = new PropertiesFile("server.properties");
    } else {
      try {
        properties.load();
      } catch (IOException e) {
        log.log(Level.SEVERE, "Exception while reading from server.properties", e);
      }
    }

    try {
      dataSourceType = properties.getString("data-source", "flatfile");

      allowedItems = properties.getString("alloweditems", "").split(",");
      disallowedItems = properties.getString("disalloweditems", "").split(",");
      itemSpawnBlacklist = properties.getString("itemspawnblacklist", "").split(",");
      motd = properties.getString("motd", "Type /help for a list of commands.").split("@");
      playerLimit = properties.getInt("max-players", 20);
      saveHomes = properties.getBoolean("save-homes", true);
      whitelistEnabled = properties.getBoolean("whitelist", false);
      whitelistMessage = properties.getString("whitelist-message", "Not on whitelist.");
      if (dataSourceType.equalsIgnoreCase("flatfile")) {
        usersLoc = properties.getString("admintxtlocation", "users.txt");
        kitsLoc = properties.getString("kitstxtlocation", "kits.txt");
        homeLoc = properties.getString("homelocation", "homes.txt");
        warpLoc = properties.getString("warplocation", "warps.txt");
        itemLoc = properties.getString("itemstxtlocation", "items.txt");
        groupLoc = properties.getString("group-txt-location", "groups.txt");
        whitelistLoc = properties.getString("whitelist-txt-location", "whitelist.txt");
        reservelistLoc = properties.getString("reservelist-txt-location", "reservelist.txt");
      } else {
        PropertiesFile sql = new PropertiesFile("mysql.properties");
        driver = sql.getString("driver", "com.mysql.jdbc.Driver");
        username = sql.getString("user", "root");
        password = sql.getString("pass", "root");
        db = sql.getString("db", "jdbc:mysql://localhost:3306/minecraft");
      }
      spawnProtectionSize = properties.getInt("spawn-protection-size", 16);
      logging = properties.getBoolean("logging", false);
      enableHealth = properties.getBoolean("enable-health", true);

      String autoHealString = properties.getString("auto-heal", "default");
      if (autoHealString.equalsIgnoreCase("true")) {
        autoHeal = PluginLoader.HookResult.ALLOW_ACTION;
      } else if (autoHealString.equalsIgnoreCase("false")) {
        autoHeal = PluginLoader.HookResult.PREVENT_ACTION;
      }

      showUnknownCommand = properties.getBoolean("show-unknown-command", true);
      URL url = this.getClass().getResource("/version.txt");
      if (url != null) {
        InputStreamReader ins = new InputStreamReader(url.openStream());
        BufferedReader bufferedReader = new BufferedReader(ins);
        String versionParam = bufferedReader.readLine();
        if (versionParam.startsWith(
            "git-")) { // recommended version.txt for git builds: git-<gituser>-<shorttag>
          // example: git-sk89q-591c662cf4afc8e3e09a
          version = -1;
          versionStr = versionParam;
          tainted = true;
        } else {
          version = Integer.parseInt(versionParam);
          versionStr = Integer.toString(version); // and back to a string.
          tainted = false; // looks official. We hope.
        }
      } else {
        // I'm a tainted build, probably.
        version = -1;
        versionStr = "Undefined version";
        tainted = true;
        // If any mods check the version.. #@!$
      }
    } catch (Exception e) {
      log.log(Level.SEVERE, "Exception while reading from server.properties", e);
      // Just in case...
      disallowedItems = new String[] {""};
      allowedItems = new String[] {""};
      itemSpawnBlacklist = new String[] {""};
      motd = new String[] {"Type /help for a list of commands."};
    }
  }