diff options
| author | syeyoung <cyoung06@naver.com> | 2023-01-22 00:30:16 +0900 |
|---|---|---|
| committer | syeyoung <cyoung06@naver.com> | 2023-01-22 00:30:16 +0900 |
| commit | 394c52045bcb53a93c08cfab6d60a42bfd777d59 (patch) | |
| tree | 120a2f198cadcecca5471958ed6d8a2da67e6b11 /mod/src/main/java/kr | |
| parent | 6790c6dd1909522eadb6c8917369b357b7fb4119 (diff) | |
| download | Skyblock-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')
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) { + |
