Advertisement
Guest User

Untitled

a guest
Feb 7th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.52 KB | None | 0 0
  1. package com.illerai.rs2.content.io;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileReader;
  8. import java.io.FileWriter;
  9. import java.io.IOException;
  10. import java.util.*;
  11. import java.util.concurrent.TimeUnit;
  12.  
  13. import com.google.gson.Gson;
  14. import com.google.gson.GsonBuilder;
  15. import com.illerai.core.util.NameUtil;
  16. import com.illerai.core.util.Utility;
  17. import com.illerai.rs2.content.PlayerProperties;
  18. import com.illerai.rs2.content.PlayerTitle;
  19. import com.illerai.rs2.content.achievements.AchievementStore.Unlockables;
  20. import com.illerai.rs2.content.challenges.ChallengeList;
  21. import com.illerai.rs2.content.cluescroll.puzzles.PuzzleManager.Puzzle;
  22. import com.illerai.rs2.content.bank.Bank;
  23. import com.illerai.rs2.content.dialogue.DialogueManager;
  24. import com.illerai.rs2.content.minigames.barrows.Barrows.Brother;
  25. import com.illerai.rs2.content.skill.construction.HouseFurniture;
  26. import com.illerai.rs2.content.skill.construction.Portal;
  27. import com.illerai.rs2.content.skill.construction.Room;
  28. import com.illerai.rs2.content.skill.magic.weapons.TridentOfTheSeas;
  29. import com.illerai.rs2.content.skill.magic.weapons.TridentOfTheSwamp;
  30. import com.illerai.rs2.content.skill.melee.SerpentineHelmet;
  31. import com.illerai.rs2.content.skill.ranged.ToxicBlowpipe;
  32. import com.illerai.rs2.content.skill.slayer.Slayer;
  33. import com.illerai.rs2.content.skill.slayer.Slayer.SlayerDifficulty;
  34. import com.illerai.rs2.content.skill.slayer.SlayerArea.SlayerAreas;
  35. import com.illerai.rs2.content.skill.slayer.SlayerMasters;
  36. import com.illerai.rs2.entity.Location;
  37. import com.illerai.rs2.entity.Entity.AttackType;
  38. import com.illerai.rs2.entity.item.Equipment;
  39. import com.illerai.rs2.entity.item.Item;
  40. import com.illerai.rs2.entity.item.ItemDegrading;
  41. import com.illerai.rs2.entity.player.Player;
  42. import com.illerai.rs2.entity.player.PlayerGamemode;
  43. import com.illerai.rs2.entity.player.PlayerRights;
  44. import com.illerai.rs2.entity.player.ScreenSettings.ClientScreenSettings;
  45.  
  46. public final class PlayerSave {
  47.  
  48. public static final class PlayerDetails {
  49.  
  50. public static boolean loadDetails(Player player) throws Exception {
  51. BufferedReader reader = null;
  52. try {
  53. File file = new File("./data/characters/details/" + NameUtil.uppercaseFirstLetter(player.getUsername()) + ".json");
  54.  
  55. if (!file.exists()) {
  56. return false;
  57. }
  58.  
  59. reader = new BufferedReader(new FileReader(file));
  60.  
  61. PlayerDetails details = PlayerSave.GSON.fromJson(reader, PlayerDetails.class);
  62. player.setUsername(details.username);
  63. player.setPassword(details.password);
  64. player.setMemberId(details.memberid);
  65. player.setEmail(details.email);
  66. player.setQRLink(details.qrlink);
  67. player.setLostPassagesUnlock(details.lostPassagesUnlock);
  68. player.getLocation().setAs(new Location(details.x, details.y, details.z));
  69. player.setRights(PlayerRights.valueOf(details.rights.replace(" ", "_")));
  70. player.setmode(PlayerGamemode.valueOf(details.mode.replace(" ", "_")));
  71. player.getMembership().setMembership(details.membership);
  72. if(details.getLastDate != null)
  73. player.getMembership().setNewDate(details.getLastDate);
  74. if(details.getTarnDate != null)
  75. player.getMembership().setTarnDate(details.getTarnDate);
  76. player.getMembership().setTarn(details.getTarnKills);
  77. if (details.lastKnownUID != null)
  78. player.setLastKnownUID(details.lastKnownUID);
  79. if(details.insuredPets != null)
  80. for(int i = 0; i < player.getInsurance().insuredPets().length; i++)
  81. player.getInsurance().setInsured(i, details.insuredPets[i]);
  82. if(details.lostPets != null)
  83. for(int i = 0; i < player.getInsurance().getPetsLost().length; i++)
  84. player.getInsurance().setPetsLost(i, details.lostPets[i]);
  85. player.setYellTitle(details.yellTitle);
  86. player.getMasteryTree().setBlessing(details.blessing);
  87. player.setPlayerTitle(details.playerTitle);
  88. player.setWillPoints(details.warriorPoints);
  89. player.setWarriorWill(details.startedWarriorWill);
  90. player.getScreen().setScreenSetting(details.clientWidth, details.clientHeight, details.screenSetting);
  91. if (details.unlockedTitles != null && !details.unlockedTitles.isEmpty())
  92. player.unlockedTitles.addAll(details.unlockedTitles);
  93. player.playTimeTotal += details.playTimeTotal;
  94. player.setImbuedHeart(details.imbuedHeart);
  95. player.getBlessings().setChangeGodTimer(details.changeGod);
  96. player.setMoneyPouch(details.moneyPouch);
  97. player.getAlchPref().setWarningValue(details.alchValue);
  98. player.getAlchPref().setUntradeWarning(details.tradeWarning);
  99. player.setShopCollection(details.shopCollection);
  100. player.setShopMotto(details.shopMotto);
  101. player.setShopColor(details.shopColor);
  102. player.setRetaliate(details.retaliate);
  103. player.getSlayer().setArea(details.slayerArea);
  104. for(int i = 0; i < player.getSlayer().getSlayerCount().length; i++)
  105. try {
  106. if(details.slayerCount[i] > 0)
  107. player.getSlayer().setSlayerCount(i, details.slayerCount[i]);
  108. } catch (ArrayIndexOutOfBoundsException e) {
  109. player.getSlayer().setSlayerCount(i, 0);
  110. }
  111. if(details.masteryPoints != null)
  112. for(int i = 0; i < player.getMasteryTree().getPoints().length; i++)
  113. player.getMasteryTree().setPoints(i, details.masteryPoints[i]);
  114. if(details.keystones != null)
  115. for(int i = 0; i < player.getMasteryTree().getKeys().length; i++)
  116. player.getMasteryTree().setKeys(i, details.keystones[i]);
  117. try {
  118. if(details.getTotalTasksCompleted != null)
  119. for(int i = 0; i < player.getSlayer().getTasksCompleted().length; i++)
  120. player.getSlayer().setTasksCompleted(i, details.getTotalTasksCompleted[i]);
  121. if(details.getSlayerExtends != null)
  122. for(int i = 0; i < player.getSlayer().extensions.length; i++) {
  123. player.getSlayer().extensions[i][0] = details.getSlayerExtends[i][0];
  124. player.getSlayer().extensions[i][1] = details.getSlayerExtends[i][1];
  125. }
  126. if(details.getSlayerBlocks != null)
  127. for(int i = 0; i < player.getSlayer().blockedTasks.length; i++)
  128. player.getSlayer().blockedTasks[i] = details.getSlayerBlocks[i];
  129. if(details.getSlayerUnlocks != null)
  130. for(int i = 0; i < player.getSlayer().unlocks.length; i++)
  131. player.getSlayer().unlocks[i] = details.getSlayerUnlocks[i];
  132. } catch(ArrayIndexOutOfBoundsException e) {
  133. System.out.println("Failed to load Slayer information, setting extensions");
  134. }
  135. if(details.dimensionsSet != null)
  136. for(int i = 0; i < player.getDimensionSettings.length; i++)
  137. player.getDimensionSettings[i] = details.dimensionsSet[i];
  138. if(details.getDimensions != null)
  139. for(int i = 0; i < player.dimensions.length; i++)
  140. player.setDimensionTele(i, details.getDimensions[i][0], details.getDimensions[i][1], details.getDimensions[i][2]);
  141. player.setArclightCharge(details.arclightCharges);
  142. player.setDemonKills(details.demonKills);
  143. player.setFavour(details.favour);
  144. player.setIntroStage(details.introStage);
  145. player.setShayzien(details.shayzikenPoints);
  146. player.getSkill().setExpLock(details.expLock);
  147. player.getSlayer().setAmount(details.slayerAmount);
  148. player.setElixir(details.elixir);
  149. player.addSkillPoints(details.skillerPoints);
  150. player.getSlayer().setTask(details.slayerTask);
  151. player.getSlayer().setPreviousTask(details.slayerPreviousTask);
  152. player.setPoisonDamage(details.poisonDmg);
  153.  
  154. player.getSpecialAttack().setSpecialAmount(details.spec);
  155. player.getRunEnergy().setEnergy(details.energy);
  156. player.setPestPoints(details.pestPoints);
  157. player.setArenaPoints(details.arenaPoints);
  158. player.getClient().setLogPlayer(details.logPackets);
  159. player.getRunEnergy().setRunning(details.running);
  160. player.setTeleblockTime(details.teleblockTime);
  161. player.setDeaths(details.deaths);
  162. player.setKills(details.kills);
  163. player.setSufferActive(details.sufferActive);
  164. player.setSufferCharges(details.sufferCharges);
  165. if(details.unlockedPrayers != null)
  166. for(int i = 0; i < details.unlockedPrayers.length; i++)
  167. player.getPrayer().setUnlocked(i, details.unlockedPrayers[i]);
  168. if(details.unlockedMLM != null)
  169. for(int i = 0; i < player.getMLM().getUnlocks().length; i++)
  170. player.getMLM().setUnlocks(i, details.unlockedMLM[i]);
  171. if(details.mageArena != null)
  172. for(int i = 0; i < player.getMageArena().length; i++)
  173. player.setMageArena(i, details.mageArena[i]);
  174. if(details.guideStages != null)
  175. for(int i = 0; i < player.getGuide().getStages().length; i++)
  176. player.getGuide().setStages(i, details.guideStages[i]);
  177. player.setRogueKills(details.rogueKills);
  178. player.setRogueRecord(details.rogueRecord);
  179. player.setHunterKills(details.hunterKills);
  180. player.setHunterRecord(details.hunterRecord);
  181. player.setLastKilledPlayers(details.lastKilledPlayers);
  182. player.setPin(details.pins);
  183. player.setIP(details.IP);
  184. player.getOverload().setOverloadTick(details.overload);
  185. player.getMasteryTree().setMaxPoints(details.masterypts);
  186. player.setEmailAddress(details.emailAddress);
  187. player.setFullName(details.fullName);
  188. player.setRecovery(details.recovery);
  189. player.setMoneySpent(details.moneySpent);
  190. player.setBountyPoints(details.bountyPoints);
  191. player.setMusicVolume((byte) details.musicVolume);
  192. player.setSoundVolume((byte) details.soundVolume);
  193. player.setSlayerPoints(details.slayerPoints);
  194. player.setEventPoints(details.eventPoints);
  195. player.setBlackMarks(details.blackMarks);
  196. player.setPetMob(details.petId);
  197. player.getMagic().setDragonFireShieldCharges(details.dragonFireShieldCharges);
  198. if (details.degrading != null)
  199. player.getItemDegrading().setDegrading(details.degrading);
  200. if (details.savedArrows != null)
  201. player.getRanged().getSavedArrows().setItems(details.savedArrows);
  202. player.setVotePoints(details.votePoints);
  203. if (details.attackStyle != null)
  204. player.getEquipment().setAttackStyle(details.attackStyle);
  205. if (details.attackType != null)
  206. player.setAttackType(details.attackType);
  207. if (details.recoilStage != -1)
  208. player.getAttributes().set("recoilhits", Integer.valueOf(details.recoilStage));
  209.  
  210. player.getSkulling().setLeft(details.left);
  211. if (player.getSkulling().isSkulled())
  212. player.getSkulling().setSkullIcon(player, details.skullIcon);
  213. if (details.host != null)
  214. player.getClient().setHost(details.host);
  215. if (details.slayerDifficulty != null)
  216. player.getSlayer().setCurrent(details.slayerDifficulty);
  217. player.getSlayer().setMaster(details.slayerMaster);
  218.  
  219. player.getShrine().setGathered(details.shrineGather);
  220.  
  221. if(details.herbSack != null)
  222. for(Item i : details.herbSack)
  223. player.getHerbSack().setHerbs(i);
  224.  
  225. if(details.gemBag != null)
  226. for(Item i : details.gemBag)
  227. if(i != null)
  228. player.getGemBag().add(i);
  229.  
  230. player.setGemBagCharges(details.gemBagCharges);
  231.  
  232. player.getCoalBag().getCoal().setAmount(details.coalBag);
  233.  
  234. if(details.keyMaster != null)
  235. for(Item i : details.keyMaster)
  236. player.getKeyMaster().addItem(i);
  237. if(details.priestess != null)
  238. for(Item i : details.priestess)
  239. player.getPriestess().addItem(i);
  240. if(details.torfinn != null)
  241. for(Item i : details.torfinn)
  242. player.getTorfinn().addItem(i);
  243. if(details.warriorItems != null)
  244. for(Item i : details.warriorItems)
  245. player.getChallenge().getHeldItems().add(i);
  246. if(details.motherlodeOres != null)
  247. for(Item i : details.motherlodeOres)
  248. player.getMLM().setOres(i);
  249.  
  250. player.getShrine().setInvestment(details.shrineInvestment);
  251. player.getShrine().setOvertime(details.shrineOvertime);
  252. player.getShrine().setPoints(details.shrinePoints);
  253. player.setYearCreated(details.yearCreated);
  254. player.setDayCreated(details.dayCreated);
  255.  
  256. player.getWS().setSacrificedEggs(details.eggs);
  257.  
  258. player.setLastLoginDay(details.lastLoginDay);
  259. player.setLastLoginYear(details.lastLoginYear);
  260. player.setScreenBrightness(details.bright);
  261. player.setMultipleMouseButtons(details.multipleMouse);
  262. player.setChatEffects(details.chatEffects);
  263. player.setSplitPrivateChat(details.splitPrivate);
  264. player.setTransparentPanel(details.transparentPanel);
  265. player.setTransparentChatbox(details.transparentChatbox);
  266. player.setSideStones(details.sideStones);
  267. player.setAcceptAid(details.acceptAid);
  268. player.getFightCaves().setStage(details.fightCavesWave);
  269. player.getIntro().setSkipped(details.skippedIntro);
  270. player.getIntro().setWizard(details.introWizard);
  271. if (details.friends != null)
  272. for (String i : details.friends)
  273. player.getPrivateMessaging().getFriends().add(i);
  274.  
  275. if (details.ignores != null)
  276. for (String i : details.ignores)
  277. player.getPrivateMessaging().getIgnores().add(i);
  278.  
  279. if ((details.poisonDmg > 0) && (details.poisoned))
  280. player.poison(details.poisonDmg);
  281.  
  282. if(player.getAchieveRewards().getUnlocks() != null)
  283. for(int i = 0; i < player.getAchieveRewards().getUnlocks().length; i++)
  284. if(details.achievementUnlocks != null)
  285. player.getAchieveRewards().setUnlocks(i, details.achievementUnlocks[i]);
  286.  
  287. player.setPouchPayment(details.pouchPayment);
  288.  
  289. player.setGender(details.gender);
  290.  
  291. if (details.appearance != null)
  292. for (int i = 0; i < details.appearance.length; i++)
  293. player.getAppearance()[i] = details.appearance[i];
  294. if (details.colours != null)
  295. for (int i = 0; i < details.colours.length; i++)
  296. player.getColors()[i] = details.colours[i];
  297. if (details.experience != null)
  298. for (int i = 0; i < details.experience.length; i++)
  299. player.getSkill().getExperience()[i] = details.experience[i];
  300. if (details.skillsLevel != null)
  301. for (int i = 0; i < details.skillsLevel.length; i++)
  302. player.getLevels()[i] = details.skillsLevel[i];
  303. if (details.experience != null)
  304. for (int i = 0; i < details.experience.length; i++)
  305. player.getMaxLevels()[i] = player.getSkill().getLevelForExperience(i, details.experience[i]);
  306.  
  307. if (details.gwkc != null)
  308. player.getMinigames().setGWKC(details.gwkc);
  309.  
  310. boolean banned = details.banned;
  311. boolean muted = details.muted;
  312. boolean jailed = details.jailed;
  313.  
  314. if ((banned) && (TimeUnit.MILLISECONDS.toSeconds(details.banLength - System.currentTimeMillis()) > 0 || details.banLength == -1)) {
  315. player.setBanned(true);
  316. player.setBanLength(details.banLength);
  317. }
  318.  
  319. if ((jailed) && (TimeUnit.MILLISECONDS.toSeconds(details.jailLength - System.currentTimeMillis()) > 0 || details.jailLength == -1)) {
  320. player.setJailed(true);
  321. player.setJailLength(details.jailLength);
  322. }
  323.  
  324. if ((muted) && (TimeUnit.MILLISECONDS.toSeconds(details.muteLength - System.currentTimeMillis()) > 0 || details.muteLength == -1)) {
  325. player.setMuted(true);
  326. player.setMuteLength(details.muteLength);
  327. }
  328.  
  329. if (details.magicBook > 0)
  330. player.getMagic().setMagicBook(details.magicBook);
  331. player.setPanel(details.panel);
  332. if (details.skillGoals != null)
  333. player.setSkillGoals(details.skillGoals);
  334.  
  335. if (details.playerAchievements != null)
  336. player.getPlayerAchievements().putAll(details.playerAchievements);
  337.  
  338. if (details.achievementsPoints > 0)
  339. player.addAchievementPoints(details.achievementsPoints);
  340.  
  341. if (details.playerChallenges != null)
  342. player.getPlayerChallenges().putAll(details.playerChallenges);
  343.  
  344. if (details.challengesPoints > 0)
  345. player.addChallengePoints(details.challengesPoints);
  346. if (details.expCounter > 0)
  347. player.addCounterExp(details.expCounter);
  348.  
  349. if (details.cluesCompleted != null)
  350. player.setCluesCompleted(details.cluesCompleted);
  351. player.setPuzzleHandler(details.puzzle);
  352.  
  353. if (details.lastClan != null) {
  354. player.setLastClan(details.lastClan);
  355. }
  356.  
  357. player.setPrestigePoints(details.prestigePoints);
  358.  
  359. if (details.prestiges != null) {
  360. player.setSkillPrestiges(details.prestiges);
  361. }
  362.  
  363. if (details.blowpipe != null) {
  364. player.setToxicBlowpipe(details.blowpipe);
  365. }
  366.  
  367. if (details.seasTrident != null) {
  368. player.setSeasTrident(details.seasTrident);
  369. }
  370.  
  371. if (details.swampTrident != null) {
  372. player.setSwampTrident(details.swampTrident);
  373. }
  374.  
  375. if (details.serpentineHelmet != null) {
  376. player.setSerpentineHelment(details.serpentineHelmet);
  377. }
  378.  
  379.  
  380.  
  381. if (details.playerProperties != null) {
  382. for (Object attribute : details.playerProperties.keySet()) {
  383. player.getAttributes().getAttributes().put(attribute, details.playerProperties.get(attribute));
  384. }
  385. }
  386. if (details.getQuicks != null) {
  387. player.getPrayer().setQuickPrayers(details.getQuicks);
  388. }
  389.  
  390. player.getQuestManager().setCutscene(details.cutscene, details.sceneLoc);
  391. player.getQuestManager().setQp(details.questpoints);
  392. if(details.queststages != null)
  393. for(int i = 0; i < player.getQuestManager().getStages().length; i++)
  394. player.getQuestManager().setStages(i, details.queststages[i]);
  395. if(details.dsActions != null)
  396. for(int i = 0; i < player.getDS().getActions().length; i++)
  397. player.getDS().setAction(i, details.dsActions[i]);
  398. player.getBTB().setCaveId(details.btbCave);
  399. if(details.btbActions != null)
  400. for(int i = 0; i < player.getBTB().getActions().length; i++)
  401. player.getBTB().setAction(i, details.btbActions[i]);
  402. if(details.csBurials != null)
  403. for(int i = 0; i < player.getCS().getBurials().length; i++)
  404. player.getCS().setBurials(i, details.csBurials[i]);
  405. if (details.shopItems != null) {
  406. player.getPlayerShop().setItems(details.shopItems);
  407. }
  408.  
  409. if (details.shopPrices != null) {
  410. player.getPlayerShop().setPrices(details.shopPrices);
  411. }
  412.  
  413. if (details.tabAmounts != null) {
  414. player.getBank().setTabAmounts(details.tabAmounts);
  415. }
  416.  
  417. if (details.bank != null) {
  418. int tabs = Arrays.stream(player.getBank().getTabAmounts()).sum();
  419. int total = 0;
  420. for (int i = 0, slot = 0; i < Bank.SIZE; i++) {
  421. if (i >= Bank.SIZE) {
  422. break;
  423. }
  424. if (i >= details.bank.length) {
  425. break;
  426. }
  427. Item check = ItemCheck.check(player, details.bank[i]);
  428. player.getBank().getItems()[slot++] = check;
  429. if (check != null) {
  430. total++;
  431. }
  432. }
  433.  
  434. if (total != tabs) {
  435. player.getBank().setTabAmounts(new int[] { total, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
  436. DialogueManager.sendStatement(player, "@dre@There was an issue loading your bank tabs.", "@dre@Your bank tabs have been collapsed as a safety measure.");
  437. }
  438. }
  439.  
  440. if (details.equipment != null)
  441. for (int i = 0; i < details.equipment.length; i++)
  442. player.getEquipment().getItems()[i] = ItemCheck.check(player, details.equipment[i]);
  443.  
  444. if (details.inventory != null)
  445. for (int i = 0; i < details.inventory.length; i++)
  446. player.getInventory().getItems()[i] = ItemCheck.check(player, details.inventory[i]);
  447.  
  448. if (details.pouches != null)
  449. player.setPouches(details.pouches);
  450. if(details.brothersKilled != null)
  451. player.setKillRecord(details.brothersKilled);
  452. if(details.hiddenBrother != null)
  453. player.setHiddenBrother(details.hiddenBrother);
  454. if(details.barrowKC != 0)
  455. player.setBarrowsKC(details.barrowKC);
  456. if(details.barrowRuns != 0)
  457. player.setRuns(details.barrowRuns);
  458. if(details.shrineSlots != null)
  459. for(int i = 0; i < details.shrineSlots.length; i++)
  460. player.getShrine().setSlots(i, details.shrineSlots[i][0], details.shrineSlots[i][1]);
  461. if(details.shrineRares != null)
  462. for(int i = 0; i < details.shrineRares.length; i++)
  463. player.getShrine().setRares(i, details.shrineRares[i]);
  464. if(details.shrineBuffs != null)
  465. for(int i = 0; i < details.shrineBuffs.length; i++)
  466. player.getShrine().setSkillBuffs(i, details.shrineBuffs[i]);
  467. player.getSkillCapeEffect().setNewDate(details.capeEffectDate);
  468. if(details.capeEffectUses != null)
  469. for(int i = 0; i < player.getSkillCapeEffect().getEffectUses().length; i++)
  470. player.getSkillCapeEffect().setEffectUse(i, details.capeEffectUses[i]);
  471. if(details.lootbag != null)
  472. for(int i = 0; i < player.getLootbag().getLootingBag().length; i++)
  473. player.getLootbag().setLootingContents(i, details.lootbag[i][0], details.lootbag[i][1]);
  474. if(details.runepouch != null)
  475. for(int i = 0; i < player.getRunePouch().getRunesStored().length; i++)
  476. player.getRunePouch().setRunesStored(i, details.runepouch[i][0], details.runepouch[i][1]);
  477. player.getShrine().invest = details.shrineInvestments;
  478. player.getResourceWorker().setCollectHour(details.getCollectHour);
  479. player.getResourceWorker().setHired(details.hasHiredWorker);
  480. player.setLastLoginDay(Utility.getDayOfYear());
  481. player.setLastLoginYear(Utility.getYear());
  482. return true;
  483. } finally {
  484. if (reader != null)
  485. try {
  486. reader.close();
  487. } catch (IOException e) {
  488. e.printStackTrace();
  489. }
  490. }
  491. }
  492.  
  493. final String username;
  494. final String password;
  495. final int memberid;
  496. final String email;
  497. final String qrlink;
  498. final boolean lostPassagesUnlock;
  499. final int x;
  500. final int y;
  501. final int z;
  502. final String rights;
  503. final String mode;
  504. final String lastKnownUID;
  505. final int[] cluesCompleted;
  506. final String yellTitle;
  507. final String blessing;
  508. final PlayerTitle playerTitle;
  509. final List<PlayerTitle> unlockedTitles;
  510. final boolean banned;
  511. final long banLength;
  512. final int overload;
  513. final int masterypts;
  514. final long moneyPouch;
  515. final long playTimeTotal;
  516. final long jailLength;
  517. final int alchValue;
  518. final boolean tradeWarning;
  519. final long shopCollection;
  520. final String shopMotto;
  521. final String shopColor;
  522. final String lastClan;
  523. final boolean muted;
  524. final int changeGod;
  525. final int imbuedHeart;
  526. final boolean jailed;
  527. final long muteLength;
  528. final int fightCavesWave;
  529. final boolean skippedIntro;
  530. final boolean introWizard;
  531. final int[] getTotalTasksCompleted = new int[8];
  532. final boolean startedWarriorWill;
  533. final int warriorPoints;
  534. final int clientWidth;
  535. final int clientHeight;
  536. final ClientScreenSettings screenSetting;
  537. final int magicBook;
  538. final int panel;
  539. final boolean retaliate;
  540. final boolean expLock;
  541. final boolean[] mageArena;
  542. final int[] guideStages;
  543. final int[] gwkc;
  544. final boolean poisoned;
  545. final boolean[] insuredPets = new boolean[33];
  546. final int[] lostPets = new int[33];
  547. final int poisonDmg;
  548. final boolean[] achievementUnlocks = new boolean[Unlockables.values().length];
  549. final boolean[] unlockedMLM = new boolean[2];
  550. final boolean[] unlockedPrayers = new boolean[4];
  551. final int elixir;
  552. final String slayerTask;
  553. final String slayerPreviousTask;
  554. final byte slayerAmount;
  555. final SlayerDifficulty slayerDifficulty;
  556. final SlayerMasters slayerMaster;
  557. final short[] skillsLevel;
  558. final double[] experience;
  559. final byte gender;
  560. final int[] appearance;
  561. final byte[] colours;
  562. final long left;
  563. final int skullIcon;
  564. final byte bright;
  565. final byte multipleMouse;
  566. final byte chatEffects;
  567. final byte splitPrivate;
  568. final int petId;
  569. final int membership;
  570. final String getLastDate;
  571. final String getTarnDate;
  572. final int getTarnKills;
  573. final boolean[][] getSlayerExtends = new boolean[8][2];
  574. final boolean[] getSlayerUnlocks = new boolean[9];
  575. final String[] getSlayerBlocks = new String[6];
  576. final String[] dimensionsSet = new String[4];
  577. final int[][] getDimensions = new int[4][3];
  578. byte transparentPanel;
  579. byte transparentChatbox;
  580. byte sideStones;
  581. final int demonKills;
  582. final int arclightCharges;
  583. final byte acceptAid;
  584. final boolean pouchPayment;
  585. final String[] friends;
  586. final String[] ignores;
  587. final int yearCreated;
  588. final int dayCreated;
  589. final int recoilStage;
  590. final int spec;
  591. final Equipment.AttackStyles attackStyle;
  592. final AttackType attackType;
  593. final double energy;
  594. final int lastLoginDay;
  595. final int lastLoginYear;
  596. final String host;
  597. final int votePoints;
  598. final ItemDegrading.DegradedItem[] degrading;
  599. final byte dragonFireShieldCharges;
  600. final int introStage;
  601. final int slayerPoints;
  602. final SlayerAreas slayerArea;
  603. final int eventPoints;
  604. final int[] slayerCount = new int[Slayer.slayerMob.length];
  605. final int[] masteryPoints = new int[3];
  606. final boolean[] keystones = new boolean[3];
  607. final int skillerPoints;
  608. final int musicVolume;
  609. final int soundVolume;
  610. final Item[] savedArrows;
  611. final int deaths;
  612. final int kills;
  613. final boolean sufferActive;
  614. final int sufferCharges;
  615. final int rogueKills;
  616. final int rogueRecord;
  617. final int hunterKills;
  618. final int hunterRecord;
  619. final int moneySpent;
  620. final int bountyPoints;
  621. final int shayzikenPoints;
  622. final int favour;
  623. final int eggs;
  624. final String fullName;
  625. final String IP;
  626. final String emailAddress;
  627. final String recovery;
  628. final String pins;
  629. final boolean running;
  630. final boolean logPackets;
  631. final int pestPoints;
  632. final int arenaPoints;
  633. final int teleblockTime;
  634. final int blackMarks;
  635. final int[][] skillGoals;
  636. final ArrayList<String> lastKilledPlayers;
  637. final HashMap<ChallengeList, Integer> playerChallenges;
  638. final int challengesPoints;
  639. final Map<String, Integer> playerAchievements;
  640. final int achievementsPoints;
  641. final boolean[] getQuicks;
  642. final HashMap<Object, Object> playerProperties;
  643. final double expCounter;
  644. final int prestigePoints;
  645. final int[] prestiges;
  646. final ToxicBlowpipe blowpipe;
  647. final TridentOfTheSeas seasTrident;
  648. final TridentOfTheSwamp swampTrident;
  649. final SerpentineHelmet serpentineHelmet;
  650. final int shrineOvertime;
  651. final int shrineInvestment;
  652. final int shrinePoints;
  653. final int coalBag;
  654. final int gemBagCharges;
  655. final double shrineGather;
  656. final List<Item> herbSack, keyMaster, priestess, torfinn, warriorItems, motherlodeOres, gemBag;
  657. final Puzzle puzzle;
  658.  
  659. /*Quests*/
  660. final boolean cutscene;
  661. final Location sceneLoc;
  662. final int questpoints;
  663. final int[] queststages;
  664. final int btbCave;
  665. final boolean[] dsActions, btbActions;
  666. final Location[] csBurials;
  667.  
  668. final Item[] bank;
  669. final int[] tabAmounts;
  670. final Item[] inventory;
  671. final Item[] equipment;
  672. final Item[] shopItems;
  673. final int[] shopPrices;
  674. final byte[] pouches;
  675. final int[] shrineRares;
  676. final int[][] shrineSlots;
  677. final long[] shrineBuffs;
  678. final int shrineInvestments;
  679. final String capeEffectDate;
  680. final int[] capeEffectUses;
  681. final boolean[] brothersKilled;
  682. final int barrowRuns;
  683. final int barrowKC;
  684. final Brother hiddenBrother;
  685. final int[][] lootbag;
  686. final int[][] runepouch;
  687. final long getCollectHour;
  688. final boolean hasHiredWorker;
  689.  
  690. public PlayerDetails(Player player) {
  691. username = player.getUsername();
  692. password = player.getPassword();
  693. memberid = player.getMemberId();
  694. email = player.getEmail();
  695. qrlink = player.getQRLink();
  696. lostPassagesUnlock = player.getLostPassagesUnlock();
  697. x = player.getLocation().getX();
  698. y = player.getLocation().getY();
  699. z = player.getLocation().getZ();
  700. rights = player.getRights().getName().toUpperCase();
  701. mode = player.getGameMode().getName().toUpperCase().replace(" ", "_");
  702. membership = player.getMembership().membershipDays();
  703. getLastDate = player.getMembership().getTodaysDate();
  704. getTarnDate = player.getMembership().getTarnDate();
  705. getTarnKills = player.getMembership().getTarn();
  706. lastKnownUID = player.getUid();
  707. fullName = player.getFullName();
  708. IP = player.getIP();
  709. recovery = player.getRecovery();
  710. emailAddress = player.getEmailAddress();
  711. pins = player.getPin();
  712. moneySpent = player.getMoneySpent();
  713. host = player.getClient().getHost();
  714. cluesCompleted = player.getCluesCompleted();
  715. puzzle = player.getPuzzleHandler();
  716. yellTitle = player.getYellTitle();
  717. blessing = player.getMasteryTree().getBlessing();
  718. playerTitle = player.getPlayerTitle();
  719. unlockedTitles = player.unlockedTitles;
  720. warriorPoints = player.getWillPoints();
  721. startedWarriorWill = player.getWarriorWill();
  722. clientWidth = player.getScreen().getClientSize()[0];
  723. clientHeight = player.getScreen().getClientSize()[1];
  724. screenSetting = player.getScreen().getScreenSetting();
  725. banned = player.isBanned();
  726. banLength = player.getBanLength();
  727. moneyPouch = player.getMoneyPouch();
  728. jailLength = player.getJailLength();
  729. alchValue = player.getAlchPref().getWarningValue();
  730. tradeWarning = player.getAlchPref().getUntradeWarning();
  731. shopCollection = player.getShopCollection();
  732. shopMotto = player.getShopMotto();
  733. shopColor = player.getShopColor();
  734. muted = player.isMuted();
  735. playTimeTotal = player.playTimeTotal;
  736. sufferActive = player.getSufferActive();
  737. sufferCharges = player.getSufferCharges();
  738. shrineOvertime = player.getShrine().itemsAcquired;
  739. shrinePoints = player.getShrine().points;
  740. shrineInvestment = player.getShrine().invested;
  741. shrineGather = player.getShrine().materialPotential;
  742. herbSack = player.getHerbSack().getHerbs();
  743. gemBag = Arrays.asList(player.getGemBag().getItems());
  744. gemBagCharges = player.getGemBagCharges();
  745. coalBag = player.getCoalBag().getCoal().getAmount();
  746. keyMaster = player.getKeyMaster().getItems();
  747. priestess = player.getPriestess().getItems();
  748. torfinn = player.getTorfinn().getItems();
  749. warriorItems = player.getChallenge().getHeldItems();
  750. motherlodeOres = player.getMLM().getOres();
  751. favour = player.getFavour();
  752. shayzikenPoints = player.getShayzien();
  753. imbuedHeart = player.getImbuedHeart().secondsRemaining();
  754. changeGod = player.getBlessings().getChangeGodTimer().secondsRemaining();
  755. jailed = player.isJailed();
  756. overload = player.getOverload().getOverloadTicks();
  757. masterypts = player.getMasteryTree().getMaxPoints();
  758. muteLength = player.getMuteLength();
  759. fightCavesWave = player.getFightCaves().getStage();
  760. magicBook = player.getMagic().getMagicBook();
  761. panel = player.getPanel();
  762. retaliate = player.isRetaliate();
  763. expLock = player.getSkill().isExpLocked();
  764. gwkc = player.getMinigames().getGWKC();
  765. lastClan = player.getLastClan();
  766. getQuicks = player.getPrayer().getQuickPrayers();
  767. skippedIntro = player.getIntro().getSkipped();
  768. introWizard = player.getIntro().isWizard();
  769. for(int i = 0; i < player.getSlayer().getTasksCompleted().length; i++)
  770. getTotalTasksCompleted[i] = player.getSlayer().getTasksCompleted()[i];
  771. slayerArea = player.getSlayer().getArea();
  772. for(int i = 0; i < player.getSlayer().extensions.length; i++) {
  773. getSlayerExtends[i][0] = player.getSlayer().extensions[i][0];
  774. getSlayerExtends[i][1] = player.getSlayer().extensions[i][1];
  775. }
  776. for(int i = 0; i < player.getSlayer().blockedTasks.length; i++)
  777. getSlayerBlocks[i] = player.getSlayer().blockedTasks[i];
  778. for(int i = 0; i < player.getSlayer().unlocks.length; i++)
  779. getSlayerUnlocks[i] = player.getSlayer().unlocks[i];
  780. for(int i = 0; i < player.getDimensionSettings.length; i++)
  781. dimensionsSet[i] = player.getDimensionSettings[i];
  782. for(int i = 0; i < player.dimensions.length; i++) {
  783. getDimensions[i][0] = player.dimensions[i][0];
  784. getDimensions[i][1] = player.dimensions[i][1];
  785. getDimensions[i][2] = player.dimensions[i][2];
  786. }
  787. petId = player.grabPetMob();
  788. for(int i = 0; i < player.getInsurance().insuredPets().length; i++)
  789. insuredPets[i] = player.getInsurance().insuredPets()[i];
  790. eggs = player.getWS().getSacrificedEggs();
  791. for(int i = 0; i < player.getInsurance().getPetsLost().length; i++)
  792. lostPets[i] = player.getInsurance().getPetsLost()[i];
  793. mageArena = player.getMageArena();
  794.  
  795. guideStages = player.getGuide().getStages();
  796.  
  797. blackMarks = player.getBlackMarks();
  798. for(int i = 0; i < player.getSlayer().getSlayerCount().length; i++)
  799. slayerCount[i] = player.getSlayer().getSlayerCount()[i];
  800. for(int i = 0; i < player.getMasteryTree().getPoints().length; i++)
  801. masteryPoints[i] = player.getMasteryTree().getPoints()[i];
  802. for(int i = 0; i < player.getMasteryTree().getKeys().length; i++)
  803. keystones[i] = player.getMasteryTree().getKeys()[i];
  804. for(int i = 0; i < player.getAchieveRewards().getUnlocks().length; i++)
  805. if(player.getAchieveRewards().getUnlocks()[i])
  806. achievementUnlocks[i] = player.getAchieveRewards().getUnlocks()[i];
  807. for(int i = 0; i < player.getMLM().getUnlocks().length; i++)
  808. if(player.getMLM().getUnlocks()[i])
  809. unlockedMLM[i] = player.getMLM().getUnlocks()[i];
  810. for(int i = 0; i < player.getPrayer().getUnlocked().length; i++)
  811. unlockedPrayers[i] = player.getPrayer().getUnlocked()[i];
  812. demonKills = player.getDemonKills();
  813. arclightCharges = player.getArclightCharges();
  814. poisoned = player.isPoisoned();
  815. pouchPayment = player.isPouchPayment();
  816. poisonDmg = player.getPoisonDamage();
  817. slayerTask = player.getSlayer().getTask();
  818. slayerPreviousTask = player.getSlayer().getPreviousTask();
  819. slayerAmount = player.getSlayer().getAmount();
  820. experience = player.getSkill().getExperience();
  821. skillsLevel = player.getSkill().getLevels();
  822. gender = player.getGender();
  823. appearance = (player.getAppearance().clone());
  824. colours = (player.getColors().clone());
  825. left = player.getSkulling().getLeft();
  826. skullIcon = player.getSkulling().getSkullIcon();
  827. spec = player.getSpecialAttack().getAmount();
  828. attackStyle = player.getEquipment().getAttackStyle();
  829. attackType = player.getAttackType();
  830. energy = player.getRunEnergy().getEnergy();
  831. votePoints = player.getVotePoints();
  832.  
  833. teleblockTime = player.getTeleblockTime();
  834.  
  835. logPackets = player.getClient().isLogPlayer();
  836.  
  837. running = player.getRunEnergy().isRunning();
  838.  
  839. pestPoints = player.getPestPoints();
  840. arenaPoints = player.getArenaPoints();
  841.  
  842. soundVolume = player.getSoundVolume();
  843.  
  844. deaths = player.getDeaths();
  845. kills = player.getKills();
  846. rogueKills = player.getRogueKills();
  847. rogueRecord = player.getRogueRecord();
  848. hunterKills = player.getHunterKills();
  849. hunterRecord = player.getHunterRecord();
  850.  
  851. lastKilledPlayers = player.getLastKilledPlayers();
  852.  
  853. bountyPoints = player.getBountyPoints();
  854.  
  855. musicVolume = player.getMusicVolume();
  856.  
  857. dragonFireShieldCharges = player.getMagic().getDragonFireShieldCharges();
  858.  
  859. degrading = player.getItemDegrading().getDegrading();
  860.  
  861. lastLoginDay = player.getLastLoginDay();
  862. lastLoginYear = player.getLastLoginYear();
  863.  
  864. yearCreated = player.getYearCreated();
  865. dayCreated = player.getDayCreated();
  866.  
  867. introStage = player.getIntroStage();
  868.  
  869. skillerPoints = player.getSkillerPoints();
  870. elixir = player.getElixir();
  871. slayerPoints = player.getSlayerPoints();
  872. eventPoints = player.getEventPoints();
  873. slayerDifficulty = player.getSlayer().getCurrent();
  874. slayerMaster = player.getSlayer().getMaster();
  875.  
  876. if (player.getAttributes().get("recoilhits") != null)
  877. recoilStage = player.getAttributes().getInt("recoilhits");
  878. else {
  879. recoilStage = -1;
  880. }
  881.  
  882. bright = player.getScreenBrightness();
  883. multipleMouse = player.getMultipleMouseButtons();
  884. chatEffects = player.getChatEffectsEnabled();
  885. splitPrivate = player.getSplitPrivateChat();
  886. transparentPanel = player.getTransparentPanel();
  887. transparentChatbox = player.getTransparentChatbox();
  888. sideStones = player.getSideStones();
  889. acceptAid = player.getAcceptAid();
  890.  
  891. savedArrows = player.getRanged().getSavedArrows().getItems();
  892. skillGoals = player.getSkillGoals();
  893. expCounter = player.getCounterExp();
  894.  
  895.  
  896. playerAchievements = player.getPlayerAchievements();
  897. achievementsPoints = player.getAchievementsPoints();
  898.  
  899. playerChallenges = player.getPlayerChallenges();
  900. challengesPoints = player.getChallengesPoints();
  901.  
  902. int k = 0;
  903. friends = new String[player.getPrivateMessaging().getFriends().size()];
  904. for (String i : player.getPrivateMessaging().getFriends()) {
  905. friends[k] = i;
  906. k++;
  907. }
  908.  
  909. k = 0;
  910. ignores = new String[player.getPrivateMessaging().getIgnores().size()];
  911. for (String i : player.getPrivateMessaging().getIgnores()) {
  912. ignores[k] = i;
  913. k++;
  914. }
  915.  
  916. prestigePoints = player.getPrestigePoints();
  917. prestiges = player.getSkillPrestiges();
  918.  
  919. blowpipe = player.getToxicBlowpipe();
  920. seasTrident = player.getSeasTrident();
  921. swampTrident = player.getSwampTrident();
  922. serpentineHelmet = player.getSerpentineHelmet();
  923.  
  924. playerProperties = new HashMap<>();
  925.  
  926. for (Object attribute : player.getAttributes().getAttributes().keySet()) {
  927. if (String.valueOf(attribute).startsWith(PlayerProperties.ATTRIBUTE_KEY)) {
  928. playerProperties.put(attribute, player.getAttributes().getAttributes().get(attribute));
  929. }
  930. }
  931. cutscene = player.getQuestManager().inCutscene();
  932. sceneLoc = player.getQuestManager().getResetLoc();
  933. questpoints = player.getQuestManager().getQp();
  934. queststages = player.getQuestManager().getStages();
  935. dsActions = player.getDS().getActions();
  936. btbCave = player.getBTB().getCaveId();
  937. btbActions = player.getBTB().getActions();
  938. csBurials = player.getCS().getBurials();
  939.  
  940. bank = player.getBank().getItems();
  941. tabAmounts = player.getBank().getTabAmounts();
  942. inventory = player.getInventory().getItems();
  943. equipment = player.getEquipment().getItems();
  944. shopItems = player.getPlayerShop().getItems();
  945. shopPrices = player.getPlayerShop().getPrices();
  946. pouches = player.getPouches();
  947. shrineSlots = player.getShrine().getMaterials();
  948. shrineRares = player.getShrine().getRares();
  949. shrineBuffs = player.getShrine().getShrineBuffs();
  950. shrineInvestments = player.getShrine().invest;
  951. capeEffectDate = player.getSkillCapeEffect().getEffectDate();
  952. capeEffectUses = player.getSkillCapeEffect().getEffectUses();
  953. brothersKilled = player.getKillRecord();
  954. hiddenBrother = player.getHiddenBrother();
  955. barrowRuns = player.getBarrowRuns();
  956. barrowKC = player.getBarrowsKC();
  957. lootbag = player.getLootbag().getLootingBag();
  958. runepouch = player.getRunePouch().getRunesStored();
  959. getCollectHour = player.getResourceWorker().getCollectHour();
  960. hasHiredWorker = player.getResourceWorker().getHired();
  961. }
  962.  
  963. public void parseDetails() throws Exception {
  964. BufferedWriter writer = null;
  965. try {
  966. writer = new BufferedWriter(new FileWriter("./data/characters/details/" + username + ".json", false));
  967. writer.write(PlayerSave.GSON.toJson(this));
  968. writer.flush();
  969. } finally {
  970. if (writer != null)
  971. writer.close();
  972. }
  973. }
  974. }
  975.  
  976. public static final class PlayerHouses {
  977.  
  978. public static boolean loadDetails(Player player) throws Exception {
  979. File file = new File("./data/characters/houses/" + player.getUsername() + ".json");
  980.  
  981. if (!file.exists()) {
  982. return false;
  983. }
  984.  
  985. BufferedReader reader = new BufferedReader(new FileReader(file));
  986. try {
  987. PlayerHouses details = PlayerSave.GSON.fromJson(reader, PlayerHouses.class);
  988.  
  989. player.setHouseFurniture(details.housefurniture);
  990. player.setHouseRooms(details.houserooms);
  991. player.setHouseLocation(details.houseLocation);
  992. if(details.housePortals != null)
  993. player.setHousePortals(details.housePortals);
  994. player.setHouseType(details.houseType);
  995. } finally {
  996. if (reader != null) {
  997. reader.close();
  998. }
  999. }
  1000.  
  1001. return true;
  1002. }
  1003.  
  1004. ArrayList<HouseFurniture> housefurniture = new ArrayList<HouseFurniture>();
  1005. Room[][][] houserooms = new Room[5][13][13];
  1006. Location houseLocation = null;
  1007. ArrayList<Portal> housePortals = new ArrayList<Portal>();
  1008. int houseType = 0;
  1009.  
  1010. public PlayerHouses(Player player) {
  1011. housefurniture = player.getHouseFurniture();
  1012. houserooms = player.getHouseRooms();
  1013. houseLocation = player.getHouseLocation();
  1014. housePortals = player.getHousePortals();
  1015. houseType = player.getHouseType();
  1016. }
  1017.  
  1018. public void parseDetails(Player player) throws IOException {
  1019. BufferedWriter writer = new BufferedWriter(new FileWriter("./data/characters/houses/" + player.getUsername() + ".json", false));
  1020. try {
  1021. writer.write(PlayerSave.GSON.toJson(this));
  1022. writer.flush();
  1023. } finally {
  1024. writer.close();
  1025. }
  1026. }
  1027. }
  1028.  
  1029. public static void main(String[] args) throws FileNotFoundException, IOException {
  1030.  
  1031. File[] files = new File("./data/characters/details/").listFiles();
  1032. int searches = 0;
  1033. HashMap<String, String> map = new HashMap<>();
  1034. for (File file : files) {
  1035. Player player = new Player();
  1036. player.setUsername(file.getName().replace(".json", ""));
  1037. try {
  1038. if (PlayerDetails.loadDetails(player)) {
  1039.  
  1040. if (player.getLastLoginDay() > 259) {
  1041. if (player.getLastKnownUID() != null && !map.containsKey(player.getLastKnownUID())) {
  1042. map.put(player.getLastKnownUID(), player.getUsername());
  1043. } else {
  1044. System.out.println(player.getUsername() + " " + player.getLastKnownUID());
  1045. }
  1046. searches++;
  1047. }
  1048.  
  1049.  
  1050. }
  1051. } catch (Exception e) {
  1052. e.printStackTrace();
  1053. }
  1054. }
  1055.  
  1056. System.out.println("Searched through " + searches + " files.");
  1057. }
  1058.  
  1059. public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
  1060.  
  1061. public static synchronized boolean load(Player p) throws Exception {
  1062. PlayerHouses.loadDetails(p);
  1063. return !PlayerDetails.loadDetails(p);
  1064. }
  1065.  
  1066. public static synchronized final void save(Player p) {
  1067. try {
  1068. new PlayerDetails(p).parseDetails();
  1069. new PlayerHouses(p).parseDetails(p);
  1070. } catch (Exception e) {
  1071. e.printStackTrace();
  1072. }
  1073. }
  1074. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement