aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/BasicPage.java30
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ExtraPage.java73
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/SkyblockProfiles.java9
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java4
5 files changed, 94 insertions, 24 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/BasicPage.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/BasicPage.java
index 331d2ad3..a1135205 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/BasicPage.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/BasicPage.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 NotEnoughUpdates contributors
+ * Copyright (C) 2022-2023 NotEnoughUpdates contributors
*
* This file is part of NotEnoughUpdates.
*
@@ -25,12 +25,14 @@ import com.google.gson.JsonObject;
import com.mojang.authlib.GameProfile;
import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
import io.github.moulberry.notenoughupdates.core.util.StringUtils;
+import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils;
import io.github.moulberry.notenoughupdates.profileviewer.level.LevelPage;
import io.github.moulberry.notenoughupdates.profileviewer.weight.lily.LilyWeight;
import io.github.moulberry.notenoughupdates.profileviewer.weight.senither.SenitherWeight;
import io.github.moulberry.notenoughupdates.profileviewer.weight.weight.Weight;
import io.github.moulberry.notenoughupdates.util.Constants;
import io.github.moulberry.notenoughupdates.util.PronounDB;
+import io.github.moulberry.notenoughupdates.util.Rectangle;
import io.github.moulberry.notenoughupdates.util.SBInfo;
import io.github.moulberry.notenoughupdates.util.Utils;
import net.minecraft.client.Minecraft;
@@ -121,6 +123,7 @@ public class BasicPage extends GuiProfileViewerPage {
private boolean onSecondPage;
private final LevelPage levelPage;
+ private boolean clickedLoadStatusButton = false;
public BasicPage(GuiProfileViewer instance) {
super(instance);
@@ -141,7 +144,7 @@ public class BasicPage extends GuiProfileViewerPage {
}
String location = null;
- JsonObject status = profile.getPlayerStatus();
+ JsonObject status = clickedLoadStatusButton ? profile.getPlayerStatus() : null;
if (status != null && status.has("mode")) {
location = status.get("mode").getAsString();
}
@@ -438,6 +441,29 @@ public class BasicPage extends GuiProfileViewerPage {
}
Utils.drawStringCentered(statusStr, guiLeft + 63, guiTop + 160, true, 0);
+ } else {
+ Rectangle buttonRect = new Rectangle(
+ guiLeft + 24,
+ guiTop + 155,
+ 80,
+ 12
+ );
+
+ RenderUtils.drawFloatingRectWithAlpha(buttonRect.getX(), buttonRect.getY(), buttonRect.getWidth(),
+ buttonRect.getHeight(), 100, true
+ );
+ Utils.renderShadowedString(
+ clickedLoadStatusButton
+ ? EnumChatFormatting.AQUA + "Loading..."
+ : EnumChatFormatting.WHITE + "Load Status",
+ guiLeft + 63,
+ guiTop + 157,
+ 79
+ );
+
+ if (Mouse.getEventButtonState() && Utils.isWithinRect(mouseX, mouseY, buttonRect)) {
+ clickedLoadStatusButton = true;
+ }
}
if (entityPlayer == null) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ExtraPage.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ExtraPage.java
index fb1b3364..1672fa83 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ExtraPage.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ExtraPage.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 NotEnoughUpdates contributors
+ * Copyright (C) 2022-2023 NotEnoughUpdates contributors
*
* This file is part of NotEnoughUpdates.
*
@@ -25,8 +25,10 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
import io.github.moulberry.notenoughupdates.core.util.StringUtils;
+import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils;
import io.github.moulberry.notenoughupdates.profileviewer.weight.weight.Weight;
import io.github.moulberry.notenoughupdates.util.Constants;
+import io.github.moulberry.notenoughupdates.util.Rectangle;
import io.github.moulberry.notenoughupdates.util.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.util.EnumChatFormatting;
@@ -63,6 +65,7 @@ public class ExtraPage extends GuiProfileViewerPage {
private TreeMap<Integer, Set<String>> topDeaths = null;
private int deathScroll = 0;
private int killScroll = 0;
+ private boolean clickedLoadGuildInfoButton = false;
public ExtraPage(GuiProfileViewer instance) {
super(instance);
@@ -217,29 +220,61 @@ public class ExtraPage extends GuiProfileViewerPage {
);
}
}
- JsonObject guildInfo = GuiProfileViewer.getProfile().getOrLoadGuildInformation(null);
- boolean shouldRenderGuild = guildInfo != null && guildInfo.has("name");
- {
- if (shouldRenderGuild) {
- Utils.renderAlignedString(
- EnumChatFormatting.AQUA + "Guild",
- EnumChatFormatting.WHITE + guildInfo.get("name").getAsString(),
- guiLeft + xStart,
- guiTop + yStartTop + yOffset * 3,
- 76
- );
- }
+
+ JsonObject guildInfo;
+ if (GuiProfileViewer.getProfile().isPlayerInGuild()) {
+ guildInfo =
+ clickedLoadGuildInfoButton ? GuiProfileViewer.getProfile().getOrLoadGuildInformation(null) : null;
+ } else {
+ guildInfo = new JsonObject();
+ guildInfo.add("name", new JsonPrimitive("N/A"));
}
- {
- GuiProfileViewer.pronouns.peekValue().flatMap(it -> it).ifPresent(choice -> Utils.renderAlignedString(
- EnumChatFormatting.GREEN + "Pronouns",
- EnumChatFormatting.WHITE + String.join(" / ", choice.render()),
+
+ boolean shouldRenderGuild = guildInfo != null && guildInfo.has("name");
+
+ // Render the info when the button has been clicked
+ if (shouldRenderGuild) {
+ Utils.renderAlignedString(
+ EnumChatFormatting.AQUA + "Guild",
+ EnumChatFormatting.WHITE + guildInfo.get("name").getAsString(),
guiLeft + xStart,
- guiTop + yStartTop + yOffset * (shouldRenderGuild ? 4 : 3),
+ guiTop + yStartTop + yOffset * 3,
76
- ));
+ );
+ } else {
+ // Render a button to click to load the guild info
+ Rectangle buttonRect = new Rectangle(
+ (int) (guiLeft + xStart - 1),
+ (int) (guiTop + yStartTop + yOffset * 3),
+ 78,
+ 12
+ );
+
+ RenderUtils.drawFloatingRectWithAlpha(buttonRect.getX(), buttonRect.getY(), buttonRect.getWidth(),
+ buttonRect.getHeight(), 100, true
+ );
+ Utils.renderShadowedString(
+ clickedLoadGuildInfoButton
+ ? EnumChatFormatting.AQUA + "Loading..."
+ : EnumChatFormatting.WHITE + "Load Guild Info",
+ guiLeft + xStart + 38,
+ guiTop + yStartTop + yOffset * 3 + 2,
+ 70
+ );
+
+ if (Mouse.getEventButtonState() && Utils.isWithinRect(mouseX, mouseY, buttonRect)) {
+ clickedLoadGuildInfoButton = true;
+ }
}
+ GuiProfileViewer.pronouns.peekValue().flatMap(it -> it).ifPresent(choice -> Utils.renderAlignedString(
+ EnumChatFormatting.GREEN + "Pronouns",
+ EnumChatFormatting.WHITE + String.join(" / ", choice.render()),
+ guiLeft + xStart,
+ guiTop + yStartTop + yOffset * 4 + (shouldRenderGuild ? 0 : 5),
+ 76
+ ));
+
float fairySouls = Utils.getElementAsFloat(Utils.getElement(profileInfo, "fairy_souls_collected"), 0);
int fairySoulMax = 227;
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 4df5a675..4e3ef022 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java
@@ -258,8 +258,6 @@ public class GuiProfileViewer extends GuiScreen {
profileName = profile.getLatestProfileName();
}
- // Preload guild info
- profile.getOrLoadGuildInformation(null);
}
this.sizeX = 431;
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/SkyblockProfiles.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/SkyblockProfiles.java
index 61872980..c16d8df0 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/SkyblockProfiles.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/SkyblockProfiles.java
@@ -100,6 +100,8 @@ public class SkyblockProfiles {
private long soopyNetworthLeaderboardPosition = -1; // -1 = default, -2 = loading, -3 = error
private long soopyWeightLeaderboardPosition = -1; // -1 = default, -2 = loading, -3 = error
private JsonObject guildInformation = null;
+ // Assume the player is in a guild until proven otherwise
+ private boolean isInGuild = true;
private JsonObject playerStatus = null;
private JsonObject bingoInformation = null;
private long lastPlayerInfoState = 0;
@@ -390,7 +392,8 @@ public class SkyblockProfiles {
updatingGuildInfoState.set(false);
if (jsonObject != null && jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) {
- if (!jsonObject.has("guild")) {
+ if (jsonObject.get("guild").isJsonNull()) {
+ isInGuild = false;
return null;
}
@@ -406,6 +409,10 @@ public class SkyblockProfiles {
return null;
}
+ public boolean isPlayerInGuild() {
+ return isInGuild;
+ }
+
public List<String> getProfileNames() {
return profileNames;
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java
index 7f607ab7..052ea33f 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java
@@ -2112,6 +2112,10 @@ public class Utils {
top <= y && y < top + height;
}
+ public static boolean isWithinRect(int x, int y, Rectangle rectangle) {
+ return isWithinRect(x, y, rectangle.getLeft(), rectangle.getTop(), rectangle.getWidth(), rectangle.getHeight());
+ }
+
public static int getNumberOfStars(ItemStack stack) {
if (stack != null && stack.hasTagCompound()) {
NBTTagCompound tag = stack.getTagCompound();