diff options
author | Alexey Krainev <xmrvizzy@ya.ru> | 2021-02-03 13:15:16 +0500 |
---|---|---|
committer | Alexey Krainev <xmrvizzy@ya.ru> | 2021-02-03 13:15:16 +0500 |
commit | ac59ecef954ff438c8fa3f0bf51c46b20af3138c (patch) | |
tree | c088648c4253a8afc2e06665504bbd9d104a57fb /src/main | |
parent | c26890daab1b6ccf5ac9b6c5c52f4127fc1fc891 (diff) | |
download | Skyblocker-ac59ecef954ff438c8fa3f0bf51c46b20af3138c.tar.gz Skyblocker-ac59ecef954ff438c8fa3f0bf51c46b20af3138c.tar.bz2 Skyblocker-ac59ecef954ff438c8fa3f0bf51c46b20af3138c.zip |
v1.0.5
Diffstat (limited to 'src/main')
8 files changed, 99 insertions, 29 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 1e451ea2..cdf60eed 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -56,6 +56,7 @@ public class SkyblockerConfig implements ConfigData { public static class DwarvenMines { public boolean enableDrillFuel = true; + public boolean solveFetchur = true; public boolean solvePuzzler = true; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java index 159fbcee..0e8e807f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java @@ -2,21 +2,28 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonPuzzles; +import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler; import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.ChatHudListener; import net.minecraft.network.MessageType; import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; 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.List; import java.util.UUID; @Mixin(ChatHudListener.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) { String msg = message.getString(); @@ -27,9 +34,25 @@ public class ChatHudListenerMixin { } if (Utils.isSkyblock) { - if (SkyblockerConfig.get().locations.dwarvenMines.solvePuzzler && - msg.contains("[NPC]") && msg.contains("Puzzler")) - Puzzler.puzzler(msg); + if (msg.contains("[OPEN MENU]")) { + List<Text> siblings = message.getSiblings(); + for (Text sibling : siblings) { + if (sibling.getString().contains("[OPEN MENU]")) { + this.client.player.sendChatMessage(sibling.getStyle().getClickEvent().getValue()); + } + } + } + + if (msg.contains("[NPC]")) { + if (SkyblockerConfig.get().locations.dwarvenMines.solveFetchur && + msg.contains("Fetchur")) { + Fetchur.solve(msg, ci); + } + + if (SkyblockerConfig.get().locations.dwarvenMines.solvePuzzler && + msg.contains("Puzzler")) + Puzzler.solve(msg); + } if (SkyblockerConfig.get().messages.hideAbility && msg.contains("This ability is currently on cooldown for ") || diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java index 41a8fd8a..1992db89 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java @@ -35,12 +35,13 @@ public abstract class ItemRendererMixin { float current = 3000.0F; float max = 3000.0F; - for (String line : ItemUtils.getLore(stack)) { + for (String line : ItemUtils.getTooltipStrings(stack)) { if (line.contains("Fuel: ")) { String clear = Pattern.compile("[^0-9 /]").matcher(line).replaceAll("").trim(); String[] split = clear.split("/"); current = Integer.parseInt(split[0]); max = Integer.parseInt(split[1]) * 1000; + break; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/AuctionAPI.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/AuctionAPI.java new file mode 100644 index 00000000..1ca45b74 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/AuctionAPI.java @@ -0,0 +1,5 @@ +package me.xmrvizzy.skyblocker.skyblock.api; + +public class AuctionAPI { + +}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java new file mode 100644 index 00000000..232ad99a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java @@ -0,0 +1,47 @@ +package me.xmrvizzy.skyblocker.skyblock.dwarven; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Formatting; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Fetchur { + + public static Map<String, List<String>> getAnswers() { + Map<String, List<String>> answers = new HashMap<>(); + answers.put("yellow, see-through", Arrays.asList(new TranslatableText("block.minecraft.yellow_stained_glass").getString())); + answers.put("circular and sometimes moves", Arrays.asList(new TranslatableText("item.minecraft.compass").getString())); + answers.put("circlular and sometimes moves", Arrays.asList(new TranslatableText("item.minecraft.compass").getString())); + answers.put("expensive minerals", Arrays.asList("Mithril")); + answers.put("useful during celebrations", Arrays.asList(new TranslatableText("item.minecraft.firework_rocket").getString())); + answers.put("hot, gives energy", Arrays.asList("Cheap Coffee", "Decent Coffee")); + answers.put("tall, can be opened", Arrays.asList(new TranslatableText("block.minecraft.oak_door").getString())); + answers.put("explosive, more than usual", Arrays.asList("Superboom TNT")); + answers.put("wearable, grows", Arrays.asList(new TranslatableText("block.minecraft.pumpkin").getString())); + answers.put("shiny, makes sparks", Arrays.asList(new TranslatableText("item.minecraft.flint_and_steel").getString())); + answers.put("red and white and you can mine it", Arrays.asList(new TranslatableText("block.minecraft.nether_quartz_ore").getString())); + answers.put("round and green, or purple", Arrays.asList(new TranslatableText("item.minecraft.ender_pearl").getString())); + answers.put("red and Soft", Arrays.asList(new TranslatableText("block.minecraft.red_wool").getString())); + return answers; + } + + public static void solve(String message, CallbackInfo ci) { + MinecraftClient client = MinecraftClient.getInstance(); + if (client.player == null) return; + + for (String key : getAnswers().keySet()) { + if (message.contains(key)) { + Text text = Text.of(message + " " + Formatting.GREEN + getAnswers().get(key).toString()); + client.player.sendMessage(text, false); + ci.cancel(); + break; + } + } + } +}
\ 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 ffc5c4bb..6c1def82 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java @@ -6,7 +6,8 @@ import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; public class Puzzler { - public static void puzzler(String message) { + + public static void solve(String message) { MinecraftClient client = MinecraftClient.getInstance(); if (client.player == null && client.world == null) return; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java index ea1db236..198e91bc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.utils; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; import net.minecraft.text.Text; import java.util.ArrayList; @@ -11,30 +11,23 @@ import java.util.List; public class ItemUtils { - public static List<String> getLore(ItemStack item) { - if (item.hasTag() && item.getTag().contains("display", 10)) { - CompoundTag tag = item.getTag().getCompound("display"); - - if (tag.contains("Lore", 9)) { - ListTag lore = tag.getList("Lore", 8); + public static List<Text> getTooltip(ItemStack item) { + MinecraftClient client = MinecraftClient.getInstance(); + if (client.player != null && item != null) + return item.getTooltip(client.player, TooltipContext.Default.NORMAL); + return Collections.emptyList(); + } - List<String> list = new ArrayList<>(); - for (int line = 0; line < lore.size(); line++) { - String string = lore.getString(line); - try { - Text text = Text.Serializer.fromJson(string); - if (text != null) { - string = text.getString(); - if (!string.replaceAll("\\s+","").isEmpty()) - list.add(string); - } - } catch (Exception e) {} - } + public static List<String> getTooltipStrings(ItemStack item) { + List<Text> lines = getTooltip(item); + List<String> list = new ArrayList<>(); - return list; - } + for (Text line : lines) { + String string = line.getString(); + if (!string.replaceAll("\\s+","").isEmpty()) + list.add(string); } - return Collections.emptyList(); + return list; } }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index d9c20fde..719e4e4f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -9,7 +9,6 @@ import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.ScoreboardObjective; import net.minecraft.scoreboard.ScoreboardPlayerScore; import net.minecraft.scoreboard.Team; -import org.w3c.dom.Attr; import java.util.ArrayList; import java.util.Collection; |