diff options
| author | Trương Hoàng Long <longtruong2411@gmail.com> | 2022-10-01 02:39:58 +0200 |
|---|---|---|
| committer | Trương Hoàng Long <longtruong2411@gmail.com> | 2022-10-01 02:39:58 +0200 |
| commit | dab1418a3b0d77f8ddd3e296ca2d3845de1de01b (patch) | |
| tree | 31e15134f89ad8ae4503195969d70f1a18da235b /src/main/java/me/xmrvizzy/skyblocker | |
| parent | 91332cc0717ac8daccb4511054aacb45012ef524 (diff) | |
| parent | bdd576dc97a053cfa5595cd003c31901601f01e2 (diff) | |
| download | Skyblocker-dab1418a3b0d77f8ddd3e296ca2d3845de1de01b.tar.gz Skyblocker-dab1418a3b0d77f8ddd3e296ca2d3845de1de01b.tar.bz2 Skyblocker-dab1418a3b0d77f8ddd3e296ca2d3845de1de01b.zip | |
Merge branch '1.19.x'
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
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) |
