aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorTrương Hoàng Long <longtruong2411@gmail.com>2022-10-01 02:39:58 +0200
committerTrương Hoàng Long <longtruong2411@gmail.com>2022-10-01 02:39:58 +0200
commitdab1418a3b0d77f8ddd3e296ca2d3845de1de01b (patch)
tree31e15134f89ad8ae4503195969d70f1a18da235b /src/main
parent91332cc0717ac8daccb4511054aacb45012ef524 (diff)
parentbdd576dc97a053cfa5595cd003c31901601f01e2 (diff)
downloadSkyblocker-dab1418a3b0d77f8ddd3e296ca2d3845de1de01b.tar.gz
Skyblocker-dab1418a3b0d77f8ddd3e296ca2d3845de1de01b.tar.bz2
Skyblocker-dab1418a3b0d77f8ddd3e296ca2d3845de1de01b.zip
Merge branch '1.19.x'
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java1
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java20
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/api/StatsCommand.java35
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java24
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java23
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java261
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java20
-rw-r--r--src/main/resources/fabric.mod.json4
19 files changed, 245 insertions, 195 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java
index cdaadeda..f8af49ce 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AutopetFilter.java
@@ -4,7 +4,7 @@ import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.LiteralText;
+import net.minecraft.text.LiteralTextContent;
import net.minecraft.text.Text;
import java.util.Objects;
@@ -19,7 +19,7 @@ public class AutopetFilter extends ChatPatternListener {
public boolean onMatch(Text _message, Matcher matcher) {
if (SkyblockerConfig.get().messages.hideAutopet == ChatFilterResult.ACTION_BAR) {
Objects.requireNonNull(MinecraftClient.getInstance().player).sendMessage(
- new LiteralText(
+ Text.literal(
_message.getString().replace("§a§lVIEW RULE", "")
), true);
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
index 7e5411aa..eabf0b53 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
@@ -4,9 +4,10 @@ import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
import me.xmrvizzy.skyblocker.chat.ChatMessageListener;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.hud.ChatHudListener;
+import net.minecraft.client.gui.hud.ChatHud;
+import net.minecraft.client.gui.hud.MessageIndicator;
import net.minecraft.client.network.ClientPlayerEntity;
-import net.minecraft.network.MessageType;
+import net.minecraft.network.message.MessageSignatureData;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
@@ -15,17 +16,15 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import java.util.UUID;
-
-@Mixin(ChatHudListener.class)
+@Mixin(ChatHud.class)
public class ChatHudListenerMixin {
@Shadow
@Final
private MinecraftClient client;
- @Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true)
- public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) {
+ @Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V", at = @At("HEAD"), cancellable = true)
+ public void onMessage(Text message, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) {
if (!Utils.isOnSkyblock)
return;
String asString = message.getString();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
index 2d016459..437e10f9 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
@@ -6,6 +6,7 @@ import me.xmrvizzy.skyblocker.utils.Utils;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.world.ClientWorld;
+import net.minecraft.network.encryption.PlayerPublicKey;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -14,8 +15,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ClientPlayerEntity.class)
public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity {
- public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile) {
- super(world, profile);
+ public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile, PlayerPublicKey publicKey) {
+ super(world, profile, publicKey);
}
@Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true)
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java
index 00f32459..de4a25b6 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java
@@ -31,7 +31,7 @@ public class BackpackPreview extends DrawableHelper {
private static final BackpackPreview instance = new BackpackPreview();
private static final Pattern PROFILE_PATTERN = Pattern.compile("Profile: ([a-zA-Z]+)");
private static final Pattern ECHEST_PATTERN = Pattern.compile("Ender Chest.*\\((\\d+)/\\d+\\)");
- private static final Pattern BACKPACK_PATTERN = Pattern.compile("Backpack.*\\((\\d+)/\\d+\\)");
+ private static final Pattern BACKPACK_PATTERN = Pattern.compile("Backpack.*\\(Slot #(\\d+)\\)");
private static final int STORAGE_SIZE = 27;
private static final Inventory[] storage = new Inventory[STORAGE_SIZE];
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java
index dd7ef478..70385e01 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java
@@ -6,6 +6,7 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawableHelper;
+import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java
index 0111f75a..134ec1f9 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java
@@ -7,10 +7,10 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StatusBarTracker {
- private static final Pattern STATUS_HEALTH = Pattern.compile("§[6c](\\d+)/(\\d+)❤(?:(\\+§c\\d+. *)| *)");
- private static final Pattern DEFENSE_STATUS = Pattern.compile("§a(\\d+)§a❈ Defense *");
- private static final Pattern MANA_USE = Pattern.compile("§b-\\d+ Mana \\(§\\S+(?:\\s\\S+)* *");
- private static final Pattern MANA_STATUS = Pattern.compile("§b(\\d+)/(\\d+)✎ (?:Mana|§3(\\d+)ʬ) *");
+ private static final Pattern STATUS_HEALTH = Pattern.compile("§[6c](\\d+(,\\d\\d\\d)*)/(\\d+(,\\d\\d\\d)*)❤(?:(\\+§c(\\d+(,\\d\\d\\d)*). *)| *)");
+ private static final Pattern DEFENSE_STATUS = Pattern.compile("§a(\\d+(,\\d\\d\\d)*)§a❈ Defense *");
+ private static final Pattern MANA_USE = Pattern.compile("§b-(\\d+(,\\d\\d\\d)*) Mana \\(§\\S+(?:\\s\\S+)* *");
+ private static final Pattern MANA_STATUS = Pattern.compile("§b(\\d+(,\\d\\d\\d)*)/(\\d+(,\\d\\d\\d)*)✎ (?:Mana|§3(\\d+(,\\d\\d\\d)*)ʬ) *");
private Resource health = new Resource(100, 100, 0);
private Resource mana = new Resource(100, 100, 0);
@@ -29,19 +29,19 @@ public class StatusBarTracker {
}
private int parseInt(Matcher m, int group) {
- return Integer.parseInt(m.group(group));
+ return Integer.parseInt(m.group(group).replace(",", ""));
}
private void updateMana(Matcher m) {
int value = parseInt(m, 1);
- int max = parseInt(m, 2);
- int overflow = m.group(3) == null ? 0 : parseInt(m, 3);
+ int max = parseInt(m, 3);
+ int overflow = m.group(5) == null ? 0 : parseInt(m, 5);
this.mana = new Resource(value, max, overflow);
}
private void updateHealth(Matcher m) {
int value = parseInt(m, 1);
- int max = parseInt(m, 2);
+ int max = parseInt(m, 3);
int overflow = 0;
ClientPlayerEntity player = null;
try {
@@ -75,9 +75,9 @@ public class StatusBarTracker {
if (!matcher.lookingAt())
return actionBar;
updateHealth(matcher);
- if (matcher.group(3) != null) {
+ if (matcher.group(5) != null) {
sb.append("§c❤");
- sb.append(matcher.group(3));
+ sb.append(matcher.group(5));
}
actionBar = reset(actionBar, matcher);
if (matcher.usePattern(MANA_STATUS).lookingAt()) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java
index 520229f6..679901cd 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java
@@ -6,8 +6,7 @@ import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
-import net.minecraft.text.TranslatableText;
-
+import net.minecraft.text.TranslatableTextContent;
import java.util.regex.Matcher;
public class ApiKeyListener extends ChatPatternListener {
@@ -24,7 +23,7 @@ public class ApiKeyListener extends ChatPatternListener {
protected boolean onMatch(Text message, Matcher matcher) {
SkyblockerConfig.get().general.apiKey = matcher.group(1);
AutoConfig.getConfigHolder(SkyblockerConfig.class).save();
- MinecraftClient.getInstance().player.sendMessage(new TranslatableText("skyblocker.api.got_key"), false);
+ MinecraftClient.getInstance().player.sendMessage(Text.translatable("skyblocker.api.got_key"), false);
return false;
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/StatsCommand.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/StatsCommand.java
index b401905f..4c4cdae1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/StatsCommand.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/StatsCommand.java
@@ -3,25 +3,30 @@ package me.xmrvizzy.skyblocker.skyblock.api;
import com.google.gson.GsonBuilder;
import com.mojang.brigadier.arguments.StringArgumentType;
import me.xmrvizzy.skyblocker.skyblock.api.records.PlayerProfiles;
-import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.ClickEvent;
-import net.minecraft.text.LiteralText;
+import net.minecraft.text.LiteralTextContent;
+import net.minecraft.text.Text;
public class StatsCommand {
public static void init(){
- ClientCommandManager.DISPATCHER.register(ClientCommandManager.literal("skyblocker")
- .then(ClientCommandManager.literal("debug")
- .then(ClientCommandManager.literal("stats").then(ClientCommandManager.argument("username", StringArgumentType.string())
- .executes(context -> {
- new Thread(() -> {
- PlayerProfiles playerProfiles = ProfileUtils.getProfiles(StringArgumentType.getString(context, "username"));
- for (String profileId : playerProfiles.profiles().keySet()){
- MinecraftClient.getInstance().player.sendMessage(new LiteralText(playerProfiles.profiles().get(profileId).cuteName())
- .styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, new GsonBuilder().serializeNulls().setPrettyPrinting().create().toJson(playerProfiles.profiles().get(profileId))))), false);
- }
- }).start();
- return 1;
- })))));
+ ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> {
+ dispatcher.register(ClientCommandManager.literal("skyblocker")
+ .then(ClientCommandManager.literal("debug")
+ .then(ClientCommandManager.literal("stats").then(ClientCommandManager.argument("username", StringArgumentType.string())
+ .executes(context -> {
+ new Thread(() -> {
+ PlayerProfiles playerProfiles = ProfileUtils.getProfiles(StringArgumentType.getString(context, "username"));
+ for (String profileId : playerProfiles.profiles().keySet()){
+ MinecraftClient.getInstance().player.sendMessage(Text.literal(playerProfiles.profiles().get(profileId).cuteName())
+ .styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, new GsonBuilder().serializeNulls().setPrettyPrinting().create().toJson(playerProfiles.profiles().get(profileId))))), false);
+ }
+ }).start();
+ return 1;
+ })))));
+ });
+
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
index 3af82b6e..c06822de 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
@@ -4,7 +4,8 @@ import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
import me.xmrvizzy.skyblocker.utils.Utils;
-import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.text.Text;
@@ -25,14 +26,17 @@ public class Reparty extends ChatPatternListener {
public Reparty() {
super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*)))$");
this.repartying = false;
- ClientCommandManager.DISPATCHER.register(
- ClientCommandManager.literal("rp").executes(context -> {
- if (!Utils.isOnSkyblock || this.repartying || client.player == null) return 0;
- this.repartying = true;
- client.player.sendChatMessage("/p list");
- return 0;
- })
- );
+ ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> {
+ dispatcher.register(ClientCommandManager.literal("rp").executes(context -> {
+ if (!Utils.isOnSkyblock || this.repartying || client.player == null) return 0;
+ this.repartying = true;
+ client.player.sendChatMessage("/p list", Text.of("/p list"));
+ return 0;
+ }));
+ });
+
+
+
}
@Override
@@ -73,6 +77,6 @@ public class Reparty extends ChatPatternListener {
}
private void sendCommand(ClientPlayerEntity player, String command, int delay) {
- skyblocker.scheduler.schedule(() -> player.sendChatMessage(command), delay * BASE_DELAY);
+ skyblocker.scheduler.schedule(() -> player.sendChatMessage(command, Text.of(command)), delay * BASE_DELAY);
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java
index 7f22f59b..73511c00 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java
@@ -5,7 +5,6 @@ import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
-import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
@@ -32,7 +31,7 @@ public class Trivia extends ChatPatternListener {
if (!solutions.contains(riddle)) {
ClientPlayerEntity player = MinecraftClient.getInstance().player;
if (player != null)
- MinecraftClient.getInstance().player.sendMessage(new LiteralText(" " + Formatting.GOLD + matcher.group(2) + Formatting.RED + " " + riddle), false);
+ MinecraftClient.getInstance().player.sendMessage(Text.of(" " + Formatting.GOLD + matcher.group(2) + Formatting.RED + " " + riddle), false);
return player != null;
}
} else
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java
index de571130..a75ab412 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java
@@ -4,7 +4,8 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawableHelper;
-import net.minecraft.text.LiteralText;
+import net.minecraft.text.LiteralTextContent;
+import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import java.util.ArrayList;
@@ -55,7 +56,7 @@ public class DwarvenHud {
DrawableHelper.fill(matrixStack, hudX, hudY, hudX + 200, hudY + (20 * commissions.size()), 0x64000000);
int y = 0;
for (Commission commission : commissions) {
- client.textRenderer.drawWithShadow(matrixStack, new LiteralText(commission.commission).styled(style -> style.withColor(Formatting.AQUA)).append(new LiteralText(": " + commission.progression).styled(style -> style.withColor(Formatting.GREEN))), hudX + 5, hudY + y + 5, 0xFFFFFFFF);
+ client.textRenderer.drawWithShadow(matrixStack, Text.literal(commission.commission).styled(style -> style.withColor(Formatting.AQUA)).append(Text.literal(": " + commission.progression).styled(style -> style.withColor(Formatting.GREEN))), hudX + 5, hudY + y + 5, 0xFFFFFFFF);
y += 20;
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
index ccd47c5a..230f5abe 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
@@ -5,8 +5,7 @@ import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
-import net.minecraft.text.TranslatableText;
-
+import net.minecraft.text.TranslatableTextContent;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
@@ -35,18 +34,18 @@ public class Fetchur extends ChatPatternListener {
static {
answers = new HashMap<>();
- answers.put("red and soft", new TranslatableText("block.minecraft.red_wool").getString());
- answers.put("yellow and see through", new TranslatableText("block.minecraft.yellow_stained_glass").getString());
- answers.put("circular and sometimes moves", new TranslatableText("item.minecraft.compass").getString());
+ answers.put("red and soft", Text.translatable("block.minecraft.red_wool").getString());
+ answers.put("yellow and see through", Text.translatable("block.minecraft.yellow_stained_glass").getString());
+ answers.put("circular and sometimes moves", Text.translatable("item.minecraft.compass").getString());
answers.put("expensive minerals", "Mithril");
- answers.put("useful during celebrations", new TranslatableText("item.minecraft.firework_rocket").getString());
+ answers.put("useful during celebrations", Text.translatable("item.minecraft.firework_rocket").getString());
answers.put("hot and gives energy", "Cheap / Decent Coffee");
- answers.put("tall and can be opened", new TranslatableText("block.minecraft.oak_door").getString());
- answers.put("brown and fluffy", new TranslatableText("item.minecraft.rabbit_foot").getString());
+ answers.put("tall and can be opened", Text.translatable("block.minecraft.oak_door").getString());
+ answers.put("brown and fluffy", Text.translatable("item.minecraft.rabbit_foot").getString());
answers.put("explosive but more than usual", "Superboom TNT");
- answers.put("wearable and grows", new TranslatableText("block.minecraft.pumpkin").getString());
- answers.put("shiny and makes sparks", new TranslatableText("item.minecraft.flint_and_steel").getString());
- answers.put("red and white and you can mine it", new TranslatableText("block.minecraft.nether_quartz_ore").getString());
- answers.put("round and green, or purple", new TranslatableText("item.minecraft.ender_pearl").getString());
+ answers.put("wearable and grows", Text.translatable("block.minecraft.pumpkin").getString());
+ answers.put("shiny and makes sparks", Text.translatable("item.minecraft.flint_and_steel").getString());
+ answers.put("red and white and you can mine it", Text.translatable("block.minecraft.nether_quartz_ore").getString());
+ answers.put("round and green, or purple", Text.translatable("item.minecraft.ender_pearl").getString());
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
index 06395898..0599b5b2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
@@ -33,7 +33,7 @@ public class Puzzler extends ChatPatternListener {
}
ClientWorld world = MinecraftClient.getInstance().world;
if (world != null)
- world.setBlockStateWithoutNeighborUpdates(new BlockPos(x, 195, z), Blocks.CRIMSON_PLANKS.getDefaultState());
+ world.setBlockState(new BlockPos(x, 195, z), Blocks.CRIMSON_PLANKS.getDefaultState());
return false;
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
index e328c8c1..9c681cb1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
@@ -9,9 +9,10 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
-import net.minecraft.text.LiteralText;
+import net.minecraft.text.LiteralTextContent;
+import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
-import net.minecraft.text.TranslatableText;
+import net.minecraft.text.TranslatableTextContent;
import net.minecraft.util.Formatting;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -24,7 +25,6 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.CompletableFuture;
@@ -34,12 +34,12 @@ public class PriceInfoTooltip {
private static final Logger LOGGER = LoggerFactory.getLogger(PriceInfoTooltip.class.getName());
private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance();
private static final MinecraftClient client = MinecraftClient.getInstance();
- private static JsonObject npcJson;
- private static JsonObject bazaarJson;
- private static JsonObject oneDayAvgJson;
- private static JsonObject threeDayAvgJson;
- private static JsonObject lowestBINJson;
- private static JsonObject museumJson;
+ private static JsonObject npcPricesJson;
+ private static JsonObject bazaarPricesJson;
+ private static JsonObject oneDayAvgPricesJson;
+ private static JsonObject threeDayAvgPricesJson;
+ private static JsonObject lowestPricesJson;
+ private static JsonObject isMuseumJson;
private static boolean nullMsgSend = false;
private final static Gson gson = new Gson();
@@ -51,34 +51,39 @@ public class PriceInfoTooltip {
int count = stack.getCount();
String timestamp = getTimestamp(stack);
- boolean bazaarOpened = lines.stream().anyMatch(each ->
- each.getString().contains("Buy price:") || each.getString().contains("Sell price:"));
+ boolean bazaarOpened = lines.stream().anyMatch(each -> each.getString().contains("Buy price:") || each.getString().contains("Sell price:"));
if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice) {
- if (npcJson == null) {
- nullMessage();
- } else if (npcJson.has(name)) {
- lines.add(new LiteralText(String.format("%-21s", "NPC Price:"))
+ if (npcPricesJson == null) {
+ if (!nullMsgSend) {
+ client.player.sendMessage(Text.translatable("skyblocker.itemTooltip.nullMessage"), false);
+ nullMsgSend = true;
+ }
+ } else if (npcPricesJson.has(name)) {
+ lines.add(Text.literal(String.format("%-21s", "NPC Price:"))
.formatted(Formatting.YELLOW)
- .append(getCoinsMessage(npcJson.get(name).getAsDouble(), count)));
+ .append(getCoinsMessage(npcPricesJson.get(name).getAsDouble(), count)));
}
}
boolean bazaarExist = false;
if (SkyblockerConfig.get().general.itemTooltip.enableBazaarPrice && !bazaarOpened) {
- if (bazaarJson == null) {
- nullMessage();
- } else if (bazaarJson.has(name)) {
- JsonObject getItem = bazaarJson.getAsJsonObject(name);
- lines.add(new LiteralText(String.format("%-18s", "Bazaar buy Price:"))
+ if (bazaarPricesJson == null) {
+ if (!nullMsgSend) {
+ client.player.sendMessage(Text.translatable("skyblocker.itemTooltip.nullMessage"), false);
+ nullMsgSend = true;
+ }
+ } else if (bazaarPricesJson.has(name)) {
+ JsonObject getItem = bazaarPricesJson.getAsJsonObject(name);
+ lines.add(Text.literal(String.format("%-18s", "Bazaar buy Price:"))
.formatted(Formatting.GOLD)
.append(getItem.get("buyPrice").isJsonNull()
- ? new TranslatableText("skyblocker.itemTooltip.noData")
+ ? Text.literal("No data").formatted(Formatting.RED)
: getCoinsMessage(getItem.get("buyPrice").getAsDouble(), count)));
- lines.add(new LiteralText(String.format("%-19s", "Bazaar sell Price:"))
+ lines.add(Text.literal(String.format("%-19s", "Bazaar sell Price:"))
.formatted(Formatting.GOLD)
.append(getItem.get("sellPrice").isJsonNull()
- ? new TranslatableText("skyblocker.itemTooltip.noData")
+ ? Text.literal("No data").formatted(Formatting.RED)
: getCoinsMessage(getItem.get("sellPrice").getAsDouble(), count)));
bazaarExist = true;
}
@@ -86,19 +91,25 @@ public class PriceInfoTooltip {
// bazaarOpened & bazaarExist check for lbin, because Skytils keeps some bazaar item data in lbin api
if (SkyblockerConfig.get().general.itemTooltip.enableLowestBIN && !bazaarOpened && !bazaarExist) {
- if (lowestBINJson == null) {
- nullMessage();
- } else if (lowestBINJson.has(name)) {
- lines.add(new LiteralText(String.format("%-19s", "Lowest BIN Price:"))
+ if (lowestPricesJson == null) {
+ if (!nullMsgSend) {
+ client.player.sendMessage(Text.translatable("skyblocker.itemTooltip.nullMessage"), false);
+ nullMsgSend = true;
+ }
+ } else if (lowestPricesJson.has(name)) {
+ lines.add(Text.literal(String.format("%-19s", "Lowest BIN Price:"))
.formatted(Formatting.GOLD)
- .append(getCoinsMessage(lowestBINJson.get(name).getAsDouble(), count)));
+ .append(getCoinsMessage(lowestPricesJson.get(name).getAsDouble(), count)));
}
}
if (SkyblockerConfig.get().general.itemTooltip.enableAvgBIN) {
- if (threeDayAvgJson == null || oneDayAvgJson == null) {
- nullMessage();
- } else if (threeDayAvgJson.has(name) || oneDayAvgJson.has(name)) {
+ if (threeDayAvgPricesJson == null || oneDayAvgPricesJson == null) {
+ if (!nullMsgSend) {
+ client.player.sendMessage(Text.translatable("skyblocker.itemTooltip.nullMessage"), false);
+ nullMsgSend = true;
+ }
+ } else if (threeDayAvgPricesJson.has(name) || oneDayAvgPricesJson.has(name)) {
/*
We are skipping check average prices for potions and runes
because there is no data for their in API.
@@ -126,50 +137,46 @@ public class PriceInfoTooltip {
// "No data" line because of API not keeping old data, it causes NullPointerException
if (!name.isEmpty() && (type == SkyblockerConfig.Average.ONE_DAY || type == SkyblockerConfig.Average.BOTH)) {
- lines.add(new LiteralText(String.format("%-19s", "1 Day Avg. Price:"))
+ lines.add(Text.literal(String.format("%-19s", "1 Day Avg. Price:"))
.formatted(Formatting.GOLD)
- .append(oneDayAvgJson.get(name) == null
- ? new TranslatableText("skyblocker.itemTooltip.noData")
- : getCoinsMessage(oneDayAvgJson.get(name).getAsDouble(), count)));
+ .append(oneDayAvgPricesJson.get(name) == null
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : getCoinsMessage(oneDayAvgPricesJson.get(name).getAsDouble(), count)));
}
if (!name.isEmpty() && (type == SkyblockerConfig.Average.THREE_DAY || type == SkyblockerConfig.Average.BOTH)) {
- lines.add(new LiteralText(String.format("%-19s", "3 Day Avg. Price:"))
+ lines.add(Text.literal(String.format("%-19s", "3 Day Avg. Price:"))
.formatted(Formatting.GOLD)
- .append(threeDayAvgJson.get(name) == null
- ? new TranslatableText("skyblocker.itemTooltip.noData")
- : getCoinsMessage(threeDayAvgJson.get(name).getAsDouble(), count)));
+ .append(threeDayAvgPricesJson.get(name) == null
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : getCoinsMessage(threeDayAvgPricesJson.get(name).getAsDouble(), count)));
}
}
}
if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate && !bazaarOpened) {
- if (museumJson == null) {
- nullMessage();
- } else if (museumJson.has(name)) {
- String itemCategory = museumJson.get(name).toString().replaceAll("\"", "");
+ if (isMuseumJson == null) {
+ if (!nullMsgSend) {
+ client.player.sendMessage(Text.translatable("skyblocker.itemTooltip.nullMessage"), false);
+ nullMsgSend = true;
+ }
+ } else if (isMuseumJson.has(name)) {
+ String itemCategory = isMuseumJson.get(name).toString().replaceAll("\"", "");
String format = switch (itemCategory) {
case "Weapons" -> "%-18s";
case "Armor" -> "%-19s";
default -> "%-20s";
};
- lines.add(new LiteralText(String.format(format, "Museum: (" + itemCategory + ")"))
+ lines.add(Text.literal(String.format(format, "Museum: (" + itemCategory + ")"))
.formatted(Formatting.LIGHT_PURPLE)
- .append(new LiteralText(timestamp != null ? timestamp : "").formatted(Formatting.RED)));
+ .append(Text.literal(timestamp != null ? timestamp : "").formatted(Formatting.RED)));
} else if (timestamp != null) {
- lines.add(new LiteralText(String.format("%-21s", "Obtained: "))
+ lines.add(Text.literal(String.format("%-21s", "Obtained: "))
.formatted(Formatting.LIGHT_PURPLE)
- .append(new LiteralText(timestamp).formatted(Formatting.RED)));
+ .append(Text.literal(timestamp).formatted(Formatting.RED)));
}
}
}
- public static void nullMessage() {
- if (!nullMsgSend) {
- client.player.sendMessage(new TranslatableText("skyblocker.itemTooltip.nullMessage"), false);
- nullMsgSend = true;
- }
- }
-
public static NbtCompound getInternalNameForItem(ItemStack stack) {
if (stack == null) return null;
return stack.getNbt();
@@ -239,8 +246,7 @@ public class PriceInfoTooltip {
String extended = ea.contains("extended") ? "-EXTENDED" : "";
String splash = ea.contains("splash") ? "-SPLASH" : "";
if (ea.contains("potion") && ea.contains("potion_level")) {
- internalName += "-" + ea.getString("potion").toUpperCase(Locale.ENGLISH)
- + "-" + ea.getInt("potion_level")
+ internalName += "-" + ea.getString("potion").toUpperCase(Locale.ENGLISH) + "-" + ea.getInt("potion_level")
+ enhanced + extended + splash;
}
} else if ("RUNE".equals(internalName)) {
@@ -256,24 +262,21 @@ public class PriceInfoTooltip {
}
private static Text getCoinsMessage(double price, int count) {
- String slotPrice = String.format(Locale.ENGLISH, "%1$,.1f", price * count);
- LiteralText slotText = (LiteralText) new LiteralText(slotPrice + " Coins ").formatted(Formatting.DARK_AQUA);
-
- if (count != 1) {
- String unitPrice = String.format(Locale.ENGLISH, "%1$,.1f", price);
- slotText.append(new LiteralText( "(" + unitPrice + " each)").formatted(Formatting.GRAY));
+ if (count == 1) {
+ String priceString = String.format(Locale.ENGLISH, "%1$,.1f", price);
+ return Text.literal(priceString + " Coins").formatted(Formatting.DARK_AQUA);
+ } else {
+ String priceString = String.format(Locale.ENGLISH, "%1$,.1f", price * count);
+ MutableText priceText = Text.literal(priceString + " Coins ").formatted(Formatting.DARK_AQUA);
+ priceString = String.format(Locale.ENGLISH, "%1$,.1f", price);
+ MutableText priceText2 = Text.literal( "(" + priceString + " each)").formatted(Formatting.GRAY);
+ return priceText.append(priceText2);
}
- return slotText;
}
- private final static HashMap<String, String> downloadList;
-
- private static int minute = -1;
-
- /**
- * If these options is true beforehand, the client will get first data of these options while loading.
- * After then, it will only fetch the data if it is on Skyblock.
- */
+ // If these options is true beforehand, the client will get first data of these options while loading.
+ // After then, it will only fetch the data if it is on Skyblock.
+ public static int minute = -1;
public static void init() {
skyblocker.scheduler.scheduleCyclic(() -> {
if (!Utils.isOnSkyblock && 0 < minute++) {
@@ -282,65 +285,105 @@ public class PriceInfoTooltip {
}
List<CompletableFuture<Void>> futureList = new ArrayList<>();
-
- if (SkyblockerConfig.get().general.itemTooltip.enableAvgBIN
- && (oneDayAvgJson == null || threeDayAvgJson == null || minute % 5 == 0)) {
+ if ((SkyblockerConfig.get().general.itemTooltip.enableAvgBIN) && (oneDayAvgPricesJson == null || threeDayAvgPricesJson == null || minute % 5 == 0)) {
SkyblockerConfig.Average type = SkyblockerConfig.get().general.itemTooltip.avg;
- if (oneDayAvgJson == null || type == SkyblockerConfig.Average.ONE_DAY || type == SkyblockerConfig.Average.BOTH)
- futureList.add(CompletableFuture.runAsync(() ->
- oneDayAvgJson = download("average BIN prices", "1day.json.gz")));
-
- if (threeDayAvgJson == null || type == SkyblockerConfig.Average.THREE_DAY || type == SkyblockerConfig.Average.BOTH)
- futureList.add(CompletableFuture.runAsync(() ->
- threeDayAvgJson = download("average BIN prices", "3day.json.gz")));
+ if (type == SkyblockerConfig.Average.BOTH || oneDayAvgPricesJson == null || threeDayAvgPricesJson == null) {
+ futureList.add(CompletableFuture.runAsync(() -> downloadAvgPrices(SkyblockerConfig.Average.THREE_DAY)));
+ futureList.add(CompletableFuture.runAsync(() -> downloadAvgPrices(SkyblockerConfig.Average.ONE_DAY)));
+ } else {
+ futureList.add(CompletableFuture.runAsync(() -> downloadAvgPrices(type)));
+ }
}
if (SkyblockerConfig.get().general.itemTooltip.enableLowestBIN) {
- futureList.add(CompletableFuture.runAsync(() ->
- lowestBINJson = download("lowest BIN prices", null)));
+ futureList.add(CompletableFuture.runAsync(PriceInfoTooltip::downloadLowestPrices));
}
if (SkyblockerConfig.get().general.itemTooltip.enableBazaarPrice) {
- futureList.add(CompletableFuture.runAsync(() ->
- bazaarJson = download("bazaar prices", null)));
+ futureList.add(CompletableFuture.runAsync(PriceInfoTooltip::downloadBazaarPrices));
}
- if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice && npcJson == null) {
- futureList.add(CompletableFuture.runAsync(() ->
- npcJson = download("NPC prices", null)));
+ if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice && npcPricesJson == null) {
+ futureList.add(CompletableFuture.runAsync(PriceInfoTooltip::downloadNPCPrices));
}
- if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate && museumJson == null) {
- futureList.add(CompletableFuture.runAsync(() ->
- museumJson = download("museum items", null)));
+ if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate && isMuseumJson == null) {
+ futureList.add(CompletableFuture.runAsync(PriceInfoTooltip::downloadIsMuseum));
}
-
minute++;
CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0]))
.whenComplete((unused, throwable) -> nullMsgSend = false);
}, 1200);
}
- private static JsonObject download(String key, String avgType) {
- String rest = avgType == null ? "" : avgType;
+ private static void downloadAvgPrices(SkyblockerConfig.Average type) {
+ JsonObject result = null;
+ String avgDay = null;
+ switch (type) {
+ case ONE_DAY -> avgDay = "1day.json.gz";
+ case THREE_DAY -> avgDay = "3day.json.gz";
+ }
try {
- URL apiAddr = new URL(downloadList.get(key).concat(rest));
+ URL apiAddr = new URL("https://moulberry.codes/auction_averages_lbin/" + avgDay);
try (InputStream src = apiAddr.openStream()) {
- GZIPInputStream gzipOutput = avgType == null ? null : new GZIPInputStream(src);
- try (InputStreamReader reader = new InputStreamReader(avgType == null ? src : gzipOutput)) {
- return new Gson().fromJson(reader, JsonObject.class);
+ try (GZIPInputStream gzipOutput = new GZIPInputStream(src)) {
+ try (InputStreamReader reader = new InputStreamReader(gzipOutput)) {
+ result = new Gson().fromJson(reader, JsonObject.class);
+ }
}
}
} catch (IOException e) {
- LOGGER.warn("[Skyblocker] Failed to download " + key + "!", e);
- return null;
+ LOGGER.warn("[Skyblocker] Failed to download average BIN prices!", e);
}
+ switch (type) {
+ case ONE_DAY -> oneDayAvgPricesJson = result;
+ case THREE_DAY -> threeDayAvgPricesJson = result;
+ }
+ }
+
+ private static void downloadBazaarPrices() {
+ JsonObject result = null;
+ try {
+ URL apiAddr = new URL("https://hysky.de/api/bazaar");
+ InputStreamReader reader = new InputStreamReader(apiAddr.openStream());
+ result = new Gson().fromJson(reader, JsonObject.class);
+ } catch (IOException e) {
+ LOGGER.warn("[Skyblocker] Failed to download bazaar prices!", e);
+ }
+ bazaarPricesJson = result;
}
- static {
- downloadList = new HashMap<>();
- downloadList.put("average BIN prices", "https://moulberry.codes/auction_averages_lbin/");
- downloadList.put("lowest BIN prices", "https://skytils.gg/api/auctions/lowestbins");
- downloadList.put("bazaar prices", "https://hysky.de/api/bazaar");
- downloadList.put("NPC prices", "https://hysky.de/api/npcprice");
- downloadList.put("museum items", "https://hysky.de/api/museum");
+ private static void downloadLowestPrices() {
+ JsonObject result = null;
+ try {
+ URL apiAddr = new URL("https://skytils.gg/api/auctions/lowestbins");
+ InputStreamReader reader = new InputStreamReader(apiAddr.openStream());
+ result = new Gson().fromJson(reader, JsonObject.class);
+ } catch (IOException e) {
+ LOGGER.warn("[Skyblocker] Failed to download lowest BIN prices!", e);
+ }
+ lowestPricesJson = result;
+ }
+
+ private static void downloadNPCPrices() {
+ JsonObject result = null;
+ try {
+ URL apiAddr = new URL("https://hysky.de/api/npcprice");
+ InputStreamReader reader = new InputStreamReader(apiAddr.openStream());
+ result = new Gson().fromJson(reader, JsonObject.class);
+ } catch (IOException e) {
+ LOGGER.warn("[Skyblocker] Failed to download NPC prices!", e);
+ }
+ npcPricesJson = result;
+ }
+
+ private static void downloadIsMuseum() {
+ JsonObject result = null;
+ try {
+ URL apiAddr = new URL("https://hysky.de/api/museum");
+ InputStreamReader reader = new InputStreamReader(apiAddr.openStream());
+ result = new Gson().fromJson(reader, JsonObject.class);
+ } catch (IOException e) {
+ LOGGER.warn("[Skyblocker] Failed to download museum items!", e);
+ }
+ isMuseumJson = result;
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java
index a7adb4f7..a635cea2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java
@@ -13,7 +13,7 @@ import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.AbstractRecipeScreenHandler;
import net.minecraft.text.Text;
-import net.minecraft.text.TranslatableText;
+import net.minecraft.text.TranslatableTextContent;
import net.minecraft.util.Formatting;
@Environment(value= EnvType.CLIENT)
@@ -57,7 +57,7 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select
this.drawTexture(matrices, i, j, 1, 1, 147, 166);
this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField();
if (!this.searchField.isFocused() && this.searchField.getText().isEmpty()) {
- Text hintText = (new TranslatableText("gui.recipebook.search_hint")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY);
+ Text hintText = (Text.translatable("gui.recipebook.search_hint")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY);
drawTextWithShadow(matrices, this.client.textRenderer, hintText, i + 25, j + 14, -1);
} else {
this.searchField.render(matrices, mouseX, mouseY, delta);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
index c31fa653..ac381240 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
@@ -11,7 +11,8 @@ import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
-import net.minecraft.text.LiteralText;
+import net.minecraft.text.LiteralTextContent;
+import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
@Environment(value=EnvType.CLIENT)
@@ -32,7 +33,7 @@ public class QuickNavButton extends ClickableWidget {
private final ItemStack icon;
public QuickNavButton(int index, boolean toggled, String command, ItemStack icon) {
- super(0, 0, 28, 32, LiteralText.EMPTY);
+ super(0, 0, 28, 32, Text.empty());
this.index = index;
this.toggled = toggled;
this.command = command;
@@ -59,7 +60,7 @@ public class QuickNavButton extends ClickableWidget {
public void onClick(double mouseX, double mouseY) {
if (!this.toggled) {
this.toggled = true;
- CLIENT.player.sendChatMessage(command);
+ CLIENT.player.sendChatMessage(command, Text.of(command));
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java
index 962421b7..c1111b36 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java
@@ -72,7 +72,7 @@ public class RenderUtilsLiving {
} else {
matrices.push();
matrices.translate(1, 1, 0);
- mc.textRenderer.draw(text.copy(), -halfWidth, 0f, 0x202020, false, matrices.peek().getPositionMatrix(), immediate, true, 0, 0xf000f0);
+ mc.textRenderer.draw(text.copyContentOnly(), -halfWidth, 0f, 0x202020, false, matrices.peek().getPositionMatrix(), immediate, true, 0, 0xf000f0);
immediate.draw();
matrices.pop();
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
index ec028347..3a8f85f2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
@@ -5,9 +5,7 @@ import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.ClickEvent;
-import net.minecraft.text.HoverEvent;
-import net.minecraft.text.TranslatableText;
+import net.minecraft.text.*;
import org.spongepowered.asm.util.VersionNumber;
import java.io.IOException;
@@ -23,8 +21,7 @@ public class UpdateChecker {
public static Matcher matcher;
public static VersionNumber localVersion = null;
public static VersionNumber latestVersion = null;
-
- public static void checkVersion(){
+ public static boolean shouldUpdate(){
if (SkyblockerConfig.get().general.enableUpdateNotification){
new Thread(() -> {
try{
@@ -48,17 +45,18 @@ public class UpdateChecker {
}
}).start();
}
+ return shouldUpdate;
}
public static void init(){
- checkVersion();
SkyblockEvents.JOIN.register(() -> {
- if (shouldUpdate) {
- TranslatableText linkMessage = new TranslatableText("skyblocker.update.update_message");
- TranslatableText linkMessageEnding = new TranslatableText("skyblocker.update.update_message_end");
- TranslatableText link = new TranslatableText("skyblocker.update.update_link");
- TranslatableText hoverText = new TranslatableText("skyblocker.update.hover_text");
+ if (shouldUpdate()) {
+ MutableText linkMessage = Text.translatable("skyblocker.update.update_message");
+ MutableText linkMessageEnding = Text.translatable("skyblocker.update.update_message_end");
+ MutableText link = Text.translatable("skyblocker.update.update_link");
+ MutableText hoverText = Text.translatable("skyblocker.update.hover_text");
linkMessage.append(link.styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modrinth.com/mod/skyblocker-liap/versions")).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText)))).append(linkMessageEnding);
+
MinecraftClient.getInstance().player.sendMessage(linkMessage, false);
}
});
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index 6358a234..6e9858b1 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -26,10 +26,10 @@
"skyblocker.mixins.json"
],
"depends": {
- "fabricloader": ">=0.13.3",
+ "fabricloader": ">=0.14.6",
"fabric": "*",
"cloth-config2": "*",
- "minecraft": ["1.18.x"]
+ "minecraft": [">=1.19.1"]
},
"custom": {
"modmenu": {