Code:
/**
* Loading
**/
@SuppressWarnings("resource")
public static int loadGame(Player p, String playerName, String playerPass) {
String line = "";
String token = "";
String token2 = "";
String[] token3 = new String[3];
boolean EndOfFile = false;
int ReadMode = 0;
BufferedReader characterfile = null;
boolean File1 = false;
try {
characterfile = new BufferedReader(new FileReader("./Data/characters/" + playerName + ".txt"));
File1 = true;
} catch (FileNotFoundException fileex1) {
}
if (File1) {
// new File ("./characters/"+playerName+".txt");
} else {
Misc.println(playerName + ": character file not found.");
p.newPlayer = false;
return 0;
}
try {
line = characterfile.readLine();
} catch (IOException ioexception) {
Misc.println(playerName + ": error loading file.");
return 3;
}
while (EndOfFile == false && line != null) {
line = line.trim();
int spot = line.indexOf("=");
if (spot > -1) {
token = line.substring(0, spot);
token = token.trim();
token2 = line.substring(spot + 1);
token2 = token2.trim();
token3 = token2.split("\t");
boolean withoutpass = true;
switch (ReadMode) {
case 1:
if (token.equals("character-password")) {
if (playerPass.equalsIgnoreCase(token2) || Misc.basicEncrypt(playerPass).equals(token2) || Misc.md5Hash(playerPass).equals(token2)) {
playerPass = token2;
} else {
return 3;
}
}
break;
case 2:
if (token.equals("character-height")) {
p.heightLevel = Integer.parseInt(token2);
} else if (token.equals("character-hp")) {
p.getHealth().setAmount(Integer.parseInt(token2));
if (p.getHealth().getAmount() <= 0) {
p.getHealth().setAmount(10);
}
} else if (token.equals("brightness")) {
p.setAttribute("brightness", Integer.parseInt(token2));
} else if (token.equals("play-time")) {
p.playTime = Integer.parseInt(token2);
} else if (token.equals("last-clan")) {
p.setLastClanChat(token2);
} else if (token.equals("character-specRestore")) {
p.specRestore = Integer.parseInt(token2);
} else if (token.equals("character-posx")) {
p.teleportToX = (Integer.parseInt(token2) <= 0 ? 3210 : Integer.parseInt(token2));
} else if (token.equals("character-posy")) {
p.teleportToY = (Integer.parseInt(token2) <= 0 ? 3424 : Integer.parseInt(token2));
} else if (token.equals("character-rights")) {
p.getRights().setPrimary(Right.get(Integer.parseInt(token2)));
} else if (token.equals("character-rights-secondary")) {
Arrays.stream(token3).forEach(right -> p.getRights().add(Right.get(Integer.parseInt(right))));
} else if (token.equals("exp-rate")) {
p.setExperienceRate(Integer.parseInt(token2));
} else if (token.equals("mode")) {
ModeType type = null;
try {
if (token2.equals("NONE")) {
token2 = "REGULAR";
}
type = Enum.valueOf(ModeType.class, token2);
} catch (NullPointerException | IllegalArgumentException e) {
break;
}
Mode mode = Mode.forType(type);
p.setMode(mode);
} else if (token.equals("tutorial-stage")) {
Stage stage = null;
try {
stage = Enum.valueOf(Stage.class, token2);
} catch (IllegalArgumentException | NullPointerException e) {
break;
}
p.getTutorial().setStage(stage);
} else if (token.equals("character-title-updated")) {
p.getTitles().setCurrentTitle(token2);
} else if (token.equals("experience-counter")) {
p.setExperienceCounter(Long.parseLong(token2));
} else if (token.equals("prestigeLevel")) {
p.prestigeLevel = Integer.parseInt(token2);
} else if(token.equals("skillPoints")) {
p.skillPoints = Integer.parseInt(token2);
} else if(token.equals("assaultPoints")) {
p.assaultPoints = Integer.parseInt(token2);
} else if(token.equals("hasBoughtCannon")) {
p.hasBoughtCannon = Boolean.parseBoolean(token2);
} else if (token.equals("killed-players")) {
if (!p.getPlayerKills().getList().contains(token2))
p.getPlayerKills().getList().add(token2);
} else if(token.equals("mac-address")) {
if(!p.getAttribute("mac-address", "").equalsIgnoreCase(token)) {
PlayerLogging.write(LogType.CHANGE_MAC_ADDRESS, p, "Mac Address Changed: previous = " + token + ", new = " + p.getAttribute("mac-address", ""));
}
p.setMacAddress(p.getMacAddress());
} else if (token.equals("connected-from")) {
p.lastConnectedFrom.add(token2);
} else if (token.equals("experienceMultiplier")) {
p.doubleXpTime = Integer.parseInt(token2);
} else if (token.equals("horror-from-deep")) {
p.horrorFromDeep = Integer.parseInt(token2);
} else if (token.equals("run-energy")) {
p.setRunEnergy(Integer.parseInt(token2));
} else if (token.equals("bank-pin")) {
p.getBankPin().setPin(token2);
} else if (token.equals("bank-pin-cancellation")) {
p.getBankPin().setAppendingCancellation(Boolean.parseBoolean(token2));
} else if (token.equals("bank-pin-cancellation-delay")) {
p.getBankPin().setCancellationDelay(Long.parseLong(token2));
} else if (token.equals("bank-pin-unlock-delay")) {
p.getBankPin().setUnlockDelay(Long.parseLong(token2));
} else if (token.equals("placeholders")) {
p.placeHolders = Boolean.parseBoolean(token2);
} else if (token.equals("teleportStone")) {
int[] pos = new int[] { Integer.parseInt(token3[0]), Integer.parseInt(token3[1]), Integer.parseInt(token3[2]) };
p.setTeleportStonePos(pos);
} else if (token.equals("show-drop-warning")) {
p.setDropWarning(Boolean.parseBoolean(token2));
} else if (token.equals("accept-aid")) {
p.acceptAid = Boolean.parseBoolean(token2);
} else if (token.equals("did-you-know")) {
p.didYouKnow = Boolean.parseBoolean(token2);
} else if (token.equals("raidPoints")) {
p.raidPoints = Integer.parseInt(token2);
} else if (token.equals("lootvalue")) {
p.lootValue = Integer.parseInt(token2);
} else if (token.equals("startPack")) {
p.startPack = Boolean.parseBoolean(token2);
} else if (token.equals("lastLoginDate")) {
p.lastLoginDate = Integer.parseInt(token2);
} else if (token.equals("summonId")) {
p.summonId = Integer.parseInt(token2);
} else if (token.equals("has-npc")) {
p.hasFollower = Boolean.parseBoolean(token2);
} else if (token.equals("setPin")) {
p.setPin = Boolean.parseBoolean(token2);
} else if (token.equals("hasBankpin")) {
p.hasBankpin = Boolean.parseBoolean(token2);
} else if (token.equals("rfd-gloves")) {
p.rfdGloves = Integer.parseInt(token2);
} else if (token.equals("wave-id")) {
p.waveId = Integer.parseInt(token2);
} else if (token.equals("wave-type")) {
p.waveType = Integer.parseInt(token2);
} else if (token.equals("wave-info")) {
for (int i = 0; i < p.waveInfo.length; i++)
p.waveInfo[i] = Integer.parseInt(token3[i]);
} else if (token.equals("counters")) {
for (int i = 0; i < p.counters.length; i++)
p.counters[i] = Integer.parseInt(token3[i]);
} else if (token.equals("max-cape")) {
for (int i = 0; i < p.maxCape.length; i++)
p.maxCape[i] = Boolean.parseBoolean(token3[i]);
} else if (token.equals("clue-container")) {
try {
if (token == null || !token.equals("null")) {
List<ClueScroll> list = new ArrayList<>();
for (int i = 0; i < token3.length; i++)
list.add(ClueScroll.valueOf(token3[i]));
p.clueContainer = new ClueScrollContainer(p, Iterables.toArray(list, ClueScroll.class));
}
} catch (IllegalArgumentException e) {
p.clueContainer = null;
}
} else if (token.equals("clue-reward")) {
if (!token2.equals("null"))
p.bossDifficulty = ClueDifficulty.valueOf(token2);
} else if (token.equals("easy-clue")) {
p.easyClue = Integer.parseInt(token2);
} else if (token.equals("medium-clue")) {
p.mediumClue = Integer.parseInt(token2);
} else if (token.equals("hard-clue")) {
p.hardClue = Integer.parseInt(token2);
} else if (token.equals("elite-clue")) {
p.eliteClue = Integer.parseInt(token2);
} else if (token.equals("master-clue")) {
p.masterClue = Integer.parseInt(token2);
} else if (token.equals("onClue")) {
p.onClueTask = Boolean.parseBoolean(token2);
} else if (token.equals("clueStage")) {
p.getClueTaskStage = Integer.parseInt(token2);
} else if (token.equals("selectedClue")) {
p.selectedClue = Integer.parseInt(token2);
} else if (token.equals("quickprayer")) {
for (int j = 0; j < token3.length; j++) {
p.getQuick().getNormal()[j] = Boolean.parseBoolean(token3[j]);
}
} else if (token.equals("rigour")) {
p.isRigourUnlocked();
} else if (token.equals("augury")) {
p.isAuguryUnlocked();
} else if (token.equals("zulrah-best-time")) {
p.setBestZulrahTime(Long.parseLong(token2));
} else if (token.equals("toxic-staff")) {
p.setToxicStaffOfTheDeadCharge(Integer.parseInt(token2));
} else if (token.equals("toxic-pipe-ammo")) {
p.setToxicBlowpipeAmmo(Integer.parseInt(token2));
} else if (token.equals("toxic-pipe-amount")) {
p.setToxicBlowpipeAmmoAmount(Integer.parseInt(token2));
} else if (token.equals("toxic-pipe-charge")) {
p.setToxicBlowpipeCharge(Integer.parseInt(token2));
} else if (token.equals("serpentine-helm")) {
p.setSerpentineHelmCharge(Integer.parseInt(token2));
} else if (token.equals("trident-of-the-seas")) {
p.setTridentCharge(Integer.parseInt(token2));
} else if (token.equals("trident-of-the-swamp")) {
p.setToxicTridentCharge(Integer.parseInt(token2));
} else if (token.equals("arclight-charge")) {
p.setArcLightCharge(Integer.parseInt(token2));
} else if (token.equals("crystal-bow-shots")) {
p.crystalBowArrowCount = Integer.parseInt(token2);
} else if (token.equals("skull-timer")) {
p.skullTimer = Integer.parseInt(token2);
} else if (token.equals("magic-book")) {
p.playerMagicBook = Integer.parseInt(token2);
} else if (token.equals("slayer-recipe") || token.equals("slayer-helmet")) {
p.getSlayer().setHelmetCreatable(Boolean.parseBoolean(token2));
} else if (token.equals("slayer-imbued-helmet")) {
p.getSlayer().setHelmetImbuedCreatable(Boolean.parseBoolean(token2));
} else if (token.equals("bigger-boss-tasks")) {
p.getSlayer().setBiggerBossTasks(Boolean.parseBoolean(token2));
} else if (token.equals("cerberus-route")) {
p.getSlayer().setCerberusRoute(Boolean.parseBoolean(token2));
} else if (token.equals("slayer-tasks-completed")) {
p.slayerTasksCompleted = Integer.parseInt(token2);
} else if (token.equals("claimedReward")) {
p.claimedReward = Boolean.parseBoolean(token2);
} else if (p.getBarrows().getBrother(token).isPresent()) {
p.getBarrows().getBrother(token).get().setDefeated(Boolean.parseBoolean(token2));
} else if (token.equals("barrows-final-brother")) {
p.getBarrows().setLastBrother(token2);
} else if (token.equals("barrows-monsters-killcount")) {
p.getBarrows().setMonstersKilled(Integer.parseInt(token2));
} else if (token.equals("barrows-completed")) {
p.getBarrows().setCompleted(Boolean.valueOf(token2));
} else if (token.equals("special-amount")) {
p.specAmount = Double.parseDouble(token2);
} else if (token.equals("prayer-amount")) {
p.prayerPoint = Double.parseDouble(token2);
} else if (token.equals("dragonfire-shield-charge")) {
p.setDragonfireShieldCharge(Integer.parseInt(token2));
} else if (token.equals("pkp")) {
p.pkp = Integer.parseInt(token2);
} else if (token.equals("votePoints")) {
p.votePoints = Integer.parseInt(token2);
} else if (token.equals("donP")) {
p.donatorPoints = Integer.parseInt(token2);
} else if (token.equals("donA")) {
p.amDonated = Integer.parseInt(token2);
} else if (token.equals("xpLock")) {
p.expLock = Boolean.parseBoolean(token2);
} else if (line.startsWith("KC")) {
p.killcount = Integer.parseInt(token2);
} else if (line.startsWith("DC")) {
p.deathcount = Integer.parseInt(token2);
} else if (line.startsWith("last-incentive")) {
p.setLastIncentive(Long.parseLong(token2));
} else if (token.equals("teleblock-length")) {
p.teleBlockDelay = System.currentTimeMillis();
p.teleBlockLength = Integer.parseInt(token2);
} else if (token.equals("pc-points")) {
p.pcPoints = Integer.parseInt(token2);
} else if (token.equals("total-rogue-kills")) {
p.getBH().setTotalRogueKills(Integer.parseInt(token2));
} else if (token.equals("total-hunter-kills")) {
p.getBH().setTotalHunterKills(Integer.parseInt(token2));
} else if (token.equals("target-time-delay")) {
p.getBH().setDelayedTargetTicks(Integer.parseInt(token2));
} else if (token.equals("bh-penalties")) {
p.getBH().setWarnings(Integer.parseInt(token2));
} else if (token.equals("bh-bounties")) {
p.getBH().setBounties(Integer.parseInt(token2));
} else if (token.equals("statistics-visible")) {
p.getBH().setStatisticsVisible(Boolean.parseBoolean(token2));
} else if (token.equals("spell-accessible")) {
p.getBH().setSpellAccessible(Boolean.parseBoolean(token2));
} else if (token.equals("killStreak")) {
p.killStreak = Integer.parseInt(token2);
} else if (token.equals("achievement-points")) {
p.getAchievements().setPoints(Integer.parseInt(token2));
} else if (token.equals("achievement-items")) {
for (int i = 0; i < token3.length; i++)
p.getAchievements().setBoughtItem(i, Integer.parseInt(token3[i]));
// Varrock claimed
} else if (token.equals("VarrockClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getVarrockDiary().claim(diff));
}
} else if (token.equals("ArdougneClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getArdougneDiary().claim(diff));
}
} else if (token.equals("DesertClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getDesertDiary().claim(diff));
}
} else if (token.equals("FaladorClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getFaladorDiary().claim(diff));
}
} else if (token.equals("FremennikClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getFremennikDiary().claim(diff));
}
} else if (token.equals("KandarinClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getKandarinDiary().claim(diff));
}
} else if (token.equals("KaramjaClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getKaramjaDiary().claim(diff));
}
} else if (token.equals("LumbridgeClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getLumbridgeDraynorDiary().claim(diff));
}
} else if (token.equals("MorytaniaClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getMorytaniaDiary().claim(diff));
}
} else if (token.equals("WesternClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getWesternDiary().claim(diff));
}
} else if (token.equals("WildernessClaimedDiaries")) {
String[] claimedRaw = token2.split(",");
for (String claim : claimedRaw) {
EntryDifficulty.forString(claim).ifPresent(diff -> p.getDiaryManager().getWildernessDiary().claim(diff));
}
} else if (token.equals("diaries")) {
try {
String raw = token2;
String[] components = raw.split(",");
for (String comp : components) {
if (comp.isEmpty()) {
continue;
}
// Varrock
Optional<VarrockDiaryEntry> varrock = VarrockDiaryEntry.fromName(comp);
if (varrock.isPresent()) {
p.getDiaryManager().getVarrockDiary().nonNotifyComplete(varrock.get());
}
// Ardougne
Optional<ArdougneDiaryEntry> ardougne = ArdougneDiaryEntry.fromName(comp);
if (ardougne.isPresent()) {
p.getDiaryManager().getArdougneDiary().nonNotifyComplete(ardougne.get());
}
// Desert
Optional<DesertDiaryEntry> desert = DesertDiaryEntry.fromName(comp);
if (desert.isPresent()) {
p.getDiaryManager().getDesertDiary().nonNotifyComplete(desert.get());
}
// Falador
Optional<FaladorDiaryEntry> falador = FaladorDiaryEntry.fromName(comp);
if (falador.isPresent()) {
p.getDiaryManager().getFaladorDiary().nonNotifyComplete(falador.get());
}
// Fremennik
Optional<FremennikDiaryEntry> fremennik = FremennikDiaryEntry.fromName(comp);
if (fremennik.isPresent()) {
p.getDiaryManager().getFremennikDiary().nonNotifyComplete(fremennik.get());
}
// Kandarin
Optional<KandarinDiaryEntry> kandarin = KandarinDiaryEntry.fromName(comp);
if (kandarin.isPresent()) {
p.getDiaryManager().getKandarinDiary().nonNotifyComplete(kandarin.get());
}
// Karamja
Optional<KaramjaDiaryEntry> karamja = KaramjaDiaryEntry.fromName(comp);
if (karamja.isPresent()) {
p.getDiaryManager().getKaramjaDiary().nonNotifyComplete(karamja.get());
}
// Lumbridge
Optional<LumbridgeDraynorDiaryEntry> lumbridge = LumbridgeDraynorDiaryEntry.fromName(comp);
if (lumbridge.isPresent()) {
p.getDiaryManager().getLumbridgeDraynorDiary().nonNotifyComplete(lumbridge.get());
}
// Morytania
Optional<MorytaniaDiaryEntry> morytania = MorytaniaDiaryEntry.fromName(comp);
if (morytania.isPresent()) {
p.getDiaryManager().getMorytaniaDiary().nonNotifyComplete(morytania.get());
}
// Western
Optional<WesternDiaryEntry> western = WesternDiaryEntry.fromName(comp);
if (western.isPresent()) {
p.getDiaryManager().getWesternDiary().nonNotifyComplete(western.get());
}
// Wilderness
Optional<WildernessDiaryEntry> wilderness = WildernessDiaryEntry.fromName(comp);
if (wilderness.isPresent()) {
p.getDiaryManager().getWildernessDiary().nonNotifyComplete(wilderness.get());
}
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (token.equals("partialDiaries")) {
String raw = token2;
String[] components = raw.split(",");
try {
for (String comp : components) {
if (comp.isEmpty()) {
continue;
}
String[] part = comp.split(":");
int stage = Integer.parseInt(part[1]);
// Varrock
Optional<VarrockDiaryEntry> varrock = VarrockDiaryEntry.fromName(part[0]);
if (varrock.isPresent()) {
p.getDiaryManager().getVarrockDiary().setAchievementStage(varrock.get(), stage, false);
}
// Ardougne
Optional<ArdougneDiaryEntry> ardougne = ArdougneDiaryEntry.fromName(part[0]);
if (ardougne.isPresent()) {
p.getDiaryManager().getArdougneDiary().setAchievementStage(ardougne.get(), stage, false);
}
// Desert
Optional<DesertDiaryEntry> desert = DesertDiaryEntry.fromName(part[0]);
if (desert.isPresent()) {
p.getDiaryManager().getDesertDiary().setAchievementStage(desert.get(), stage, false);
}
// Falador
Optional<FaladorDiaryEntry> falador = FaladorDiaryEntry.fromName(part[0]);
if (falador.isPresent()) {
p.getDiaryManager().getFaladorDiary().setAchievementStage(falador.get(), stage, false);
}
// Fremennik
Optional<FremennikDiaryEntry> fremennik = FremennikDiaryEntry.fromName(part[0]);
if (fremennik.isPresent()) {
p.getDiaryManager().getFremennikDiary().setAchievementStage(fremennik.get(), stage, false);
}
// Kandarin
Optional<KandarinDiaryEntry> kandarin = KandarinDiaryEntry.fromName(part[0]);
if (kandarin.isPresent()) {
p.getDiaryManager().getKandarinDiary().setAchievementStage(kandarin.get(), stage, false);
}
// Karamja
Optional<KaramjaDiaryEntry> karamja = KaramjaDiaryEntry.fromName(part[0]);
if (karamja.isPresent()) {
p.getDiaryManager().getKaramjaDiary().setAchievementStage(karamja.get(), stage, false);
}
// Lumbridge
Optional<LumbridgeDraynorDiaryEntry> lumbridge = LumbridgeDraynorDiaryEntry.fromName(part[0]);
if (lumbridge.isPresent()) {
p.getDiaryManager().getLumbridgeDraynorDiary().setAchievementStage(lumbridge.get(), stage, false);
}
// Morytania
Optional<MorytaniaDiaryEntry> morytania = MorytaniaDiaryEntry.fromName(part[0]);
if (morytania.isPresent()) {
p.getDiaryManager().getMorytaniaDiary().setAchievementStage(morytania.get(), stage, false);
}
// Western
Optional<WesternDiaryEntry> western = WesternDiaryEntry.fromName(part[0]);
if (western.isPresent()) {
p.getDiaryManager().getWesternDiary().setAchievementStage(western.get(), stage, false);
}
// Wilderness
Optional<WildernessDiaryEntry> wilderness = WildernessDiaryEntry.fromName(part[0]);
if (wilderness.isPresent()) {
p.getDiaryManager().getWildernessDiary().setAchievementStage(wilderness.get(), stage, false);
}
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (token.equals("bonus-end")) {
p.bonusXpTime = Long.parseLong(token2);
} else if (token.equals("jail-end")) {
p.jailEnd = Long.parseLong(token2);
} else if (token.equals("mute-end")) {
p.muteEnd = Long.parseLong(token2);
} else if (token.equals("last-yell")) {
p.lastYell = Long.parseLong(token2);
} else if (token.equals("marketmute-end")) {
p.marketMuteEnd = Long.parseLong(token2);
} else if (token.equals("splitChat")) {
p.splitChat = Boolean.parseBoolean(token2);
} else if (token.equals("slayer-task")) {
Optional<Task> task = SlayerMaster.get(token2);
p.getSlayer().setTask(task);
} else if (token.equals("slayer-master")) {
p.getSlayer().setMaster(Integer.parseInt(token2));
} else if (token.equals("slayerPoints")) {
p.getSlayer().setPoints(Integer.parseInt(token2));
} else if (token.equals("slayer-task-amount")) {
p.getSlayer().setTaskAmount(Integer.parseInt(token2));
} else if (token.equals("consecutive-tasks")) {
p.getSlayer().setConsecutiveTasks(Integer.parseInt(token2));
} else if (token.equals("mage-arena-points")) {
p.setArenaPoints(Integer.parseInt(token2));
} else if (token.equals("autoRet")) {
p.autoRet = Integer.parseInt(token2);
} else if (token.equals("flagged")) {
p.accountFlagged = Boolean.parseBoolean(token2);
} else if (token.equals("keepTitle")) {
p.keepTitle = Boolean.parseBoolean(token2);
} else if (token.equals("killTitle")) {
p.killTitle = Boolean.parseBoolean(token2);
} else if (token.equals("removed-slayer-tasks")) {
if (token3.length < 4) {
String[] backing = Misc.nullToEmpty(4);
int index = 0;
for (; index < token3.length; index++) {
backing[index] = token3[index];
}
p.getSlayer().setRemoved(backing);
} else if (token3.length == 4) {
p.getSlayer().setRemoved(token3);
}
} else if (token.startsWith("removedTask")) {
int value = Integer.parseInt(token2);
if (value > -1) {
p.getSlayer().setPoints(p.getSlayer().getPoints() + 100);
}
} else if (token.equals("wave")) {
p.waveId = Integer.parseInt(token2);
} else if (token.equals("void")) {
for (int j = 0; j < token3.length; j++) {
p.voidStatus[j] = Integer.parseInt(token3[j]);
}
} else if (token.equals("pouch-rune")) {
for (int j = 0; j < token3.length; j++) {
p.setRuneEssencePouch(j, Integer.parseInt(token3[j]));
}
} else if (token.equals("pouch-pure")) {
for (int j = 0; j < token3.length; j++) {
p.setPureEssencePouch(j, Integer.parseInt(token3[j]));
}
} else if (token.equals("gwkc")) {
p.killCount = Integer.parseInt(token2);
} else if (token.equals("fightMode")) {
p.fightMode = Integer.parseInt(token2);
} else if (token.equals("privatechat")) {
p.setPrivateChat(Integer.parseInt(token2));
} else if (token.equals("farming-poison-berry")) {
p.getFarming().setLastBerryFarm(Long.parseLong(token2));
} else if (token.equals("farming-patch-0")) {
p.setFarmingState(0, Integer.parseInt(token3[0]));
p.setFarmingSeedId(0, Integer.parseInt(token3[1]));
p.setFarmingTime(0, Integer.parseInt(token3[2]));
p.setFarmingHarvest(0, Integer.parseInt(token3[3]));
} else if (token.equals("halloweenOrderGiven")) {
for (int i = 0; i < p.halloweenRiddleGiven.length; i++)
p.halloweenRiddleGiven[i] = Integer.parseInt(token3[i]);
} else if (token.equals("halloweenOrderChosen")) {
for (int i = 0; i < p.halloweenRiddleChosen.length; i++)
p.halloweenRiddleChosen[i] = Integer.parseInt(token3[i]);
} else if (token.equals("halloweenOrderNumber")) {
p.halloweenOrderNumber = Integer.parseInt(token2);
} else if (token.equals("inDistrict")) {
p.pkDistrict = Boolean.parseBoolean(token2);
} else if (token.equals("safeBoxSlots")) {
p.safeBoxSlots = Integer.parseInt(token2);
} else if (token.equals("district-levels")) {
for (int i = 0; i < p.playerStats.length; i++)
p.playerStats[i] = Integer.parseInt(token3[i]);
} else if (token.equals("lost-items")) {
if (token3.length > 1) {
for (int i = 0; i < token3.length; i += 2) {
int itemId = Integer.parseInt(token3[i]);
int itemAmount = Integer.parseInt(token3[i + 1]);
p.getZulrahLostItems().add(new GameItem(itemId, itemAmount));
}
}
} else if (token.equals("lost-items-cerberus")) {
if (token3.length > 1) {
for (int i = 0; i < token3.length; i += 2) {
int itemId = Integer.parseInt(token3[i]);
int itemAmount = Integer.parseInt(token3[i + 1]);
p.getCerberusLostItems().add(new GameItem(itemId, itemAmount));
}
}
} else if (token.equals("lost-items-skotizo")) {
System.out.println("sending save request...");
if (token3.length > 1) {
for (int i = 0; i < token3.length; i += 2) {
int itemId = Integer.parseInt(token3[i]);
int itemAmount = Integer.parseInt(token3[i + 1]);
p.getSkotizoLostItems().add(new GameItem(itemId, itemAmount));
System.out.println("Found.." + itemId + ", " + itemAmount + ".");
}
}
} else if (token.equals("lost-items-pvp")) {
if (token3.length > 1) {
for (int i = 0; i < token3.length; i += 2) {
int itemId = Integer.parseInt(token3[i]);
int itemAmount = Integer.parseInt(token3[i + 1]);
p.getStatusHandlerLostItems().add(new GameItem(itemId, itemAmount));
}
}
} else if (token.equals("lost-items-kraken")) {
if (token3.length > 1) {
for (int i = 0; i < token3.length; i += 2) {
int itemId = Integer.parseInt(token3[i]);
int itemAmount = Integer.parseInt(token3[i + 1]);
p.getKrakenLostItems().add(new GameItem(itemId, itemAmount));
}
}
}
break;
case 3:
if (token.equals("character-equip")) {
p.playerEquipment[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
p.playerEquipmentN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
}
break;
case 4:
if (token.equals("character-look")) {
p.playerAppearance[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
}
break;
case 5:
if (token.equals("character-skill")) {
p.playerLevel[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
p.playerXP[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
}
break;
case 20:
int id_2 = 0;
boolean owned = false;
try {
id_2 = Integer.parseInt(token);
owned = Boolean.parseBoolean(token2);
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
Pets pet = PetHandler.get(id_2);
if (pet != null) {
PetHandler.setOwnedPet(id_2, owned);
}
break;
case 6:
if (token.equals("character-item")) {
p.playerItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
p.playerItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
}
break;
case 46:
if (token.equals("bag-item")) {
int id = Integer.parseInt(token3[1]);
int amt = Integer.parseInt(token3[2]);
p.getLootingBag().items.add(new LootingBagItem(id, amt));
}
break;
case 52:
if (token.equals("item")) {
int itemId = Integer.parseInt(token3[0]);
int value = Integer.parseInt(token3[1]);
String date = token3[2];
p.getRechargeItems().loadItem(itemId, value, date);
}
break;
case 55:
if (token.equals("pouch-item")) {
int id = Integer.parseInt(token3[1]);
int amt = Integer.parseInt(token3[2]);
p.getRunePouch().items.add(new LootingBagItem(id, amt));
}
break;
case 56:
if (token.equals("sack-item")) {
int id = Integer.parseInt(token3[1]);
int amt = Integer.parseInt(token3[2]);
p.getHerbSack().items.add(new LootingBagItem(id, amt));
}
break;
case 57:
if (token.equals("bag-item")) {
int id = Integer.parseInt(token3[1]);
int amt = Integer.parseInt(token3[2]);
p.getGemBag().items.add(new LootingBagItem(id, amt));
}
break;
case 58:
if (token.equals("safebox-item")) {
int id = Integer.parseInt(token3[1]);
int amt = Integer.parseInt(token3[2]);
p.getSafeBox().items.add(new LootingBagItem(id, amt));
}
break;
case 59:
if (token.equals("coal-bag-item")) {
int id = Integer.parseInt(token3[1]);
int amt = Integer.parseInt(token3[2]);
p.getCoalBag().items.add(new LootingBagItem(id, amt));
}
break;
case 7:
if (token.equals("character-bank")) {
p.bankItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
p.bankItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
p.getBank().getBankTab()[0].add(new BankItem(Integer.parseInt(token3[1]), Integer.parseInt(token3[2])));
} else if (token.equals("bank-tab")) {
int tabId = Integer.parseInt(token3[0]);
int itemId = Integer.parseInt(token3[1]);
int itemAmount = Integer.parseInt(token3[2]);
p.getBank().getBankTab()[tabId].add(new BankItem(itemId, itemAmount));
}
break;
case 8:
if (token.equals("character-friend")) {
p.getFriends().add(Long.parseLong(token3[0]));
}
break;
case 9:
if (token3.length < 2)
continue;
p.getAchievements().read(token, 0, Integer.parseInt(token3[0]), Boolean.parseBoolean(token3[1]));
break;
case 10:
if (token3.length < 2)
continue;
p.getAchievements().read(token, 1, Integer.parseInt(token3[0]), Boolean.parseBoolean(token3[1]));
break;
case 11:
if (token3.length < 2)
continue;
p.getAchievements().read(token, 2, Integer.parseInt(token3[0]), Boolean.parseBoolean(token3[1]));
break;
case 12:
if (token.equals("character-ignore")) {
p.getIgnores().add(Long.parseLong(token3[0]));
}
break;
case 13:
if (token.equals("stage")) {
p.getHolidayStages().setStage(token3[0], Integer.parseInt(token3[1]));
}
break;
case 14:
if (token.equals("item")) {
p.degradableItem[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
} else if (token.equals("claim-state")) {
for (int i = 0; i < token3.length; i++) {
p.claimDegradableItem[i] = Boolean.parseBoolean(token3[i]);
}
}
break;
case 15:
if (token.startsWith("Names") && token3.length > 0) {
for (int i = 0; i < token3.length; i++) {
if (token3[i].equalsIgnoreCase("null")) {
token3[i] = "New slot";
}
Preset preset = p.getPresets().getPresets().get(i);
preset.setAlias(token3[i]);
}
} else if (token.startsWith("Inventory") || token.startsWith("Equipment")) {
if (token3.length > 2) {
int presetId = Integer.parseInt(token.split("#")[1]);
for (int i = 0; i < token3.length; i += 3) {
int slot = Integer.parseInt(token3[i]);
int itemId = Integer.parseInt(token3[i + 1]);
int amount = Integer.parseInt(token3[i + 2]);
if (token.startsWith("Inventory")) {
p.getPresets().getPresets().get(presetId).getInventory().getItems().put(slot, new GameItem(itemId, amount));
} else {
p.getPresets().getPresets().get(presetId).getEquipment().getItems().put(slot, new GameItem(itemId, amount));
}
}
}
}
break;
case 16:
try {
Killstreak.Type type = Killstreak.Type.get(token);
int value = Integer.parseInt(token2);
p.getKillstreak().getKillstreaks().put(type, value);
} catch (NullPointerException | NumberFormatException e) {
e.printStackTrace();
}
break;
case 17:
try {
Title title = Title.valueOf(token2);
if (title != null) {
p.getTitles().getPurchasedList().add(title);
}
} catch (Exception e) {
if (Config.SERVER_STATE == ServerState.PRIVATE) {
e.printStackTrace();
}
}
break;
case 18:
if (token != null && token.length() > 0) {
p.getNpcDeathTracker().getTracker().put(token, Integer.parseInt(token2));
}
break;
}
} else {
if (line.equals("[ACCOUNT]")) {
ReadMode = 1;
} else if (line.equals("[CHARACTER]")) {
ReadMode = 2;
} else if (line.equals("[EQUIPMENT]")) {
ReadMode = 3;
} else if (line.equals("[LOOK]")) {
ReadMode = 4;
} else if (line.equals("[SKILLS]")) {
ReadMode = 5;
} else if (line.equals("[ITEMS]")) {
ReadMode = 6;
} else if (line.equals("[NPC-PETS]")) {
ReadMode = 20;
} else if (line.equals("[LOOTBAG]")) {
ReadMode = 46;
} else if (line.equals("[RECHARGEITEMS]")) {
ReadMode = 52;
} else if (line.equals("[RUNEPOUCH]")) {
ReadMode = 55;
} else if (line.equals("[HERBSACK]")) {
ReadMode = 56;
} else if (line.equals("[GEMBAG]")) {
ReadMode = 57;
} else if (line.equals("[SAFEBOX]")) {
ReadMode = 58;
} else if(line.equals("[COALBAG]")) {
ReadMode = 59;
} else if (line.equals("[BANK]")) {
ReadMode = 7;
} else if (line.equals("[FRIENDS]")) {
ReadMode = 8;
} else if (line.equals("[ACHIEVEMENTS-TIER-1]")) {
ReadMode = 9;
} else if (line.equals("[ACHIEVEMENTS-TIER-2]")) {
ReadMode = 10;
} else if (line.equals("[ACHIEVEMENTS-TIER-3]")) {
ReadMode = 11;
} else if (line.equals("[IGNORES]")) {
ReadMode = 12;
} else if (line.equals("[HOLIDAY-EVENTS]")) {
ReadMode = 13;
} else if (line.equals("[DEGRADEABLES]")) {
ReadMode = 14;
} else if (line.equals("[PRESETS]")) {
ReadMode = 15;
} else if (line.equals("[KILLSTREAKS]")) {
ReadMode = 16;
} else if (line.equals("[TITLES]")) {
ReadMode = 17;
} else if (line.equals("[NPC-TRACKER]")) {
ReadMode = 18;
} else if (line.equals("[EOF]")) {
try {
characterfile.close();
} catch (IOException ioexception) {
if (Config.SERVER_STATE == ServerState.PRIVATE) {
ioexception.printStackTrace();
}
}
return 1;
}
}
try {
line = characterfile.readLine();
} catch (IOException ioexception1) {
EndOfFile = true;
if (Config.SERVER_STATE == ServerState.PRIVATE) {
ioexception1.printStackTrace();
}
}
}
try {
characterfile.close();
} catch (IOException ioexception) {
if (Config.SERVER_STATE == ServerState.PRIVATE) {
ioexception.printStackTrace();
}
}
return 13;
}
public static void save(Player p) {
saveGame(p);
}
public static boolean saveGame(Player p) {
return saveGame(p, true);
}
/**
* Saving
**/
@SuppressWarnings("resource")
public static boolean saveGame(Player p, boolean hashPass) {
if (!p.saveFile || p.newPlayer || !p.saveCharacter) {
System.out.println("first");
return false;
}
if (p.playerName == null || PlayerHandler.players[p.getIndex()] == null) {
System.out.println("second - " + p.getIndex() + " - " + p.playerName);
return false;
}
p.playerName = p.playerName2;
int tbTime = (int) (p.teleBlockDelay - System.currentTimeMillis() + p.teleBlockLength);
if (tbTime > 300000 || tbTime < 0) {
tbTime = 0;
}
BufferedWriter characterfile = null;
try {
characterfile = new BufferedWriter(new FileWriter("./Data/characters/" + p.playerName + ".txt"));
/* ACCOUNT */
characterfile.write("[ACCOUNT]", 0, 9);
characterfile.newLine();
characterfile.write("character-username = ", 0, 21);
characterfile.write(p.playerName, 0, p.playerName.length());
characterfile.newLine();
characterfile.write("character-password = ", 0, 21);
String passToWrite = hashPass ? Misc.md5Hash(p.playerPass) : p.playerPass;
characterfile.write(passToWrite, 0, passToWrite.length());
characterfile.newLine();
characterfile.newLine();
/* CHARACTER */
characterfile.write("[CHARACTER]", 0, 11);
characterfile.newLine();
characterfile.write("character-rights = " + p.getRights().getPrimary().getValue());
characterfile.newLine();
StringBuilder sb = new StringBuilder();
p.getRights().getSet().stream().forEach(r -> sb.append(r.getValue() + "\t"));
characterfile.write("character-rights-secondary = " + sb.substring(0, sb.length() - 1));
characterfile.newLine();
characterfile.write("exp-rate = " + p.getExperienceRate());
characterfile.newLine();
if (p.getMode() != null) {
characterfile.write("mode = " + p.getMode().getType().name());
characterfile.newLine();
}
if (p.getTutorial().getStage() != null) {
characterfile.write("tutorial-stage = " + p.getTutorial().getStage().name());
characterfile.newLine();
}
characterfile.write("brightness = " + p.getAttribute("brightness", 3));
characterfile.newLine();
characterfile.write("character-height = ", 0, 19);
characterfile.write(Integer.toString(p.heightLevel), 0, Integer.toString(p.heightLevel).length());
characterfile.newLine();
characterfile.write("character-hp = " + p.getHealth().getAmount());
characterfile.newLine();
characterfile.write("play-time = ", 0, 12);
characterfile.write(Integer.toString(p.playTime), 0, Integer.toString(p.playTime).length());
characterfile.newLine();
characterfile.write("last-clan = ", 0, 12);
characterfile.write(p.getLastClanChat(), 0, p.getLastClanChat().length());
characterfile.newLine();
characterfile.write("character-specRestore = ", 0, 24);
characterfile.write(Integer.toString(p.specRestore), 0, Integer.toString(p.specRestore).length());
characterfile.newLine();
characterfile.write("character-posx = ", 0, 17);
characterfile.write(Integer.toString(p.absX), 0, Integer.toString(p.absX).length());
characterfile.newLine();
characterfile.write("character-posy = ", 0, 17);
characterfile.write(Integer.toString(p.absY), 0, Integer.toString(p.absY).length());
characterfile.newLine();
characterfile.write("bank-pin = " + p.getBankPin().getPin());
characterfile.newLine();
characterfile.write("bank-pin-cancellation = " + p.getBankPin().isAppendingCancellation());
characterfile.newLine();
characterfile.write("bank-pin-unlock-delay = " + p.getBankPin().getUnlockDelay());
characterfile.newLine();
characterfile.write("placeholders = " + p.placeHolders);
characterfile.newLine();
characterfile.newLine();
characterfile.write("teleportStone = " + p.getTeleportStonePos()[0] + "\t" + p.getTeleportStonePos()[1] + "\t" + p.getTeleportStonePos()[2]);
characterfile.newLine();
characterfile.write("bank-pin-cancellation-delay = " + p.getBankPin().getCancellationDelay());
characterfile.newLine();
characterfile.write("show-drop-warning = " + p.showDropWarning());
characterfile.newLine();
characterfile.write("accept-aid = " + p.acceptAid);
characterfile.newLine();
characterfile.write("did-you-know = " + p.didYouKnow);
characterfile.newLine();
characterfile.write("lootvalue = " + p.lootValue);
characterfile.newLine();
characterfile.write("raidPoints = " + p.raidPoints);
characterfile.newLine();
characterfile.write("experience-counter = " + p.getExperienceCounter());
characterfile.newLine();
characterfile.write("prestigeLevel = " + p.prestigeLevel);
characterfile.newLine();
characterfile.write("skillPoints = " + p.skillPoints);
characterfile.newLine();
characterfile.write("assaultPoints = " + p.assaultPoints);
characterfile.newLine();
characterfile.write("hasBoughtCannon = " + p.hasBoughtCannon);
characterfile.newLine();
characterfile.write("character-title-updated = " + p.getTitles().getCurrentTitle());
characterfile.newLine();
for (int i = 0; i < p.lastConnectedFrom.size(); i++) {
characterfile.write("connected-from = ", 0, 17);
characterfile.write(p.lastConnectedFrom.get(i), 0, p.lastConnectedFrom.get(i).length());
characterfile.newLine();
}
characterfile.write("mac-address = " + p.getMacAddress());
characterfile.newLine();
for (int i = 0; i < p.getPlayerKills().getList().size(); i++) {
characterfile.write("killed-players = " + p.getPlayerKills().getList().get(i));
characterfile.newLine();
}
String[] removed = p.getSlayer().getRemoved();
characterfile.write("removed-slayer-tasks = ");
for (int index = 0; index < removed.length; index++) {
characterfile.write(removed[index]);
if (index < removed.length - 1) {
characterfile.write("\t");
}
}
characterfile.newLine();
characterfile.write("experienceMultiplier = " + p.doubleXpTime);
characterfile.newLine();
characterfile.write("last-incentive = " + p.getLastIncentive());
characterfile.newLine();
characterfile.write("rfd-round = ", 0, 12);
characterfile.write(Integer.toString(p.rfdRound), 0, Integer.toString(p.rfdRound).length());
characterfile.newLine();
characterfile.write("run-energy = " + p.getRunEnergy());
characterfile.newLine();
characterfile.write("lastLoginDate = ", 0, 16);
characterfile.write(Integer.toString(p.lastLoginDate), 0, Integer.toString(p.lastLoginDate).length());
characterfile.newLine();
characterfile.write("has-npc = ", 0, 10);
characterfile.write(Boolean.toString(p.hasFollower), 0, Boolean.toString(p.hasFollower).length());
characterfile.newLine();
characterfile.write("summonId = ", 0, 11);
characterfile.write(Integer.toString(p.summonId), 0, Integer.toString(p.summonId).length());
characterfile.newLine();
characterfile.write("startPack = ", 0, 12);
characterfile.write(Boolean.toString(p.startPack), 0, Boolean.toString(p.startPack).length());
characterfile.newLine();
characterfile.write("setPin = ", 0, 9);
characterfile.write(Boolean.toString(p.setPin), 0, Boolean.toString(p.setPin).length());
characterfile.newLine();
characterfile.write("slayer-helmet = " + p.getSlayer().isHelmetCreatable());
characterfile.newLine();
characterfile.write("slayer-imbued-helmet = " + p.getSlayer().isHelmetImbuedCreatable());
characterfile.newLine();
characterfile.write("bigger-boss-tasks = " + p.getSlayer().isBiggerBossTasks());
characterfile.newLine();
characterfile.write("cerberus-route = " + p.getSlayer().isCerberusRoute());
characterfile.newLine();
characterfile.write("slayer-tasks-completed = " + p.slayerTasksCompleted);
characterfile.newLine();
characterfile.write("claimedReward = ", 0, 16);
characterfile.write(Boolean.toString(p.claimedReward), 0, Boolean.toString(p.claimedReward).length());
characterfile.newLine();
characterfile.write("dragonfire-shield-charge = " + p.getDragonfireShieldCharge());
characterfile.newLine();
characterfile.write("rfd-gloves = " + p.rfdGloves);
characterfile.newLine();
characterfile.write("wave-id = " + p.waveId);
characterfile.newLine();
characterfile.write("wave-type = " + p.waveType);
characterfile.newLine();
characterfile.write("wave-info = " + p.waveInfo[0] + "\t" + p.waveInfo[1] + "\t" + p.waveInfo[2]);
characterfile.newLine();
characterfile.write(
"master-clue-reqs = " + p.masterClueRequirement[0] + "\t" + p.masterClueRequirement[1] + "\t" + p.masterClueRequirement[2] + "\t" + p.masterClueRequirement[3]);
characterfile.newLine();
characterfile.write("counters = ");
for (int i = 0; i < p.counters.length; i++)
characterfile.write("" + p.counters[i] + ((i == p.counters.length - 1) ? "" : "\t"));
characterfile.newLine();
characterfile.write("max-cape = ");
for (int i = 0; i < p.maxCape.length; i++)
characterfile.write("" + p.maxCape[i] + ((i == p.maxCape.length - 1) ? "" : "\t"));
characterfile.newLine();
characterfile.write("clue-container = ");
if (p.clueContainer == null || p.clueContainer.stages.peek() == null) {
characterfile.write("null");
} else {
for (ClueScroll c : p.clueContainer.stages)
characterfile.write(c.name() + "\t");
}
characterfile.newLine();
characterfile.write("clue-reward = ");
characterfile.write(p.bossDifficulty == null ? "null" : p.bossDifficulty.name());
characterfile.newLine();
characterfile.write("easy-clue = ");
characterfile.write(Integer.toString(p.easyClue));
characterfile.newLine();
characterfile.write("medium-clue = ");
characterfile.write(Integer.toString(p.mediumClue));
characterfile.newLine();
characterfile.write("hard-clue = ");
characterfile.write(Integer.toString(p.hardClue));
characterfile.newLine();
characterfile.write("elite-clue = ");
characterfile.write(Integer.toString(p.eliteClue));
characterfile.newLine();
characterfile.write("master-clue = ");
characterfile.write(Integer.toString(p.masterClue));
characterfile.newLine();
characterfile.write("onClue = ");
characterfile.write(Boolean.toString(p.onClueTask));
characterfile.newLine();
characterfile.write("clueStage = ");
characterfile.write(Integer.toString(p.getClueTaskStage));
characterfile.newLine();
characterfile.write("selectedClue = ");
characterfile.write(Integer.toString(p.selectedClue));
characterfile.newLine();
characterfile.write("zulrah-best-time = " + p.getBestZulrahTime());
characterfile.newLine();
characterfile.write("toxic-staff = " + p.getToxicStaffOfTheDeadCharge());
characterfile.newLine();
characterfile.write("toxic-pipe-ammo = " + p.getToxicBlowpipeAmmo());
characterfile.newLine();
characterfile.write("toxic-pipe-amount = " + p.getToxicBlowpipeAmmoAmount());
characterfile.newLine();
characterfile.write("toxic-pipe-charge = " + p.getToxicBlowpipeCharge());
characterfile.newLine();
characterfile.write("serpentine-helm = " + p.getSerpentineHelmCharge());
characterfile.newLine();
characterfile.write("trident-of-the-seas = " + p.getTridentCharge());
characterfile.newLine();
characterfile.write("trident-of-the-swamp = " + p.getToxicTridentCharge());
characterfile.newLine();
characterfile.write("arclight-charge = " + p.getArcLightCharge());
characterfile.newLine();
characterfile.write("slayerPoints = " + p.getSlayer().getPoints());
characterfile.newLine();
characterfile.write("crystal-bow-shots = ", 0, 20);
characterfile.write(Integer.toString(p.crystalBowArrowCount), 0, Integer.toString(p.crystalBowArrowCount).length());
characterfile.newLine();
characterfile.write("skull-timer = ", 0, 14);
characterfile.write(Integer.toString(p.skullTimer), 0, Integer.toString(p.skullTimer).length());
characterfile.newLine();
characterfile.write("magic-book = ", 0, 13);
characterfile.write(Integer.toString(p.playerMagicBook), 0, Integer.toString(p.playerMagicBook).length());
characterfile.newLine();
for (Brother brother : p.getBarrows().getBrothers()) {
characterfile.write(brother.getName().toLowerCase() + " = " + Boolean.toString(brother.isDefeated()));
characterfile.newLine();
}
if (p.getBarrows().getLastBrother().isPresent()) {
characterfile.write("barrows-final-brother = " + p.getBarrows().getLastBrother().get().getName());
characterfile.newLine();
}
characterfile.write("barrows-monsters-killcount = " + p.getBarrows().getMonsterKillCount());
characterfile.newLine();
characterfile.write("barrows-completed = " + Boolean.toString(p.getBarrows().isCompleted()));
characterfile.newLine();
characterfile.write("special-amount = ", 0, 17);
characterfile.write(Double.toString(p.specAmount), 0, Double.toString(p.specAmount).length());
characterfile.newLine();
characterfile.write("prayer-amount = ", 0, 16);
characterfile.write(Double.toString(p.prayerPoint), 0, Double.toString(p.prayerPoint).length());
characterfile.newLine();
characterfile.write("KC = ", 0, 4);
characterfile.write(Integer.toString(p.killcount), 0, Integer.toString(p.killcount).length());
characterfile.newLine();
characterfile.write("DC = ", 0, 4);
characterfile.write(Integer.toString(p.deathcount), 0, Integer.toString(p.deathcount).length());
characterfile.newLine();
characterfile.write("total-hunter-kills = " + p.getBH().getTotalHunterKills());
characterfile.newLine();
characterfile.write("total-rogue-kills = " + p.getBH().getTotalRogueKills());
characterfile.newLine();
characterfile.write("target-time-delay = " + p.getBH().getDelayedTargetTicks());
characterfile.newLine();
characterfile.write("bh-penalties = " + p.getBH().getWarnings());
characterfile.newLine();
characterfile.write("bh-bounties = " + p.getBH().getBounties());
characterfile.newLine();
characterfile.write("statistics-visible = " + p.getBH().isStatisticsVisible());
characterfile.newLine();
characterfile.write("spell-accessible = " + p.getBH().isSpellAccessible());
characterfile.newLine();
characterfile.write("zerkAmount = ", 0, 13);
characterfile.newLine();
characterfile.write("pkp = ", 0, 6);
characterfile.write(Integer.toString(p.pkp), 0, Integer.toString(p.pkp).length());
characterfile.newLine();
characterfile.write("donP = ", 0, 6);
characterfile.write(Integer.toString(p.donatorPoints), 0, Integer.toString(p.donatorPoints).length());
characterfile.newLine();
characterfile.write("donA = ", 0, 6);
characterfile.write(Integer.toString(p.amDonated), 0, Integer.toString(p.amDonated).length());
characterfile.newLine();
characterfile.write("votePoints = ", 0, 13);
characterfile.write(Integer.toString(p.votePoints), 0, Integer.toString(p.votePoints).length());
characterfile.newLine();
characterfile.write("achievement-points = " + p.getAchievements().getPoints());
characterfile.newLine();
characterfile.write("achievement-items = ");
for (int i = 0; i < p.getAchievements().getBoughtItems().length; i++)
characterfile.write("" + p.getAchievements().getBoughtItems()[i][1] + ((i == p.getAchievements().getBoughtItems().length - 1) ? "" : "\t"));
characterfile.newLine();
characterfile.write("xpLock = ", 0, 9);
characterfile.write(Boolean.toString(p.expLock), 0, Boolean.toString(p.expLock).length());
characterfile.newLine();
characterfile.write("teleblock-length = ", 0, 19);
characterfile.write(Integer.toString(tbTime), 0, Integer.toString(tbTime).length());
characterfile.newLine();
// Varrock
String varrockClaimed = "VarrockClaimedDiaries = ";
characterfile.write(varrockClaimed, 0, varrockClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getVarrockDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Ardougne
String ardougneClaimed = "ArdougneClaimedDiaries = ";
characterfile.write(ardougneClaimed, 0, ardougneClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getArdougneDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Desert
String desertClaimed = "DesertClaimedDiaries = ";
characterfile.write(desertClaimed, 0, desertClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getDesertDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Falador
String faladorClaimed = "FaladorClaimedDiaries = ";
characterfile.write(faladorClaimed, 0, faladorClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getFaladorDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Fremennik
String fremennikClaimed = "FremennikClaimedDiaries = ";
characterfile.write(fremennikClaimed, 0, fremennikClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getFremennikDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Kandarin
String kandarinClaimed = "KandarinClaimedDiaries = ";
characterfile.write(kandarinClaimed, 0, kandarinClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getKandarinDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Karamja
String karamjaClaimed = "KaramjaClaimedDiaries = ";
characterfile.write(karamjaClaimed, 0, karamjaClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getKaramjaDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Lumbridge
String lumbridgeClaimed = "LumbridgeClaimedDiaries = ";
characterfile.write(lumbridgeClaimed, 0, lumbridgeClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getLumbridgeDraynorDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Morytania
String morytaniaClaimed = "MorytaniaClaimedDiaries = ";
characterfile.write(morytaniaClaimed, 0, morytaniaClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getMorytaniaDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Western
String westernClaimed = "WesternClaimedDiaries = ";
characterfile.write(westernClaimed, 0, westernClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getWesternDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
// Wilderness
String wildernessClaimed = "WildernessClaimedDiaries = ";
characterfile.write(wildernessClaimed, 0, wildernessClaimed.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
for (EntryDifficulty entry : p.getDiaryManager().getWildernessDiary().getClaimed()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
String diary = "diaries = ";
characterfile.write(diary, 0, diary.length());
{
String prefix = "";
StringBuilder bldr = new StringBuilder();
// Varrock
for (VarrockDiaryEntry entry : p.getDiaryManager().getVarrockDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Ardougne
for (ArdougneDiaryEntry entry : p.getDiaryManager().getArdougneDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Desert
for (DesertDiaryEntry entry : p.getDiaryManager().getDesertDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Falador
for (FaladorDiaryEntry entry : p.getDiaryManager().getFaladorDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Fremennik
for (FremennikDiaryEntry entry : p.getDiaryManager().getFremennikDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Kandarin
for (KandarinDiaryEntry entry : p.getDiaryManager().getKandarinDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Karamja
for (KaramjaDiaryEntry entry : p.getDiaryManager().getKaramjaDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Lumbridge
for (LumbridgeDraynorDiaryEntry entry : p.getDiaryManager().getLumbridgeDraynorDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Morytania
for (MorytaniaDiaryEntry entry : p.getDiaryManager().getMorytaniaDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Western
for (WesternDiaryEntry entry : p.getDiaryManager().getWesternDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
// Wilderness
for (WildernessDiaryEntry entry : p.getDiaryManager().getWildernessDiary().getAchievements()) {
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name());
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
String partialDiary = "partialDiaries = ";
// forEachPartial
characterfile.write(partialDiary, 0, partialDiary.length()); // Saw
// that
// earlier
// but
// forgot
// lol,
// ahh
// ty
{
StringBuilder bldr = new StringBuilder();
String prefix = "";
// Varrock
for (Entry<VarrockDiaryEntry, Integer> keyval : p.getDiaryManager().getVarrockDiary().getPartialAchievements().entrySet()) {
VarrockDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Ardougne
for (Entry<ArdougneDiaryEntry, Integer> keyval : p.getDiaryManager().getArdougneDiary().getPartialAchievements().entrySet()) {
ArdougneDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Desert
for (Entry<DesertDiaryEntry, Integer> keyval : p.getDiaryManager().getDesertDiary().getPartialAchievements().entrySet()) {
DesertDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Falador
for (Entry<FaladorDiaryEntry, Integer> keyval : p.getDiaryManager().getFaladorDiary().getPartialAchievements().entrySet()) {
FaladorDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Fremennik
for (Entry<FremennikDiaryEntry, Integer> keyval : p.getDiaryManager().getFremennikDiary().getPartialAchievements().entrySet()) {
FremennikDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Kandarin
for (Entry<KandarinDiaryEntry, Integer> keyval : p.getDiaryManager().getKandarinDiary().getPartialAchievements().entrySet()) {
KandarinDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Karamja
for (Entry<KaramjaDiaryEntry, Integer> keyval : p.getDiaryManager().getKaramjaDiary().getPartialAchievements().entrySet()) {
KaramjaDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Lumbridge
for (Entry<LumbridgeDraynorDiaryEntry, Integer> keyval : p.getDiaryManager().getLumbridgeDraynorDiary().getPartialAchievements().entrySet()) {
LumbridgeDraynorDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Morytania
for (Entry<MorytaniaDiaryEntry, Integer> keyval : p.getDiaryManager().getMorytaniaDiary().getPartialAchievements().entrySet()) {
MorytaniaDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Western
for (Entry<WesternDiaryEntry, Integer> keyval : p.getDiaryManager().getWesternDiary().getPartialAchievements().entrySet()) {
WesternDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
// Wilderness
for (Entry<WildernessDiaryEntry, Integer> keyval : p.getDiaryManager().getWildernessDiary().getPartialAchievements().entrySet()) {
WildernessDiaryEntry entry = keyval.getKey();
int stage = keyval.getValue();
bldr.append(prefix);
prefix = ",";
bldr.append(entry.name() + ":" + stage);
}
characterfile.write(bldr.toString(), 0, bldr.toString().length());
}
characterfile.newLine();
characterfile.write("pc-points = ", 0, 12);
characterfile.write(Integer.toString(p.pcPoints), 0, Integer.toString(p.pcPoints).length());
characterfile.newLine();
characterfile.write("killStreak = ", 0, 13);
characterfile.write(Integer.toString(p.killStreak), 0, Integer.toString(p.killStreak).length());
characterfile.newLine();
characterfile.write("bonus-end = ", 0, 12);
characterfile.write(Long.toString(p.bonusXpTime), 0, Long.toString(p.bonusXpTime).length());
characterfile.newLine();
characterfile.write("jail-end = ", 0, 11);
characterfile.write(Long.toString(p.jailEnd), 0, Long.toString(p.jailEnd).length());
characterfile.newLine();
characterfile.write("mute-end = ", 0, 11);
characterfile.write(Long.toString(p.muteEnd), 0, Long.toString(p.muteEnd).length());
characterfile.newLine();
characterfile.write("marketmute-end = ", 0, 17);
characterfile.write(Long.toString(p.marketMuteEnd), 0, Long.toString(p.marketMuteEnd).length());
characterfile.newLine();
characterfile.write("last-yell = " + p.lastYell);
characterfile.newLine();
characterfile.write("splitChat = ", 0, 12);
characterfile.write(Boolean.toString(p.splitChat), 0, Boolean.toString(p.splitChat).length());
characterfile.newLine();
if (p.getSlayer().getTask().isPresent()) {
Task task = p.getSlayer().getTask().get();
characterfile.write("slayer-task = " + task.getPrimaryName());
characterfile.newLine();
characterfile.write("slayer-task-amount = " + p.getSlayer().getTaskAmount());
characterfile.newLine();
}
characterfile.write("slayer-master = " + p.getSlayer().getMaster());
characterfile.newLine();
characterfile.write("consecutive-tasks = " + p.getSlayer().getConsecutiveTasks());
characterfile.newLine();
characterfile.write("mage-arena-points = " + p.getArenaPoints());
characterfile.newLine();
characterfile.write("autoRet = ", 0, 10);
characterfile.write(Integer.toString(p.autoRet), 0, Integer.toString(p.autoRet).length());
characterfile.newLine();
characterfile.write("flagged = ", 0, 10);
characterfile.write(Boolean.toString(p.accountFlagged), 0, Boolean.toString(p.accountFlagged).length());
characterfile.newLine();
characterfile.write("keepTitle = ", 0, 12);
characterfile.write(Boolean.toString(p.keepTitle), 0, Boolean.toString(p.keepTitle).length());
characterfile.newLine();
characterfile.write("killTitle = ", 0, 12);
characterfile.write(Boolean.toString(p.killTitle), 0, Boolean.toString(p.killTitle).length());
characterfile.newLine();
characterfile.write("wave = ", 0, 7);
characterfile.write(Integer.toString(p.waveId), 0, Integer.toString(p.waveId).length());
characterfile.newLine();
characterfile.write("gwkc = ", 0, 7);
characterfile.write(Integer.toString(p.killCount), 0, Integer.toString(p.killCount).length());
characterfile.newLine();
characterfile.write("fightMode = ", 0, 12);
characterfile.write(Integer.toString(p.fightMode), 0, Integer.toString(p.fightMode).length());
characterfile.newLine();
characterfile.write("privatechat = ", 0, 14);
characterfile.write(Integer.toString(p.getPrivateChat()), 0, Integer.toString(p.getPrivateChat()).length());
characterfile.newLine();
characterfile.write("void = ", 0, 7);
String toWrite = p.voidStatus[0] + "\t" + p.voidStatus[1] + "\t" + p.voidStatus[2] + "\t" + p.voidStatus[3] + "\t" + p.voidStatus[4];
characterfile.write(toWrite);
characterfile.newLine();
characterfile.write("quickprayer = ", 0, 14);
String quick = "";
for (int i = 0; i < p.getQuick().getNormal().length; i++) {
quick += p.getQuick().getNormal()[i] + "\t";
}
characterfile.write(quick);
characterfile.newLine();
characterfile.write("pouch-rune = " + p.getRuneEssencePouch(0) + "\t" + p.getRuneEssencePouch(1) + "\t" + p.getRuneEssencePouch(2));
characterfile.newLine();
characterfile.write("pouch-pure = " + p.getPureEssencePouch(0) + "\t" + p.getPureEssencePouch(1) + "\t" + p.getPureEssencePouch(2));
characterfile.newLine();
characterfile.write("crabsKilled = ", 0, 14);
characterfile.write(Integer.toString(p.crabsKilled), 0, Integer.toString(p.crabsKilled).length());
characterfile.newLine();
characterfile.write("farming-poison-berry = " + p.getFarming().getLastBerryFarm());
characterfile.newLine();
characterfile.write("farming-patch-0 = " + p.getFarmingState(0) + "\t" + p.getFarmingSeedId(0) + "\t" + p.getFarmingTime(0) + "\t" + p.getFarmingHarvest(0));
characterfile.newLine();
characterfile.write("halloweenOrderGiven = ");
for (int i = 0; i < p.halloweenRiddleGiven.length; i++)
characterfile.write("" + p.halloweenRiddleGiven[i] + ((i == p.halloweenRiddleGiven.length - 1) ? "" : "\t"));
characterfile.newLine();
characterfile.write("halloweenOrderChosen = ");
for (int i = 0; i < p.halloweenRiddleChosen.length; i++)
characterfile.write("" + p.halloweenRiddleChosen[i] + ((i == p.halloweenRiddleChosen.length - 1) ? "" : "\t"));
characterfile.newLine();
characterfile.write("halloweenOrderNumber = ", 0, 23);
characterfile.write(Integer.toString(p.halloweenOrderNumber), 0, Integer.toString(p.halloweenOrderNumber).length());
characterfile.newLine();
characterfile.write("district-levels = ");
for (int i = 0; i < p.playerStats.length; i++)
characterfile.write("" + p.playerStats[i] + ((i == p.playerStats.length - 1) ? "" : "\t"));
characterfile.newLine();
characterfile.write("inDistrict = ", 0, 13);
characterfile.write(Boolean.toString(p.pkDistrict), 0, Boolean.toString(p.pkDistrict).length());
characterfile.newLine();
characterfile.write("safeBoxSlots = ", 0, 15);
characterfile.write(Integer.toString(p.safeBoxSlots), 0, Integer.toString(p.safeBoxSlots).length());
characterfile.newLine();
characterfile.write("lost-items = ");
for (GameItem item : p.getZulrahLostItems()) {
if (item == null) {
continue;
}
characterfile.write(item.getId() + "\t" + item.getAmount() + "\t");
}
characterfile.newLine();
characterfile.write("lost-items-cerberus = ");
for (GameItem item : p.getCerberusLostItems()) {
if (item == null) {
continue;
}
characterfile.write(item.getId() + "\t" + item.getAmount() + "\t");
}
characterfile.newLine();
characterfile.write("lost-items-skotizo = ");
for (GameItem item : p.getSkotizoLostItems()) {
if (item == null) {
continue;
}
characterfile.write(item.getId() + "\t" + item.getAmount() + "\t");
System.out.println("sends save!");
}
characterfile.newLine();
characterfile.newLine();
characterfile.newLine();
characterfile.newLine();
characterfile.write("lost-items-pvp = ");
for (GameItem item : p.getStatusHandlerLostItems()) {
if (item == null) {
continue;
}
characterfile.write(item.getId() + "\t" + item.getAmount() + "\t");
}
characterfile.newLine();
characterfile.newLine();
characterfile.write("lost-items-kraken = ");
for (GameItem item : p.getKrakenLostItems()) {
if (item == null) {
continue;
}
characterfile.write(item.getId() + "\t" + item.getAmount() + "\t");
}
characterfile.newLine();
/* EQUIPMENT */
characterfile.write("[EQUIPMENT]", 0, 11);
characterfile.newLine();
for (int i = 0; i < p.playerEquipment.length; i++) {
characterfile.write("character-equip = ", 0, 18);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerEquipment[i]), 0, Integer.toString(p.playerEquipment[i]).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerEquipmentN[i]), 0, Integer.toString(p.playerEquipmentN[i]).length());
characterfile.write(" ", 0, 1);
characterfile.newLine();
}
characterfile.newLine();
/* LOOK */
characterfile.write("[LOOK]", 0, 6);
characterfile.newLine();
for (int i = 0; i < p.playerAppearance.length; i++) {
characterfile.write("character-look = ", 0, 17);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerAppearance[i]), 0, Integer.toString(p.playerAppearance[i]).length());
characterfile.newLine();
}
characterfile.newLine();
/* SKILLS */
characterfile.write("[SKILLS]", 0, 8);
characterfile.newLine();
for (int i = 0; i < p.playerLevel.length; i++) {
characterfile.write("character-skill = ", 0, 18);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerLevel[i]), 0, Integer.toString(p.playerLevel[i]).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerXP[i]), 0, Integer.toString(p.playerXP[i]).length());
characterfile.newLine();
}
characterfile.newLine();
/* ITEMS */
characterfile.write("[ITEMS]", 0, 7);
characterfile.newLine();
for (int i = 0; i < p.playerItems.length; i++) {
if (p.playerItems[i] > 0) {
characterfile.write("character-item = ", 0, 17);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerItems[i]), 0, Integer.toString(p.playerItems[i]).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(p.playerItemsN[i]), 0, Integer.toString(p.playerItemsN[i]).length());
characterfile.newLine();
}
}
characterfile.newLine();
characterfile.write("[NPC-PETS]");
characterfile.newLine();
for (Pets pet : Pets.values()) {
characterfile.write(pet.getItemId() + " = " + PetHandler.isPetOwner(pet.getItemId()));
characterfile.newLine();
}
characterfile.newLine();
/* ITEMVALUES */
characterfile.write("[RECHARGEITEMS]", 0, 15);
characterfile.newLine();
for (int itemId : p.getRechargeItems().getItemValues().keySet()) {
int value = p.getRechargeItems().getChargesLeft(itemId);
String itemIdString = Integer.toString(itemId);
String valueString = Integer.toString(value);
String lastUsed = p.getRechargeItems().getItemLastUsed(itemId);
characterfile.write("item = ", 0, 7);
characterfile.write(" ", 0, 1);
characterfile.write(itemIdString, 0, itemIdString.length());
characterfile.write(" ", 0, 1);
characterfile.write(valueString, 0, valueString.length());
characterfile.write(" ", 0, 1);
characterfile.write(lastUsed, 0, lastUsed.length());
characterfile.newLine();
}
characterfile.newLine();
/* BANK */
characterfile.write("[BANK]", 0, 6);
characterfile.newLine();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < Config.BANK_SIZE; j++) {
if (j > p.getBank().getBankTab()[i].size() - 1)
break;
BankItem item = p.getBank().getBankTab()[i].getItem(j);
if (item == null) {
continue;
}
characterfile.write("bank-tab = " + i + "\t" + item.getId() + "\t" + item.getAmount());
characterfile.newLine();
}
}
characterfile.newLine();
characterfile.newLine();
/* LOOTBAG */
characterfile.write("[LOOTBAG]", 0, 9);
characterfile.newLine();
for (int i = 0; i < p.getLootingBag().items.size(); i++) {
if (p.getLootingBag().items.get(i).getId() > 0) {
characterfile.write("bag-item = ", 0, 11);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
int id = p.getLootingBag().items.get(i).getId();
int amt = p.getLootingBag().items.get(i).getAmount();
characterfile.write(Integer.toString(id), 0, Integer.toString(id).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(amt), 0, Integer.toString(amt).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* RUNEPOUCH */
characterfile.write("[RUNEPOUCH]", 0, 11);
characterfile.newLine();
for (int i = 0; i < p.getRunePouch().items.size(); i++) {
if (p.getRunePouch().items.get(i).getId() > 0) {
characterfile.write("pouch-item = ", 0, 13);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
int id = p.getRunePouch().items.get(i).getId();
int amt = p.getRunePouch().items.get(i).getAmount();
characterfile.write(Integer.toString(id), 0, Integer.toString(id).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(amt), 0, Integer.toString(amt).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* HERBSACK */
characterfile.write("[HERBSACK]", 0, 10);
characterfile.newLine();
for (int i = 0; i < p.getHerbSack().items.size(); i++) {
if (p.getHerbSack().items.get(i).getId() > 0) {
characterfile.write("sack-item = ", 0, 12);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
int id = p.getHerbSack().items.get(i).getId();
int amt = p.getHerbSack().items.get(i).getAmount();
characterfile.write(Integer.toString(id), 0, Integer.toString(id).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(amt), 0, Integer.toString(amt).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* GEMBAG */
characterfile.write("[GEMBAG]", 0, 8);
characterfile.newLine();
for (int i = 0; i < p.getGemBag().items.size(); i++) {
if (p.getGemBag().items.get(i).getId() > 0) {
characterfile.write("bag-item = ", 0, 11);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
int id = p.getGemBag().items.get(i).getId();
int amt = p.getGemBag().items.get(i).getAmount();
characterfile.write(Integer.toString(id), 0, Integer.toString(id).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(amt), 0, Integer.toString(amt).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* GEMBAG */
characterfile.write("[COALBAG]");
characterfile.newLine();
for (int i = 0; i < p.getCoalBag().items.size(); i++) {
if (p.getGemBag().items.get(i).getId() > 0) {
characterfile.write("coal-bag-item = ");
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
int id = p.getCoalBag().items.get(i).getId();
int amt = p.getCoalBag().items.get(i).getAmount();
characterfile.write(Integer.toString(id), 0, Integer.toString(id).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(amt), 0, Integer.toString(amt).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* SAFEBOX */
characterfile.write("[SAFEBOX]", 0, 9);
characterfile.newLine();
for (int i = 0; i < p.getSafeBox().items.size(); i++) {
if (p.getSafeBox().items.get(i).getId() > 0) {
characterfile.write("safebox-item = ", 0, 15);
characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
characterfile.write(" ", 0, 1);
int id = p.getSafeBox().items.get(i).getId();
int amt = p.getSafeBox().items.get(i).getAmount();
characterfile.write(Integer.toString(id), 0, Integer.toString(id).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(amt), 0, Integer.toString(amt).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* FRIENDS */
characterfile.write("[FRIENDS]", 0, 9);
characterfile.newLine();
for (Long friend : p.getFriends().getFriends()) {
characterfile.write("character-friend = ", 0, 19);
characterfile.write(Long.toString(friend), 0, Long.toString(friend).length());
characterfile.newLine();
}
characterfile.newLine();
characterfile.newLine();
characterfile.write("[HOLIDAY-EVENTS]");
characterfile.newLine();
for (Entry<String, Integer> entry : p.getHolidayStages().getStages().entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if (Objects.isNull(key)) {
continue;
}
characterfile.write("stage = " + key + "\t" + value);
characterfile.newLine();
}
characterfile.newLine();
characterfile.write("[DEGRADEABLES]");
characterfile.newLine();
characterfile.write("claim-state = ");
for (int i = 0; i < p.claimDegradableItem.length; i++) {
characterfile.write(Boolean.toString(p.claimDegradableItem[i]));
if (i != p.claimDegradableItem.length - 1) {
characterfile.write("\t");
}
}
characterfile.newLine();
for (int i = 0; i < p.degradableItem.length; i++) {
if (p.degradableItem[i] > 0) {
characterfile.write("item = " + i + "\t" + p.degradableItem[i]);
characterfile.newLine();
}
}
characterfile.newLine();
characterfile.newLine();
characterfile.write("[ACHIEVEMENTS-TIER-1]");
characterfile.newLine();
p.getAchievements().print(characterfile, 0);
characterfile.newLine();
characterfile.newLine();
characterfile.write("[ACHIEVEMENTS-TIER-2]");
characterfile.newLine();
p.getAchievements().print(characterfile, 1);
characterfile.newLine();
characterfile.newLine();
characterfile.write("[ACHIEVEMENTS-TIER-3]");
characterfile.newLine();
p.getAchievements().print(characterfile, 2);
characterfile.newLine();
/* IGNORES */
characterfile.write("[IGNORES]", 0, 9);
characterfile.newLine();
for (Long ignore : p.getIgnores().getIgnores()) {
characterfile.write("character-ignore = ", 0, 19);
characterfile.write(Long.toString(ignore), 0, Long.toString(ignore).length());
characterfile.newLine();
}
characterfile.newLine();
characterfile.write("[PRESETS]");
characterfile.newLine();
characterfile.write("Names = ");
Map<Integer, Preset> presets = p.getPresets().getPresets();
for (Entry<Integer, Preset> entry : presets.entrySet()) {
characterfile.write(entry.getValue().getAlias() + "\t");
}
characterfile.newLine();
for (Entry<Integer, Preset> entry : presets.entrySet()) {
if (entry != null) {
Preset preset = entry.getValue();
PresetContainer inventory = preset.getInventory();
characterfile.write("Inventory#" + entry.getKey() + " = ");
for (Entry<Integer, GameItem> item : inventory.getItems().entrySet()) {
characterfile.write(item.getKey() + "\t" + item.getValue().getId() + "\t" + item.getValue().getAmount() + "\t");
}
characterfile.newLine();
PresetContainer equipment = preset.getEquipment();
characterfile.write("Equipment#" + entry.getKey() + " = ");
for (Entry<Integer, GameItem> item : equipment.getItems().entrySet()) {
characterfile.write(item.getKey() + "\t" + item.getValue().getId() + "\t" + item.getValue().getAmount() + "\t");
}
characterfile.newLine();
}
}
characterfile.newLine();
characterfile.write("[KILLSTREAKS]");
characterfile.newLine();
for (Entry<Killstreak.Type, Integer> entry : p.getKillstreak().getKillstreaks().entrySet()) {
characterfile.write(entry.getKey().name() + " = " + entry.getValue());
characterfile.newLine();
}
characterfile.newLine();
characterfile.write("[TITLES]");
characterfile.newLine();
for (Title title : p.getTitles().getPurchasedList()) {
characterfile.write("title = " + title.name());
characterfile.newLine();
}
characterfile.newLine();
characterfile.write("[NPC-TRACKER]");
characterfile.newLine();
for (Entry<String, Integer> entry : p.getNpcDeathTracker().getTracker().entrySet()) {
if (entry != null) {
if (entry.getValue() > 0) {
characterfile.write(entry.getKey().toString() + " = " + entry.getValue());
characterfile.newLine();
}
}
}
characterfile.newLine();
characterfile.write("[EOF]", 0, 5);
characterfile.newLine();
characterfile.newLine();
characterfile.close();
} catch (IOException ioexception) {
Misc.println(p.playerName + ": error writing file.");
if (Config.SERVER_STATE == ServerState.PRIVATE) {
ioexception.printStackTrace();
}
return false;
}
return true;
}
}