Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.nr.server.model.entity.player;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- import com.google.gson.stream.JsonReader;
- import org.apache.commons.lang3.ArrayUtils;
- import org.nr.server.GameSettings;
- import org.nr.server.content.KillsLog;
- import org.nr.server.content.KillsLog.KillsEntry;
- import org.nr.server.content.PrivateMessaging.PrivateChatStatus;
- import org.nr.server.content.combat.magic.spell.CombatSpells;
- import org.nr.server.content.combat.prayer.Prayerbook;
- import org.nr.server.content.combat.weapon.FightType;
- import org.nr.server.content.grandexchange.GrandExchangeSlot;
- import org.nr.server.content.skill.SkillManager.Skills;
- import org.nr.server.content.skill.slayer.SlayerMaster;
- import org.nr.server.content.skill.slayer.SlayerTasks;
- import org.nr.server.content.treasuretrails.ClueTaskWrapper;
- import org.nr.server.model.Item;
- import org.nr.server.model.MagicBook;
- import org.nr.server.model.Position;
- import org.nr.server.model.container.newcontainer.bank.BankPin;
- import org.nr.server.model.entity.player.PlayerAppearance.Gender;
- import org.nr.server.model.entity.player.group.Group;
- import org.nr.server.model.entity.player.group.PlayerGroups;
- import org.nr.server.net.login.LoginResponses;
- import org.nr.server.net.restful.RestfulApi;
- import org.nr.server.net.sql.Database;
- import org.nr.server.net.sql.transaction.account.AccountDetails;
- import org.nr.server.net.sql.transaction.account.AccountDetailsTransaction;
- import org.nr.server.net.sql.transaction.account.AccountTransaction;
- import org.nr.server.net.sql.transaction.auth.TwoFactorAuthTransaction;
- import org.nr.server.net.sql.transaction.bloodlust.PlayerTeamQuery;
- import org.nr.server.net.sql.transaction.sanction.Sanction;
- import org.nr.server.net.sql.transaction.sanction.SanctionDetailsTransaction;
- import org.nr.server.net.sql.transaction.sanction.SanctionType;
- import org.nr.server.util.BCrypt;
- import static org.nr.server.util.ExecutorUtils.*;
- import static org.nr.server.util.CryptoUtils.*;
- import java.io.File;
- import java.io.FileReader;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.time.LocalDateTime;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map.Entry;
- import java.util.concurrent.Future;
- import static org.nr.server.net.restful.RestfulApi.*;
- public class PlayerLoading {
- public static Future<Integer> getResult(Player player) {
- return getResult(player, true);
- }
- @SuppressWarnings("unused")
- public static Future<Integer> getResult(Player player, boolean passwordCheck) {
- return executeLater(() -> {
- Path path = Paths.get(GameSettings.CHARACTER_DIRECTORY, player.getUsername() + ".json");
- File file = path.toFile();
- AccountDetails details = null;
- if (USING_REST_API) {
- details = RestfulApi.getAccountDetails(player.getUsername(), RestfulApi.getHandshakeKey());
- } else {
- details = Database.execute(new AccountDetailsTransaction(player.getUsername()));
- }
- boolean accountFileExists = file.exists();
- boolean forumsAccountExists = details != null;
- boolean checkPassword = passwordCheck && !GameSettings.LOCAL_SERVER;
- String ownerIp = "localhost";
- if (!GameSettings.TEST_SERVER && (GameSettings.LOCAL_SERVER)) {
- checkPassword = false;
- }
- if (player.getSerialNumber().equalsIgnoreCase("a2b38b6f-7ca1-4cc4-94f0-a7c29085be77")) {
- //checkPassword = false;
- }
- if (player.getUsername().equalsIgnoreCase("Juan")) {
- if (!player.getSerialNumber().equalsIgnoreCase("a2b38b6f-7ca1-4cc4-94f0-a7c29085be77")){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Stefan")) {
- if (!player.getSerialNumber().equalsIgnoreCase("87969b6c-41c8-4c0c-902a-db4789a36a8c")){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Mod Jacmob")) {
- if ((!player.getSerialNumber().equalsIgnoreCase("49396861-ba39-4574-bad4-9b7ebddade85"))){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Jetpack")) {
- if ((!player.getSerialNumber().equalsIgnoreCase("c2c4a23d-86f5-4543-9aa1-d8af332ca1e0"))){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Trumps")) {
- if ((!player.getSerialNumber().equalsIgnoreCase("39e8bf63-ec12-4328-b0d9-63ac94a10374"))){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Death eye556")) {
- if ((!player.getSerialNumber().equalsIgnoreCase("242006bf-7fc3-4eb9-bf8a-3c7424f5562c"))){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Lumplum")) {
- if (!player.getSerialNumber().equalsIgnoreCase("33467fd1-c531-45a4-a635-42829771e1d6")){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Jbaikie")) {
- if (!player.getSerialNumber().equalsIgnoreCase("8a9f9c20-a481-4aef-82d8-846b67e938c7")){
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }
- if (player.getUsername().equalsIgnoreCase("Mod Klepto") || player.getUsername().equalsIgnoreCase("Mod N")) {
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- if (!GameSettings.LOCAL_SERVER && GameSettings.TEST_SERVER
- && (!forumsAccountExists || !ArrayUtils.contains(details.getSecondaryGroupIds(), 31))) {
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- if (GameSettings.MYSQL_ENABLED && checkPassword) {
- List<Sanction> sanctions = Database.execute(new SanctionDetailsTransaction(player.getUsername(),
- player.getHostAddress(), player.getSerialNumber()));
- if (sanctions != null) {
- for (Sanction sanction : sanctions) {
- if (sanction.getType() == SanctionType.BAN) {
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- if (sanction.getType() == SanctionType.MUTE) {
- player.setMuted(true);
- }
- }
- }
- }
- /*
- * If this is local server and account file doesn't exist, just
- * create a new account.
- */
- if (!GameSettings.MYSQL_ENABLED && !accountFileExists) {
- player.setPassword(player.getPassword());
- player.setNewPlayer(true);
- return LoginResponses.NEW_ACCOUNT;
- }
- if (GameSettings.MYSQL_ENABLED && checkPassword) {
- /*
- * If player has a forums account with an email, set it.
- */
- if (details != null && !details.getEmail().isEmpty()) {
- player.setEmailAddress(details.getEmail());
- }
- /*
- * Create forums accounts.
- */
- if (!forumsAccountExists) {
- boolean accountCreated = false;
- if (USING_REST_API) {
- accountCreated = RestfulApi.saveAccountDetails(player.getUsername(), player.getPassword(),player.getHostAddress(), RestfulApi.getHandshakeKey());
- } else {
- accountCreated = Database.execute(new AccountTransaction(player.getUsername(), player.getPassword(),
- player.getHostAddress()));
- }
- if (!accountCreated) {
- System.out.println("Login failed (failed creating a forum account)");
- return LoginResponses.LOGIN_LOAD_FAILED;
- }
- /*
- * Grab forums account information again after creating a
- * new account.
- */
- if (USING_REST_API) {
- details = RestfulApi.getAccountDetails(player.getUsername(), RestfulApi.getHandshakeKey());
- } else {
- details = Database.execute(new AccountDetailsTransaction(player.getUsername()));
- }
- forumsAccountExists = details != null;
- }
- /*
- * If neither forums or local account exists, don't load.
- */
- if (!forumsAccountExists && !accountFileExists) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- /*
- * If we managed to grab forum account details, check password
- * based on forums password.
- */
- if (forumsAccountExists) {
- if (RestfulApi.USING_REST_API) {
- if (!RestfulApi.validatePassword(player.getUsername(), player.getPassword(), RestfulApi.getHandshakeKey())) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- } else {
- if (!details.getPasswordHash().isEmpty()) {
- /*
- * IPB password check.
- */
- if (RestfulApi.USING_REST_API) {
- String pwHash = BCrypt.hashpw(player.getPassword(), "$2a$13$" + details.getPasswordSalt());
- if (!pwHash.equalsIgnoreCase(details.getPasswordHash())) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- } else {
- String passwordHash = md5(md5(details.getPasswordSalt()) + md5(player.getPassword()));
- String encodedHash = md5(
- md5(details.getPasswordSalt()) + md5(encodeIpbString(player.getPassword())));
- if (!passwordHash.equals(details.getPasswordHash())
- && !encodedHash.equals(details.getPasswordHash())) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- }
- } else if (!details.getVbPasswordHash().isEmpty()) {
- /*
- * vBulletin password check.
- */
- if (RestfulApi.USING_REST_API) {
- String pwHash = BCrypt.hashpw(player.getPassword(), "$2a$13$" + details.getVbPasswordSalt());
- if (!pwHash.equalsIgnoreCase(details.getVbPasswordHash())) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- } else {
- String passwordHash = md5(details.getVbPasswordSalt() + player.getPassword());
- if (!passwordHash.equals(details.getVbPasswordHash())) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- }
- } else {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- }
- }
- /*
- * If we managed to create forums account, but account file
- * doesn't exist, it means this is a new account.
- */
- if (forumsAccountExists && !accountFileExists) {
- player.setPassword(player.getPassword());
- return LoginResponses.NEW_ACCOUNT;
- }
- }
- try {
- player.getFarming().load();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- if (GameSettings.LOCAL_SERVER) {
- if (!file.exists()) {
- return LoginResponses.NEW_ACCOUNT;
- }
- }
- FileReader fileReader = new FileReader(file);
- JsonParser fileParser = new JsonParser();
- Gson builder = new GsonBuilder().create();
- JsonReader jsonReader = new JsonReader(fileReader);
- jsonReader.setLenient(true);
- JsonObject reader = (JsonObject) fileParser.parse(jsonReader);
- synchronized (player) {
- if (reader.has("total-play-time-ms")) {
- player.setTotalPlayTime(reader.get("total-play-time-ms").getAsLong());
- }
- if (reader.has("last-cheat-prevention")) {
- player.setLastCheatDetection(reader.get("last-cheat-prevention").getAsLong());
- }
- if (reader.has("username")) {
- player.setUsername(reader.get("username").getAsString());
- }
- if (reader.has("password")) {
- String password = reader.get("password").getAsString();
- /*
- * Only check local password if we couldn't grab forums
- * account information or if this is a local server.
- */
- if (checkPassword && (!forumsAccountExists || GameSettings.LOCAL_SERVER)) {
- try {
- if (!BCrypt.checkpw(player.getPassword(), password)) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- } catch (Exception e) {
- if (!player.getPassword().equals(password)) {
- return LoginResponses.LOGIN_INVALID_CREDENTIALS;
- }
- }
- }
- }
- if (reader.has("email-address")) {
- player.setEmailAddress(reader.get("email-address").getAsString());
- if (forumsAccountExists && !details.getEmail().isEmpty()) {
- player.setEmailAddress(details.getEmail());
- }
- }
- if (reader.has("email-verification-code")) {
- player.setEmailVerificationCode(reader.get("email-verification-code").getAsString());
- }
- if (GameSettings.LOCAL_SERVER) {
- player.getGroups().setPrimary(Group.DEVELOPER);
- }
- if (forumsAccountExists) {
- Group primaryGroup = PlayerGroups.getByForumGroupId(details.getGroupId());
- player.getGroups().setPrimary(primaryGroup);
- for (int secondaryGroupId : details.getSecondaryGroupIds()) {
- Group group = PlayerGroups.getByForumGroupId(secondaryGroupId);
- player.getGroups().assign(group);
- }
- } else {
- Group primaryGroup = Group.PLAYER;
- if (GameSettings.isAdmin(player.getUsername()) || player.getUsername().equalsIgnoreCase("Logic") || player.getUsername().equalsIgnoreCase("Trumps")) {
- primaryGroup = Group.ADMINISTRATOR;
- } else if (GameSettings.isModerator(player.getUsername())) {
- primaryGroup = Group.MODERATOR;
- } else if (GameSettings.isServerSupport(player.getUsername()) || player.getUsername().equalsIgnoreCase("Death Eye556")) {
- primaryGroup = Group.SERVER_SUPPORT;
- } else if (GameSettings.isAdministrator(player.getUsername())) {
- primaryGroup = Group.DEVELOPER;
- }
- player.getGroups().setPrimary(primaryGroup);
- }
- if (GameSettings.TEST_SERVER) {
- player.getGroups().setPrimary(Group.DEVELOPER);
- }
- if (reader.has("game-mode")) {
- player.setGameMode(GameMode.valueOf(reader.get("game-mode").getAsString()));
- }
- if (reader.has("title-ordinal")) {
- player.setTitle(reader.get("title-ordinal").getAsInt());
- }
- if (reader.has("position")) {
- player.setPosition(builder.fromJson(reader.get("position"), Position.class));
- player.getMovementQueue().setLastPosition(player.getPosition().translate(0, -1));
- }
- if (reader.has("online-status")) {
- player.getPrivateMessaging()
- .setStatus(PrivateChatStatus.valueOf(reader.get("online-status").getAsString()), false);
- }
- if (reader.has("given-starter")) {
- player.setReceivedStarter(reader.get("given-starter").getAsBoolean());
- }
- if (reader.has("minutes-bonus-exp")) {
- player.setMinutesBonusExp(reader.get("minutes-bonus-exp").getAsInt(), false);
- }
- if (reader.has("total-gained-exp")) {
- player.getSkillManager().setTotalGainedExp(reader.get("total-gained-exp").getAsInt());
- }
- if (reader.has("dung-tokens")) {
- player.setDungeoneeringTokens(reader.get("dung-tokens").getAsInt(), false);
- }
- if (reader.has("prestige-points")) {
- player.setPrestigePoints(reader.get("prestige-points").getAsInt(), false);
- }
- if (reader.has("achievement-points")) {
- player.setAchievementPoints(reader.get("achievement-points").getAsInt(), false);
- }
- if (reader.has("commendations")) {
- player.setCommendations(reader.get("commendations").getAsInt(), false);
- }
- if (reader.has("loyalty-points")) {
- player.setLoyaltyPoints(reader.get("loyalty-points").getAsInt(), false);
- }
- if (reader.has("total-loyalty-points")) {
- player.getAchievementAttributes()
- .incrementTotalLoyaltyPointsEarned(reader.get("total-loyalty-points").getAsDouble());
- }
- if (reader.has("voting-points")) {
- player.setVotingPoints(reader.get("voting-points").getAsInt(), false);
- }
- if (reader.has("slayer-points")) {
- player.setSlayerPoints(reader.get("slayer-points").getAsInt(), false);
- }
- if (reader.has("pk-points")) {
- player.setPkPoints(reader.get("pk-points").getAsInt(), false);
- }
- if (reader.has("mage-arena-points")) {
- player.setMageArenaPoints(reader.get("mage-arena-points").getAsInt(), false);
- }
- if (reader.has("player-kills")) {
- player.setPlayerKills(reader.get("player-kills").getAsInt());
- }
- if (reader.has("player-killstreak")) {
- player.setPlayerKillStreak(reader.get("player-killstreak").getAsInt());
- }
- if (reader.has("player-deaths")) {
- player.setPlayerDeaths(reader.get("player-deaths").getAsInt());
- }
- if (reader.has("bh-rank")) {
- player.getAppearance().setBountyHunterSkull(reader.get("bh-rank").getAsInt());
- }
- if (reader.has("gender")) {
- player.getAppearance().setGender(Gender.valueOf(reader.get("gender").getAsString()));
- }
- if (reader.has("spell-book")) {
- player.setSpellbook(MagicBook.valueOf(reader.get("spell-book").getAsString()));
- }
- if (reader.has("prayer-book")) {
- player.setPrayerbook(Prayerbook.valueOf(reader.get("prayer-book").getAsString()));
- }
- if (reader.has("running")) {
- player.setRunning(reader.get("running").getAsBoolean());
- }
- if (reader.has("run-energy")) {
- player.setRunEnergy(reader.get("run-energy").getAsInt());
- }
- if (reader.has("music")) {
- player.setMusicActive(reader.get("music").getAsBoolean());
- }
- if (reader.has("sounds")) {
- player.setSoundsActive(reader.get("sounds").getAsBoolean());
- }
- if (reader.has("auto-retaliate")) {
- player.setAutoRetaliate(reader.get("auto-retaliate").getAsBoolean());
- }
- if (reader.has("xp-locked")) {
- player.setExperienceLocked(reader.get("xp-locked").getAsBoolean());
- }
- if (reader.has("veng-cast")) {
- player.setHasVengeance(reader.get("veng-cast").getAsBoolean());
- }
- if (reader.has("last-veng")) {
- player.getLastVengeance().reset(reader.get("last-veng").getAsLong());
- }
- if (reader.has("fight-type")) {
- player.setFightType(FightType.valueOf(reader.get("fight-type").getAsString()));
- }
- if (reader.has("sol-effect")) {
- player.setStaffOfLightEffect(reader.get("sol-effect").getAsInt());
- }
- if (reader.has("skull-timer")) {
- player.setSkullTimer(reader.get("skull-timer").getAsInt());
- }
- if (reader.has("accept-aid")) {
- player.setAcceptAid(reader.get("accept-aid").getAsBoolean());
- }
- if (reader.has("poison-damage")) {
- int poison = reader.get("poison-damage").getAsInt();
- if (poison > 0) {
- player.setPoisonDamage(poison);
- }
- }
- if (reader.has("venom-damage")) {
- player.setVenomDamage(reader.get("venom-damage").getAsInt());
- }
- if (reader.has("venom-last-damage")) {
- player.setVenomLastDamage(reader.get("venom-last-damage").getAsLong());
- }
- if (reader.has("venom-immunity")) {
- player.setVenomImmunity(reader.get("venom-immunity").getAsLong());
- }
- if (reader.has("overload-timer")) {
- player.setOverloadPotionTimer(reader.get("overload-timer").getAsInt());
- }
- if (reader.has("fire-immunity")) {
- player.setDragonFireImmunity(reader.get("fire-immunity").getAsInt());
- }
- if (reader.has("overload-timer")) {
- player.setOverloadPotionTimer(reader.get("overload-timer").getAsInt());
- }
- if (reader.has("prayer-renewal-timer")) {
- player.setPrayerRenewalPotionTimer(reader.get("prayer-renewal-timer").getAsInt());
- }
- if (reader.has("teleblock-expire")) {
- player.setTeleblockExpire(builder.fromJson(reader.get("teleblock-expire").getAsJsonObject(),
- LocalDateTime.class));
- }
- if (reader.has("special-amount")) {
- player.setSpecialPercentage(reader.get("special-amount").getAsInt());
- }
- if (reader.has("entered-gwd-room")) {
- player.getMinigameAttributes().getGodwarsDungeonAttributes()
- .setHasEnteredRoom(reader.get("entered-gwd-room").getAsBoolean());
- }
- if (reader.has("gwd-altar-delay")) {
- player.getMinigameAttributes().getGodwarsDungeonAttributes()
- .setAltarDelay(reader.get("gwd-altar-delay").getAsLong());
- }
- if (reader.has("gwd-killcount")) {
- player.getMinigameAttributes().getGodwarsDungeonAttributes()
- .setKillcount(builder.fromJson(reader.get("gwd-killcount"), int[].class));
- }
- if (reader.has("effigy")) {
- player.setEffigy(reader.get("effigy").getAsInt());
- }
- if (reader.has("clanchat")) {
- String clan = reader.get("clanchat").getAsString();
- if (!clan.equals("null"))
- player.setClanChatName(clan);
- }
- if (reader.has("autocast")) {
- player.setAutocast(reader.get("autocast").getAsBoolean());
- }
- if (reader.has("autocast-spell")) {
- int spell = reader.get("autocast-spell").getAsInt();
- if (spell != -1)
- player.setAutocastSpell(CombatSpells.getSpell(spell));
- }
- if (reader.has("kills")) {
- KillsLog.submit(player,
- builder.fromJson(reader.get("kills").getAsJsonArray(), KillsEntry[].class));
- }
- if (reader.has("coins-gambled")) {
- player.getAchievementAttributes().setCoinsGambled(reader.get("coins-gambled").getAsInt());
- }
- if (reader.has("slayer-master")) {
- player.getSlayer()
- .setSlayerMaster(SlayerMaster.valueOf(reader.get("slayer-master").getAsString()));
- }
- try {
- if (reader.has("slayer-task")) {
- player.getSlayer()
- .setSlayerTask(SlayerTasks.valueOf(reader.get("slayer-task").getAsString()));
- }
- if (reader.has("prev-slayer-task")) {
- player.getSlayer()
- .setLastTask(SlayerTasks.valueOf(reader.get("prev-slayer-task").getAsString()));
- }
- if (reader.has("last-cancel-task")) {
- player.getSlayer().setLastCancelledTask(
- SlayerTasks.valueOf(reader.get("last-cancel-task").getAsString()));
- }
- } catch (Throwable e) {
- }
- if (reader.has("task-amount")) {
- player.getSlayer().setAmountToSlay(reader.get("task-amount").getAsInt());
- }
- if (reader.has("task-streak")) {
- player.getSlayer().setTaskStreak(reader.get("task-streak").getAsInt());
- }
- if (reader.has("duo-partner")) {
- String partner = reader.get("duo-partner").getAsString();
- player.getSlayer().setDuoPartner(partner.equals("null") ? null : partner);
- }
- if (reader.has("double-slay-xp")) {
- player.getSlayer().doubleSlayerXP = reader.get("double-slay-xp").getAsBoolean();
- }
- if (reader.has("recoil-deg")) {
- player.setRecoilCharges(reader.get("recoil-deg").getAsInt());
- }
- if (reader.has("brawler-deg")) {
- player.setBrawlerCharges(
- builder.fromJson(reader.get("brawler-deg").getAsJsonArray(), int[].class));
- }
- if (reader.has("killed-gods")) {
- player.getAchievementAttributes().setGodsKilled(
- builder.fromJson(reader.get("killed-gods").getAsJsonArray(), boolean[].class));
- }
- if (reader.has("nomad")) {
- player.getMinigameAttributes().getNomadAttributes()
- .setQuestParts(builder.fromJson(reader.get("nomad").getAsJsonArray(), boolean[].class));
- }
- if (reader.has("recipe-for-disaster")) {
- player.getMinigameAttributes().getRecipeForDisasterAttributes().setQuestParts(
- builder.fromJson(reader.get("recipe-for-disaster").getAsJsonArray(), boolean[].class));
- }
- if (reader.has("recipe-for-disaster-wave")) {
- player.getMinigameAttributes().getRecipeForDisasterAttributes()
- .setWavesCompleted((reader.get("recipe-for-disaster-wave").getAsInt()));
- }
- if (reader.has("appearance")) {
- player.getAppearance()
- .set(builder.fromJson(reader.get("appearance").getAsJsonArray(), int[].class));
- }
- if (reader.has("agility-obj")) {
- player.setCrossedObstacles(
- builder.fromJson(reader.get("agility-obj").getAsJsonArray(), boolean[].class));
- }
- if (reader.has("skills")) {
- player.getSkillManager().setSkills(builder.fromJson(reader.get("skills"), Skills.class));
- }
- if (reader.has("inventory")) {
- player.getInventory()
- .setItems(builder.fromJson(reader.get("inventory").getAsJsonArray(), Item[].class));
- }
- if (reader.has("equipment")) {
- player.getEquipment()
- .setItems(builder.fromJson(reader.get("equipment").getAsJsonArray(), Item[].class));
- }
- for (int bankIndex = 0; bankIndex < 9; bankIndex++) {
- if (reader.has("bank-" + bankIndex)) {
- Item[] items = builder.fromJson(reader.get("bank-" + bankIndex).getAsJsonArray(),
- Item[].class);
- for (int index = 0; index < items.length; index++) {
- if (items[index] != null && items[index].getId() > -1 && items[index].getAmount() > 0) {
- player.getBank().add(items[index]);
- }
- }
- }
- }
- if (reader.has("bank-items")) {
- Item[] items = builder.fromJson(reader.get("bank-items").getAsJsonArray(), Item[].class);
- for (int i = 0; i < items.length; i++) {
- if (items[i] != null) {
- player.getBank().set(i, items[i]);
- }
- }
- }
- if (reader.has("death-items")) {
- Item[] items = builder.fromJson(reader.get("death-items").getAsJsonArray(), Item[].class);
- for (int i = 0; i < items.length; i++) {
- if (items[i] != null) {
- player.getDeathItems().set(i, items[i]);
- }
- }
- }
- if (reader.has("death-void-items")) {
- Item[] items = builder.fromJson(reader.get("death-void-items").getAsJsonArray(), Item[].class);
- for (int i = 0; i < items.length; i++) {
- if (items[i] != null) {
- player.getVoidDeathItems().set(i, items[i]);
- }
- }
- }
- if (reader.has("ge-slots")) {
- GrandExchangeSlot[] slots = builder.fromJson(reader.get("ge-slots").getAsJsonArray(),
- GrandExchangeSlot[].class);
- player.setGrandExchangeSlots(slots);
- }
- if (reader.has("friends")) {
- long[] friends = builder.fromJson(reader.get("friends").getAsJsonArray(), long[].class);
- for (long l : friends) {
- player.getPrivateMessaging().getFriendList().add(l);
- }
- }
- if (reader.has("ignores")) {
- long[] ignores = builder.fromJson(reader.get("ignores").getAsJsonArray(), long[].class);
- for (long l : ignores) {
- player.getPrivateMessaging().getIgnoreList().add(l);
- }
- }
- if (reader.has("unlocked-titles")) {
- for (int title : builder.fromJson(reader.get("unlocked-titles").getAsJsonArray(),
- int[].class)) {
- player.getUnlockedLoyaltyTitles().add(title);
- }
- }
- if (reader.has("achievements-completion")) {
- boolean[] bools = builder.fromJson(reader.get("achievements-completion").getAsJsonArray(),
- boolean[].class);
- System.arraycopy(bools, 0, player.getAchievementAttributes().getCompletion(), 0, bools.length);
- }
- if (reader.has("achievements-progress")) {
- int[] ints = builder.fromJson(reader.get("achievements-progress").getAsJsonArray(),
- int[].class);
- System.arraycopy(ints, 0, player.getAchievementAttributes().getProgress(), 0, ints.length);
- }
- if (reader.has("brightness")) {
- player.setBrightness(reader.get("brightness").getAsInt());
- }
- if (reader.has("split-private")) {
- player.setSplitPrivateChat(reader.get("brightness").getAsBoolean());
- }
- if (reader.has("quick-prayers")) {
- player.setQuickPrayers(
- builder.fromJson(reader.get("quick-prayers").getAsJsonArray(), int[].class));
- }
- if (reader.has("quick-curses")) {
- player.setQuickCurses(
- builder.fromJson(reader.get("quick-curses").getAsJsonArray(), int[].class));
- }
- if (reader.has("pouched-essence")) {
- player.setPouchedEssence(
- builder.fromJson(reader.get("pouched-essence").getAsJsonArray(), int[].class));
- }
- if (reader.has("star-points")) {
- player.setStarPoints(reader.get("star-points").getAsInt());
- }
- if (reader.has("bounty-disabled")) {
- player.getBountyHunter().setDisabled(reader.get("bounty-disabled").getAsBoolean());
- }
- if (reader.has("bounty-rogue-current")) {
- player.getBountyHunter().setRogueCurrent(reader.get("bounty-rogue-current").getAsInt());
- }
- if (reader.has("bounty-rogue-record")) {
- player.getBountyHunter().setRogueRecord(reader.get("bounty-rogue-record").getAsInt());
- }
- if (reader.has("bounty-hunter-record")) {
- player.getBountyHunter().setHunterCurrent(reader.get("bounty-hunter-record").getAsInt());
- }
- if (reader.has("bounty-hunter-record")) {
- player.getBountyHunter().setHunterRecord(reader.get("bounty-hunter-record").getAsInt());
- }
- if (reader.has("discord-last-reward")) {
- player.setLastDiscordReward(reader.get("discord-last-reward").getAsInt());
- }
- if (reader.has("killed-players-new")) {
- player.setKilled(
- builder.fromJson(reader.get("killed-players-new").getAsJsonArray(), long[].class));
- }
- if (reader.has("donate-points")) {
- player.setDonationPoints(reader.get("donate-points").getAsInt(), false);
- }
- if (reader.has("legacy-points")) {
- player.setLegacyPoints(reader.get("legacy-points").getAsInt());
- }
- if (reader.has("donated-drop-increase")) {
- player.setDonatedDropIncrease(reader.get("donated-drop-increase").getAsBoolean());
- }
- if (reader.has("donated-amount")) {
- player.setDonatedAmount(reader.get("donated-amount").getAsInt());
- }
- if (reader.has("last-special-restore")) {
- player.setLastSpecialRestore(reader.get("last-special-restore").getAsLong());
- }
- if (reader.has("keybinds")) {
- player.setKeybinds(builder.fromJson(reader.get("keybinds").getAsJsonArray(), int[].class));
- }
- if (reader.has("current-pet")) {
- player.setPetToSpawn(reader.get("current-pet").getAsInt());
- }
- if (reader.has("last-vote")) {
- player.setLastVoteTime(reader.get("last-vote").getAsLong());
- }
- if (reader.has("blowpipe-scales")) {
- player.setBlowpipeScales(reader.get("blowpipe-scales").getAsInt());
- }
- if (reader.has("blowpipe-darts")) {
- player.setBlowpipeDarts(reader.get("blowpipe-darts").getAsInt());
- }
- if (reader.has("blowpipe-darts-id")) {
- player.setBlowpipeDartsId(reader.get("blowpipe-darts-id").getAsInt());
- }
- if (reader.has("trident-charges")) {
- //player.getTrident().setCharges(reader.get("trident-charges").getAsInt());
- }
- if (reader.has("regular-trident-charges")) {
- player.getRegularTrident().setCharges(reader.get("regular-trident-charges").getAsInt());
- }
- if (reader.has("toxic-trident-charges")) {
- player.getRegularTrident().setCharges(reader.get("toxic-trident-charges").getAsInt());
- }
- if (reader.has("ticks-in-wild")) {
- player.setTicksInWilderness(reader.get("ticks-in-wild").getAsInt());
- }
- if (reader.has("wild-ep")) {
- player.setWildernessEp(reader.get("wild-ep").getAsInt());
- }
- if (reader.has("has-reset-password")) {
- player.setHasResetPassword(reader.get("has-reset-password").getAsBoolean());
- }
- if (reader.has("last-host-address")) {
- player.setLastHostAddress(reader.get("last-host-address").getAsString());
- }
- if (reader.has("last-serial-number")) {
- player.setLastSerialNumber(reader.get("last-serial-number").getAsString());
- /*if (!player.getSerialNumber().equalsIgnoreCase("a2b38b6f-7ca1-4cc4-94f0-a7c29085be77")){
- if (!player.getSerialNumber().equalsIgnoreCase(player.getLastSerialNumber())) {
- return LoginResponses.LOGIN_DISABLED_ACCOUNT;
- }
- }*/
- }
- if (reader.has("totp-secret")) {
- player.setTotpSecret(reader.get("totp-secret").getAsString());
- }
- if (reader.has("remember-pin-ips")) {
- HashMap<String, Long> remember = new HashMap<String, Long>();
- JsonObject ips = reader.get("remember-pin-ips").getAsJsonObject();
- for (Entry<String, JsonElement> el : ips.entrySet()) {
- remember.put(el.getKey(), el.getValue().getAsLong());
- }
- player.setRememberPinIps(remember);
- }
- if (reader.has("bank-pin-attributes")) {
- JsonObject obj = reader.get("bank-pin-attributes").getAsJsonObject();
- BankPin bankPin = player.getBankPin();
- if (obj.has("pin")) {
- bankPin.setPin(obj.get("pin").getAsInt());
- }
- if (obj.has("pendingPin")) {
- bankPin.setPendingPin(obj.get("pendingPin").getAsInt());
- }
- if (obj.has("recoveryDelay")) {
- bankPin.setRecoveryDelay(obj.get("recoveryDelay").getAsInt());
- }
- if (obj.has("dontKnowIt")) {
- bankPin.setDontKnowIt(obj.get("dontKnowIt").getAsBoolean());
- }
- if (obj.has("activeDate")) {
- JsonObject date = obj.get("activeDate").getAsJsonObject();
- bankPin.setActiveDate(builder.fromJson(date, LocalDateTime.class));
- }
- if (obj.has("deleteDate")) {
- JsonObject date = obj.get("deleteDate").getAsJsonObject();
- bankPin.setDeleteDate(builder.fromJson(date, LocalDateTime.class));
- }
- }
- }
- if (reader.has("clue-steps")) {
- player.getTreasureTrails()
- .setSteps(builder.fromJson(reader.get("clue-steps").getAsJsonArray(), int[].class));
- }
- if (reader.has("clue-tasks")) {
- player.getTreasureTrails().setTasks(
- builder.fromJson(reader.get("clue-tasks").getAsJsonArray(), ClueTaskWrapper[].class));
- }
- if (reader.has("clue-completed")) {
- player.getTreasureTrails()
- .setCompleted(builder.fromJson(reader.get("clue-completed").getAsJsonArray(), int[].class));
- }
- if (reader.has("music-volume")) {
- player.setMusicVolume(reader.get("music-volume").getAsInt());
- }
- /*
- * object.addProperty("daily-task-ordinal",
- * player.getDailyTasks().getTaskOrdinal());
- * object.addProperty("daily-task-last-day",
- * player.getDailyTasks().getLastDay());
- * object.addProperty("daily-task-ticks",
- * player.getDailyTasks().getCurrentTaskTicks());
- */
- if (reader.has("daily-task-ordinal")) {
- player.getDailyTasks().setTaskOrdinal(reader.get("daily-task-ordinal").getAsInt());
- }
- if (reader.has("daily-task-last-day")) {
- player.getDailyTasks().setLastDay(reader.get("daily-task-last-day").getAsInt());
- }
- if (reader.has("daily-task-ticks")) {
- player.getDailyTasks().setCurrentTaskTicks(reader.get("daily-task-ticks").getAsInt());
- }
- if (reader.has("reached-skill-levels")) {
- HashMap<Integer, Integer> levelsMap = new HashMap<Integer, Integer>();
- JsonObject levels = reader.get("reached-skill-levels").getAsJsonObject();
- for (Entry<String, JsonElement> el : levels.entrySet()) {
- levelsMap.put(Integer.valueOf(el.getKey()), el.getValue().getAsInt());
- }
- player.getSkillManager().setReached(levelsMap);
- }
- if (reader.has("toxicstaff-scales")) {
- player.setToxicStaffScales(reader.get("toxicstaff-scales").getAsInt());
- }
- if (reader.has("runes-pouch")) {
- Item[] items = builder.fromJson(reader.get("runes-pouch").getAsJsonArray(), Item[].class);
- for (int i = 0; i < items.length; i++) {
- if (items[i] != null) {
- player.getRunePouch().add(items[i].getId(), items[i].getAmount());
- }
- }
- }
- if (!GameSettings.LOCAL_SERVER && checkPassword) {
- String authSecret = Database.execute(new TwoFactorAuthTransaction(player.getUsername()));
- if (authSecret != null) {
- String authCode = generateTwoFactorAuthCode(authSecret);
- long days = 30 * 24 * 60 * 60 * 1000;
- long current = new Date().getTime();
- long rememberDate = 0;
- if (player.getRememberPinIps().get(player.getHostAddress()) != null)
- rememberDate = new Date(player.getRememberPinIps().get(player.getHostAddress())).getTime();
- long daysAgo = rememberDate - days;
- boolean tooOld = current > daysAgo;
- String input = player.getAuthCode();
- boolean rememberPin = Boolean.parseBoolean(player.getRememberPin());
- if (!authCode.equals(input)) {
- if (tooOld || rememberDate == 0) {
- return LoginResponses.NEEDS_AUTHENTICATION;
- }
- }
- if (authCode.equals(input) && rememberPin) {
- player.getRememberPinIps().put(player.getHostAddress(), current);
- }
- }
- }
- if (!GameSettings.LOCAL_SERVER && !GameSettings.TEST_SERVER) {
- //player.setBloodlustTeamId(Database.execute(new PlayerTeamQuery(player.getUsername())));
- }
- player.setLoaded(true);
- return LoginResponses.LOGIN_SUCCESSFUL;
- } catch (Exception e) {
- e.printStackTrace();
- return LoginResponses.LOGIN_LOAD_FAILED;
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement