aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
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/java
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/java')
-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
18 files changed, 243 insertions, 193 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 == n