aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java630
1 files changed, 321 insertions, 309 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java
index 5337a99c..8aef917c 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java
@@ -19,6 +19,7 @@
package io.github.moulberry.notenoughupdates.profileviewer;
+import com.google.common.collect.ImmutableMap;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -36,7 +37,6 @@ import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.EnumChatFormatting;
-import org.luaj.vm2.ast.Str;
import javax.annotation.Nullable;
import java.io.ByteArrayInputStream;
@@ -57,47 +57,56 @@ import java.util.regex.Pattern;
public class ProfileViewer {
- private static final HashMap<String, String> petRarityToNumMap = new HashMap<String, String>() {
- {
- put("COMMON", "0");
- put("UNCOMMON", "1");
- put("RARE", "2");
- put("EPIC", "3");
- put("LEGENDARY", "4");
- put("MYTHIC", "5");
- }
- };
- private static final LinkedHashMap<String, ItemStack> skillToSkillDisplayMap =
- new LinkedHashMap<String, ItemStack>() {
- {
- put("taming", Utils.createItemStack(Items.spawn_egg, EnumChatFormatting.LIGHT_PURPLE + "Taming"));
- put("mining", Utils.createItemStack(Items.stone_pickaxe, EnumChatFormatting.GRAY + "Mining"));
- put(
- "foraging",
- Utils.createItemStack(Item.getItemFromBlock(Blocks.sapling), EnumChatFormatting.DARK_GREEN + "Foraging")
- );
- put(
- "enchanting",
- Utils.createItemStack(Item.getItemFromBlock(Blocks.enchanting_table), EnumChatFormatting.GREEN + "Enchanting")
- );
- put(
- "carpentry",
- Utils.createItemStack(Item.getItemFromBlock(Blocks.crafting_table), EnumChatFormatting.DARK_RED + "Carpentry")
- );
- put("farming", Utils.createItemStack(Items.golden_hoe, EnumChatFormatting.YELLOW + "Farming"));
- put("combat", Utils.createItemStack(Items.stone_sword, EnumChatFormatting.RED + "Combat"));
- put("fishing", Utils.createItemStack(Items.fishing_rod, EnumChatFormatting.AQUA + "Fishing"));
- put("alchemy", Utils.createItemStack(Items.brewing_stand, EnumChatFormatting.BLUE + "Alchemy"));
- put("runecrafting", Utils.createItemStack(Items.magma_cream, EnumChatFormatting.DARK_PURPLE + "Runecrafting"));
- put("social", Utils.createItemStack(Items.emerald, EnumChatFormatting.DARK_GREEN + "Social"));
- // put("catacombs", Utils.createItemStack(Item.getItemFromBlock(Blocks.deadbush), EnumChatFormatting.GOLD+"Catacombs"));
- put("zombie", Utils.createItemStack(Items.rotten_flesh, EnumChatFormatting.GOLD + "Rev Slayer"));
- put("spider", Utils.createItemStack(Items.spider_eye, EnumChatFormatting.GOLD + "Tara Slayer"));
- put("wolf", Utils.createItemStack(Items.bone, EnumChatFormatting.GOLD + "Sven Slayer"));
- put("enderman", Utils.createItemStack(Items.ender_pearl, EnumChatFormatting.GOLD + "Ender Slayer"));
- put("blaze", Utils.createItemStack(Items.blaze_rod, EnumChatFormatting.GOLD + "Blaze Slayer"));
- }
- };
+ private static final ImmutableMap<String, String> petRarityToNumMap =
+ ImmutableMap.<String, String>builder()
+ .put("COMMON", "0")
+ .put("UNCOMMON", "1")
+ .put("RARE", "2")
+ .put("EPIC", "3")
+ .put("LEGENDARY", "4")
+ .put("MYTHIC", "5")
+ .build();
+
+ private static final ImmutableMap<String, ItemStack> skillToSkillDisplayMap =
+ ImmutableMap.<String, ItemStack>builder()
+ .put("taming", Utils.createItemStack(Items.spawn_egg, EnumChatFormatting.LIGHT_PURPLE + "Taming"))
+ .put("mining", Utils.createItemStack(Items.stone_pickaxe, EnumChatFormatting.GRAY + "Mining"))
+ .put(
+ "foraging",
+ Utils.createItemStack(
+ Item.getItemFromBlock(Blocks.sapling),
+ EnumChatFormatting.DARK_GREEN + "Foraging"
+ )
+ )
+ .put(
+ "enchanting",
+ Utils.createItemStack(
+ Item.getItemFromBlock(Blocks.enchanting_table),
+ EnumChatFormatting.GREEN + "Enchanting"
+ )
+ )
+ .put(
+ "carpentry",
+ Utils.createItemStack(
+ Item.getItemFromBlock(Blocks.crafting_table),
+ EnumChatFormatting.DARK_RED + "Carpentry"
+ )
+ )
+ .put("farming", Utils.createItemStack(Items.golden_hoe, EnumChatFormatting.YELLOW + "Farming"))
+ .put("combat", Utils.createItemStack(Items.stone_sword, EnumChatFormatting.RED + "Combat"))
+ .put("fishing", Utils.createItemStack(Items.fishing_rod, EnumChatFormatting.AQUA + "Fishing"))
+ .put("alchemy", Utils.createItemStack(Items.brewing_stand, EnumChatFormatting.BLUE + "Alchemy"))
+ .put(
+ "runecrafting",
+ Utils.createItemStack(Items.magma_cream, EnumChatFormatting.DARK_PURPLE + "Runecrafting")
+ )
+ .put("social", Utils.createItemStack(Items.emerald, EnumChatFormatting.DARK_GREEN + "Social"))
+ .put("zombie", Utils.createItemStack(Items.rotten_flesh, EnumChatFormatting.GOLD + "Rev Slayer"))
+ .put("spider", Utils.createItemStack(Items.spider_eye, EnumChatFormatting.GOLD + "Tara Slayer"))
+ .put("wolf", Utils.createItemStack(Items.bone, EnumChatFormatting.GOLD + "Sven Slayer"))
+ .put("enderman", Utils.createItemStack(Items.ender_pearl, EnumChatFormatting.GOLD + "Ender Slayer"))
+ .put("blaze", Utils.createItemStack(Items.blaze_rod, EnumChatFormatting.GOLD + "Blaze Slayer"))
+ .build();
private static final ItemStack CAT_FARMING = Utils.createItemStack(
Items.golden_hoe,
EnumChatFormatting.YELLOW + "Farming"
@@ -452,7 +461,7 @@ public class ProfileViewer {
private final HashMap<String, Profile> uuidToProfileMap = new HashMap<>();
private final HashMap<String, String> nameToUuid = new HashMap<>();
- public ProfileViewer(NEUManager manager) {
+ public ProfileViewer(final NEUManager manager) {
this.manager = manager;
}
@@ -469,20 +478,20 @@ public class ProfileViewer {
}
public static Map<String, ItemStack> getSkillToSkillDisplayMap() {
- return Collections.unmodifiableMap(skillToSkillDisplayMap);
+ return skillToSkillDisplayMap;
}
- public static Level getLevel(JsonArray levelingArray, float xp, int levelCap, boolean cumulative) {
- Level levelObj = new Level();
+ public static Level getLevel(final JsonArray levelingArray, float xp, final int levelCap, final boolean cumulative) {
+ final Level levelObj = new Level();
levelObj.totalXp = xp;
levelObj.maxLevel = levelCap;
for (int level = 0; level < levelingArray.size(); level++) {
- float levelXp = levelingArray.get(level).getAsFloat();
+ final float levelXp = levelingArray.get(level).getAsFloat();
if (levelXp > xp) {
if (cumulative) {
- float previous = level > 0 ? levelingArray.get(level - 1).getAsFloat() : 0;
+ final float previous = level > 0 ? levelingArray.get(level - 1).getAsFloat() : 0;
levelObj.maxXpForLevel = (levelXp - previous);
levelObj.level = 1 + level + (xp - levelXp) / levelObj.maxXpForLevel;
} else {
@@ -526,8 +535,8 @@ public class ProfileViewer {
return null;
}
- public void getHypixelProfile(String name, Consumer<JsonObject> callback) {
- String nameF = name.toLowerCase();
+ public void getHypixelProfile(final String name, final Consumer<JsonObject> callback) {
+ final String nameF = name.toLowerCase();
manager.apiUtils
.newHypixelApiRequest("player")
.queryArgument("name", nameF)
@@ -552,12 +561,12 @@ public class ProfileViewer {
);
}
- public void putNameUuid(String name, String uuid) {
+ public void putNameUuid(final String name, final String uuid) {
nameToUuid.put(name, uuid);
}
- public void getPlayerUUID(String name, Consumer<String> uuidCallback) {
- String nameF = name.toLowerCase();
+ public void getPlayerUUID(final String name, final Consumer<String> uuidCallback) {
+ final String nameF = name.toLowerCase();
if (nameToUuid.containsKey(nameF)) {
uuidCallback.accept(nameToUuid.get(nameF));
return;
@@ -570,7 +579,7 @@ public class ProfileViewer {
.thenAccept(jsonObject -> {
if (jsonObject.has("id") && jsonObject.get("id").isJsonPrimitive() &&
((JsonPrimitive) jsonObject.get("id")).isString()) {
- String uuid = jsonObject.get("id").getAsString();
+ final String uuid = jsonObject.get("id").getAsString();
nameToUuid.put(nameF, uuid);
uuidCallback.accept(uuid);
return;
@@ -579,8 +588,8 @@ public class ProfileViewer {
});
}
- public void getProfileByName(String name, Consumer<Profile> callback) {
- String nameF = name.toLowerCase();
+ public void getProfileByName(final String name, final Consumer<Profile> callback) {
+ final String nameF = name.toLowerCase();
if (nameToUuid.containsKey(nameF) && nameToUuid.get(nameF) == null) {
callback.accept(null);
@@ -612,8 +621,8 @@ public class ProfileViewer {
);
}
- public Profile getProfile(String uuid, Consumer<Profile> callback) {
- Profile profile = uuidToProfileMap.computeIfAbsent(uuid, k -> new Profile(uuid));
+ public Profile getProfile(final String uuid, final Consumer<Profile> callback) {
+ final Profile profile = uuidToProfileMap.computeIfAbsent(uuid, k -> new Profile(uuid));
if (profile.skyblockProfiles != null) {
callback.accept(profile);
} else {
@@ -622,7 +631,7 @@ public class ProfileViewer {
return profile;
}
- public Profile getProfileReset(String uuid, Consumer<Profile> callback) {
+ public Profile getProfileReset(final String uuid, final Consumer<Profile> callback) {
if (uuidToProfileMap.containsKey(uuid)) uuidToProfileMap.get(uuid).resetCache();
return getProfile(uuid, callback);
}
@@ -668,7 +677,7 @@ public class ProfileViewer {
private long lastGuildInfoState = 0;
private long lastBingoInfoState = 0;
- public Profile(String uuid) {
+ public Profile(final String uuid) {
this.uuid = uuid;
}
@@ -676,12 +685,12 @@ public class ProfileViewer {
if (playerStatus != null) return playerStatus;
if (updatingPlayerStatusState.get()) return null;
- long currentTime = System.currentTimeMillis();
+ final long currentTime = System.currentTimeMillis();
if (currentTime - lastStatusInfoState < 15 * 1000) return null;
lastStatusInfoState = currentTime;
updatingPlayerStatusState.set(true);
- HashMap<String, String> args = new HashMap<>();
+ final HashMap<String, String> args = new HashMap<>();
args.put("uuid", "" + uuid);
manager.apiUtils
.newHypixelApiRequest("status")
@@ -699,8 +708,9 @@ public class ProfileViewer {
}
public JsonObject getBingoInformation() {
- long currentTime = System.currentTimeMillis();
- if (bingoInformation != null && currentTime - lastBingoInfoState < 15 * 1000) return bingoInformation;
+ final long currentTime = System.currentTimeMillis();
+ if (bingoInformation != null && currentTime -
+ lastBingoInfoState < 15 * 1000) return bingoInformation;
if (updatingBingoInfo.get() && bingoInformation != null) return bingoInformation;
if (updatingBingoInfo.get() && bingoInformation == null) return null;
@@ -725,11 +735,11 @@ public class ProfileViewer {
}
public class SoopyNetworthData {
- private HashMap<String, Long> categoryWorth;
+ private final HashMap<String, Long> categoryWorth;
private Long totalWorth;
- private String[] keys;
+ private final String[] keys;
- SoopyNetworthData(JsonObject nwData) {
+ SoopyNetworthData(final JsonObject nwData) {
categoryWorth = new HashMap<>();
if (nwData == null || nwData.isJsonNull()) {
@@ -744,7 +754,7 @@ public class ProfileViewer {
}
totalWorth = nwData.get("total").getAsLong();
- for (Map.Entry<String, JsonElement> entry : nwData.get("categories").getAsJsonObject().entrySet()) {
+ for (final Map.Entry<String, JsonElement> entry : nwData.get("categories").getAsJsonObject().entrySet()) {
if (entry.getValue().isJsonNull()) {
continue;
}
@@ -768,7 +778,7 @@ public class ProfileViewer {
return totalWorth;
}
- public long getCategory(String name) {
+ public long getCategory(final String name) {
if (categoryWorth.containsKey(name)) return categoryWorth.get(name);
return 0;
}
@@ -792,16 +802,16 @@ public class ProfileViewer {
return soopyWeightLeaderboardPosition;
}
- public boolean isProfileMaxSoopyWeight(ProfileViewer.Profile profile, String profileName) {
+ public boolean isProfileMaxSoopyWeight(final ProfileViewer.Profile profile, final String profileName) {
String highestProfileName = "";
double largestProfileWeight = 0;
for (int yIndex = 0; yIndex < profileNames.size(); yIndex++) {
- String otherProfileId = profileNames.get(yIndex);
- Map<String, ProfileViewer.Level> skyblockInfo = profile.getSkyblockInfo(otherProfileId);
+ final String otherProfileId = profileNames.get(yIndex);
+ final Map<String, ProfileViewer.Level> skyblockInfo = profile.getSkyblockInfo(otherProfileId);
if (skyblockInfo == null) continue;
- SenitherWeight senitherWeight = new SenitherWeight(skyblockInfo);
- double weightValue = senitherWeight.getTotalWeight().getRaw();
+ final SenitherWeight senitherWeight = new SenitherWeight(skyblockInfo);
+ final double weightValue = senitherWeight.getTotalWeight().getRaw();
if (weightValue > largestProfileWeight) {
largestProfileWeight = weightValue;
@@ -816,14 +826,14 @@ public class ProfileViewer {
* Returns SoopyNetworthData with total = -1 if error
* Returns null if still loading
*/
- public SoopyNetworthData getSoopyNetworth(String profileName, Runnable callback) {
+ public SoopyNetworthData getSoopyNetworth(String profileName, final Runnable callback) {
if (profileName == null) profileName = latestProfile;
if (soopyNetworth.get(profileName) != null) {
callback.run();
return soopyNetworth.get(profileName);
}
- JsonArray playerInfo = getSkyblockProfiles(() -> {});
+ final JsonArray playerInfo = getSkyblockProfiles(() -> {});
if (playerInfo == null)
return null; //Not sure how to support the callback in these cases
if (updatingSoopyNetworth.get())
@@ -833,7 +843,7 @@ public class ProfileViewer {
soopyNetworthLeaderboardPosition = -2; //loading
manager.apiUtils
.request()
- .url("https://soopy.dev/api/v2/leaderboard/networth/user/" + this.uuid)
+ .url("https://soopy.dev/api/v2/leaderboard/networth/user/" + uuid)
.requestJson()
.handle((jsonObject, throwable) -> {
if (throwable != null) throwable.printStackTrace();
@@ -854,7 +864,7 @@ public class ProfileViewer {
soopyWeightLeaderboardPosition = -2; //loading
manager.apiUtils
.request()
- .url("https://soopy.dev/api/v2/leaderboard/weight/user/" + this.uuid)
+ .url("https://soopy.dev/api/v2/leaderboard/weight/user/" + uuid)
.requestJson()
.handle((jsonObject, throwable) -> {
if (throwable != null) throwable.printStackTrace();
@@ -874,7 +884,7 @@ public class ProfileViewer {
manager.apiUtils
.request()
- .url("https://soopy.dev/api/v2/player_networth/" + this.uuid)
+ .url("https://soopy.dev/api/v2/player_networth/" + uuid)
.method("POST")
.postData("application/json", skyblockProfiles.toString())
.requestJson()
@@ -887,9 +897,9 @@ public class ProfileViewer {
if (!skyblockProfiles.get(i).isJsonObject()) {
return null;
}
- JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
+ final JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
- String cuteName = profile.get("cute_name").getAsString();
+ final String cuteName = profile.get("cute_name").getAsString();
soopyNetworth.put(cuteName, new SoopyNetworthData(null));
}
@@ -903,19 +913,22 @@ public class ProfileViewer {
if (!skyblockProfiles.get(i).isJsonObject()) {
return null;
}
- JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
+ final JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
- String cuteName = profile.get("cute_name").getAsString();
- String profileId = profile.get("profile_id").getAsString();
+ final String cuteName = profile.get("cute_name").getAsString();
+ final String profileId = profile.get("profile_id").getAsString();
- SoopyNetworthData networth;
+ final SoopyNetworthData soopyNetworthData;
if (jsonObject.getAsJsonObject("data").get(profileId).isJsonNull()) {
- networth = new SoopyNetworthData(null);
+ soopyNetworthData = new SoopyNetworthData(null);
} else {
- networth = new SoopyNetworthData(jsonObject.getAsJsonObject("data").get(profileId).getAsJsonObject());
+ soopyNetworthData = new SoopyNetworthData(jsonObject
+ .getAsJsonObject("data")
+ .get(profileId)
+ .getAsJsonObject());
}
- soopyNetworth.put(cuteName, networth);
+ soopyNetworth.put(cuteName, soopyNetworthData);
}
updatingSoopyNetworth.set(false);
@@ -931,73 +944,53 @@ public class ProfileViewer {
if (getProfileInformation(profileName) == null) return -1;
if (getInventoryInfo(profileName) == null) return -1;
- JsonObject inventoryInfo = getInventoryInfo(profileName);
- JsonObject profileInfo = getProfileInformation(profileName);
+ final JsonObject inventoryInfo = getInventoryInfo(profileName);
+ final JsonObject profileInfo = getProfileInformation(profileName);
- HashMap<String, Long> mostExpensiveInternal = new HashMap<>();
+ final HashMap<String, Long> mostExpensiveInternal = new HashMap<>();
- long networth = 0;
- for (Map.Entry<String, JsonElement> entry : inventoryInfo.entrySet()) {
+ long playerNetworth = 0;
+ for (final Map.Entry<String, JsonElement> entry : inventoryInfo.entrySet()) {
if (entry.getValue().isJsonArray()) {
- for (JsonElement element : entry.getValue().getAsJsonArray()) {
+ for (final JsonElement element : entry.getValue().getAsJsonArray()) {
if (element != null && element.isJsonObject()) {
- JsonObject item = element.getAsJsonObject();
- String internalname = item.get("internalname").getAsString();
+ final JsonObject item = element.getAsJsonObject();
+ final String internalname = item.get("internalname").getAsString();
if (manager.auctionManager.isVanillaItem(internalname)) continue;
- JsonObject bzInfo = manager.auctionManager.getBazaarInfo(internalname);
-
- long auctionPrice;
- if (bzInfo != null && bzInfo.has("curr_sell")) {
- auctionPrice = (int) bzInfo.get("curr_sell").getAsFloat();
- } else {
- auctionPrice = (long) manager.auctionManager.getItemAvgBin(internalname);
- if (auctionPrice <= 0) {
- auctionPrice = manager.auctionManager.getLowestBin(internalname);
- }
- }
+ final long auctionPrice = getAuctionPriceHelper(internalname);
try {
if (item.has("item_contents")) {
- JsonArray bytesArr = item.get("item_contents").getAsJsonArray();
- byte[] bytes = new byte[bytesArr.size()];
+ final JsonArray bytesArr = item.get("item_contents").getAsJsonArray();
+ final byte[] bytes = new byte[bytesArr.size()];
for (int bytesArrI = 0; bytesArrI < bytesArr.size(); bytesArrI++) {
bytes[bytesArrI] = bytesArr.get(bytesArrI).getAsByte();
}
- NBTTagCompound contents_nbt = CompressedStreamTools.readCompressed(new ByteArrayInputStream(bytes));
- NBTTagList items = contents_nbt.getTagList("i", 10);
+ final NBTTagCompound contents_nbt = CompressedStreamTools.readCompressed(new ByteArrayInputStream(
+ bytes));
+ final NBTTagList items = contents_nbt.getTagList("i", 10);
for (int j = 0; j < items.tagCount(); j++) {
- if (items.getCompoundTagAt(j).getKeySet().size() > 0) {
- NBTTagCompound nbt = items.getCompoundTagAt(j).getCompoundTag("tag");
- String internalname2 = manager.getInternalnameFromNBT(nbt);
+ if (!items.getCompoundTagAt(j).getKeySet().isEmpty()) {
+ final NBTTagCompound nbt = items.getCompoundTagAt(j).getCompoundTag("tag");
+ final String internalname2 = manager.getInternalnameFromNBT(nbt);
if (internalname2 != null) {
if (manager.auctionManager.isVanillaItem(internalname2)) continue;
- JsonObject bzInfo2 = manager.auctionManager.getBazaarInfo(internalname2);
-
- long auctionPrice2;
- if (bzInfo2 != null && bzInfo2.has("curr_sell")) {
- auctionPrice2 = (int) bzInfo2.get("curr_sell").getAsFloat();
- } else {
- auctionPrice2 = (long) manager.auctionManager.getItemAvgBin(internalname2);
- if (auctionPrice2 <= 0) {
- auctionPrice2 = manager.auctionManager.getLowestBin(internalname2);
- }
- }
-
- int count2 = items.getCompoundTagAt(j).getByte("Count");
+ final long auctionPrice2 = getAuctionPriceHelper(internalname2);
+ final int count2 = items.getCompoundTagAt(j).getByte("Count");
mostExpensiveInternal.put(
internalname2,
auctionPrice2 * count2 + mostExpensiveInternal.getOrDefault(internalname2, 0L)
);
- networth += auctionPrice2 * count2;
+ playerNetworth += auctionPrice2 * count2;
}
}
}
}
- } catch (IOException ignored) {
+ } catch (final IOException ignored) {
}
int count = 1;
@@ -1008,56 +1001,68 @@ public class ProfileViewer {
internalname,
auctionPrice * count + mostExpensiveInternal.getOrDefault(internalname, 0L)
);
- networth += auctionPrice * count;
+ playerNetworth += auctionPrice * count;
}
}
}
}
- if (networth == 0) return -1;
-
- networth = (int) (networth * 1.3f);
-
- JsonObject petsInfo = getPetsInfo(profileName);
- if (petsInfo != null && petsInfo.has("pets")) {
- if (petsInfo.get("pets").isJsonArray()) {
- JsonArray pets = petsInfo.get("pets").getAsJsonArray();
- for (JsonElement element : pets) {
- if (element.isJsonObject()) {
- JsonObject pet = element.getAsJsonObject();
-
- String petname = pet.get("type").getAsString();
- String tier = pet.get("tier").getAsString();
- String tierNum = petRarityToNumMap.get(tier);
- if (tierNum != null) {
- String internalname2 = petname + ";" + tierNum;
- JsonObject info2 = manager.auctionManager.getItemAuctionInfo(internalname2);
- if (info2 == null || !info2.has("price") || !info2.has("count")) continue;
- int auctionPrice2 = (int) (info2.get("price").getAsFloat() / info2.get("count").getAsFloat());
-
- networth += auctionPrice2;
- }
+ if (playerNetworth == 0) return -1;
+
+ playerNetworth = (int) (playerNetworth * 1.3f);
+
+ final JsonObject petsInfo = getPetsInfo(profileName);
+ if (petsInfo != null && petsInfo.has("pets") && petsInfo.get("pets").isJsonArray()) {
+ final JsonArray pets = petsInfo.get("pets").getAsJsonArray();
+ for (final JsonElement element : pets) {
+ if (element.isJsonObject()) {
+ final JsonObject pet = element.getAsJsonObject();
+
+ final String petname = pet.get("type").getAsString();
+ final String tier = pet.get("tier").getAsString();
+ final String tierNum = petRarityToNumMap.get(tier);
+ if (tierNum != null) {
+ final String internalname2 = petname + ";" + tierNum;
+ final JsonObject info2 = manager.auctionManager.getItemAuctionInfo(internalname2);
+ if (info2 == null || !info2.has("price") || !info2.has("count")) continue;
+ final int auctionPrice2 = (int) (info2.get("price").getAsFloat() / info2.get("count").getAsFloat());
+
+ playerNetworth += auctionPrice2;
}
}
}
}
- float bankBalance = Utils.getElementAsFloat(Utils.getElement(profileInfo, "banking.balance"), 0);
- float purseBalance = Utils.getElementAsFloat(Utils.getElement(profileInfo, "coin_purse"), 0);
+ final float bankBalance = Utils.getElementAsFloat(Utils.getElement(profileInfo, "banking.balance"), 0);
+ final float purseBalance = Utils.getElementAsFloat(Utils.getElement(profileInfo, "coin_purse"), 0);
- networth += bankBalance + purseBalance;
+ playerNetworth += bankBalance + purseBalance;
- this.networth.put(profileName, networth);
- return networth;
+ networth.put(profileName, playerNetworth);
+ return playerNetworth;
+ }
+
+ private long getAuctionPriceHelper(final String internalname) {
+ final JsonObject bzInfo = manager.auctionManager.getBazaarInfo(internalname);
+
+ if (bzInfo != null && bzInfo.has("curr_sell")) {
+ return (int) bzInfo.get("curr_sell").getAsFloat();
+ } else {
+ final long auctionPrice = (long) manager.auctionManager.getItemAvgBin(internalname);
+ if (auctionPrice <= 0) {
+ return manager.auctionManager.getLowestBin(internalname);
+ }
+ return auctionPrice;
+ }
}
public String getLatestProfile() {
return latestProfile;
}
- public JsonArray getSkyblockProfiles(Runnable runnable) {
+ public JsonArray getSkyblockProfiles(final Runnable runnable) {
if (skyblockProfiles != null) return skyblockProfiles;
- long currentTime = System.currentTimeMillis();
+ final long currentTime = System.currentTimeMillis();
if (currentTime - lastPlayerInfoState < 15 * 1000 && updatingSkyblockProfilesState.get()) return null;
lastPlayerInfoState = currentTime;
@@ -1078,22 +1083,21 @@ public class ProfileViewer {
profileNames.clear();
- for (JsonElement profileEle : skyblockProfiles) {
- JsonObject profile = profileEle.getAsJsonObject();
+ for (final JsonElement profileEle : skyblockProfiles) {
+ final JsonObject profile = profileEle.getAsJsonObject();
if (!profile.has("members")) continue;
- JsonObject members = profile.get("members").getAsJsonObject();
+ final JsonObject members = profile.get("members").getAsJsonObject();
if (members.has(uuid)) {
- JsonObject member = members.get(uuid).getAsJsonObject();
+ final JsonObject member = members.get(uuid).getAsJsonObject();
- if (member.has("coop_invitation")) {
- if (!member.get("coop_invitation").getAsJsonObject().get("confirmed").getAsBoolean()) {
- continue;
- }
+ if (member.has("coop_invitation") &&
+ !member.get("coop_invitation").getAsJsonObject().get("confirmed").getAsBoolean()) {
+ continue;
}
- String cuteName = profile.get("cute_name").getAsString();
+ final String cuteName = profile.get("cute_name").getAsString();
profileNames.add(cuteName);
if (profile.has("selected") && profile.get("selected").getAsBoolean()) {
lastCuteName = cuteName;
@@ -1109,10 +1113,10 @@ public class ProfileViewer {
return null;
}
- public JsonObject getGuildInformation(Runnable runnable) {
+ public JsonObject getGuildInformation(final Runnable runnable) {
if (guildInformation != null) return guildInformation;
- long currentTime = System.currentTimeMillis();
+ final long currentTime = System.currentTimeMillis();
if (currentTime - lastGuildInfoState < 15 * 1000 && updatingGuildInfoState.get()) return null;
lastGuildInfoState = currentTime;
@@ -1142,7 +1146,7 @@ public class ProfileViewer {
}
public JsonObject getProfileInformation(String profileName) {
- JsonArray playerInfo = getSkyblockProfiles(() -> {});
+ final JsonArray playerInfo = getSkyblockProfiles(() -> {});
if (playerInfo == null) return null;
if (profileName == null) profileName = latestProfile;
if (profileMap.containsKey(profileName)) return profileMap.get(profileName);
@@ -1152,12 +1156,12 @@ public class ProfileViewer {
skyblockProfiles = null;
return null;
}
- JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
+ final JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
if (profile.get("cute_name").getAsString().equalsIgnoreCase(profileName)) {
if (!profile.has("members")) return null;
- JsonObject members = profile.get("members").getAsJsonObject();
+ final JsonObject members = profile.get("members").getAsJsonObject();
if (!members.has(uuid)) continue;
- JsonObject profileInfo = members.get(uuid).getAsJsonObject();
+ final JsonObject profileInfo = members.get(uuid).getAsJsonObject();
if (profile.has("banking")) {
profileInfo.add("banking", profile.get("banking").getAsJsonObject());
}
@@ -1173,25 +1177,25 @@ public class ProfileViewer {
}
public List<JsonObject> getCoopProfileInformation(String profileName) {
- JsonArray playerInfo = getSkyblockProfiles(() -> {});
- if (playerInfo == null) return null;
+ final JsonArray playerInfo = getSkyblockProfiles(() -> {});
+ if (playerInfo == null) return Collections.emptyList();
if (profileName == null) profileName = latestProfile;
if (coopProfileMap.containsKey(profileName)) return coopProfileMap.get(profileName);
for (int i = 0; i < skyblockProfiles.size(); i++) {
if (!skyblockProfiles.get(i).isJsonObject()) {
skyblockProfiles = null;
- return null;
+ return Collections.emptyList();
}
- JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
+ final JsonObject profile = skyblockProfiles.get(i).getAsJsonObject();
if (profile.get("cute_name").getAsString().equalsIgnoreCase(profileName)) {
- if (!profile.has("members")) return null;
- JsonObject members = profile.get("members").getAsJsonObject();
- if (!members.has(uuid)) return null;
- List<JsonObject> coopList = new ArrayList<>();
- for (Map.Entry<String, JsonElement> islandMember : members.entrySet()) {
+ if (!profile.has("members")) return Collections.emptyList();
+ final JsonObject members = profile.get("members").getAsJsonObject();
+ if (!members.has(uuid)) return Collections.emptyList();
+ final List<JsonObject> coopList = new ArrayList<>();
+ for (final Map.Entry<String, JsonElement> islandMember : members.entrySet()) {
if (!islandMember.getKey().equals(uuid)) {
- JsonObject coopProfileInfo = islandMember.getValue().getAsJsonObject();
+ final JsonObject coopProfileInfo = islandMember.getValue().getAsJsonObject();
coopList.add(coopProfileInfo);
}
}
@@ -1200,7 +1204,7 @@ public class ProfileViewer {
}
}
- return null;
+ return Collections.emptyList();
}
public void resetCache() {
@@ -1219,30 +1223,30 @@ public class ProfileViewer {
networth.clear();
}
- public int getCap(JsonObject leveling, String skillName) {
- JsonElement capsElement = Utils.getElement(leveling, "leveling_caps");
+ public int getCap(final JsonObject leveling, final String skillName) {
+ final JsonElement capsElement = Utils.getElement(leveling, "leveling_caps");
return capsElement != null && capsElement.isJsonObject() && capsElement.getAsJsonObject().has(skillName)
? capsElement.getAsJsonObject().get(skillName).getAsInt()
: 50;
}
public Map<String, Level> getSkyblockInfo(String profileName) {
- JsonObject profileInfo = getProfileInformation(profileName);
+ final JsonObject profileInfo = getProfileInformation(profileName);
- if (profileInfo == null) return null;
+ if (profileInfo == null) return Collections.emptyMap();
if (profileName == null) profileName = latestProfile;
- List<JsonObject> coopProfileInfo = getCoopProfileInformation(profileName);
+ final List<JsonObject> coopProfileInfo = getCoopProfileInformation(profileName);
if (skyblockInfoCache.containsKey(profileName)) return skyblockInfoCache.get(profileName);
- JsonObject leveling = Constants.LEVELING;
+ final JsonObject leveling = Constants.LEVELING;
if (leveling == null || !leveling.has("social")) {
Utils.showOutdatedRepoNotification();
- return null;
+ return Collections.emptyMap();
}
- Map<String, Level> out = new HashMap<>();
+ final Map<String, Level> out = new HashMap<>();
- List<String> skills = Arrays.asList(
+ final List<String> skills = Arrays.asList(
"taming",
"mining",
"foraging",
@@ -1256,14 +1260,14 @@ public class ProfileViewer {
"social"
);
float totalSkillXP = 0;
- for (String skillName : skills) {
+ for (final String skillName : skills) {
float skillExperience = Utils.getElementAsFloat(
Utils.getElement(profileInfo, "experience_skill_" + (skillName.equals("social") ? "social2" : skillName)),
0
);
// Get the coop's social skill experience since social is a shared skill
if (skillName.equals("social")) {
- for (JsonObject coopProfile : coopProfileInfo) {
+ for (final JsonObject coopProfile : coopProfileInfo) {
skillExperience += Utils.getElementAsFloat(
Utils.getElement(coopProfile, "experience_skill_social2"),
0
@@ -1279,7 +1283,7 @@ public class ProfileViewer {
levelingArray = Utils.getElement(leveling, "social").getAsJsonArray();
}
- int maxLevel =
+ final int maxLevel =
getCap(leveling, skillName) +
(
skillName.equals("farming")
@@ -1291,7 +1295,7 @@ public class ProfileViewer {
// Skills API disabled?
if (totalSkillXP <= 0) {
- return null;
+ return Collections.emptyMap();
}
out.put(
@@ -1314,9 +1318,9 @@ public class ProfileViewer {
)
);
- List<String> dungeonClasses = Arrays.asList("healer", "tank", "mage", "archer", "berserk");
- for (String className : dungeonClasses) {
- float classExperience = Utils.getElementAsFloat(
+ final List<String> dungeonClasses = Arrays.asList("healer", "tank", "mage", "archer", "berserk");
+ for (final String className : dungeonClasses) {
+ final float classExperience = Utils.getElementAsFloat(
Utils.getElement(profileInfo, "dungeons.player_classes." + className + ".experience"),
0
);
@@ -1331,9 +1335,9 @@ public class ProfileViewer {
);
}
- List<String> slayers = Arrays.asList("zombie", "spider", "wolf", "enderman", "blaze");
- for (String slayerName : slayers) {
- float slayerExperience = Utils.getElementAsFloat(Utils.getElement(
+ final List<String> slayers = Arrays.asList("zombie", "spider", "wolf", "enderman", "blaze");
+ for (final String slayerName : slayers) {
+ final float slayerExperience = Utils.getElementAsFloat(Utils.getElement(
profileInfo,
"slayer_bosses." + slayerName + ".xp"
), 0);
@@ -1349,64 +1353,64 @@ public class ProfileViewer {
}
public JsonObject getInventoryInfo(String profileName) {
- JsonObject profileInfo = getProfileInformation(profileName);
+ final JsonObject profileInfo = getProfileInformation(profileName);
if (profileInfo == null) return null;
if (profileName == null) profileName = latestProfile;
if (inventoryCacheMap.containsKey(profileName)) return inventoryCacheMap.get(profileName);
- String inv_armor_bytes = Utils.getElementAsString(
+ final String inv_armor_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "inv_armor.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String fishing_bag_bytes = Utils.getElementAsString(
+ final String fishing_bag_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "fishing_bag.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String quiver_bytes = Utils.getElementAsString(
+ final String quiver_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "quiver.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String ender_chest_contents_bytes = Utils.getElementAsString(
+ final String ender_chest_contents_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "ender_chest_contents.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
//Todo clean this up
//Fake string is so for I loop works the same
- String backpack_contents_json_fake = "fake should fix later";
- JsonObject backpack_contents_json = (JsonObject) Utils.getElement(profileInfo, "backpack_contents");
- JsonObject backpack_icons = (JsonObject) Utils.getElement(profileInfo, "backpack_icons");
- String personal_vault_contents_bytes = Utils.getElementAsString(
+ final String backpack_contents_json_fake = "fake should fix later";
+ final JsonObject backpack_contents_json = (JsonObject) Utils.getElement(profileInfo, "backpack_contents");
+ final JsonObject backpack_icons = (JsonObject) Utils.getElement(profileInfo, "backpack_icons");
+ final String personal_vault_contents_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "personal_vault_contents.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String wardrobe_contents_bytes = Utils.getElementAsString(
+ final String wardrobe_contents_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "wardrobe_contents.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String potion_bag_bytes = Utils.getElementAsString(
+ final String potion_bag_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "potion_bag.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String inv_contents_bytes = Utils.getElementAsString(
+ final String inv_contents_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "inv_contents.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String talisman_bag_bytes = Utils.getElementAsString(
+ final String talisman_bag_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "talisman_bag.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="
);
- String candy_inventory_contents_bytes = Utils.getElementAsString(
+ final String candy_inventory_contents_bytes = Utils.getElementAsString(
Utils.getElement(profileInfo, "candy_inventory_contents.data"),
"Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="