From 098b003a641225b97ffd05c12df3954db901397a Mon Sep 17 00:00:00 2001 From: vicisacat Date: Fri, 12 Jan 2024 18:11:35 +0100 Subject: Adds a custom GUI for the Party Finder in dungeons. Is it good? Debatable. --- .../skyblocker/dungeons/catacombs/floorskulls.json | 22 +++++++++++++++++++++ .../resources/assets/skyblocker/lang/en_us.json | 13 +++++++++++- .../assets/skyblocker/textures/gui/party_card.png | Bin 0 -> 1214 bytes .../skyblocker/textures/gui/party_card_hover.png | Bin 0 -> 372 bytes 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/skyblocker/dungeons/catacombs/floorskulls.json create mode 100644 src/main/resources/assets/skyblocker/textures/gui/party_card.png create mode 100644 src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png (limited to 'src/main/resources/assets/skyblocker') diff --git a/src/main/resources/assets/skyblocker/dungeons/catacombs/floorskulls.json b/src/main/resources/assets/skyblocker/dungeons/catacombs/floorskulls.json new file mode 100644 index 00000000..4bb52026 --- /dev/null +++ b/src/main/resources/assets/skyblocker/dungeons/catacombs/floorskulls.json @@ -0,0 +1,22 @@ +{ + "normal": { + "entrance": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWEyZjY3NTAwYTY1ZjNjZTc5ZDM0ZWMxNTBkZTkzZGY4ZjYwZWJlNTJlMjQ4ZjVlMWNkYjY5YjA3MjYyNTZmNyJ9fX0K", + "floor i": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTcyMDkxN2NkYTA1Njc0NDI2MTdmMjcyMWU4OGJlOWQyZmZiYjBiMjZhM2Y0YzJmZTIxNjU1ODE0ZDRmNDQ3NiJ9fX0K", + "floor ii": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTcyMDkxN2NkYTA1Njc0NDI2MTdmMjcyMWU4OGJlOWQyZmZiYjBiMjZhM2Y0YzJmZTIxNjU1ODE0ZDRmNDQ3NiJ9fX0K", + "floor iii": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2NlNjlkMmRkY2M4MWM5ZmMyZTk5NDhjOTIwMDNlYjBmN2ViZjBlN2U5NTJlODAxYjdmMjA2OWRjZWU3NmQ4NSJ9fX0K", + "floor iv": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzY5NjVlM2ZkNjE5ZGU2YjBhN2NlMTY3MzA3MjUyMGE5MzYwMzc4ZTFjYjhjMTlkNGJhZjBjODY3NjlkMzc2NCJ9fX0K", + "floor v": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzNhMDI0NmQ1MTM1MGI3NzBkZTI3ZjFhMTkyNWIxMWNlY2U1N2IzYzliMjA5ZTJiNmJmMjc1ZDMyZDAxNTRjMyJ9fX0K", + "floor vi": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTFhODFmOWIwYTEzNzU2ODFhZTdkOWRmNjVlNGQzNzIzYjFmMGZhNzQ0M2U3NmRkM2JjNjNkZDM4NjRmZjM0MyJ9fX0K", + "floor vii": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmE0MDY3NWQzMzNhZGNjYTc1YjM1YjZiYTI5YjRmZDdlNWVhZWI5OTgzOTUyOTUzODViNDk0MTI4NzE1ZGFiMyJ9fX0K" + }, + "master": { + "entrance": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDU1MDEyNSwKICAicHJvZmlsZUlkIiA6ICI5ZDQyNWFiOGFmZjg0MGU1OWM3NzUzZjc5Mjg5YjMyZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJUb21wa2luNDIiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWViNWIyMWFmMzMwYWYxMjJiMjY4YjdhYTM5MDczM2JkMWI2OTliNGQwOTIzMjMzZWNkMjRmODFlMDhiOWJjZSIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", + "floor i": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDU1MDEyNSwKICAicHJvZmlsZUlkIiA6ICI5ZDQyNWFiOGFmZjg0MGU1OWM3NzUzZjc5Mjg5YjMyZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJUb21wa2luNDIiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWViNWIyMWFmMzMwYWYxMjJiMjY4YjdhYTM5MDczM2JkMWI2OTliNGQwOTIzMjMzZWNkMjRmODFlMDhiOWJjZSIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", + "floor ii": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDcxNzIxMywKICAicHJvZmlsZUlkIiA6ICI5MzZmMTA3MTEzOGM0YjMyYTg0OGY2NmE5Nzc2NDJhMiIsCiAgInByb2ZpbGVOYW1lIiA6ICIwMDAwMDAwMDAwMDAwMDB4IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzMyMjkyZTRlMGZhNjI2NjcyNTZlZjhkYTBmMDE5ODJhOTk2NDk5ZjRkNWQ4OTRiZDA1OGMzZTZmM2QyZmIyZDkiCiAgICB9CiAgfQp9", + "floor iii": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDczNDE2NiwKICAicHJvZmlsZUlkIiA6ICJjMGYzYjI3YTUwMDE0YzVhYjIxZDc5ZGRlMTAxZGZlMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJDVUNGTDEzIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2M5NjlmNmIxNDg2NDhhYThkMDI3MjI4YTUyZmI1YTNjYTFlZTg0ZGM3NmU0Nzg1MWYxNGRiMDI5YTczMGE4YTMiCiAgICB9CiAgfQp9", + "floor iv": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDc1MDAxMiwKICAicHJvZmlsZUlkIiA6ICI1N2IzZGZiNWY4YTY0OWUyOGI1NDRlNGZmYzYzMjU2ZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJYaWthcm8iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdiNjkwMjFmOWMwOTY0N2RmZDliMzRkZjNkZWFmZjcwY2ZjNzQwZjZhMjZmNjEyZGQ0NzUwM2ZjMzRjOTdmMCIKICAgIH0KICB9Cn0", + "floor v": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDc2NTU5OCwKICAicHJvZmlsZUlkIiA6ICI3NzI3ZDM1NjY5Zjk0MTUxODAyM2Q2MmM2ODE3NTkxOCIsCiAgInByb2ZpbGVOYW1lIiA6ICJsaWJyYXJ5ZnJlYWsiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDY1Y2JjZTQwZTYwZTdhNTlhODdmYThmNGVjYjZjY2ZjMTUxNDMzOGMyNjI2MTRiZjMzNzM5YTYyNjNmNTQwNSIKICAgIH0KICB9Cn0", + "floor vi": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDc4MTM4OCwKICAicHJvZmlsZUlkIiA6ICJmZDYwZjM2ZjU4NjE0ZjEyYjNjZDQ3YzJkODU1Mjk5YSIsCiAgInByb2ZpbGVOYW1lIiA6ICJSZWFkIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2FjM2Q0NWZmNjcyOTg4YjQ2MzU4MTM3YmUzMmMzYzlhZGZkOWE2MjkxOTVjMmI2NDgxNGE5MzQ5OWRkNjYwNiIKICAgIH0KICB9Cn0", + "floor vii": "ewogICJ0aW1lc3RhbXAiIDogMTYxNzExMDc5MzYwNSwKICAicHJvZmlsZUlkIiA6ICIxZDUyMzNkMzg4NjI0YmFmYjAwZTMxNTBhN2FhM2E4OSIsCiAgInByb2ZpbGVOYW1lIiA6ICIwMDAwMDAwMDAwMDAwMDBKIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2YwYzY4N2EyMDI2YjY5MzQ0YjVhZGRiYmVmYTM4MWQxNTRkNmJjODBjOGMwMTc0NTMxMWJmYmJmOGJiZjAwOWMiCiAgICB9CiAgfQp9" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index d6f09de9..e9ce9ffc 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -127,9 +127,10 @@ "text.autoconfig.skyblocker.option.general.flameOverlay": "Flame Overlay", "text.autoconfig.skyblocker.option.general.flameOverlay.flameHeight": "Flame Height", "text.autoconfig.skyblocker.option.general.flameOverlay.flameOpacity": "Flame Opacity", + "text.autoconfig.skyblocker.option.general.betterPartyFinder": "Better Party Finder", "skyblocker.itemTooltip.nullMessage": "§cItem price information on tooltip will renew in max 60 seconds. If not, check latest.log", "skyblocker.itemTooltip.noData": "§cNo Data", - + "skyblocker.wikiLookup.noArticleFound": "§rUnable to locate a wiki article for this item...", "text.autoconfig.skyblocker.category.richPresence": "Discord Rich Presence", @@ -420,5 +421,15 @@ "skyblocker.tips.fairySoulsEnigmaSoulsRelics": "Don't know where to find Fairy Souls, Enigma Souls, or Relics? Enable the helpers to aid your exploration, they'll remember which souls you've already found.", "skyblocker.tips.quickNav": "You can customize the QuickNav buttons in the config.", + "skyblocker.partyFinder.tabs.partyFinder": "Party Finder", + "skyblocker.partyFinder.tabs.searchSettings": "Search Filters", + "skyblocker.partyFinder.tabs.createParty": "Create Party", + "skyblocker.partyFinder.partyCard.minClassLevel": "Min class level required: %d", + "skyblocker.partyFinder.partyCard.minDungeonLevel": "Min dungeon level required: %d", + "skyblocker.partyFinder.noParties": "No parties found. Big sad :(", + "skyblocker.partyFinder.error.name" : "Party Finder error!", + "skyblocker.partyFinder.error.message": "An error occurred so you've been sent to the vanilla party finder", + "skyblocker.partyFinder.loadingError": "If you see this for more than 5 seconds, something probably went wrong...", + "emi.category.skyblocker.skyblock": "Skyblock" } \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/textures/gui/party_card.png b/src/main/resources/assets/skyblocker/textures/gui/party_card.png new file mode 100644 index 00000000..191200c8 Binary files /dev/null and b/src/main/resources/assets/skyblocker/textures/gui/party_card.png differ diff --git a/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png b/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png new file mode 100644 index 00000000..05aace37 Binary files /dev/null and b/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png differ -- cgit From d14554132ae518594f29ec7ba73bb4f46263e86e Mon Sep 17 00:00:00 2001 From: vicisacat Date: Sat, 13 Jan 2024 23:52:21 +0100 Subject: Fixes and show Your Party at the top - Lazy fix for if there is no party host - Moved setting slot parse to the bottom row for loop --- .../skyblock/dungeon/partyfinder/PartyEntry.java | 67 ++++++++++++++++++---- .../dungeon/partyfinder/PartyEntryListWidget.java | 3 +- .../dungeon/partyfinder/PartyFinderScreen.java | 37 ++++++++---- .../resources/assets/skyblocker/lang/en_us.json | 3 + 4 files changed, 86 insertions(+), 24 deletions(-) (limited to 'src/main/resources/assets/skyblocker') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java index 84f450cc..d96922c8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java @@ -36,8 +36,8 @@ public class PartyEntry extends ElementListWidget.Entry { private static final Identifier PARTY_CARD_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/party_card.png"); private static final Identifier PARTY_CARD_TEXTURE_HOVER = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/party_card_hover.png"); - private final PartyFinderScreen screen; - private final int slotID; + protected final PartyFinderScreen screen; + protected final int slotID; Player partyLeader; String floor = "???"; String dungeon = "???"; @@ -72,7 +72,8 @@ public class PartyEntry extends ElementListWidget.Entry { int membersIndex = -1; for (int i = 1; i < tooltips.size(); i++) { Text text = tooltips.get(i); - String tooltipText = text.getString(); + String tooltipText = Formatting.strip(text.getString()); + assert tooltipText != null; String lowerCase = tooltipText.toLowerCase(); //System.out.println("TOOLTIP"+i); //System.out.println(text.getSiblings()); @@ -143,11 +144,26 @@ public class PartyEntry extends ElementListWidget.Entry { if (playerNameTrim.equals(partyHost)) { partyLeader = player; j--; + } else if (j > 3) { + partyLeader = player; } else partyMembers[j] = player; } } - SkullBlockEntityAccessor.invokeFetchProfile(partyHost).thenAccept( + if (partyLeader == null) { + for (int i = partyMembers.length - 1; i >= 0; i--) { + if (partyMembers[i] != null) { + partyLeader = partyMembers[i]; + partyMembers[i] = null; + break; + } + } + } + if (partyLeader == null) { + partyLeader = new Player(Text.literal("Error"), "Error", -1); + } + + SkullBlockEntityAccessor.invokeFetchProfile(partyLeader.name.getString()).thenAccept( gameProfile -> gameProfile.ifPresent(profile -> partyLeaderSkin = client.getSkinProvider().getSkinTextures(profile).texture())); } @@ -167,13 +183,14 @@ public class PartyEntry extends ElementListWidget.Entry { matrices.push(); matrices.translate(x, y, 0); - if (hovered && !isLocked) context.drawTexture(PARTY_CARD_TEXTURE_HOVER, 0, 0, 0, 0, 336, 64, 336, 64); - else context.drawTexture(PARTY_CARD_TEXTURE, 0, 0, 0, 0, 336, 64, 336, 64); - + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + if (hovered && !isLocked) { + context.drawTexture(PARTY_CARD_TEXTURE_HOVER, 0, 0, 0, 0, 336, 64, 336, 64); + if (!(this instanceof YourParty)) context.drawText(textRenderer, Text.translatable("skyblocker.partyFinder.join"), 148, 6, 0xFFFFFFFF, false); + } else context.drawTexture(PARTY_CARD_TEXTURE, 0, 0, 0, 0, 336, 64, 336, 64); int mouseXLocal = mouseX - x; int mouseYLocal = mouseY - y; - TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; context.drawText(textRenderer, this.partyLeader.toText(), 18, 6, 0xFFFFFFFF, true); if (PartyFinderScreen.DEBUG) { @@ -229,9 +246,11 @@ public class PartyEntry extends ElementListWidget.Entry { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - System.out.println("To be clicked" + slotID); - - if (button == 0 && !screen.isWaitingForServer()) { + //System.out.println("To be clicked" + slotID); + if (slotID == -1) { + PartyFinderScreen.LOGGER.error("[Skyblocker] Slot ID is null for " + partyLeader.name.getString() + "'s party"); + } + if (button == 0 && !screen.isWaitingForServer() && slotID != -1) { screen.clickAndWaitForServer(slotID); return true; } @@ -273,4 +292,30 @@ public class PartyEntry extends ElementListWidget.Entry { context.drawCenteredTextWithShadow(textRenderer, Text.translatable("skyblocker.partyFinder.noParties"), x+entryWidth/2, y+entryHeight/2-textRenderer.fontHeight/2, 0xFFFFFFFF); } } + + public static class YourParty extends PartyEntry { + + public YourParty(List tooltips, PartyFinderScreen screen, int deListSlotId) { + super(tooltips, screen, deListSlotId); + } + + @Override + public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + MatrixStack matrices = context.getMatrices(); + matrices.push(); + matrices.translate(x, y, 0); + + hovered = hovered && slotID != -1; + + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + Text text; + if (hovered) { + text = Text.translatable("skyblocker.partyFinder.deList"); + } else text = Text.translatable("skyblocker.partyFinder.yourParty"); + context.drawText(textRenderer, text, 48, 6, 0x70000000, false); + + matrices.pop(); + super.render(context, index, y, x, entryWidth, entryHeight, mouseX, mouseY, hovered, tickDelta); + } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java index de430ae5..0147f5da 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java @@ -53,8 +53,9 @@ public class PartyEntryListWidget extends ElementListWidget { public void updateDisplay() { List entries = new ArrayList<>(partyEntries); - entries.removeIf(partyEntry -> !partyEntry.note.contains(search)); + entries.removeIf(partyEntry -> !partyEntry.note.contains(search) && !(partyEntry instanceof PartyEntry.YourParty)); entries.sort(Comparator.comparing(PartyEntry::isLocked)); + entries.sort(Comparator.comparing(partyEntry -> !(partyEntry instanceof PartyEntry.YourParty))); if (entries.isEmpty() && !partyEntries.isEmpty()) { entries.add(new PartyEntry.NoParties()); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyFinderScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyFinderScreen.java index e7311073..3f4d2531 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyFinderScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyFinderScreen.java @@ -343,30 +343,43 @@ public class PartyFinderScreen extends Screen { parties.add(new PartyEntry.NoParties()); }else { for (Slot slot : handler.slots) { - if (slot.id > handler.getRows() * 9 - 1 || !slot.hasStack()) continue; + if (slot.id > (handler.getRows()-1) * 9 - 1 || !slot.hasStack()) continue; if (slot.getStack().isOf(Items.PLAYER_HEAD)) { assert this.client != null; parties.add(new PartyEntry(slot.getStack().getTooltip(this.client.player, TooltipContext.BASIC), this, slot.id)); - } else if (slot.getStack().isOf(Items.NETHER_STAR)) { - settingsButtonSlotId = slot.id; - if (DEBUG) - settingsButton.setMessage(settingsButton.getMessage().copy().append(Text.of(" " + settingsButtonSlotId))); } } } - for (int i = (handler.getRows()-1) * 9; i < handler.getRows() * 9 - 1; i++) { + int deListSlotId = -1; + List tooltips = null; + for (int i = (handler.getRows()-1) * 9; i < handler.getRows() * 9; i++) { Slot slot = handler.slots.get(i); - int done = 0; - if (slot.hasStack() && slot.getStack().isOf(Items.EMERALD_BLOCK)) { + if (!slot.hasStack()) continue; + if (slot.getStack().isOf(Items.EMERALD_BLOCK)) { refreshSlotId = slot.id; refreshButton.active = true; - done += 1; - } else if (slot.hasStack() && slot.getStack().isOf(Items.REDSTONE_BLOCK)) { + } else if (slot.getStack().isOf(Items.REDSTONE_BLOCK)) { createPartyButtonSlotId = slot.id; createPartyButton.active = true; - done += 1; + } else if (slot.getStack().isOf(Items.NETHER_STAR)) { + settingsButtonSlotId = slot.id; + if (DEBUG) + settingsButton.setMessage(settingsButton.getMessage().copy().append(Text.of(" " + settingsButtonSlotId))); + } else if (slot.getStack().isOf(Items.BOOKSHELF)) { + deListSlotId = slot.id; + } else if (slot.getStack().isOf(Items.PLAYER_HEAD)) { + assert this.client != null; + tooltips = slot.getStack().getTooltip(this.client.player, TooltipContext.BASIC); } - if (done == 2) break; + } + if (tooltips != null) { + LOGGER.info("Your Party tooltips"); + tooltips.forEach(text -> LOGGER.info(text.toString())); + if (deListSlotId != -1) { + // Such a wacky thing lol + tooltips.set(0, Text.literal(MinecraftClient.getInstance().getSession().getUsername() + "'s party")); + } + parties.add(new PartyEntry.YourParty(tooltips, this, deListSlotId)); } this.partyEntryListWidget.setEntries(parties); List temp = handler.slots.stream().map(Slot::getStack).toList(); diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index e9ce9ffc..2b41b2aa 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -430,6 +430,9 @@ "skyblocker.partyFinder.error.name" : "Party Finder error!", "skyblocker.partyFinder.error.message": "An error occurred so you've been sent to the vanilla party finder", "skyblocker.partyFinder.loadingError": "If you see this for more than 5 seconds, something probably went wrong...", + "skyblocker.partyFinder.yourParty": "Your party", + "skyblocker.partyFinder.deList": "Click to de-list", + "skyblocker.partyFinder.join": "Click to join", "emi.category.skyblocker.skyblock": "Skyblock" } \ No newline at end of file -- cgit From bcc24f4ff1b060701d0467bd5ffc59602cca1064 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 Jan 2024 11:35:44 -0500 Subject: Fix your party text and change requirements text --- .../skyblock/dungeon/partyfinder/PartyEntry.java | 30 +++++++++------------ .../assets/skyblocker/textures/gui/party_card.png | Bin 1214 -> 1741 bytes .../skyblocker/textures/gui/party_card_hover.png | Bin 372 -> 2983 bytes 3 files changed, 12 insertions(+), 18 deletions(-) (limited to 'src/main/resources/assets/skyblocker') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java index 1c7ab160..b53047d8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java @@ -10,8 +10,6 @@ import net.minecraft.client.gui.Element; import net.minecraft.client.gui.PlayerSkinDrawer; import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.widget.ElementListWidget; -import net.minecraft.client.render.LightmapTextureManager; -import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.DefaultSkinHelper; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; @@ -23,7 +21,6 @@ import net.minecraft.text.Text; import net.minecraft.text.TextColor; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; -import org.joml.Matrix4f; import java.util.Arrays; import java.util.List; @@ -34,6 +31,7 @@ import java.util.regex.Pattern; public class PartyEntry extends ElementListWidget.Entry { private static final Identifier PARTY_CARD_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/party_card.png"); private static final Identifier PARTY_CARD_TEXTURE_HOVER = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/party_card_hover.png"); + public static final Text JOIN_TEXT = Text.translatable("skyblocker.partyFinder.join"); protected final PartyFinderScreen screen; protected final int slotID; Player partyLeader; @@ -193,7 +191,7 @@ public class PartyEntry extends ElementListWidget.Entry { TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; if (hovered && !isLocked) { context.drawTexture(PARTY_CARD_TEXTURE_HOVER, 0, 0, 0, 0, 336, 64, 336, 64); - if (!(this instanceof YourParty)) context.drawText(textRenderer, Text.translatable("skyblocker.partyFinder.join"), 148, 6, 0xFFFFFFFF, false); + if (!(this instanceof YourParty)) context.drawText(textRenderer, JOIN_TEXT, 148, 6, 0xFFFFFFFF, false); } else context.drawTexture(PARTY_CARD_TEXTURE, 0, 0, 0, 0, 336, 64, 336, 64); int mouseXLocal = mouseX - x; int mouseYLocal = mouseY - y; @@ -210,22 +208,19 @@ public class PartyEntry extends ElementListWidget.Entry { for (int i = 0; i < partyMembers.length; i++) { Player partyMember = partyMembers[i]; if (partyMember == null) continue; - context.drawText(textRenderer, partyMember.toText(), 17 + 136 * (i % 2), 24 + 14 * (i / 2), 0xFFFFFFFF, true); + context.drawTextWithShadow(textRenderer, partyMember.toText(), 17 + 136 * (i % 2), 24 + 14 * (i / 2), 0xFFFFFFFF); PlayerSkinDrawer.draw(context, partyMember.skinTexture, 6 + 136 * (i % 2), 24 + 14 * (i / 2), 8, true, false); } - Matrix4f positionMatrix = matrices.peek().getPositionMatrix(); - VertexConsumerProvider.Immediate vertexConsumers = context.getVertexConsumers(); - if (minClassLevel > 0) { - textRenderer.drawWithOutline(Text.of("Class " + minClassLevel).asOrderedText(), 278, 25, 0xFF288BB5, 0xFF103848, positionMatrix, vertexConsumers, LightmapTextureManager.MAX_LIGHT_COORDINATE); + context.drawTextWithShadow(textRenderer, Text.of("Class " + minClassLevel), 278, 25, 0xFFFFFFFF); if (!isLocked && hovered && mouseXLocal >= 276 && mouseXLocal <= 331 && mouseYLocal >= 22 && mouseYLocal <= 35) { context.drawTooltip(textRenderer, Text.translatable("skyblocker.partyFinder.partyCard.minClassLevel", minClassLevel), mouseXLocal, mouseYLocal); } } if (minCatacombsLevel > 0) { - textRenderer.drawWithOutline(Text.of("Cata " + minCatacombsLevel).asOrderedText(), 278, 43, 0xFF288BB5, 0xFF103848, positionMatrix, vertexConsumers, LightmapTextureManager.MAX_LIGHT_COORDINATE); + context.drawTextWithShadow(textRenderer, Text.of("Cata " + minCatacombsLevel), 278, 43, 0xFFFFFFFF); if (!isLocked && hovered && mouseXLocal >= 276 && mouseXLocal <= 331 && mouseYLocal >= 40 && mouseYLocal <= 53) { context.drawTooltip(textRenderer, Text.translatable("skyblocker.partyFinder.partyCard.minDungeonLevel", minCatacombsLevel), mouseXLocal, mouseYLocal); } @@ -235,7 +230,7 @@ public class PartyEntry extends ElementListWidget.Entry { context.drawItem(stack, 317, 3); int textWidth = textRenderer.getWidth(floor); - context.drawText(textRenderer, floor, 316 - textWidth, 7, 0x70000000, false); + context.drawText(textRenderer, floor, 314 - textWidth, 7, 0xA0000000, false); context.drawText(textRenderer, note, 5, 52, 0xFFFFFFFF, true); @@ -301,6 +296,8 @@ public class PartyEntry extends ElementListWidget.Entry { } public static class YourParty extends PartyEntry { + public static final Text DE_LIST_TEXT = Text.translatable("skyblocker.partyFinder.deList"); + public static final Text YOUR_PARTY_TEXT = Text.translatable("skyblocker.partyFinder.yourParty"); public YourParty(List tooltips, PartyFinderScreen screen, int deListSlotId) { super(tooltips, screen, deListSlotId); @@ -308,21 +305,18 @@ public class PartyEntry extends ElementListWidget.Entry { @Override public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + super.render(context, index, y, x, entryWidth, entryHeight, mouseX, mouseY, hovered, tickDelta); + MatrixStack matrices = context.getMatrices(); matrices.push(); matrices.translate(x, y, 0); - hovered = hovered && slotID != -1; + hovered = hovered & slotID != -1; TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - Text text; - if (hovered) { - text = Text.translatable("skyblocker.partyFinder.deList"); - } else text = Text.translatable("skyblocker.partyFinder.yourParty"); - context.drawText(textRenderer, text, 48, 6, 0x70000000, false); + context.drawText(textRenderer, hovered ? DE_LIST_TEXT : YOUR_PARTY_TEXT, 148, 6, 0xFFFFFFFF, false); matrices.pop(); - super.render(context, index, y, x, entryWidth, entryHeight, mouseX, mouseY, hovered, tickDelta); } } } diff --git a/src/main/resources/assets/skyblocker/textures/gui/party_card.png b/src/main/resources/assets/skyblocker/textures/gui/party_card.png index 191200c8..da601595 100644 Binary files a/src/main/resources/assets/skyblocker/textures/gui/party_card.png and b/src/main/resources/assets/skyblocker/textures/gui/party_card.png differ diff --git a/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png b/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png index 05aace37..fc459f1f 100644 Binary files a/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png and b/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png differ -- cgit From f07dcf20d182c0f0e62ed576a79cffd3a2fa3f74 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 Jan 2024 11:41:12 -0500 Subject: Remove shadows from background --- .../assets/skyblocker/textures/gui/party_card.png | Bin 1741 -> 1714 bytes .../skyblocker/textures/gui/party_card_hover.png | Bin 2983 -> 2957 bytes 2 files changed, 0 insertions(+), 0 deletions(-) (limited to 'src/main/resources/assets/skyblocker') diff --git a/src/main/resources/assets/skyblocker/textures/gui/party_card.png b/src/main/resources/assets/skyblocker/textures/gui/party_card.png index da601595..734fb6a5 100644 Binary files a/src/main/resources/assets/skyblocker/textures/gui/party_card.png and b/src/main/resources/assets/skyblocker/textures/gui/party_card.png differ diff --git a/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png b/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png index fc459f1f..c3169853 100644 Binary files a/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png and b/src/main/resources/assets/skyblocker/textures/gui/party_card_hover.png differ -- cgit