aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonaeAkira <longtruong2411@gmail.com>2022-01-28 16:01:18 +0100
committerKonaeAkira <longtruong2411@gmail.com>2022-01-28 16:01:18 +0100
commit4d8e146384a6d7f11b3126ffc8e43451e993c506 (patch)
tree9f2f578b458cf2627d1b38406a621d4b42d7df6e
parent1b1d968d3d4248d9b7b943ab46656b3cc0a6e0c9 (diff)
downloadSkyblocker-4d8e146384a6d7f11b3126ffc8e43451e993c506.tar.gz
Skyblocker-4d8e146384a6d7f11b3126ffc8e43451e993c506.tar.bz2
Skyblocker-4d8e146384a6d7f11b3126ffc8e43451e993c506.zip
Merge upstream
-rw-r--r--README.md10
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java23
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java11
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java42
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java35
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java86
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java18
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json2
-rw-r--r--src/main/resources/fabric.mod.json2
10 files changed, 213 insertions, 18 deletions
diff --git a/README.md b/README.md
index f3f960d2..48dd09db 100644
--- a/README.md
+++ b/README.md
@@ -43,10 +43,14 @@ ___
___
## Images
-<details>
-<summary>open (no images yet)</summary>
+<details open>
+<summary>open</summary>
-<img height="150" src="https://i.etsystatic.com/30407219/r/il/1183a7/3143262438/il_fullxfull.3143262438_9m3l.jpg" />
+<img padding="10px,0px" height="150" src="https://staging.hysky.de/hotbar.png" />
+<img padding="10px,0px" height="150" src="https://staging.hysky.de/minimap.png" />
+<img padding="10px,0px" height="150" src="https://staging.hysky.de/tooltip1.png" />
+<img padding="10px,0px" height="150" src="https://staging.hysky.de/tooltip2.png" />
+<img padding="10px,0px" height="150" src="https://staging.hysky.de/drill.png" />
</details>
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index ceb55549..29e98038 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -7,6 +7,8 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.minecraft.client.MinecraftClient;
+import java.util.Objects;
+
public class SkyblockerMod {
public static final String NAMESPACE = "skyblocker";
private static final SkyblockerMod instance = new SkyblockerMod();
@@ -36,7 +38,7 @@ public class SkyblockerMod {
} catch (Exception e) {
//System.out.println("Blazesolver: " + e);
}
- if (ticks % 20 == 0) {
+ if (ticks % 20 == 0 ) {
rpTimer++;
if (rpTimer == 5){
discordRPCManager.updatePresence();
@@ -44,10 +46,25 @@ public class SkyblockerMod {
}
if (client.world != null && !client.isInSingleplayer())
Utils.sbChecker();
- if (!discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().general.richPresence.enableRichPresence) discordRPCManager.start();
+ if (!discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().general.richPresence.enableRichPresence && onHypxiel()) discordRPCManager.start();
if (discordRPCManager.isConnected && !SkyblockerConfig.get().general.richPresence.enableRichPresence) discordRPCManager.stop();
- if (client.world == null || client.isInSingleplayer() || !Utils.isSkyblock) if (discordRPCManager.isConnected)discordRPCManager.stop();
+ if (client.world == null || client.isInSingleplayer() || !Utils.isSkyblock || !onHypxiel()) if (discordRPCManager.isConnected)discordRPCManager.stop();
ticks = 0;
}
}
+ public static MinecraftClient client() {
+ try {
+ return MinecraftClient.getInstance();
+ }
+ catch(NullPointerException e) {
+ return null;
+ }
+ }
+ public static boolean onHypxiel() {
+ try {
+ return client() != null && !client().isInSingleplayer() && client().getCurrentServerEntry().address != null && client().getCurrentServerEntry().address.contains("hypixel.net");
+ } catch (NullPointerException exception) {
+ return false;
+ }
+ }
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 59781b4f..3eca5fd2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -39,6 +39,10 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
public ItemList itemList = new ItemList();
+ @ConfigEntry.Category("quicknav")
+ @ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
+ public Quicknav quicknav = new Quicknav();
+
@ConfigEntry.Gui.Excluded
public List<Integer> lockedSlots = new ArrayList<>();
}
@@ -47,8 +51,7 @@ public class SkyblockerConfig implements ConfigData {
public boolean enableBars = true;
}
public static class RichPresence {
- @ConfigEntry.Gui.Tooltip()
- public boolean enableRichPresence = true;
+ public boolean enableRichPresence = false;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
public Info info = Info.LOCATION;
public String customMessage;
@@ -58,6 +61,10 @@ public class SkyblockerConfig implements ConfigData {
public boolean enableItemList = true;
}
+ public static class Quicknav {
+ public boolean enableQuicknav = true;
+ }
+
public static class Locations {
@ConfigEntry.Category("dungeons")
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
index fc151371..a3599196 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
@@ -47,7 +47,7 @@ public class DiscordRPCManager implements IPCListener{
public String getInfo(){
String info = null;
- if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.BITS) info = "Bits: " + Utils.getBits();
+ if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.BITS) info = "Bits: " + dFormat.format(Utils.getBits());
if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.PURSE) info = "Purse: " + dFormat.format(Utils.getPurse());
if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.LOCATION) info = "⏣ " + Utils.getLocation();
return info;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
new file mode 100644
index 00000000..9ae5bf92
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
@@ -0,0 +1,42 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav;
+import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNavButton;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.gui.screen.ingame.HandledScreen;
+import net.minecraft.text.Text;
+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;
+
+@Mixin(HandledScreen.class)
+public abstract class HandledScreenMixin extends Screen {
+ @Shadow protected int backgroundWidth;
+ @Shadow protected int backgroundHeight;
+
+ protected HandledScreenMixin(Text title) {
+ super(title);
+ }
+
+ @Inject(method = "init()V", at = @At("TAIL"))
+ private void init(CallbackInfo ci) {
+ // quicknav
+ if (Utils.isSkyblock && SkyblockerConfig.get().general.quicknav.enableQuicknav) {
+ String title = super.getTitle().getString().trim();
+ int left_x = (super.width - this.backgroundWidth) / 2 + 4;
+ int right_x = (super.width + this.backgroundWidth) / 2 - 3;
+ int top_y = (super.height - this.backgroundHeight) / 2 - 28;
+ int bottom_y = (super.height + this.backgroundHeight) / 2 - 4;
+ if (this.backgroundHeight > 166) --bottom_y; // why is this even a thing
+ List<QuickNavButton> buttons = QuickNav.init(title, left_x, right_x, top_y, bottom_y);
+ for (QuickNavButton button : buttons) super.addDrawableChild(button);
+
+ }
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
new file mode 100644
index 00000000..b86e6e32
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
@@ -0,0 +1,35 @@
+package me.xmrvizzy.skyblocker.skyblock.quicknav;
+
+import com.mojang.brigadier.exceptions.CommandSyntaxException;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
+import net.minecraft.nbt.StringNbtReader;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class QuickNav {
+ public static List<QuickNavButton> init(String title, int left_x, int right_x, int top_y, int bottom_y) {
+ List<QuickNavButton> buttons = new ArrayList<>();
+
+ buttons.add(new QuickNavButton(left_x + 29 * 0, top_y, QuickNavButton.Type.TOP, title.contains("Your Skills"), "/skills", new ItemStack(Items.DIAMOND_SWORD)));
+ buttons.add(new QuickNavButton(left_x + 29 * 1, top_y, QuickNavButton.Type.TOP, title.contains("Collection"), "/collection", new ItemStack(Items.PAINTING)));
+
+ buttons.add(new QuickNavButton(right_x - 29 * 1, bottom_y, QuickNavButton.Type.BOTTOM, title.contains("Craft Item"), "/craft", new ItemStack(Items.CRAFTING_TABLE)));
+ buttons.add(new QuickNavButton(right_x - 29 * 2, bottom_y, QuickNavButton.Type.BOTTOM, title.contains("Anvil"), "/anvil", new ItemStack(Items.ANVIL)));
+ buttons.add(new QuickNavButton(right_x - 29 * 3, bottom_y, QuickNavButton.Type.BOTTOM, title.contains("Enchant Item"), "/etable", new ItemStack(Items.ENCHANTING_TABLE)));
+
+ buttons.add(new QuickNavButton(left_x + 29 * 0, bottom_y, QuickNavButton.Type.BOTTOM, false, "/warp hub", new ItemStack(Items.COMPASS)));
+ buttons.add(new QuickNavButton(left_x + 29 * 1, bottom_y, QuickNavButton.Type.BOTTOM, false, "/warp dungeon_hub", new ItemStack(Items.WITHER_SKELETON_SKULL)));
+
+ buttons.add(new QuickNavButton(right_x - 29 * 1, top_y, QuickNavButton.Type.TOP, title.contains("Storage"), "/storage", new ItemStack(Items.ENDER_CHEST)));
+ try {
+ buttons.add(new QuickNavButton(right_x - 29 * 2, top_y, QuickNavButton.Type.TOP, title.contains("Wardrobe"), "/wardrobe", ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:leather_chestplate\", Count:1, tag:{display:{color:8991416}}}"))));
+ } catch (CommandSyntaxException e) {
+ e.printStackTrace();
+ }
+ buttons.add(new QuickNavButton(right_x - 29 * 3, top_y, QuickNavButton.Type.TOP, title.contains("Pets"), "/pets", new ItemStack(Items.BONE)));
+
+ return buttons;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
new file mode 100644
index 00000000..8e79b08e
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
@@ -0,0 +1,86 @@
+package me.xmrvizzy.skyblocker.skyblock.quicknav;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+import net.minecraft.client.MinecraftClient;
+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.util.Identifier;
+
+@Environment(value=EnvType.CLIENT)
+public class QuickNavButton extends ClickableWidget {
+ private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
+ private static final Identifier BUTTON_TEXTURE = new Identifier("textures/gui/container/creative_inventory/tabs.png");
+
+ @Override
+ public void appendNarrations(NarrationMessageBuilder builder) {
+
+ }
+
+ public enum Type {
+ TOP,
+ BOTTOM,
+ }
+
+ private final Type type;
+ private boolean toggled;
+ private int u;
+ private int v;
+ private final String command;
+ private final ItemStack icon;
+
+ public QuickNavButton(int x, int y, Type type, boolean toggled, String command, ItemStack icon) {
+ super(x, y, 28, 32, LiteralText.EMPTY);
+ this.type = type;
+ if (type == Type.BOTTOM) {
+ this.u = 28;
+ this.v = 64;
+ } else {
+ this.u = 28;
+ this.v = 0;
+ }
+ this.toggled = toggled;
+ if (toggled) this.v += 32;
+ this.command = command;
+ this.icon = icon;
+ }
+
+ @Override
+ public void onClick(double mouseX, double mouseY) {
+ if (!this.toggled) {
+ this.toggled = true;
+ this.v += 32;
+ CLIENT.player.sendChatMessage(command);
+ }
+ }
+
+ @Override
+ public void renderButton(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ RenderSystem.setShaderTexture(0, BUTTON_TEXTURE);
+ RenderSystem.disableDepthTest();
+ // render button background
+ if (!this.toggled) {
+ if (this.type == Type.BOTTOM)
+ this.drawTexture(matrices, this.x, this.y + 4, this.u, this.v + 4, this.width, this.height - 4);
+ else
+ this.drawTexture(matrices, this.x, this.y, this.u, this.v, this.width, this.height - 4);
+ } else this.drawTexture(matrices, this.x, this.y, this.u, this.v, this.width, this.height);
+ // render button icon
+ if (!this.toggled) {
+ if (this.type == Type.BOTTOM)
+ CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 6);
+ else
+ CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 9);
+ } else {
+ if (this.type == Type.BOTTOM)
+ CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 9);
+ else
+ CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 6);
+ }
+ RenderSystem.enableDepthTest();
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index 8f299ac5..71f4954a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -49,8 +49,8 @@ public class Utils {
String location = null;
List<String> sidebarLines = getSidebar();
try{
- for (int i = 0; i < sidebarLines.size(); i++) {
- if(sidebarLines.get(i).contains("⏣")) location = sidebarLines.get(i);
+ for (String sidebarLine : sidebarLines) {
+ if (sidebarLine.contains("⏣")) location = sidebarLine;
}
if (location == null) location = "Unknown";
location = location.replace('⏣', ' ').strip();
@@ -65,9 +65,9 @@ public class Utils {
List<String> sidebarLines = getSidebar();
try{
- for (int i = 0; i < sidebarLines.size(); i++) {
- if(sidebarLines.get(i).contains("Piggy:")) purseString = sidebarLines.get(i);
- if(sidebarLines.get(i).contains("Purse:")) purseString = sidebarLines.get(i);
+ for (String sidebarLine : sidebarLines) {
+ if (sidebarLine.contains("Piggy:")) purseString = sidebarLine;
+ if (sidebarLine.contains("Purse:")) purseString = sidebarLine;
}
if (purseString != null) purse = Double.parseDouble(purseString.replaceAll("[^0-9.]", "").strip());
else purse = 0;
@@ -82,10 +82,12 @@ public class Utils {
String bitsString = null;
List<String> sidebarLines = getSidebar();
try{
- for (int i = 0; i < sidebarLines.size(); i++) {
- if(sidebarLines.get(i).contains("Bits")) bitsString = sidebarLines.get(i);
+ for (String sidebarLine : sidebarLines) {
+ if (sidebarLine.contains("Bits")) bitsString = sidebarLine;
+ }
+ if (bitsString !=null) {
+ bits = Integer.parseInt(bitsString.replaceAll("[^0-9.]", "").strip());
}
- bits = Integer.parseInt(bitsString.replaceAll("Bits:", "").strip());
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index cda4bcaf..dbdc3c1a 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -9,6 +9,8 @@
"text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API Key (WIP)",
"text.autoconfig.skyblocker.option.general.bars": "Health, Mana, Defence & XP Bars",
"text.autoconfig.skyblocker.option.general.bars.enableBars": "Enable Bars",
+ "text.autoconfig.skyblocker.option.general.quicknav": "Quicknav",
+ "text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Enable Quicknav",
"text.autoconfig.skyblocker.option.general.richPresence": "Discord Rich Presence",
"text.autoconfig.skyblocker.option.general.richPresence.info": "Skyblock Info",
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index 8ef1482d..fa04da47 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -5,7 +5,7 @@
"name": "Skyblocker",
"description": "Hypixel Skyblock Mod",
"authors": ["xMrVizzy", "d3dx9", "LifeIsAParadox"],
- "contributors": ["ExternalTime", "Zailer43", "TacoMonkey"],
+ "contributors": ["ExternalTime", "Zailer43", "TacoMonkey", "KonaeAkira"],
"contact": {
"homepage": "https://hysky.de",
"sources": "https://github.com/LifeIsAParadox/Skyblocker",