aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-03 16:51:10 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-26 16:23:20 -0400
commit87fec063614292700954ce5fa3c73de075b56b58 (patch)
tree8a2e5e9043f3cf544aad04acd13f0cbc161a89f2 /src/main/java/de
parent9305b5cb8bc483e4d4585fed46ef697cda76e033 (diff)
downloadSkyblocker-87fec063614292700954ce5fa3c73de075b56b58.tar.gz
Skyblocker-87fec063614292700954ce5fa3c73de075b56b58.tar.bz2
Skyblocker-87fec063614292700954ce5fa3c73de075b56b58.zip
24w14a & Java 21
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/accessor/MinecraftClientAccessor.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/accessor/SkullBlockEntityAccessor.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntry.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyFinderScreen.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/PlayerHeadHashCache.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Utils.java16
9 files changed, 49 insertions, 18 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/accessor/MinecraftClientAccessor.java b/src/main/java/de/hysky/skyblocker/mixin/accessor/MinecraftClientAccessor.java
new file mode 100644
index 00000000..f48037df
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/mixin/accessor/MinecraftClientAccessor.java
@@ -0,0 +1,15 @@
+package de.hysky.skyblocker.mixin.accessor;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
+
+import net.minecraft.client.MinecraftClient;
+
+@Mixin(MinecraftClient.class)
+public interface MinecraftClientAccessor {
+
+ @Accessor
+ public YggdrasilAuthenticationService getAuthenticationService();
+}
diff --git a/src/main/java/de/hysky/skyblocker/mixin/accessor/SkullBlockEntityAccessor.java b/src/main/java/de/hysky/skyblocker/mixin/accessor/SkullBlockEntityAccessor.java
index dfe544bc..875d24d3 100644
--- a/src/main/java/de/hysky/skyblocker/mixin/accessor/SkullBlockEntityAccessor.java
+++ b/src/main/java/de/hysky/skyblocker/mixin/accessor/SkullBlockEntityAccessor.java
@@ -2,6 +2,8 @@ package de.hysky.skyblocker.mixin.accessor;
import com.mojang.authlib.GameProfile;
import net.minecraft.block.entity.SkullBlockEntity;
+import net.minecraft.util.ApiServices;
+
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
@@ -11,7 +13,7 @@ import java.util.concurrent.CompletableFuture;
@Mixin(SkullBlockEntity.class)
public interface SkullBlockEntityAccessor {
@Invoker
- static CompletableFuture<Optional<GameProfile>> invokeFetchProfile(String name) {
+ static CompletableFuture<Optional<GameProfile>> invokeFetchProfileByName(String name, ApiServices apiServices) {
throw new UnsupportedOperationException();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
index 5cdca216..c34c853b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
@@ -7,6 +7,7 @@ import de.hysky.skyblocker.mixin.accessor.HandledScreenAccessor;
import de.hysky.skyblocker.mixin.accessor.ScreenAccessor;
import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
+import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
import it.unimi.dsi.fastutil.longs.LongBooleanPair;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
@@ -15,7 +16,6 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.ButtonWidget;
-import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.GenericContainerScreenHandler;
import net.minecraft.screen.slot.Slot;
@@ -206,7 +206,7 @@ public class ChestValue {
* Searches for a specific string of characters in the name and lore of an item
*/
private static String searchLoreFor(ItemStack stack, MinecraftClient client, String searchString) {
- return stack.getTooltip(client.player, TooltipContext.BASIC).stream().map(Text::getString).filter(line -> line.contains(searchString)).findAny().orElse(null);
+ return ItemUtils.getLoreLineIf(stack, line -> line.contains(searchString));
}
static Text getProfitText(long profit, boolean hasIncompleteData) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java
index 0a048775..70902a17 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java
@@ -5,7 +5,6 @@ import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ContainerWidget;
-import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.screen.GenericContainerScreenHandler;
@@ -15,6 +14,8 @@ import net.minecraft.text.Text;
import java.util.ArrayList;
import java.util.List;
+import de.hysky.skyblocker.utils.ItemUtils;
+
public class FinderSettingsContainer extends ContainerWidget {
private boolean isInitialized = false;
private OptionDropdownWidget floorSelector;
@@ -161,7 +162,7 @@ public class FinderSettingsContainer extends ContainerWidget {
* @return true if all goes well
*/
private boolean setRangeFromTooltip(ItemStack stack, RangedValueWidget widget) {
- for (Text text : stack.getTooltip(null, TooltipContext.BASIC)) {
+ for (Text text : ItemUtils.getLore(stack)) {
String textLowerCase = text.getString().toLowerCase();
if (textLowerCase.contains("selected:")) {
String[] split = text.getString().split(":");
@@ -186,7 +187,7 @@ public class FinderSettingsContainer extends ContainerWidget {
* @return true if all goes well
*/
private boolean setSelectedElementFromTooltip(Slot slot, ItemStack stack, OptionDropdownWidget dropdownWidget) {
- for (Text text : stack.getTooltip(null, TooltipContext.BASIC)) {
+ for (Text text : ItemUtils.getLore(stack)) {
String textLowerCase = text.getString().toLowerCase();
if (textLowerCase.contains("selected:")) {
String[] split = text.getString().split(":");
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 3dc8cfd6..dd550b4f 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
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.dungeon.partyfinder;
import com.mojang.authlib.properties.PropertyMap;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.mixin.accessor.SkullBlockEntityAccessor;
+import de.hysky.skyblocker.utils.Utils;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
@@ -145,7 +146,7 @@ public class PartyEntry extends ElementListWidget.Entry<PartyEntry> {
if (matcher.find()) classLevel = Integer.parseInt(matcher.group(1));
Player player = new Player(playerName, className, classLevel);
- SkullBlockEntityAccessor.invokeFetchProfile(playerNameTrim).thenAccept(
+ SkullBlockEntityAccessor.invokeFetchProfileByName(playerNameTrim, Utils.getApiServices()).thenAccept(
gameProfile -> gameProfile.ifPresent(profile -> player.skinTexture = (client.getSkinProvider().getSkinTextures(profile).texture())));
if (playerNameTrim.equals(partyHost)) {
@@ -170,7 +171,7 @@ public class PartyEntry extends ElementListWidget.Entry<PartyEntry> {
partyLeader = new Player(Text.literal("Error"), "Error", -1);
}
- SkullBlockEntityAccessor.invokeFetchProfile(partyLeader.name.getString()).thenAccept(
+ SkullBlockEntityAccessor.invokeFetchProfileByName(partyLeader.name.getString(), Utils.getApiServices()).thenAccept(
gameProfile -> gameProfile.ifPresent(profile -> partyLeaderSkin = client.getSkinProvider().getSkinTextures(profile).texture()));
}
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 98ab88c0..4ba68256 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
@@ -13,7 +13,6 @@ import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextFieldWidget;
-import net.minecraft.client.item.TooltipContext;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.client.toast.SystemToast;
import net.minecraft.entity.player.PlayerInventory;
@@ -372,7 +371,7 @@ public class PartyFinderScreen extends Screen {
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));
+ parties.add(new PartyEntry(ItemUtils.getLore(slot.getStack()), this, slot.id));
} else if (slot.getStack().isOf(Items.ARROW) && slot.getStack().getName().getString().toLowerCase().contains("previous")) {
prevPageSlotId = slot.id;
previousPageButton.active = true;
@@ -401,7 +400,7 @@ public class PartyFinderScreen extends Screen {
deListSlotId = slot.id;
} else if (slot.getStack().isOf(Items.PLAYER_HEAD)) {
assert this.client != null;
- tooltips = slot.getStack().getTooltip(this.client.player, TooltipContext.BASIC);
+ tooltips = ItemUtils.getLore(slot.getStack());
}
}
if (tooltips != null) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/PlayerHeadHashCache.java b/src/main/java/de/hysky/skyblocker/skyblock/item/PlayerHeadHashCache.java
index 2a1688fc..da832164 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/PlayerHeadHashCache.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/PlayerHeadHashCache.java
@@ -1,7 +1,6 @@
package de.hysky.skyblocker.skyblock.item;
-import java.net.MalformedURLException;
-import java.net.URL;
+import java.net.URI;
import java.util.Base64;
import java.util.concurrent.CompletableFuture;
@@ -50,8 +49,8 @@ public class PlayerHeadHashCache {
//From MinecraftProfileTexture#getHash
public static String getSkinHash(String url) {
try {
- return FilenameUtils.getBaseName(new URL(url).getPath());
- } catch (MalformedURLException e) {
+ return FilenameUtils.getBaseName(new URI(url).getPath());
+ } catch (Exception e) {
LOGGER.error("[Skyblocker Player Head Hash Cache] Malformed Skin URL! URL: {}", url, e);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
index 855a4760..94153c01 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
@@ -12,7 +12,7 @@ import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
import it.unimi.dsi.fastutil.Pair;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.item.TooltipContext;
+import net.minecraft.client.item.TooltipType;
import net.minecraft.component.type.DyedColorComponent;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
@@ -34,7 +34,7 @@ public class ItemTooltip {
protected static final SkyblockerConfig.ItemTooltip config = SkyblockerConfigManager.get().general.itemTooltip;
private static volatile boolean sentNullWarning = false;
- public static void getTooltip(ItemStack stack, TooltipContext context, List<Text> lines) {
+ public static void getTooltip(ItemStack stack, TooltipType context, List<Text> lines) {
if (!Utils.isOnSkyblock() || client.player == null) return;
String name = getInternalNameFromNBT(stack, false);
diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java
index bbee3ce1..dcd39de7 100644
--- a/src/main/java/de/hysky/skyblocker/utils/Utils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.utils;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import de.hysky.skyblocker.events.SkyblockEvents;
+import de.hysky.skyblocker.mixin.accessor.MinecraftClientAccessor;
import de.hysky.skyblocker.skyblock.item.MuseumItemCache;
import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.utils.scheduler.MessageScheduler;
@@ -19,6 +20,7 @@ import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.scoreboard.*;
import net.minecraft.text.Text;
+import net.minecraft.util.ApiServices;
import net.minecraft.util.Formatting;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@@ -74,6 +76,7 @@ public class Utils {
private static boolean canSendLocRaw = false;
private static String mayor = "";
+ private static ApiServices apiServices;
/**
* @implNote The parent text will always be empty, the actual text content is inside the text's siblings.
@@ -217,7 +220,6 @@ public class Utils {
}
if (sidebar.isEmpty() && !fabricLoader.isDevelopmentEnvironment()) return;
- String string = sidebar.toString();
if (fabricLoader.isDevelopmentEnvironment() || isConnectedToHypixel(client)) {
if (!isOnHypixel) {
@@ -466,4 +468,16 @@ public class Utils {
});
}
+
+ public static ApiServices getApiServices() {
+ if (apiServices == null) {
+ MinecraftClient client = MinecraftClient.getInstance();
+ ApiServices apiServicesInstance = ApiServices.create(((MinecraftClientAccessor) client).getAuthenticationService(), client.runDirectory);
+ apiServices = apiServicesInstance;
+
+ return apiServicesInstance;
+ } else {
+ return apiServices;
+ }
+ }
}