aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java17
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java24
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java47
3 files changed, 54 insertions, 34 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java
new file mode 100644
index 00000000..ea497b75
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenAccessor.java
@@ -0,0 +1,17 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+import net.minecraft.client.gui.screen.ingame.HandledScreen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(HandledScreen.class)
+public interface HandledScreenAccessor {
+ @Accessor
+ int getX();
+ @Accessor
+ int getY();
+ @Accessor
+ int getBackgroundWidth();
+ @Accessor
+ int getBackgroundHeight();
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
index b86e6e32..ced2b783 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
@@ -11,25 +11,23 @@ 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<>();
+ try {
+ buttons.add(new QuickNavButton(0, title.contains("Your Skills"), "/skills", new ItemStack(Items.DIAMOND_SWORD)));
+ buttons.add(new QuickNavButton(1, title.contains("Collection"), "/collection", new ItemStack(Items.PAINTING)));
- 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(3, title.contains("Pets"), "/pets", new ItemStack(Items.BONE)));
+ buttons.add(new QuickNavButton(4, title.contains("Wardrobe"), "/wardrobe", ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:leather_chestplate\", Count:1, tag:{display:{color:8991416}}}"))));
+ buttons.add(new QuickNavButton(5, title.contains("Storage"), "/storage", new ItemStack(Items.ENDER_CHEST)));
- 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(6, false, "/warp hub", new ItemStack(Items.COMPASS)));
+ buttons.add(new QuickNavButton(7, 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}}}"))));
+ buttons.add(new QuickNavButton(9, title.contains("Enchant Item"), "/etable", new ItemStack(Items.ENCHANTING_TABLE)));
+ buttons.add(new QuickNavButton(10, title.contains("Anvil"), "/anvil", new ItemStack(Items.ANVIL)));
+ buttons.add(new QuickNavButton(11, title.contains("Craft Item"), "/craft", new ItemStack(Items.CRAFTING_TABLE)));
} 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
index 8e79b08e..77181332 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java
@@ -1,9 +1,12 @@
package me.xmrvizzy.skyblocker.skyblock.quicknav;
import com.mojang.blaze3d.systems.RenderSystem;
+import me.xmrvizzy.skyblocker.mixin.HandledScreenAccessor;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.client.util.math.MatrixStack;
@@ -21,62 +24,64 @@ public class QuickNavButton extends ClickableWidget {
}
- public enum Type {
- TOP,
- BOTTOM,
- }
-
- private final Type type;
+ private int index;
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;
- }
+ public QuickNavButton(int index, boolean toggled, String command, ItemStack icon) {
+ super(0, 0, 28, 32, LiteralText.EMPTY);
+ this.index = index;
this.toggled = toggled;
- if (toggled) this.v += 32;
this.command = command;
this.icon = icon;
}
+ private void updateCoordinates() {
+ Screen screen = MinecraftClient.getInstance().currentScreen;
+ if (screen instanceof HandledScreen<?>) {
+ HandledScreen<?> handledScreen = (HandledScreen<?>) screen;
+ int x = ((HandledScreenAccessor)handledScreen).getX();
+ int y = ((HandledScreenAccessor)handledScreen).getY();
+ int w = ((HandledScreenAccessor)handledScreen).getBackgroundWidth();
+ int h = ((HandledScreenAccessor)handledScreen).getBackgroundHeight();
+ this.x = x + this.index % 6 * 28 + 4;
+ this.y = this.index < 6 ? y - 28 : y + h - 4;
+ this.u = 28;
+ this.v = (index < 6 ? 0 : 64) + (toggled ? 32 : 0);
+ }
+ }
+
@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) {
+ this.updateCoordinates();
RenderSystem.setShaderTexture(0, BUTTON_TEXTURE);
RenderSystem.disableDepthTest();
// render button background
if (!this.toggled) {
- if (this.type == Type.BOTTOM)
+ if (this.index >= 6)
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)
+ if (this.index >= 6)
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)
+ if (this.index >= 6)
CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 9);
else
CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 6);