diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java | 205 | ||||
-rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java | 630 |
2 files changed, 430 insertions, 405 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java index 4bf65cc6..de5d384a 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java @@ -171,7 +171,10 @@ public class GuiProfileViewer extends GuiScreen { ); public final GuiElementTextField playerNameTextField; public final GuiElementTextField inventoryTextField = new GuiElementTextField("", GuiElementTextField.SCALE_TEXT); - public final GuiElementTextField killDeathSearchTextField = new GuiElementTextField("", GuiElementTextField.SCALE_TEXT); + public final GuiElementTextField killDeathSearchTextField = new GuiElementTextField( + "", + GuiElementTextField.SCALE_TEXT + ); private final Map<ProfileViewerPage, GuiProfileViewerPage> pages = new HashMap<>(); public int sizeX; public int sizeY; @@ -189,7 +192,7 @@ public class GuiProfileViewer extends GuiScreen { private double lastBgBlurFactor = -1; private boolean showBingoPage; - public GuiProfileViewer(ProfileViewer.Profile profile) { + public GuiProfileViewer(final ProfileViewer.Profile profile) { GuiProfileViewer.profile = profile; GuiProfileViewer.profileId = profile.getLatestProfile(); String name = ""; @@ -216,7 +219,7 @@ public class GuiProfileViewer extends GuiScreen { pages.put(ProfileViewerPage.CRIMSON_ISLE, new CrimsonIslePage(this)); } - private static float getMaxLevelXp(JsonArray levels, int offset, int maxLevel) { + private static float getMaxLevelXp(final JsonArray levels, final int offset, final int maxLevel) { float xpTotal = 0; for (int i = offset; i < offset + maxLevel - 1; i++) { @@ -227,7 +230,7 @@ public class GuiProfileViewer extends GuiScreen { } @Deprecated - public static String shortNumberFormat(double n, int iteration) { + public static String shortNumberFormat(final double n, final int iteration) { return StringUtils.shortNumberFormat(n, iteration ); } @@ -249,7 +252,7 @@ public class GuiProfileViewer extends GuiScreen { } @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { + public void drawScreen(final int mouseX, final int mouseY, final float partialTicks) { currentTime = System.currentTimeMillis(); if (startTime == 0) startTime = currentTime; @@ -272,10 +275,10 @@ public class GuiProfileViewer extends GuiScreen { } } - this.sizeX = 431; - this.sizeY = 202; - guiLeft = (this.width - this.sizeX) / 2; - guiTop = (this.height - this.sizeY) / 2; + sizeX = 431; + sizeY = 202; + guiLeft = (width - sizeX) / 2; + guiTop = (height - sizeY) / 2; JsonObject currProfileInfo = profile != null ? profile.getProfileInformation(profileId) : null; if (NotEnoughUpdates.INSTANCE.config.profileViewer.alwaysShowBingoTab) { @@ -317,7 +320,7 @@ public class GuiProfileViewer extends GuiScreen { if (!(page == ProfileViewerPage.LOADING)) { playerNameTextField.render(guiLeft + sizeX - 100, guiTop + sizeY + 5); - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + final ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); if (profile != null) { //Render Profile chooser button @@ -375,8 +378,10 @@ public class GuiProfileViewer extends GuiScreen { Minecraft.getMinecraft().getTextureManager().bindTexture(pv_unknown); Utils.drawTexturedRect(guiLeft - 16 - 5, guiTop + sizeY + 5, 16, 16, GL11.GL_NEAREST); } - //Render Open In Skycrypt button - renderBlurredBackground(width, height, guiLeft + 100 + 6 + 2, guiTop + sizeY + 3 + 2, 100 - 4, 20 - 4); + //Render Open In SkyCrypt button + renderBlurredBackground( + width, + height, guiLeft + 100 + 6 + 2, guiTop + sizeY + 3 + 2, 100 - 4, 20 - 4); Minecraft.getMinecraft().getTextureManager().bindTexture(pv_dropdown); Utils.drawTexturedRect( guiLeft + 100 + 6, @@ -390,7 +395,7 @@ public class GuiProfileViewer extends GuiScreen { GL11.GL_NEAREST ); Utils.drawStringCenteredScaledMaxWidth( - "Open in Skycrypt", + "Open in SkyCrypt", Minecraft.getMinecraft().fontRendererObj, guiLeft + 50 + 100 + 6, guiTop + sizeY + 3 + 10, @@ -399,12 +404,15 @@ public class GuiProfileViewer extends GuiScreen { new Color(63, 224, 208, 255).getRGB() ); - if (profileDropdownSelected && !profile.getProfileNames().isEmpty() && scaledResolution.getScaleFactor() < 4) { - int dropdownOptionSize = scaledResolution.getScaleFactor() == 3 ? 10 : 20; - - int numProfiles = profile.getProfileNames().size(); - int sizeYDropdown = numProfiles * dropdownOptionSize; - renderBlurredBackground(width, height, guiLeft + 2, guiTop + sizeY + 23, 100 - 4, sizeYDropdown - 2); + if ( + profileDropdownSelected && !profile.getProfileNames().isEmpty() && scaledResolution.getScaleFactor() < 4) { + final int dropdownOptionSize = scaledResolution.getScaleFactor() == 3 ? 10 : 20; + + final int numProfiles = profile.getProfileNames().size(); + final int sizeYDropdown = numProfiles * dropdownOptionSize; + renderBlurredBackground( + width, + height, guiLeft + 2, guiTop + sizeY + 23, 100 - 4, sizeYDropdown - 2); Minecraft.getMinecraft().getTextureManager().bindTexture(pv_dropdown); Utils.drawTexturedRect(guiLeft, guiTop + sizeY + 23 - 3, 100, 3, 100 / 200f, 1, 0, 3 / 185f, GL11.GL_NEAREST); Utils.drawTexturedRect( @@ -431,7 +439,7 @@ public class GuiProfileViewer extends GuiScreen { ); for (int yIndex = 0; yIndex < profile.getProfileNames().size(); yIndex++) { - String otherProfileId = profile.getProfileNames().get(yIndex); + final String otherProfileId = profile.getProfileNames().get(yIndex); Utils.drawStringCenteredScaledMaxWidth( otherProfileId, Minecraft.getMinecraft().fontRendererObj, @@ -517,7 +525,7 @@ public class GuiProfileViewer extends GuiScreen { switch (page) { case LOADING: String str = EnumChatFormatting.YELLOW + "Loading player profiles."; - long currentTimeMod = System.currentTimeMillis() % 1000; + final long currentTimeMod = System.currentTimeMillis() % 1000; if (currentTimeMod > 333) { if (currentTimeMod < 666) { str += "."; @@ -537,7 +545,7 @@ public class GuiProfileViewer extends GuiScreen { //This is just here to inform the player what to do //like typing /api new or telling them to go find a psychotherapist - long timeDiff = System.currentTimeMillis() - startTime; + final long timeDiff = System.currentTimeMillis() - startTime; if (timeDiff > 20000) { Utils.drawStringCentered( @@ -575,11 +583,11 @@ public class GuiProfileViewer extends GuiScreen { 0 ); if (timeDiff > 360000) { - long second = (timeDiff / 1000) % 60; - long minute = (timeDiff / (1000 * 60)) % 60; - long hour = (timeDiff / (1000 * 60 * 60)) % 24; + final long second = (timeDiff / 1000) % 60; + final long minute = (timeDiff / (1000 * 60)) % 60; + final long hour = (timeDiff / (1000 * 60 * 60)) % 24; - String time = String.format("%02d:%02d:%02d", hour, minute, second); + final String time = String.format("%02d:%02d:%02d", hour, minute, second); Utils.drawStringCentered( EnumChatFormatting.YELLOW + "You've wasted your time here for: " + time, Minecraft.getMinecraft().fontRendererObj, @@ -693,17 +701,17 @@ public class GuiProfileViewer extends GuiScreen { if (currentPage != ProfileViewerPage.LOADING && currentPage != ProfileViewerPage.INVALID_NAME) { int ignoredTabs = 0; - List<Integer> configList = NotEnoughUpdates.INSTANCE.config.profileViewer.pageLayout; + final List<Integer> configList = NotEnoughUpdates.INSTANCE.config.profileViewer.pageLayout; for (int i = 0; i < configList.size(); i++) { - ProfileViewerPage iPage = ProfileViewerPage.getById(configList.get(i)); + final ProfileViewerPage iPage = ProfileViewerPage.getById(configList.get(i)); if (iPage == null) continue; if (iPage.stack == null || (iPage == ProfileViewerPage.BINGO && !showBingoPage)) { ignoredTabs++; continue; } - int i2 = i - ignoredTabs; - int x = guiLeft + i2 * 28; - int y = guiTop - 28; + final int i2 = i - ignoredTabs; + final int x = guiLeft + i2 * 28; + final int y = guiTop - 28; if (mouseX > x && mouseX < x + 28) { if (mouseY > y && mouseY < y + 32) { @@ -720,41 +728,42 @@ public class GuiProfileViewer extends GuiScreen { } if (tooltipToDisplay != null) { - List<String> grayTooltip = new ArrayList<>(tooltipToDisplay.size()); - for (String line : tooltipToDisplay) { + final List<String> grayTooltip = new ArrayList<>(tooltipToDisplay.size()); + for (final String line : tooltipToDisplay) { grayTooltip.add(EnumChatFormatting.GRAY + line); } - Utils.drawHoveringText(grayTooltip, mouseX, mouseY, width, height, -1, Minecraft.getMinecraft().fontRendererObj); + Utils.drawHoveringText(grayTooltip, mouseX, mouseY, + width, height, -1, Minecraft.getMinecraft().fontRendererObj); tooltipToDisplay = null; } } - private void renderTabs(boolean renderPressed) { + private void renderTabs(final boolean renderPressed) { int ignoredTabs = 0; - List<Integer> configList = NotEnoughUpdates.INSTANCE.config.profileViewer.pageLayout; + final List<Integer> configList = NotEnoughUpdates.INSTANCE.config.profileViewer.pageLayout; for (int i = 0; i < configList.size(); i++) { - ProfileViewerPage page = ProfileViewerPage.getById(configList.get(i)); + final ProfileViewerPage page = ProfileViewerPage.getById(configList.get(i)); if (page == null) continue; if (page.stack == null || (page == ProfileViewerPage.BINGO && !showBingoPage)) { ignoredTabs++; continue; } - boolean pressed = page == currentPage; + final boolean pressed = page == currentPage; if (pressed == renderPressed) { renderTab(page.stack, i - ignoredTabs, pressed); } } } - private void renderTab(ItemStack stack, int xIndex, boolean pressed) { + private void renderTab(final ItemStack stack, final int xIndex, final boolean pressed) { GlStateManager.disableLighting(); GlStateManager.enableBlend(); GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.enableAlpha(); GlStateManager.alphaFunc(516, 0.1F); - int x = guiLeft + xIndex * 28; - int y = guiTop - 28; + final int x = guiLeft + xIndex * 28; + final int y = guiTop - 28; float uMin = 0; float uMax = 28 / 256f; @@ -788,20 +797,20 @@ public class GuiProfileViewer extends GuiScreen { } @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + protected void mouseClicked(final int mouseX, final int mouseY, final int mouseButton) throws IOException { if (currentPage != ProfileViewerPage.LOADING && currentPage != ProfileViewerPage.INVALID_NAME) { int ignoredTabs = 0; - List<Integer> configList = NotEnoughUpdates.INSTANCE.config.profileViewer.pageLayout; + final List<Integer> configList = NotEnoughUpdates.INSTANCE.config.profileViewer.pageLayout; for (int i = 0; i < configList.size(); i++) { - ProfileViewerPage page = ProfileViewerPage.getById(configList.get(i)); + final ProfileViewerPage page = ProfileViewerPage.getById(configList.get(i)); if (page == null) continue; if (page.stack == null || (page == ProfileViewerPage.BINGO && !showBingoPage)) { ignoredTabs++; continue; } - int i2 = i - ignoredTabs; - int x = guiLeft + i2 * 28; - int y = guiTop - 28; + final int i2 = i - ignoredTabs; + final int x = guiLeft + i2 * 28; + final int y = guiTop - 28; if (mouseX > x && mouseX < x + 28) { if (mouseY > y && mouseY < y + 32) { @@ -838,8 +847,9 @@ public class GuiProfileViewer extends GuiScreen { profileId != null ) { if (mouseY > guiTop + sizeY + 3 && mouseY < guiTop + sizeY + 23) { - String url = "https://sky.shiiyu.moe/stats/" + profile.getHypixelProfile().get("displayname").getAsString() + "/" + - profileId; + final String url = + "https://sky.shiiyu.moe/stats/" + profile.getHypixelProfile().get("displayname").getAsString() + "/" + + profileId; Utils.openUrl(url); Utils.playPressSound(); return; @@ -847,7 +857,7 @@ public class GuiProfileViewer extends GuiScreen { } if (mouseX > guiLeft && mouseX < guiLeft + 100 && profile != null && !profile.getProfileNames().isEmpty()) { - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + final ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); if (mouseY > guiTop + sizeY + 3 && mouseY < guiTop + sizeY + 23) { if (scaledResolution.getScaleFactor() >= 4) { profileDropdownSelected = false; @@ -866,7 +876,7 @@ public class GuiProfileViewer extends GuiScreen { if (profileNum >= profile.getProfileNames().size()) profileNum = 0; if (profileNum < 0) profileNum = profile.getProfileNames().size() - 1; - String newProfileId = profile.getProfileNames().get(profileNum); + final String newProfileId = profile.getProfileNames().get(profileNum); if (profileId != null && !profileId.equals(newProfileId)) { resetCache(); } @@ -875,11 +885,11 @@ public class GuiProfileViewer extends GuiScreen { profileDropdownSelected = !profileDropdownSelected; } } else if (scaledResolution.getScaleFactor() < 4 && profileDropdownSelected) { - int dropdownOptionSize = scaledResolution.getScaleFactor() == 3 ? 10 : 20; - int extraY = mouseY - (guiTop + sizeY + 23); - int index = extraY / dropdownOptionSize; + final int dropdownOptionSize = scaledResolution.getScaleFactor() == 3 ? 10 : 20; + final int extraY = mouseY - (guiTop + sizeY + 23); + final int index = extraY / dropdownOptionSize; if (index >= 0 && index < profile.getProfileNames().size()) { - String newProfileId = profile.getProfileNames().get(index); + final String newProfileId = profile.getProfileNames().get(index); if (profileId != null && !profileId.equals(newProfileId)) { resetCache(); } @@ -898,7 +908,7 @@ public class GuiProfileViewer extends GuiScreen { } @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException { + protected void keyTyped(final char typedChar, final int keyCode) throws IOException { super.keyTyped(typedChar, keyCode); if (pages.containsKey(currentPage)) { @@ -921,7 +931,7 @@ public class GuiProfileViewer extends GuiScreen { } @Override - protected void mouseReleased(int mouseX, int mouseY, int mouseButton) { + protected void mouseReleased(final int mouseX, final int mouseY, final int mouseButton) { super.mouseReleased(mouseX, mouseY, mouseButton); if (pages.containsKey(currentPage)) { @@ -930,17 +940,17 @@ public class GuiProfileViewer extends GuiScreen { } public void renderXpBar( - String skillName, - ItemStack stack, - int x, - int y, - int xSize, - ProfileViewer.Level levelObj, - int mouseX, - int mouseY + final String skillName, + final ItemStack stack, + final int x, + final int y, + final int xSize, + final ProfileViewer.Level levelObj, + final int mouseX, + final int mouseY ) { - float level = levelObj.level; - int levelFloored = (int) Math.floor(level); + final float level = levelObj.level; + final int levelFloored = (int) Math.floor(level); Utils.renderAlignedString(skillName, EnumChatFormatting.WHITE.toString() + levelFloored, x + 14, y - 4, xSize - 20); @@ -956,24 +966,27 @@ public class GuiProfileViewer extends GuiScreen { if (mouseX > x && mouseX < x + 120) { if (mouseY > y - 4 && mouseY < y + 13) { - String levelStr; + final String levelStr; String totalXpStr = null; if (skillName.contains("Catacombs")) { totalXpStr = EnumChatFormatting.GRAY + "Total XP: " + EnumChatFormatting.DARK_PURPLE + - numberFormat.format(levelObj.totalXp) + EnumChatFormatting.DARK_GRAY + " (" + + numberFormat.format(levelObj.totalXp) + EnumChatFormatting.DARK_GRAY + " (" + DECIMAL_FORMAT.format(getPercentage(skillName.toLowerCase(), levelObj)) + "% to 50)"; } - // Adds overflow level to each level object that is maxed, avoids hotm level as there is no overflow xp for it + // Adds overflow level to each level object that is maxed, avoids hotm level as there is no overflow xp for it if (levelObj.maxed) { levelStr = levelObj.maxLevel != 7 ? - EnumChatFormatting.GOLD + "MAXED!" + EnumChatFormatting.GRAY + " (Overflow level: " + String.format("%.2f", levelObj.level) + ")" : - EnumChatFormatting.GOLD + "MAXED!"; + EnumChatFormatting.GOLD + "MAXED!" + EnumChatFormatting.GRAY + " (Overflow level: " + String.format( + "%.2f", + levelObj.level + ) + ")" : + EnumChatFormatting.GOLD + "MAXED!"; } else { if (skillName.contains("Class Average")) { levelStr = "Progress: " + EnumChatFormatting.DARK_PURPLE + String.format("%.1f", (level % 1 * 100)) + "%"; totalXpStr = "Exact Class Average: " + EnumChatFormatting.WHITE + String.format("%.2f", levelObj.level); } else { - int maxXp = (int) levelObj.maxXpForLevel; + final int maxXp = (int) levelObj.maxXpForLevel; levelStr = EnumChatFormatting.DARK_PURPLE + StringUtils.shortNumberFormat(Math.round((level % 1) * maxXp)) + @@ -993,8 +1006,8 @@ public class GuiProfileViewer extends GuiScreen { } } - NBTTagCompound nbt = new NBTTagCompound(); //Adding NBT Data for Custom Resource Packs - NBTTagCompound display = new NBTTagCompound(); + final NBTTagCompound nbt = new NBTTagCompound(); //Adding NBT Data for Custom Resource Packs + final NBTTagCompound display = new NBTTagCompound(); display.setString("Name", skillName); nbt.setTag("display", display); stack.setTagCompound(nbt); @@ -1010,14 +1023,14 @@ public class GuiProfileViewer extends GuiScreen { return ((BasicPage) pages.get(ProfileViewerPage.BASIC)).entityPlayer; } - public void renderGoldBar(float x, float y, float xSize) { + public void renderGoldBar(final float x, final float y, final float xSize) { if (!OpenGlHelper.areShadersSupported()) { renderBar(x, y, xSize, 1); return; } Minecraft.getMinecraft().getTextureManager().bindTexture(icons); - ShaderManager shaderManager = ShaderManager.getInstance(); + final ShaderManager shaderManager = ShaderManager.getInstance(); shaderManager.loadShader("make_gold"); shaderManager.loadData("make_gold", "amount", (startTime - System.currentTimeMillis()) / 10000f); @@ -1037,11 +1050,11 @@ public class GuiProfileViewer extends GuiScreen { GL20.glUseProgram(0); } - public void renderBar(float x, float y, float xSize, float completed) { + public void renderBar(final float x, final float y, final float xSize, float completed) { Minecraft.getMinecraft().getTextureManager().bindTexture(icons); completed = Math.round(completed / 0.05f) * 0.05f; - float notCompleted = 1 - completed; + final float notCompleted = 1 - completed; GlStateManager.color(1, 1, 1, 1); float width; @@ -1105,8 +1118,8 @@ public class GuiProfileViewer extends GuiScreen { * This is so that we can render to and from the framebuffer in a way that is familiar to us, instead of needing to * apply scales and translations manually. */ - private Matrix4f createProjectionMatrix(int width, int height) { - Matrix4f projMatrix = new Matrix4f(); + private Matrix4f createProjectionMatrix(final int width, final int height) { + final Matrix4f projMatrix = new Matrix4f(); projMatrix.setIdentity(); projMatrix.m00 = 2.0F / (float) width; projMatrix.m11 = 2.0F / (float) (-height); @@ -1121,8 +1134,8 @@ public class GuiProfileViewer extends GuiScreen { private void blurBackground() { if (!OpenGlHelper.isFramebufferEnabled()) return; - int width = Minecraft.getMinecraft().displayWidth; - int height = Minecraft.getMinecraft().displayHeight; + final int width = Minecraft.getMinecraft().displayWidth; + final int height = Minecraft.getMinecraft().displayHeight; if (blurOutputHorz == null) { blurOutputHorz = new Framebuffer(width, height, false); @@ -1154,7 +1167,7 @@ public class GuiProfileViewer extends GuiScreen { ); blurShaderHorz.getShaderManager().getShaderUniform("BlurDir").set(1, 0); blurShaderHorz.setProjectionMatrix(createProjectionMatrix(width, height)); - } catch (Exception ignored) { + } catch (final Exception ignored) { } } if (blurShaderVert == null) { @@ -1167,7 +1180,7 @@ public class GuiProfileViewer extends GuiScreen { ); blurShaderVert.getShaderManager().getShaderUniform("BlurDir").set(0, 1); blurShaderVert.setProjectionMatrix(createProjectionMatrix(width, height)); - } catch (Exception ignored) { + } catch (final Exception ignored) { } } if (blurShaderHorz != null && blurShaderVert != null) { @@ -1186,7 +1199,7 @@ public class GuiProfileViewer extends GuiScreen { } } - public float getPercentage(String skillName, ProfileViewer.Level level) { + public float getPercentage(final String skillName, final ProfileViewer.Level level) { if (level.maxed) { return 100; } @@ -1209,13 +1222,13 @@ public class GuiProfileViewer extends GuiScreen { * Renders a subsection of the blurred framebuffer on to the corresponding section of the screen. * Essentially, this method will "blur" the background inside the bounds specified by [x->x+blurWidth, y->y+blurHeight] */ - public void renderBlurredBackground(int width, int height, int x, int y, int blurWidth, int blurHeight) { + public void renderBlurredBackground(final int width, final int height, final int x, final int y, final int blurWidth, final int blurHeight) { if (!OpenGlHelper.isFramebufferEnabled()) return; - float uMin = x / (float) width; - float uMax = (x + blurWidth) / (float) width; - float vMin = (height - y) / (float) height; - float vMax = (height - y - blurHeight) / (float) height; + final float uMin = x / (float) width; + final float uMax = (x + blurWidth) / (float) width; + final float vMin = (height - y) / (float) height; + final float vMax = (height - y - blurHeight) / (float) height; blurOutputVert.bindFramebufferTexture(); GlStateManager.color(1f, 1f, 1f, 1f); @@ -1248,22 +1261,22 @@ public class GuiProfileViewer extends GuiScreen { this(-1, null, null); } - ProfileViewerPage(int id, Item item, String name) { + ProfileViewerPage(final int id, final Item item, final String name) { this.id = id; if (item == null) { stack = null; } else { stack = new ItemStack(item); - NBTTagCompound nbt = new NBTTagCompound(); //Adding NBT Data for Custom Resource Packs - NBTTagCompound display = new NBTTagCompound(); + final NBTTagCompound nbt = new NBTTagCompound(); //Adding NBT Data for Custom Resource Packs + final NBTTagCompound display = new NBTTagCompound(); display.setString("Name", name); nbt.setTag("display", display); stack.setTagCompound(nbt); } } - public static ProfileViewerPage getById(int id) { - for (ProfileViewerPage page : values()) { + public static ProfileViewerPage getById(final int id) { + for (final ProfileViewerPage page : values()) { if (page.id == id) { return page; } 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=" ); - String equipment_contents_bytes = Utils.getElementAsString( + final String equipment_contents_bytes = Utils.getElementAsString( Utils.getElement(profileInfo, "equippment_contents.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA=" ); - JsonObject inventoryInfo = new JsonObject(); + final JsonObject inventoryInfo = new JsonObject(); - String[] inv_names = new String[]{ + final String[] inv_names = new String[]{ "inv_armor", "fishing_bag", "quiver", @@ -1420,7 +1424,7 @@ public class ProfileViewer { "candy_inventory_contents", "equippment_contents", }; - String[] inv_bytes = new String[]{ + final String[] inv_bytes = new String[]{ inv_armor_bytes, fishing_bag_bytes, quiver_bytes, @@ -1436,26 +1440,26 @@ public class ProfileViewer { }; for (int i = 0; i < inv_bytes.length; i++) { try { - String bytes = inv_bytes[i]; + final String bytes = inv_bytes[i]; JsonArray contents = new JsonArray(); if (inv_names[i].equals("backpack_contents")) { - JsonObject temp = getBackpackData(backpack_contents_json, backpack_icons); + final JsonObject temp = getBackpackData(backpack_contents_json, backpack_icons); contents = (JsonArray) temp.get("contents"); inventoryInfo.add("backpack_sizes", temp.get("backpack_sizes")); } else { - NBTTagCompound inv_contents_nbt = CompressedStreamTools.readCompressed( + final NBTTagCompound inv_contents_nbt = CompressedStreamTools.readCompressed( new ByteArrayInputStream(Base64.getDecoder().decode(bytes)) ); - NBTTagList items = inv_contents_nbt.getTagList("i", 10); + final NBTTagList items = inv_contents_nbt.getTagList("i", 10); for (int j = 0; j < items.tagCount(); j++) { - JsonObject item = manager.getJsonFromNBTEntry(items.getCompoundTagAt(j)); + final JsonObject item = manager.getJsonFromNBTEntry(items.getCompoundTagAt(j)); contents.add(item); } } inventoryInfo.add(inv_names[i], contents); - } catch (IOException e) { + } catch (final IOException e) { inventoryInfo.add(inv_names[i], new JsonArray()); } } @@ -1465,9 +1469,9 @@ public class ProfileViewer { return inventoryInfo; } - public JsonObject getBackpackData(JsonObject backpackContentsJson, JsonObject backpackIcons) { + public JsonObject getBackpackData(final JsonObject backpackContentsJson, final JsonObject backpackIcons) { if (backpackContentsJson == null || backpackIcons == null) { - JsonObject bundledReturn = new JsonObject(); + final JsonObject bundledReturn = new JsonObject(); bundledReturn.add("contents", new JsonArray()); bundledReturn.add("backpack_sizes", new JsonArray()); @@ -1477,10 +1481,13 @@ public class ProfileViewer { String[] backpackArray = new String[0]; //Create backpack array which sizes up - for (Map.Entry<String, JsonElement> backpackIcon : backpackIcons.entrySet()) { + for (final Map.Entry<String, JsonElement> backpackIcon : backpackIcons.entrySet()) { if (backpackIcon.getValue() instanceof JsonObject) { - JsonObject backpackData = (JsonObject) backpackContentsJson.get(backpackIcon.getKey()); - String bytes = Utils.getElementAsString(backpackData.get("data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + final JsonObject backpackData = (JsonObject) backpackContentsJson.get(backpackIcon.getKey()); + final String bytes = Utils.getElementAsString( + backpackData.get("data"), + "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA=" + ); backpackArray = growArray(bytes, Integer.parseInt(backpackIcon.getKey()), backpackArray); } } @@ -1488,9 +1495,9 @@ public class ProfileViewer { //reduce backpack array to filter out not existent backpacks { String[] tempBackpackArray = new String[0]; - for (String s : backpackArray) { + for (final String s : backpackArray) { if (s != null) { - String[] veryTempBackpackArray = new String[tempBackpackArray.length + 1]; + final String[] veryTempBackpackArray = new String[tempBackpackArray.length + 1]; System.arraycopy(tempBackpackArray, 0, veryTempBackpackArray, 0, tempBackpackArray.length); veryTempBackpackArray[veryTempBackpackArray.length - 1] = s; @@ -1500,54 +1507,54 @@ public class ProfileViewer { backpackArray = tempBackpackArray; } - JsonArray backpackSizes = new JsonArray(); - JsonArray contents = new JsonArray(); + final JsonArray backpackSizes = new JsonArray(); + final JsonArray contents = new JsonArray(); - for (String backpack : backpackArray) { + for (final String backpack : backpackArray) { try { - NBTTagCompound inv_contents_nbt = CompressedStreamTools.readCompressed( + final NBTTagCompound inv_contents_nbt = CompressedStreamTools.readCompressed( new ByteArrayInputStream(Base64.getDecoder().decode(backpack)) ); - NBTTagList items = inv_contents_nbt.getTagList("i", 10); + final NBTTagList items = inv_contents_nbt.getTagList("i", 10); backpackSizes.add(new JsonPrimitive(items.tagCount())); for (int j = 0; j < items.tagCount(); j++) { - JsonObject item = manager.getJsonFromNBTEntry(items.getCompoundTagAt(j)); + final JsonObject item = manager.getJsonFromNBTEntry(items.getCompoundTagAt(j)); contents.add(item); } - } catch (IOException ignored) { + } catch (final IOException ignored) { } } - JsonObject bundledReturn = new JsonObject(); + final JsonObject bundledReturn = new JsonObject(); bundledReturn.add("contents", contents); bundledReturn.add("backpack_sizes", backpackSizes); return bundledReturn; } - public String[] growArray(String bytes, int index, String[] oldArray) { - int newSize = Math.max(index + 1, oldArray.length); + public String[] growArray(final String bytes, final int index, final String[] oldArray) { + final int newSize = Math.max(index + 1, oldArray.length); - String[] newArray = new String[newSize]; + final String[] newArray = new String[newSize]; System.arraycopy(oldArray, 0, newArray, 0, oldArray.length); newArray[index] = bytes; return newArray; } - public JsonObject getPetsInfo(String profileName) { - JsonObject profileInfo = getProfileInformation(profileName); + public JsonObject getPetsInfo(final String profileName) { + final JsonObject profileInfo = getProfileInformation(profileName); if (profileInfo == null) return null; if (petsInfoMap.containsKey(profileName)) return petsInfoMap.get(profileName); - JsonObject petsInfo = new JsonObject(); - JsonElement petsElement = profileInfo.get("pets"); + final JsonObject petsInfo = new JsonObject(); + final JsonElement petsElement = profileInfo.get("pets"); if (petsElement != null && petsElement.isJsonArray()) { JsonObject activePet = null; - JsonArray pets = petsElement.getAsJsonArray(); + final JsonArray pets = petsElement.getAsJsonArray(); for (int i = 0; i < pets.size(); i++) { - JsonObject pet = pets.get(i).getAsJsonObject(); + final JsonObject pet = pets.get(i).getAsJsonObject(); if (pet.has("active") && pet.get("active").getAsBoolean()) { activePet = pet; break; @@ -1562,46 +1569,46 @@ public class ProfileViewer { } public JsonObject getCollectionInfo(String profileName) { - JsonObject profileInfo = getProfileInformation(profileName); + final JsonObject profileInfo = getProfileInformation(profileName); if (profileInfo == null) return null; - JsonObject resourceCollectionInfo = getResourceCollectionInformation(); + final JsonObject resourceCollectionInfo = getResourceCollectionInformation(); if (resourceCollectionInfo == null) return null; if (profileName == null) profileName = latestProfile; if (collectionInfoMap.containsKey(profileName)) return collectionInfoMap.get(profileName); - List<JsonObject> coopMembers = getCoopProfileInformation(profileName); - JsonElement unlocked_coll_tiers_element = Utils.getElement(profileInfo, "unlocked_coll_tiers"); - JsonElement crafted_generators_element = Utils.getElement(profileInfo, "crafted_generators"); - JsonObject fakeMember = new JsonObject(); + final List<JsonObject> coopMembers = getCoopProfileInformation(profileName); + final JsonElement unlocked_coll_tiers_element = Utils.getElement(profileInfo, "unlocked_coll_tiers"); + final JsonElement crafted_generators_element = Utils.getElement(profileInfo, "crafted_generators"); + final JsonObject fakeMember = new JsonObject(); fakeMember.add("crafted_generators", crafted_generators_element); coopMembers.add(coopMembers.size(), fakeMember); - JsonElement collectionInfoElement = Utils.getElement(profileInfo, "collection"); + final JsonElement collectionInfoElement = Utils.getElement(profileInfo, "collection"); if (unlocked_coll_tiers_element == null || collectionInfoElement == null) { return null; } - JsonObject collectionInfo = new JsonObject(); - JsonObject collectionTiers = new JsonObject(); - JsonObject minionTiers = new JsonObject(); + final JsonObject collectionInfo = new JsonObject(); + final JsonObject collectionTiers = new JsonObject(); + final JsonObject minionTiers = new JsonObject(); JsonObject personalAmounts = new JsonObject(); - JsonObject totalAmounts = new JsonObject(); + final JsonObject totalAmounts = new JsonObject(); if (collectionInfoElement.isJsonObject()) { personalAmounts = collectionInfoElement.getAsJsonObject(); } - for (Map.Entry<String, JsonElement> entry : personalAmounts.entrySet()) { + for (final Map.Entry<String, JsonElement> entry : personalAmounts.entrySet()) { totalAmounts.addProperty(entry.getKey(), entry.getValue().getAsLong()); } - List<JsonObject> coopProfiles = getCoopProfileInformation(profileName); + final List<JsonObject> coopProfiles = getCoopProfileInformation(profileName); if (coopProfiles != null) { - for (JsonObject coopProfile : coopProfiles) { - JsonElement coopCollectionInfoElement = Utils.getElement(coopProfile, "collection"); + for (final JsonObject coopProfile : coopProfiles) { + final JsonElement coopCollectionInfoElement = Utils.getElement(coopProfile, "collection"); if (coopCollectionInfoElement != null && coopCollectionInfoElement.isJsonObject()) { - for (Map.Entry<String, JsonElement> entry : coopCollectionInfoElement.getAsJsonObject().entrySet()) { - float existing = Utils.getElementAsFloat(totalAmounts.get(entry.getKey()), 0); + for (final Map.Entry<String, JsonElement> entry : coopCollectionInfoElement.getAsJsonObject().entrySet()) { + final float existing = Utils.getElementAsFloat(totalAmounts.get(entry.getKey()), 0); totalAmounts.addProperty(entry.getKey(), existing + entry.getValue().getAsLong()); } } @@ -1609,34 +1616,36 @@ public class ProfileViewer { } if (unlocked_coll_tiers_element.isJsonArray()) { - JsonArray unlocked_coll_tiers = unlocked_coll_tiers_element.getAsJsonArray(); + final JsonArray unlocked_coll_tiers = unlocked_coll_tiers_element.getAsJsonArray(); for (int i = 0; i < unlocked_coll_tiers.size(); i++) { - String unlocked = unlocked_coll_tiers.get(i).getAsString(); + final String unlocked = unlocked_coll_tiers.get(i).getAsString(); - Matcher matcher = COLL_TIER_PATTERN.matcher(unlocked); + final Matcher matcher = COLL_TIER_PATTERN.matcher(unlocked); if (matcher.find()) { - String tier_str = matcher.group(1); - int tier = Integer.parseInt(tier_str); - String coll = unlocked.substring(0, unlocked.length() - (matcher.group().length())); + final String tier_str = matcher.group(1); + final int tier = Integer.parseInt(tier_str); + final String coll = unlocked.substring(0, unlocked.length() - (matcher.group().length())); if (!collectionTiers.has(coll) || collectionTiers.get(coll).getAsInt() < tier) { collectionTiers.addProperty(coll, tier); } } } } - for (JsonObject current_member_info : coopMembers) { + for (final JsonObject current_member_info : coopMembers) { if ( !current_member_info.has("crafted_generators") || !current_member_info.get("crafted_generators").isJsonArray() ) continue; - JsonArray crafted_generators = Utils.getElement(current_member_info, "crafted_generators").getAsJsonArray(); + final JsonArray crafted_generators = Utils + .getElement(current_member_info, "crafted_generators") + .getAsJsonArray(); for (int j = 0; j < crafted_generators.size(); j++) { - String unlocked = crafted_generators.get(j).getAsString(); - Matcher matcher = COLL_TIER_PATTERN.matcher(unlocked); + final String unlocked = crafted_generators.get(j).getAsString(); + final Matcher matcher = COLL_TIER_PATTERN.matcher(unlocked); if (matcher.find()) { - String tierString = matcher.group(1); - int tier = Integer.parseInt(tierString); - String coll = unlocked.substring(0, unlocked.length() - (matcher.group().length())); + final String tierString = matcher.group(1); + final int tier = Integer.parseInt(tierString); + final String coll = unlocked.substring(0, unlocked.length() - (matcher.group().length())); if (!minionTiers.has(coll) || minionTiers.get(coll).getAsInt() < tier) { minionTiers.addProperty(coll, tier); } @@ -1644,24 +1653,24 @@ public class ProfileViewer { } } - JsonObject maxAmount = new JsonObject(); - JsonObject updatedCollectionTiers = new JsonObject(); - for (Map.Entry<String, JsonElement> totalAmountsEntry : totalAmounts.entrySet()) { - String collName = totalAmountsEntry.getKey(); - int collTier = (int) Utils.getElementAsFloat(collectionTiers.get(collName), 0); + final JsonObject maxAmount = new JsonObject(); + final JsonObject updatedCollectionTiers = new JsonObject(); + for (final Map.Entry<String, JsonElement> totalAmountsEntry : totalAmounts.entrySet()) { + final String collName = totalAmountsEntry.getKey(); + final int collTier = (int) Utils.getElementAsFloat(collectionTiers.get(collName), 0); - int currentAmount = (int) Utils.getElementAsFloat(totalAmounts.get(collName), 0); + final int currentAmount = (int) Utils.getElementAsFloat(totalAmounts.get(collName), 0); if (currentAmount > 0) { - for (Map.Entry<String, JsonElement> resourceEntry : resourceCollectionInfo.entrySet()) { - JsonElement tiersElement = Utils.getElement(resourceEntry.getValue(), "items." + collName + ".tiers"); + for (final Map.Entry<String, JsonElement> resourceEntry : resourceCollectionInfo.entrySet()) { + final JsonElement tiersElement = Utils.getElement(resourceEntry.getValue(), "items." + collName + ".tiers"); if (tiersElement != null && tiersElement.isJsonArray()) { - JsonArray tiers = tiersElement.getAsJsonArray(); + final JsonArray tiers = tiersElement.getAsJsonArray(); int maxTierAcquired = -1; int maxAmountRequired = -1; for (int i = 0; i < tiers.size(); i++) { - JsonObject tierInfo = tiers.get(i).getAsJsonObject(); - int tier = tierInfo.get("tier").getAsInt(); - int amountRequired = tierInfo.get("amountRequired").getAsInt(); + final JsonObject tierInfo = tiers.get(i).getAsJsonObject(); + final int tier = tierInfo.get("tier").getAsInt(); + final int amountRequired = tierInfo.get("amountRequired").getAsInt(); if (currentAmount >= amountRequired) { maxTierAcquired = tier; } @@ -1676,7 +1685,7 @@ public class ProfileViewer { } } - for (Map.Entry<String, JsonElement> collectionTiersEntry : updatedCollectionTiers.entrySet()) { + for (final Map.Entry<String, JsonElement> collectionTiersEntry : updatedCollectionTiers.entrySet()) { collectionTiers.add(collectionTiersEntry.getKey(), collectionTiersEntry.getValue()); } @@ -1691,39 +1700,42 @@ public class ProfileViewer { return collectionInfo; } - public PlayerStats.Stats getPassiveStats(String profileName) { + public PlayerStats.Stats getPassiveStats(final String profileName) { if (passiveStats.get(profileName) != null) return passiveStats.get(profileName); - JsonObject profileInfo = getProfileInformation(profileName); + final JsonObject profileInfo = getProfileInformation(profileName); if (profileInfo == null) return null; - PlayerStats.Stats passiveStats = PlayerStats.getPassiveBonuses(getSkyblockInfo(profileName), profileInfo); + final PlayerStats.Stats passivePlayerStats = PlayerStats.getPassiveBonuses( + getSkyblockInfo(profileName), + profileInfo + ); - if (passiveStats != null) { - passiveStats.add(PlayerStats.getBaseStats()); + if (passivePlayerStats != null) { + passivePlayerStats.add(PlayerStats.getBaseStats()); } - this.passiveStats.put(profileName, passiveStats); + passiveStats.put(profileName, passivePlayerStats); - return passiveStats; + return passivePlayerStats; } - public PlayerStats.Stats getStats(String profileName) { + public PlayerStats.Stats getStats(final String profileName) { if (stats.get(profileName) != null) return stats.get(profileName); - JsonObject profileInfo = getProfileInformation(profileName); + final JsonObject profileInfo = getProfileInformation(profileName); if (profileInfo == null) { return null; } - PlayerStats.Stats stats = PlayerStats.getStats( + final PlayerStats.Stats playerStats = PlayerStats.getStats( getSkyblockInfo(profileName), getInventoryInfo(profileName), getCollectionInfo(profileName), getPetsInfo(profileName), profileInfo ); - if (stats == null) return null; - this.stats.put(profileName, stats); - return stats; + if (playerStats == null) return null; + stats.put(profileName, playerStats); + return playerStats; } public String getUuid() { |