diff options
| author | Walker Selby <git@walkerselby.com> | 2023-01-01 10:41:51 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-01 19:41:51 +0100 |
| commit | adc3222fae3dc66c56ccede50c62ff741929be16 (patch) | |
| tree | 8dff352e8b6cc925b8ecf54d834fa70eabab640e /src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java | |
| parent | f05b6fdfd1b699d84fb04018b707d1485052f718 (diff) | |
| download | notenoughupdates-adc3222fae3dc66c56ccede50c62ff741929be16.tar.gz notenoughupdates-adc3222fae3dc66c56ccede50c62ff741929be16.tar.bz2 notenoughupdates-adc3222fae3dc66c56ccede50c62ff741929be16.zip | |
Some PV Cleanup (#520)
* Remove Unused Import "org.luaj.vm2.ast.Str"
Add final keyword in various places, creating slight performance increases
* Refactoring, Error Prevention, and Duplicate Code Simplification
Rename "stats" declared in line 1723 to "playerStats" to avoid hiding the "stats" field declared at line 648.
Rename "passiveStats" declared in line 1723 to "passivePlayerStats" to avoid hiding the "passiveStats" field declared at line 649.
Rename "networth" declared in line 939 to "playerNetworth" to avoid hiding the "networth" field declared at line 650.
Rename "networth" declared in line 910 to "soopyNetworthData" to avoid hiding the "networth" field declared at line 650.
soopyNetworthData
Change if check to "isEmpty" rather than size() > 0
Add function getAuctionPriceHelper to increase readability and decrease duplicate code
Replaced null with Empty Collections in some cases, to make caller logic simpler
Remove commented code for Catacombs in skilltoSkillDesiplayMap
Merge if statementes with their enclosing if statements, as they were unnecessarily nested.
* Redefine petRarityToNumMap and skillToSkillDisplayMap as ImmutableMaps rather than HashMap and LinkedHashMap respectively due to their immutable nature.
* Fix typo in SkyCrypt capilization
Add final to some variables for improved performance.
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.java | 630 |
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"), |
