aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-06-29 11:15:58 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-07-17 12:55:22 +0800
commit57328808e6cd8c2140f5a71b4c2605ac71e1b553 (patch)
treeb028cc348bd30a19d7c68143ebb1d0236742abb0 /src/main
parente76af72b34c68950f454609c2b63d52f41169a5d (diff)
downloadSkyblocker-57328808e6cd8c2140f5a71b4c2605ac71e1b553.tar.gz
Skyblocker-57328808e6cd8c2140f5a71b4c2605ac71e1b553.tar.bz2
Skyblocker-57328808e6cd8c2140f5a71b4c2605ac71e1b553.zip
Add Shortcuts
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java166
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java37
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json9
7 files changed, 221 insertions, 15 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 3692db1b..0263f20c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -16,6 +16,7 @@ import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup;
import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry;
import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav;
import me.xmrvizzy.skyblocker.skyblock.rift.TheRift;
+import me.xmrvizzy.skyblocker.skyblock.shortcut.Shortcuts;
import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud;
import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.utils.*;
@@ -76,6 +77,7 @@ public class SkyblockerMod implements ClientModInitializer {
QuickNav.init();
DwarvenHud.init();
ChatMessageListener.init();
+ Shortcuts.init();
DiscordRPCManager.init();
LividColor.init();
FishingHelper.init();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 04cfaea3..8c7d2f71 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -161,6 +161,10 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject()
public FairySouls fairySouls = new FairySouls();
+ @ConfigEntry.Category("shortcuts")
+ @ConfigEntry.Gui.CollapsibleObject()
+ public Shortcuts shortcuts = new Shortcuts();
+
@ConfigEntry.Category("itemList")
@ConfigEntry.Gui.CollapsibleObject()
public ItemList itemList = new ItemList();
@@ -264,6 +268,15 @@ public class SkyblockerConfig implements ConfigData {
public boolean enableFairySoulsHelper = false;
}
+ public static class Shortcuts {
+ @ConfigEntry.Gui.Tooltip()
+ public boolean enableShortcuts = true;
+ @ConfigEntry.Gui.Tooltip()
+ public boolean enableCommandShortcuts = true;
+ @ConfigEntry.Gui.Tooltip()
+ public boolean enableCommandArgShortcuts = true;
+ }
+
public static class Hitbox {
public boolean oldFarmlandHitbox = true;
public boolean oldLeverHitbox = false;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
index 108a7344..3cde115e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
@@ -1,15 +1,14 @@
package me.xmrvizzy.skyblocker.mixin.accessor;
-import me.xmrvizzy.skyblocker.utils.FrustumUtils;
import net.minecraft.client.render.Frustum;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
/**
- * Use {@link FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations!
+ * Use {@link me.xmrvizzy.skyblocker.utils.FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations!
*/
@Mixin(Frustum.class)
public interface FrustumInvoker {
- @Invoker("isVisible")
- boolean isVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ);
+ @Invoker
+ boolean invokeIsVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ);
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java
new file mode 100644
index 00000000..dcd98e79
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java
@@ -0,0 +1,166 @@
+package me.xmrvizzy.skyblocker.skyblock.shortcut;
+
+import com.mojang.brigadier.Command;
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
+import net.fabricmc.fabric.api.client.message.v1.ClientSendMessageEvents;
+import net.minecraft.text.Text;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
+
+public class Shortcuts {
+ public static final Map<String, String> commands = new HashMap<>();
+ public static final Map<String, String> commandArgs = new HashMap<>();
+
+ public static void init() {
+ commands.put("/s", "/skyblock");
+ commands.put("/sk", "/skyblock");
+ commands.put("/sky", "/skyblock");
+ commands.put("/i", "/is");
+ commands.put("/h", "/hub");
+ commands.put("/hu", "/hub");
+
+ commands.put("/d", "/warp dungeon_hub");
+ commands.put("/dn", "/warp dungeon_hub");
+ commands.put("/dun", "/warp dungeon_hub");
+ commands.put("/dungeon", "/warp dungeon_hub");
+
+ commands.put("/bl", "/warp nether");
+ commands.put("/blazing", "/warp nether");
+ commands.put("/fortress", "/warp nether");
+ commands.put("/crimson", "/warp nether");
+ commands.put("/isles", "/warp nether");
+ commands.put("/ci", "/warp nether");
+ commands.put("/crimson isles", "/warp nether");
+ commands.put("/n", "/warp nether");
+ commands.put("/nether", "/warp nether");
+
+ commands.put("/deep", "/warp deep");
+ commands.put("/cavern", "/warp deep");
+ commands.put("/caverns", "/warp deep");
+
+ commands.put("/dw", "/warp mines");
+ commands.put("/dwarven", "/warp mines");
+ commands.put("/mi", "/warp mines");
+ commands.put("/mines", "/warp mines");
+
+ commands.put("/fo", "/warp forge");
+ commands.put("/for", "/warp forge");
+ commands.put("/forge", "/warp forge");
+
+ commands.put("/cry", "/warp crystals");
+ commands.put("/crystal", "/warp crystals");
+ commands.put("/ho", "/warp crystals");
+ commands.put("/hollows", "/warp crystals");
+ commands.put("/ch", "/warp crystals");
+ commands.put("/crystal hollows", "/warp crystals");
+
+ commands.put("/ga", "/warp garden");
+ commands.put("/garden", "/warp garden");
+ commands.put("/go", "/warp gold");
+ commands.put("/gold", "/warp gold");
+
+ commands.put("/des", "/warp desert");
+ commands.put("/desert", "/warp desert");
+ commands.put("/mu", "/warp desert");
+ commands.put("/mushroom", "/warp desert");
+
+ commands.put("/sp", "/warp spider");
+ commands.put("/spider", "/warp spider");
+ commands.put("/spiders", "/warp spider");
+
+ commands.put("/ba", "/warp barn");
+ commands.put("/barn", "/warp barn");
+
+ commands.put("/e", "/warp end");
+ commands.put("/end", "/warp end");
+
+ commands.put("/park", "/warp park");
+
+ commands.put("/castle", "/warp castle");
+ commands.put("/museum", "/warp museum");
+ commands.put("/da", "/warp da");
+ commands.put("/dark", "/warp da");
+ commands.put("/crypt", "/warp crypt");
+ commands.put("/crypts", "/warp crypt");
+ commands.put("/nest", "/warp nest");
+ commands.put("/magma", "/warp magma");
+ commands.put("/void", "/warp void");
+ commands.put("/drag", "/warp drag");
+ commands.put("/dragon", "/warp drag");
+ commands.put("/jungle", "/warp jungle");
+ commands.put("/howl", "/warp howl");
+
+ commands.put("/ca", "/chat all");
+ commands.put("/cp", "/chat party");
+ commands.put("/cg", "/chat guild");
+ commands.put("/co", "/chat officer");
+ commands.put("/cc", "/chat coop");
+
+ commandArgs.put("/m", "/msg");
+
+ commandArgs.put("/pa", "/p accept");
+ commands.put("/pv", "/p leave");
+ commands.put("/pd", "/p disband");
+ commands.put("/rp", "/reparty");
+ commands.put("/pr", "/reparty");
+
+ commandArgs.put("/v", "/visit");
+ commands.put("/vp", "/visit portalhub");
+ commands.put("/visit p", "/visit portalhub");
+
+ ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> {
+ for (String key : commands.keySet()) {
+ if (key.startsWith("/")) {
+ dispatcher.register(literal(key.substring(1)));
+ }
+ }
+ for (String key : commandArgs.keySet()) {
+ if (key.startsWith("/")) {
+ dispatcher.register(literal(key.substring(1)));
+ }
+ }
+ dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("help").executes(context -> {
+ FabricClientCommandSource source = context.getSource();
+ String status = SkyblockerConfig.get().general.shortcuts.enableShortcuts && SkyblockerConfig.get().general.shortcuts.enableCommandShortcuts ? "§a§l (Enabled)" : "§c§l (Disabled)";
+ source.sendFeedback(Text.of("§e§lSkyblocker §fCommand Shortcuts" + status));
+ for (Map.Entry<String, String> command : commands.entrySet()) {
+ source.sendFeedback(Text.of("§7" + command.getKey() + " §f→ §7" + command.getValue()));
+ }
+ status = SkyblockerConfig.get().general.shortcuts.enableShortcuts && SkyblockerConfig.get().general.shortcuts.enableCommandArgShortcuts ? "§a§l (Enabled)" : "§c§l (Disabled)";
+ source.sendFeedback(Text.of("§e§lSkyblocker §fCommand Argument Shortcuts" + status));
+ for (Map.Entry<String, String> commandArg : commandArgs.entrySet()) {
+ source.sendFeedback(Text.of("§7" + commandArg.getKey() + " §f→ §7" + commandArg.getValue()));
+ }
+ source.sendFeedback(Text.of("§e§lSkyblocker §fCommands"));
+ for (String command : dispatcher.getSmartUsage(dispatcher.getRoot().getChild(SkyblockerMod.NAMESPACE), source).values()) {
+ source.sendFeedback(Text.of("§7/" + SkyblockerMod.NAMESPACE + " " + command));
+ }
+ return Command.SINGLE_SUCCESS;
+ })));
+ });
+ ClientSendMessageEvents.MODIFY_COMMAND.register(command -> {
+ if (Utils.isOnHypixel() && SkyblockerConfig.get().general.shortcuts.enableShortcuts) {
+ command = '/' + command;
+ if (SkyblockerConfig.get().general.shortcuts.enableCommandShortcuts) {
+ command = commands.getOrDefault(command, command);
+ }
+ if (SkyblockerConfig.get().general.shortcuts.enableCommandArgShortcuts) {
+ String[] messageArgs = command.split(" ");
+ for (int i = 0; i < messageArgs.length; i++) {
+ messageArgs[i] = commandArgs.getOrDefault(messageArgs[i], messageArgs[i]);
+ }
+ command = String.join(" ", messageArgs);
+ }
+ return command.substring(1);
+ }
+ return command;
+ });
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java
index 9ea90c16..565bd7a8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java
@@ -17,6 +17,6 @@ public class FrustumUtils {
}
public static boolean isVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
- return ((FrustumInvoker) getFrustum()).isVisible(minX, minY, minZ, maxX, maxY, maxZ);
+ return ((FrustumInvoker) getFrustum()).invokeIsVisible(minX, minY, minZ, maxX, maxY, maxZ);
}
} \ 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 35dfd368..71e3b44f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -29,6 +29,7 @@ import java.util.List;
*/
public class Utils {
private static final String PROFILE_PREFIX = "Profile: ";
+ private static boolean isOnHypixel = false;
private static boolean isOnSkyblock = false;
private static boolean isInDungeons = false;
private static boolean isInjected = false;
@@ -45,6 +46,10 @@ public class Utils {
private static boolean sentLocRaw = false;
private static long lastLocRaw = 0;
+ public static boolean isOnHypixel() {
+ return isOnHypixel;
+ }
+
public static boolean isOnSkyblock() {
return isOnSkyblock;
}
@@ -126,21 +131,35 @@ public class Utils {
String string = sidebar.toString();
if (sidebar.isEmpty()) return;
- if (sidebar.get(0).contains("SKYBLOCK") || sidebar.get(0).contains("SKIBLOCK")) {
- if (!isOnSkyblock) {
- if (!isInjected) {
- isInjected = true;
- ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
+ if (sidebar.get(sidebar.size() - 1).equals("www.hypixel.net")) {
+ if (!isOnHypixel) {
+ isOnHypixel = true;
+ }
+ if (sidebar.get(0).contains("SKYBLOCK") || sidebar.get(0).contains("SKIBLOCK")) {
+ if (!isOnSkyblock) {
+ if (!isInjected) {
+ isInjected = true;
+ ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
+ }
+ isOnSkyblock = true;
+ SkyblockEvents.JOIN.invoker().onSkyblockJoin();
}
- isOnSkyblock = true;
- SkyblockEvents.JOIN.invoker().onSkyblockJoin();
+ } else {
+ leaveSkyblock();
}
- } else if (isOnSkyblock) {
+ isInDungeons = isOnSkyblock && string.contains("The Catacombs");
+ } else if (isOnHypixel) {
+ isOnHypixel = false;
+ leaveSkyblock();
+ }
+ }
+
+ private static void leaveSkyblock() {
+ if (isOnSkyblock) {
isOnSkyblock = false;
isInDungeons = false;
SkyblockEvents.LEAVE.invoker().onSkyblockLeave();
}
- isInDungeons = isOnSkyblock && string.contains("The Catacombs");
}
public static String getLocation() {
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 0cf9933c..247fb3cd 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -29,6 +29,13 @@
"text.autoconfig.skyblocker.option.general.fishing.enableFishingHelper": "Enable Fishing Helper",
"text.autoconfig.skyblocker.option.general.fairySouls": "Fairy Souls Helper",
"text.autoconfig.skyblocker.option.general.fairySouls.enableFairySoulsHelper": "Enable Fairy Souls Helper",
+ "text.autoconfig.skyblocker.option.general.shortcuts": "Shortcuts",
+ "text.autoconfig.skyblocker.option.general.shortcuts.enableShortcuts": "Enable Shortcuts",
+ "text.autoconfig.skyblocker.option.general.shortcuts.enableShortcuts.@Tooltip": "Only works on Hypixel. Edit shortcuts with \"/skyblocker shortcuts\". At least one of the following options must be enabled for this to take effect.",
+ "text.autoconfig.skyblocker.option.general.shortcuts.enableCommandShortcuts": "Enable Command Shortcuts",
+ "text.autoconfig.skyblocker.option.general.shortcuts.enableCommandShortcuts.@Tooltip": "Shortcuts for commands consisting of only one word. Edit shortcuts with \"/skyblocker shortcuts\". Shortcuts must be enabled for this to take effect.",
+ "text.autoconfig.skyblocker.option.general.shortcuts.enableCommandArgShortcuts": "Enable Command Argument Shortcuts",
+ "text.autoconfig.skyblocker.option.general.shortcuts.enableCommandArgShortcuts.@Tooltip": "Shortcuts that replace an argument/word of a command with multiple arguments/words. Edit shortcuts with \"/skyblocker shortcuts\". Shortcuts must be enabled for this to take effect.",
"text.autoconfig.skyblocker.option.general.quicknav": "Quicknav",
"text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Enable Quicknav",
"text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift": "View backpack preview without holding Shift",
@@ -214,7 +221,7 @@
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground": "Enable Background",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x": "X",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y": "Y",
-
+
"text.autoconfig.skyblocker.option.locations.rift": "The Rift",
"text.autoconfig.skyblocker.option.locations.rift.mirrorverseWaypoints": "Enable Mirrorverse Waypoints",
"text.autoconfig.skyblocker.option.locations.rift.mcGrubberStacks": "McGrubber Stacks",