aboutsummaryrefslogtreecommitdiff
path: root/mod/src/main/java/kr
diff options
context:
space:
mode:
authorsyeyoung <cyoung06@naver.com>2023-01-22 00:30:16 +0900
committersyeyoung <cyoung06@naver.com>2023-01-22 00:30:16 +0900
commit394c52045bcb53a93c08cfab6d60a42bfd777d59 (patch)
tree120a2f198cadcecca5471958ed6d8a2da67e6b11 /mod/src/main/java/kr
parent6790c6dd1909522eadb6c8917369b357b7fb4119 (diff)
downloadSkyblock-Dungeons-Guide-394c52045bcb53a93c08cfab6d60a42bfd777d59.tar.gz
Skyblock-Dungeons-Guide-394c52045bcb53a93c08cfab6d60a42bfd777d59.tar.bz2
Skyblock-Dungeons-Guide-394c52045bcb53a93c08cfab6d60a42bfd777d59.zip
- Profile viewer now uses guiv2
Signed-off-by: syeyoung <cyoung06@naver.com>
Diffstat (limited to 'mod/src/main/java/kr')
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDungeonsGuide.java7
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/DungeonListener.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java1
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FakePlayer.java40
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java571
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/HoverEventRenderPlayer.java71
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/api/SkinFetcher.java1
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/IDataRenderer.java3
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonFloorStat.java14
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRenderDungeonHighestFloorStat.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererClassLv.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererDungeonLv.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererFairySouls.java4
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererLilyWeight.java13
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererSecrets.java4
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererSelectedClassLv.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererSetUrOwn.java5
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererSkillLv.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/datarenders/impl/DataRendererTalismans.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/PlayerModelRenderer.java179
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetDataRendererWrapper.java112
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerInventory.java148
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerModel.java105
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewer.java94
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewerData.java133
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/DomElement.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/MinecraftTooltip.java58
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/MouseTooltip.java50
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Slot.java18
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/OverlayManagerRootWidget.java5
30 files changed, 1113 insertions, 604 deletions
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDungeonsGuide.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDungeonsGuide.java
index 394f95ca..fd8d7164 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDungeonsGuide.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDungeonsGuide.java
@@ -18,6 +18,7 @@
package kr.syeyoung.dungeonsguide.mod.commands;
+import com.mojang.authlib.GameProfile;
import kr.syeyoung.dungeonsguide.launcher.Main;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
@@ -26,6 +27,7 @@ import kr.syeyoung.dungeonsguide.mod.cosmetics.CosmeticsManager;
import kr.syeyoung.dungeonsguide.mod.discord.DiscordIntegrationManager;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.FeatureViewPlayerStatsOnJoin;
+import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.HoverEventRenderPlayer;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.ApiFetcher;
import kr.syeyoung.dungeonsguide.mod.guiv2.elements.image.ImageTexture;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
@@ -94,7 +96,10 @@ public class CommandDungeonsGuide extends CommandBase {
try {
ApiFetcher.fetchUUIDAsync(args[1])
.thenAccept(a -> {
- sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e" + args[1] + "§f's Profile ").appendSibling(new ChatComponentText("§7view").setChatStyle(new ChatStyle().setChatHoverEvent(new FeatureViewPlayerStatsOnJoin.HoverEventRenderPlayer(a.orElse(null))))));
+ sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e" + args[1] + "§f's Profile ").appendSibling(new ChatComponentText("§7view").setChatStyle(new ChatStyle().setChatHoverEvent(
+ new HoverEventRenderPlayer(
+ new GameProfile(FeatureViewPlayerStatsOnJoin.fromString(a.orElse(null)), args[1])
+ )))));
});
} catch (Exception e) {
e.printStackTrace();
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/DungeonListener.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/DungeonListener.java
index 0e1001ba..c36fac6d 100755
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/DungeonListener.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/events/listener/DungeonListener.java
@@ -191,7 +191,7 @@ public class DungeonListener {
@SubscribeEvent
public void onRender(RenderGameOverlayEvent.Post postRender) {
- if (!(postRender.type == RenderGameOverlayEvent.ElementType.EXPERIENCE || postRender.type == RenderGameOverlayEvent.ElementType.JUMPBAR))
+ if (!(postRender.type == RenderGameOverlayEvent.ElementType.ALL))
return;
if (!SkyblockStatus.isOnDungeon()) return;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
index a51affd8..64c200ea 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/boss/terminal/FeatureTerminalSolvers.java
@@ -90,7 +90,6 @@ public class FeatureTerminalSolvers extends SimpleFeature {
@DGEventHandler
public void onGuiPostRender(GuiScreenEvent.DrawScreenEvent.Post rendered) {
- if (!isEnabled()) return;
if (solutionProvider == null) return;
if (!(Minecraft.getMinecraft().currentScreen instanceof GuiChest)) {
solution = null;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FakePlayer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FakePlayer.java
index ac0e2fec..1cbb01b5 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FakePlayer.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FakePlayer.java
@@ -41,19 +41,49 @@ public class FakePlayer extends EntityOtherPlayerMP {
@Setter
@Getter
private PlayerProfile skyblockProfile;
+
+ public void setSkyblockProfile(PlayerProfile skyblockProfile) {
+ this.skyblockProfile = skyblockProfile;
+
+ armor = skyblockProfile.getCurrentArmor();
+ this.inventory.armorInventory = skyblockProfile.getCurrentArmor().getArmorSlots();
+
+ int highestDungeonScore = Integer.MIN_VALUE;
+ if (skyblockProfile.getInventory() != null) {
+ ItemStack highestItem = null;
+ for (ItemStack itemStack : skyblockProfile.getInventory()) {
+ if (itemStack == null) continue;
+ NBTTagCompound display = itemStack.getTagCompound().getCompoundTag("display");
+ if (display == null) continue;
+ NBTTagList nbtTagList = display.getTagList("Lore", 8);
+ if (nbtTagList == null) continue;
+ for (int i = 0; i < nbtTagList.tagCount(); i++) {
+ String str = nbtTagList.getStringTagAt(i);
+ if (TextUtils.stripColor(str).startsWith("Gear")) {
+ int dungeonScore = Integer.parseInt(TextUtils.keepIntegerCharactersOnly(TextUtils.stripColor(str).split(" ")[2]));
+ if (dungeonScore > highestDungeonScore) {
+ highestItem = itemStack;
+ highestDungeonScore = dungeonScore;
+ }
+ }
+ }
+ }
+
+ this.inventory.mainInventory[0] = highestItem;
+ this.inventory.currentItem = 0;
+ }
+ }
+
private final SkinFetcher.SkinSet skinSet;
- private final PlayerProfile.Armor armor;
- @Getter
- private final int profileNumber;
+ private PlayerProfile.Armor armor;
private FakePlayer(World w) {
super(w, null);
throw new UnsupportedOperationException("what");
}
- public FakePlayer(GameProfile playerProfile, SkinFetcher.SkinSet skinSet, PlayerProfile skyblockProfile, int profileNumber) {
+ public FakePlayer(GameProfile playerProfile, SkinFetcher.SkinSet skinSet, PlayerProfile skyblockProfile) {
super(Minecraft.getMinecraft().theWorld, playerProfile);
- this.profileNumber = profileNumber;
this.skyblockProfile = skyblockProfile;
this.skinSet = skinSet;
armor = skyblockProfile.getCurrentArmor();
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java
index ddc6ab3b..746f9728 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java
@@ -22,7 +22,6 @@ import com.mojang.authlib.GameProfile;
import io.github.moulberry.hychat.HyChat;
import io.github.moulberry.hychat.chat.ChatManager;
import io.github.moulberry.hychat.gui.GuiChatBox;
-import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.chat.ChatProcessResult;
import kr.syeyoung.dungeonsguide.mod.chat.ChatProcessor;
import kr.syeyoung.dungeonsguide.mod.chat.ChatTransmitter;
@@ -30,75 +29,53 @@ import kr.syeyoung.dungeonsguide.mod.config.guiconfig.ConfigPanelCreator;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MFeatureEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.MParameterEdit;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.RootConfigPanel;
-import kr.syeyoung.dungeonsguide.mod.cosmetics.ActiveCosmetic;
-import kr.syeyoung.dungeonsguide.mod.cosmetics.CosmeticData;
import kr.syeyoung.dungeonsguide.mod.events.annotations.DGEventHandler;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.mod.features.SimpleFeature;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.ApiFetcher;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.PlayerSkyblockData;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.SkinFetcher;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.DataRendererEditor;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.DataRendererRegistry;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.IDataRenderer;
+import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.widget.WidgetProfileViewer;
+import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
+import kr.syeyoung.dungeonsguide.mod.overlay.OverlayManager;
+import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
+import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
import kr.syeyoung.dungeonsguide.mod.party.PartyContext;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
-import lombok.Getter;
-import lombok.Setter;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiChat;
import net.minecraft.client.gui.ScaledResolution;
-import net.minecraft.client.gui.inventory.GuiInventory;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.RenderHelper;
-import net.minecraft.event.HoverEvent;
-import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
-import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
+import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.client.event.GuiScreenEvent;
-import net.minecraftforge.fml.client.config.GuiUtils;
import net.minecraftforge.fml.common.Loader;
import org.jetbrains.annotations.NotNull;
import org.lwjgl.input.Mouse;
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL14;
-import java.awt.*;
import java.util.List;
import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
+// TODO: do not limit element positioning
+// maybe a cool editor?
public class FeatureViewPlayerStatsOnJoin extends SimpleFeature {
static Minecraft mc = Minecraft.getMinecraft();
- protected Rectangle popupRect;
- ChangeProfileWidget profileButtonWidget = new ChangeProfileWidget();
- private String lastuid; // actually current uid
- private CompletableFuture<Optional<PlayerSkyblockData>> profileFuture;
- private Future<Optional<GameProfile>> gameProfileFuture;
- private Future<SkinFetcher.SkinSet> skinFuture;
- private FakePlayer fakePlayer;
- private boolean shouldDraw = false;
- public FeatureViewPlayerStatsOnJoin() {
- super("Party", "View player stats when join", "view player rendering when joining/someone joins the party", "partykicker.viewstats", true);
+ public static UUID fromString(String input) {
+ return UUID.fromString(input.replaceFirst("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5"));
+ }
+ public FeatureViewPlayerStatsOnJoin() {
+ super("Party", "View player stats when join", "view player rendering when joining/someone joins the party", "partykicker.viewstats", true);
addParameter("datarenderers", new FeatureParameter<List<String>>("datarenderers", "DataRenderers", "Datarenderssdasd", new ArrayList<>(Arrays.asList(
"catalv", "selected_class_lv", "dungeon_catacombs_higheststat", "dungeon_master_catacombs_higheststat", "skill_combat_lv", "skill_foraging_lv", "skill_mining_lv", "fairysouls", "dummy"
)), "stringlist"));
ChatProcessor.INSTANCE.subscribe(((txt, messageContext) -> {
-
if (isEnabled() && txt.contains("§r§ejoined the dungeon group! (§r§b")) {
String username = TextUtils.stripColor(txt).split(" ")[3];
if (username.equalsIgnoreCase(mc.getSession().getUsername())) {
@@ -112,23 +89,11 @@ public class FeatureViewPlayerStatsOnJoin extends SimpleFeature {
} else {
processMemberJoin(username);
}
-
-
}
-
-
return ChatProcessResult.NONE;
}));
}
-
- public static void clip(ScaledResolution resolution, int x, int y, int width, int height) {
- if (width < 0 || height < 0) return;
-
- int scale = resolution.getScaleFactor();
- GL11.glScissor((x) * scale, mc.displayHeight - (y + height) * scale, (width) * scale, height * scale);
- }
-
public static void processPartyMembers(PartyContext context) {
for (String member : context.getPartyRawMembers()) {
processMemberJoin(member);
@@ -147,385 +112,55 @@ public class FeatureViewPlayerStatsOnJoin extends SimpleFeature {
ApiFetcher.fetchMostRecentProfileAsync(a.get(), FeatureRegistry.PARTYKICKER_APIKEY.getAPIKey());
IChatComponent comp = new ChatComponentText("§eDungeons Guide §7:: §e" + username + "§f's Profile ")
- .appendSibling(new ChatComponentText("§7view").setChatStyle(new ChatStyle().setChatHoverEvent(new HoverEventRenderPlayer(a.orElse(null)))));
+ .appendSibling(new ChatComponentText("§7view").setChatStyle(new ChatStyle().setChatHoverEvent(new HoverEventRenderPlayer(
+ new GameProfile(fromString(a.get()), username)))));
ChatTransmitter.addToQueue((ChatComponentText) comp);
-
-
});
}
- @DGEventHandler
- public void onGuiPostRender(GuiScreenEvent.DrawScreenEvent.Post rendered) {
+ private OverlayWidget widget;
+
+ @DGEventHandler(triggerOutOfSkyblock = true)
+ public void onGuiPostRender(GuiScreenEvent.MouseInputEvent.Pre mouseInputEvent) {
if (!(mc.currentScreen instanceof GuiChat)) {
- cancelRender();
return;
}
-
ScaledResolution scaledResolution = new ScaledResolution(mc);
IChatComponent ichatcomponent = getHoveredComponent(scaledResolution);
- String uid = null;
- if (ichatcomponent != null && ichatcomponent.getChatStyle().getChatHoverEvent() instanceof HoverEventRenderPlayer) {
- uid = ((HoverEventRenderPlayer) ichatcomponent.getChatStyle().getChatHoverEvent()).getUuid();
- }
-
- int width = scaledResolution.getScaledWidth();
- int height = scaledResolution.getScaledHeight();
- int mouseX = Mouse.getX() * width / mc.displayWidth;
- int mouseY = height - Mouse.getY() * height / mc.displayHeight - 1;
-
- shouldCancelRendering(uid, mouseX, mouseY);
-
- if (lastuid == null) return;
-
-
- if (popupRect == null) {
- popupRect = new Rectangle(mouseX, mouseY, 220, 220);
- if (popupRect.y + popupRect.height > scaledResolution.getScaledHeight()) {
- popupRect.y -= popupRect.y + popupRect.height - scaledResolution.getScaledHeight();
- }
- }
-
- if (profileFuture == null) {
- profileFuture = ApiFetcher.fetchMostRecentProfileAsync(lastuid, FeatureRegistry.PARTYKICKER_APIKEY.getAPIKey());
- }
-
- if (gameProfileFuture == null) {
- gameProfileFuture = ApiFetcher.getSkinGameProfileByUUIDAsync(lastuid);
- }
- boolean plsSetAPIKEY = false;
- if (skinFuture == null && gameProfileFuture.isDone()) {
- try {
- skinFuture = SkinFetcher.getSkinSet(gameProfileFuture.get().orElse(null));
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
-
- try {
- if (fakePlayer == null && skinFuture != null && profileFuture != null && skinFuture.isDone() && profileFuture.isDone() && profileFuture.get().isPresent()) {
- if (profileButtonWidget.getCurrentrySelectedProfile(profileFuture.get().get()) != null) {
- if (skinFuture.get() != null) {
- profileButtonWidget.setCurrentyselectedprofile(profileFuture.get().get().getLastestprofileArrayIndex());
- fakePlayer = new FakePlayer(gameProfileFuture.get().orElse(null), skinFuture.get(), profileButtonWidget.getCurrentrySelectedProfile(profileFuture.get().get()), profileButtonWidget.getCurrentyselectedprofile());
- }
- }
- } else if (fakePlayer != null) {
- if (fakePlayer.getProfileNumber() != profileButtonWidget.getCurrentyselectedprofile()) {
- fakePlayer = new FakePlayer(gameProfileFuture.get().orElse(null), skinFuture.get(), profileButtonWidget.getCurrentrySelectedProfile(profileFuture.get().get()), profileButtonWidget.getCurrentyselectedprofile());
- }
- }
- } catch (InterruptedException | ExecutionException e) {
- plsSetAPIKEY = true;
- }
-
-
- Optional<PlayerProfile> playerProfile;
- if (plsSetAPIKEY || !profileFuture.isDone()) {
- playerProfile = null;
- } else {
- PlayerSkyblockData data = null;
- try {
- data = profileFuture.get().get();
- } catch (InterruptedException | ExecutionException e) {
- throw new RuntimeException(e);
- }
- PlayerProfile currentlySelectedProfile = profileButtonWidget.getCurrentrySelectedProfile(data);
- playerProfile = Optional.ofNullable(currentlySelectedProfile);
- }
-
-
- draw(scaledResolution, mouseX, mouseY, plsSetAPIKEY, playerProfile);
- }
-
- private void draw(ScaledResolution scaledResolution, int mouseX, int mouseY, boolean plsSetAPIKEY, Optional<PlayerProfile> playerProfile) {
- GlStateManager.pushMatrix();
- GlStateManager.translate(popupRect.x, popupRect.y, 0);
- int backroundGuiColor = 0xFF23272a;
- Gui.drawRect(0, 0, popupRect.width, popupRect.height, backroundGuiColor);
- Gui.drawRect(2, 2, popupRect.width - 2, popupRect.height - 2, 0XFF2c2f33);
-
- GlStateManager.enableBlend();
- GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- if (plsSetAPIKEY) {
- mc.fontRendererObj.drawString("Please set API KEY on /dg -> Party Kicker", 5, 5, 0xFFFFFFFF);
- GlStateManager.popMatrix();
- } else if (playerProfile == null) {
- mc.fontRendererObj.drawString("Fetching data...", 5, 5, 0xFFFFFFFF);
- GlStateManager.popMatrix();
- } else if (!playerProfile.isPresent()) {
- mc.fontRendererObj.drawString("User could not be found", 5, 5, 0xFFFFFFFF);
- GlStateManager.popMatrix();
- } else {
- int relX = mouseX - popupRect.x;
- int relY = mouseY - popupRect.y;
- FontRenderer fr = mc.fontRendererObj;
- GL11.glEnable(GL11.GL_SCISSOR_TEST);
- clip(scaledResolution, popupRect.x, popupRect.y, popupRect.width, popupRect.height);
-
- Gui.drawRect(0, 168, 90, 195, backroundGuiColor);
- Gui.drawRect(2, 170, 88, 193, new Rectangle(2, 170, 86, 23).contains(relX, relY) ? 0xFFff7777 : 0xFFFF3333);
-
- Gui.drawRect(0, 193, 90, 220, backroundGuiColor);
- Gui.drawRect(2, 195, 88, 218, new Rectangle(2, 195, 86, 23).contains(relX, relY) ? 0xFF859DF0 : 0xFF7289da);
-
-
- GlStateManager.enableBlend();
- GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- fr.drawString("Kick", (90 - fr.getStringWidth("Kick")) / 2, (364 - fr.FONT_HEIGHT) / 2, 0xFFFFFFFF);
- fr.drawString("Invite", (90 - fr.getStringWidth("Invite")) / 2, (414 - fr.FONT_HEIGHT) / 2, 0xFFFFFFFF);
-
- GlStateManager.pushMatrix();
- GlStateManager.translate(95, 5, 0);
- int culmutativeY = 5;
- IDataRenderer dataRendererToHover = null;
- for (String datarenderers : this.<List<String>>getParameter("datarenderers").getValue()) {
- GlStateManager.enableBlend();
- GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- IDataRenderer dataRenderer = DataRendererRegistry.getDataRenderer(datarenderers);
- Dimension dim;
- if (dataRenderer == null) {
- fr.drawString("Couldn't find Datarenderer", 0, 0, 0xFFFF0000);
- fr.drawString(datarenderers, 0, fr.FONT_HEIGHT, 0xFFFF0000);
- dim = new Dimension(0, fr.FONT_HEIGHT * 2);
- } else {
- GlStateManager.pushMatrix();
- dim = dataRenderer.renderData(playerProfile.get());
- GlStateManager.popMatrix();
- }
- if (relX >= 95 && relX <= popupRect.width && relY >= culmutativeY && relY < culmutativeY + dim.height && dataRenderer != null) {
- dataRendererToHover = dataRenderer;
- }
- culmutativeY += dim.height;
- GlStateManager.translate(0, dim.height, 0);
- }
- GlStateManager.popMatrix();
- GlStateManager.enableBlend();
- GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- Gui.drawRect(0, 0, 90, 170, backroundGuiColor);
- Gui.drawRect(2, 2, 88, 168, 0xFF444444);
-
- GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
-
- profileButtonWidget.drawChangeProfileButton(relX, relY);
-
-
- Gui.drawRect(78, 156, 90, 170, backroundGuiColor);
- fr.drawString("§eI", 82, 159, -1);
-
-
- GlStateManager.color(1, 1, 1, 1.0F);
- if (fakePlayer != null) {
- drawFakePlayer(scaledResolution, mouseX, mouseY, playerProfile, relX, relY, fr);
- } else {
- GlStateManager.enableBlend();
- GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
- fr.drawString("Loading", 5, 35, 0xFFEFFF00);
- }
- GlStateManager.popMatrix();
- GL11.glDisable(GL11.GL_SCISSOR_TEST);
- if (dataRendererToHover != null && !shouldDraw) {
- dataRendererToHover.onHover(playerProfile.get(), mouseX, mouseY);
- }
- GL11.glEnable(GL11.GL_SCISSOR_TEST);
- GlStateManager.pushMatrix();
- GlStateManager.translate(popupRect.x, popupRect.y, 0);
- if (shouldDraw) {
- int startX = 81;
- int startY = 86;
- clip(scaledResolution, popupRect.x + startX - 1, popupRect.y + startY - 1, 164, 74);
- GlStateManager.translate(startX, startY, 1);
- Gui.drawRect(-1, -1, 163, 73, 0xFF000000);
- GlStateManager.disableLighting();
- ItemStack toHover = null;
- int rx = relX - startX;
- int ry = relY - startY;
-
- if (playerProfile.get().getInventory() != null) {
- GlStateManager.disableRescaleNormal();
- RenderHelper.enableGUIStandardItemLighting();
- GlStateManager.disableLighting();
- for (int i = 0; i < playerProfile.get().getInventory().length; i++) {
- int x = (i % 9) * 18;
- int y = (i / 9) * 18;
- if (x <= rx && rx < x + 18 && y <= ry && ry < y + 18) {
- toHover = playerProfile.get().getInventory()[(i + 9) % 36];
+ GameProfile gameProfile = null;
+ if (ichatcomponent != null && ichatcomponent.getChatStyle().getChatHoverEvent() instanceof HoverEventRenderPlayer) {
+ gameProfile = ((HoverEventRenderPlayer) ichatcomponent.getChatStyle().getChatHoverEvent()).getGameProfile();
+ }
+ if (gameProfile != null && widget == null) {
+ int mouseX = Mouse.getX();
+ int mouseY = (Minecraft.getMinecraft().displayHeight - Mouse.getY());
+
+ double width = 220 * scaledResolution.getScaleFactor();
+ double heigth = 220 * scaledResolution.getScaleFactor();
+ widget = new OverlayWidget(
+ new WidgetProfileViewer(gameProfile, FeatureRegistry.PARTYKICKER_APIKEY.getAPIKey(),
+ scaledResolution.getScaleFactor(), () -> {
+ if (widget != null) {
+