public static ResidencePermissions load(ClaimedResidence res, Map<String, Object> root)
      throws Exception {
    ResidencePermissions newperms = new ResidencePermissions(res);
    // newperms.owner = (String) root.get("Owner");
    if (root.containsKey("OwnerUUID")) {
      newperms.ownerUUID = UUID.fromString((String) root.get("OwnerUUID")); // get owner UUID
      //			String name = Residence.getPlayerName(newperms.ownerUUID); //try to find the current name
      // of the owner
      newperms.ownerLastKnownName =
          (String) root.get("OwnerLastKnownName"); // otherwise load last known name from file

      if (newperms.ownerLastKnownName.equalsIgnoreCase("Server land")
          || newperms.ownerLastKnownName.equalsIgnoreCase(Residence.getServerLandname())) {
        newperms.ownerUUID = UUID.fromString(Residence.getServerLandUUID()); // UUID for server land
        newperms.ownerLastKnownName = Residence.getServerLandname();
      } else if (newperms
          .ownerUUID
          .toString()
          .equals(Residence.getTempUserUUID())) // check for fake UUID
      {
        UUID realUUID =
            Residence.getPlayerUUID(
                newperms
                    .ownerLastKnownName); // try to find the real UUID of the player if possible now
        if (realUUID != null) newperms.ownerUUID = realUUID;
      }
    } else if (root.containsKey("Owner")) // convert old owner name save format into uuid format
    {
      String owner = (String) root.get("Owner");
      newperms.ownerLastKnownName = owner;
      newperms.ownerUUID = Residence.getPlayerUUID(owner);
      if (newperms.ownerUUID == null)
        newperms.ownerUUID =
            UUID.fromString(
                Residence
                    .getTempUserUUID()); // set fake UUID until we can find real one for last known
                                         // player
    } else {
      newperms.ownerUUID =
          UUID.fromString(
              Residence
                  .getServerLandUUID()); // cant determine owner name or UUID... setting zero UUID
                                         // which is server land
      newperms.ownerLastKnownName = Residence.getServerLandname();
    }
    newperms.world = (String) root.get("World");
    FlagPermissions.load(root, newperms);
    if (newperms.getOwner() == null
        || newperms.world == null
        || newperms.playerFlags == null
        || newperms.groupFlags == null
        || newperms.cuboidFlags == null) throw new Exception("Invalid Residence Permissions...");
    return newperms;
  }