diff options
Diffstat (limited to 'src/main/java/de/hysky')
3 files changed, 29 insertions, 19 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java index 6e702e7b..fb6469cb 100644 --- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -6,6 +6,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.debug.Debug; import de.hysky.skyblocker.skyblock.*; import de.hysky.skyblocker.skyblock.dungeon.*; +import de.hysky.skyblocker.skyblock.dungeon.partyfinder.PartyFinderScreen; import de.hysky.skyblocker.skyblock.dungeon.puzzle.CreeperBeams; import de.hysky.skyblocker.skyblock.dungeon.puzzle.DungeonBlaze; import de.hysky.skyblocker.skyblock.dungeon.puzzle.TicTacToe; @@ -106,6 +107,7 @@ public class SkyblockerMod implements ClientModInitializer { DungeonBlaze.init(); Waterboard.init(); DungeonScore.init(); + PartyFinderScreen.initClass(); ChestValue.init(); FireFreezeStaffTimer.init(); GuardianHealth.init(); 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 35180ef3..12b1f972 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,16 +10,17 @@ 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.util.DefaultSkinHelper; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.StringNbtReader; -import net.minecraft.screen.slot.SlotActionType; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.text.TextColor; +import net.minecraft.util.DyeColor; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; @@ -85,7 +86,7 @@ public class PartyEntry extends ElementListWidget.Entry<PartyEntry> { floor = tooltipText.split(":")[1].trim(); if (dungeon.equals("???")) continue; if (PartyFinderScreen.floorIconsMaster == null || PartyFinderScreen.floorIconsNormal == null) continue; - if (dungeon.contains("master")) { + if (dungeon.contains("Master Mode")) { try { floorSkullNBT = StringNbtReader.parse(PartyEntryListWidget.BASE_SKULL_NBT.replace("%TEXTURE%", PartyFinderScreen.floorIconsMaster.getOrDefault(floor.toLowerCase(), ""))); } catch (CommandSyntaxException e) { @@ -181,13 +182,13 @@ public class PartyEntry extends ElementListWidget.Entry<PartyEntry> { PlayerSkinDrawer.draw(context, partyMember.skinTexture, 6 + 136 * (i % 2), 24 + 14 * (i / 2), 8, true, false); } if (minClassLevel > 0) { - context.drawText(textRenderer, "Class " + minClassLevel, 277, 25, 0xFFFFFF00, true); + context.drawText(textRenderer, "Class " + minClassLevel, 277, 25, 0xFFFFFFFF, true); 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) { - context.drawText(textRenderer, "Cata " + minCatacombsLevel, 277, 43, 0xFFFFFF00, true); + context.drawText(textRenderer, "Cata " + minCatacombsLevel, 277, 43, 0xFFFFFFFF, true); if (!isLocked && hovered && mouseXLocal >= 276 && mouseXLocal <= 331 && mouseYLocal >= 40 && mouseYLocal <= 53) { context.drawTooltip(textRenderer, Text.translatable("skyblocker.partyFinder.partyCard.minDungeonLevel", minCatacombsLevel), mouseXLocal, mouseYLocal); } @@ -195,10 +196,11 @@ public class PartyEntry extends ElementListWidget.Entry<PartyEntry> { ItemStack stack = new ItemStack(Items.PLAYER_HEAD); stack.setNbt(floorSkullNBT); context.drawItem(stack, 317, 3); + int textWidth = textRenderer.getWidth(floor); context.drawText(textRenderer, floor, 316 - textWidth, 7, 0x70000000, false); - context.drawText(textRenderer, note, 5, 51, 0xFFFFFFFF, true); + context.drawText(textRenderer, note, 5, 52, 0xFFFFFFFF, true); if (isLocked) { matrices.push(); @@ -237,7 +239,7 @@ public class PartyEntry extends ElementListWidget.Entry<PartyEntry> { public Text toText() { char dClass = dungeonClass.isEmpty() ? '?' : dungeonClass.charAt(0); - return name.copy().append(Text.literal(" " + dClass + classLevel).setStyle(Style.EMPTY.withColor(Formatting.WHITE))); + return name.copy().append(Text.literal(" " + dClass + " " + classLevel).formatted(Formatting.YELLOW)); } } 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 e6556d15..e7311073 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 @@ -2,6 +2,7 @@ package de.hysky.skyblocker.skyblock.dungeon.partyfinder; import com.google.gson.JsonObject; import de.hysky.skyblocker.SkyblockerMod; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; @@ -34,6 +35,7 @@ import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.util.*; +import java.util.concurrent.CompletableFuture; public class PartyFinderScreen extends Screen { protected static final Logger LOGGER = LoggerFactory.getLogger(PartyFinderScreen.class); @@ -99,25 +101,29 @@ public class PartyFinderScreen extends Screen { + public static void initClass() { + ClientLifecycleEvents.CLIENT_STARTED.register(client -> { + //Checking when this is loaded probably isn't necessary as the maps are always null checked + CompletableFuture.runAsync(() -> { + floorIconsNormal = new HashMap<>(); + floorIconsMaster = new HashMap<>(); + try (BufferedReader skullTextureReader = client.getResourceManager().openAsReader(new Identifier(SkyblockerMod.NAMESPACE, "dungeons/catacombs/floorskulls.json"))) { + JsonObject json = SkyblockerMod.GSON.fromJson(skullTextureReader, JsonObject.class); + json.getAsJsonObject("normal").asMap().forEach((s, jsonElement) -> floorIconsNormal.put(s, jsonElement.getAsString())); + json.getAsJsonObject("master").asMap().forEach((s, jsonElement) -> floorIconsMaster.put(s, jsonElement.getAsString())); + LOGGER.debug("[Skyblocker] Dungeons floor skull textures json loaded"); + } catch (Exception e) { + LOGGER.error("[Skyblocker] Failed to load dungeons floor skull textures json", e); + } + }); + }); + } public PartyFinderScreen(GenericContainerScreenHandler handler, PlayerInventory inventory, Text title) { super(title); this.handler = handler; this.inventory = inventory; name = title; - if (floorIconsNormal == null || floorIconsMaster == null) { - floorIconsNormal = new HashMap<>(); - floorIconsMaster = new HashMap<>(); - try (BufferedReader skullTextureReader = MinecraftClient.getInstance().getResourceManager().openAsReader(new Identifier(SkyblockerMod.NAMESPACE, "dungeons/catacombs/floorskulls.json"))) { - JsonObject json = SkyblockerMod.GSON.fromJson(skullTextureReader, JsonObject.class); - json.getAsJsonObject("normal").asMap().forEach((s, jsonElement) -> floorIconsNormal.put(s, jsonElement.getAsString())); - json.getAsJsonObject("master").asMap().forEach((s, jsonElement) -> floorIconsMaster.put(s, jsonElement.getAsString())); - LOGGER.debug("[Skyblocker] Dungeons floor skull textures json loaded"); - } catch (Exception e) { - LOGGER.error("[Skyblocker] Failed to load dungeons floor skull textures json"); - e.printStackTrace(); - } - } } @Override |