aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-05-16 19:40:01 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-05-16 19:40:01 -0400
commit2093b1fc1c2a75009b367bcd7b378bcf6e1d16b8 (patch)
tree60d485595071f6364254ee6d5b0bd2046068e853 /src/main/java/me/xmrvizzy
parent38d19549c1f02dee99d803e735d7989f528637f6 (diff)
downloadSkyblocker-2093b1fc1c2a75009b367bcd7b378bcf6e1d16b8.tar.gz
Skyblocker-2093b1fc1c2a75009b367bcd7b378bcf6e1d16b8.tar.bz2
Skyblocker-2093b1fc1c2a75009b367bcd7b378bcf6e1d16b8.zip
Added config screen command
Diffstat (limited to 'src/main/java/me/xmrvizzy')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java17
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java38
2 files changed, 43 insertions, 12 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 80b02eee..1023f3c8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -23,22 +23,18 @@ import net.minecraft.client.MinecraftClient;
public class SkyblockerMod implements ClientModInitializer {
public static final String NAMESPACE = "skyblocker";
- private static final SkyblockerMod instance = new SkyblockerMod();
+ private static SkyblockerMod INSTANCE;
public final Scheduler scheduler = new Scheduler();
public final ContainerSolverManager containerSolverManager = new ContainerSolverManager();
public final StatusBarTracker statusBarTracker = new StatusBarTracker();
- private SkyblockerMod() {
- scheduler.scheduleCyclic(Utils::sbChecker, 20);
- scheduler.scheduleCyclic(DiscordRPCManager::update, 100);
- scheduler.scheduleCyclic(DungeonBlaze::update, 4);
- scheduler.scheduleCyclic(BackpackPreview::tick, 50);
- scheduler.scheduleCyclic(DwarvenHud::update, 40);
+ public SkyblockerMod() {
+ INSTANCE = this;
}
public static SkyblockerMod getInstance() {
- return instance;
+ return INSTANCE;
}
@Override
@@ -57,6 +53,11 @@ public class SkyblockerMod implements ClientModInitializer {
ChatMessageListener.init();
UpdateChecker.init();
DiscordRPCManager.init();
+ scheduler.scheduleCyclic(Utils::sbChecker, 20);
+ scheduler.scheduleCyclic(DiscordRPCManager::update, 100);
+ scheduler.scheduleCyclic(DungeonBlaze::update, 4);
+ scheduler.scheduleCyclic(BackpackPreview::tick, 50);
+ scheduler.scheduleCyclic(DwarvenHud::update, 40);
}
public void tick(MinecraftClient client) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 48eb31c7..e2e7b4ca 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -1,16 +1,24 @@
package me.xmrvizzy.skyblocker.config;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
+import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.resource.language.I18n;
import java.util.ArrayList;
import java.util.List;
+import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
+
@Config(name = "skyblocker")
public class SkyblockerConfig implements ConfigData {
@@ -59,7 +67,7 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Category("button6")
@ConfigEntry.Gui.CollapsibleObject()
- public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "Storage", "/storage");
+ public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "Storage", "/storage");
@ConfigEntry.Category("button7")
@ConfigEntry.Gui.CollapsibleObject()
@@ -133,7 +141,7 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Category("bars")
@ConfigEntry.Gui.CollapsibleObject()
public Bars bars = new Bars();
-
+
@ConfigEntry.Category("itemList")
@ConfigEntry.Gui.CollapsibleObject()
public ItemList itemList = new ItemList();
@@ -177,7 +185,7 @@ public class SkyblockerConfig implements ConfigData {
NONE;
@Override
- public String toString() {
+ public String toString() {
return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name());
}
@@ -215,7 +223,7 @@ public class SkyblockerConfig implements ConfigData {
BOTH;
@Override
- public String toString() {
+ public String toString() {
return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name());
}
}
@@ -310,14 +318,36 @@ public class SkyblockerConfig implements ConfigData {
PURSE,
BITS,
LOCATION;
+
@Override
public String toString() {
return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name());
}
}
+ /**
+ * Registers the config to AutoConfig and register commands to open the config screen.
+ */
public static void init() {
AutoConfig.register(SkyblockerConfig.class, GsonConfigSerializer::new);
+ ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(literal("skyblocker").then(optionsLiteral("config")).then(optionsLiteral("options")))));
+ }
+
+ /**
+ * Registers an options command with the given name. Used for registering both options and config as valid commands.
+ *
+ * @param name the name of the command node
+ * @return the command builder
+ */
+ private static LiteralArgumentBuilder<FabricClientCommandSource> optionsLiteral(String name) {
+ return literal(name).executes(context -> {
+ // Don't immediately open the next screen as it will be closed by ChatScreen right after this command is executed
+ SkyblockerMod.getInstance().scheduler.schedule(() -> {
+ Screen a = AutoConfig.getConfigScreen(SkyblockerConfig.class, null).get();
+ MinecraftClient.getInstance().setScreen(a);
+ }, 0);
+ return 1;
+ });
}
public static SkyblockerConfig get() {