aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/Tips.java
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-01-11 04:24:01 +0800
committerGitHub <noreply@github.com>2024-01-10 15:24:01 -0500
commit2d7127c3e486785b9f087e97a567de8ee5780650 (patch)
tree8980fcbc1011167df1d38352fe0a3fd707881c6c /src/main/java/de/hysky/skyblocker/skyblock/Tips.java
parentdb778f5f2b92c9697c9df38a8e056392c70252ed (diff)
downloadSkyblocker-2d7127c3e486785b9f087e97a567de8ee5780650.tar.gz
Skyblocker-2d7127c3e486785b9f087e97a567de8ee5780650.tar.bz2
Skyblocker-2d7127c3e486785b9f087e97a567de8ee5780650.zip
Add tips (#481)
* Add tips * Add some tips
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/Tips.java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/Tips.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/Tips.java b/src/main/java/de/hysky/skyblocker/skyblock/Tips.java
new file mode 100644
index 00000000..0d3c2a37
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/Tips.java
@@ -0,0 +1,103 @@
+package de.hysky.skyblocker.skyblock;
+
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.context.CommandContext;
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.events.SkyblockEvents;
+import de.hysky.skyblocker.utils.Constants;
+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.command.CommandRegistryAccess;
+import net.minecraft.text.ClickEvent;
+import net.minecraft.text.Text;
+
+import java.util.List;
+import java.util.Random;
+import java.util.function.Supplier;
+
+import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
+
+public class Tips {
+ private static final Random RANDOM = new Random();
+ private static final List<Supplier<Text>> TIPS = List.of(
+ getTipFactory("skyblocker.tips.customItemNames", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker custom renameItem"),
+ getTipFactory("skyblocker.tips.customArmorDyeColors", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker custom dyeColor"),
+ getTipFactory("skyblocker.tips.customArmorTrims", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker custom armorTrim"),
+ getTipFactory("skyblocker.tips.fancyTabExtraInfo"),
+ getTipFactory("skyblocker.tips.helpCommand", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker help"),
+ getTipFactory("skyblocker.tips.discordRichPresence", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.customDungeonSecretWaypoints", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker dungeons secrets addWaypoint"),
+ getTipFactory("skyblocker.tips.shortcuts", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker shortcuts"),
+ getTipFactory("skyblocker.tips.gallery", ClickEvent.Action.OPEN_URL, "https://hysky.de/skyblocker/gallery"),
+ getTipFactory("skyblocker.tips.itemRarityBackground", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.modMenuUpdate"),
+ getTipFactory("skyblocker.tips.issues", ClickEvent.Action.OPEN_URL, "https://github.com/SkyblockerMod/Skyblocker"),
+ getTipFactory("skyblocker.tips.beta", ClickEvent.Action.OPEN_URL, "https://github.com/SkyblockerMod/Skyblocker/actions"),
+ getTipFactory("skyblocker.tips.discord", ClickEvent.Action.OPEN_URL, "https://discord.gg/aNNJHQykck"),
+ getTipFactory("skyblocker.tips.flameOverlay", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.wikiLookup", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.fairySoulsEnigmaSoulsRelics", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker fairySouls"),
+ getTipFactory("skyblocker.tips.quickNav", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config")
+ );
+
+ private static Supplier<Text> getTipFactory(String key) {
+ return () -> Text.translatable(key);
+ }
+
+ private static Supplier<Text> getTipFactory(String key, ClickEvent.Action clickAction, String value) {
+ return () -> Text.translatable(key).styled(style -> style.withClickEvent(new ClickEvent(clickAction, value)));
+ }
+
+ public static void init() {
+ ClientCommandRegistrationCallback.EVENT.register(Tips::registerTipsCommand);
+ SkyblockEvents.JOIN.register(Tips::sendNextTip);
+ }
+
+ private static void registerTipsCommand(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
+ dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("tips")
+ .then(literal("enable").executes(Tips::enableTips))
+ .then(literal("disable").executes(Tips::disableTips))
+ .then(literal("next").executes(Tips::nextTip))
+ ));
+ }
+
+ private static void sendNextTip() {
+ MinecraftClient client = MinecraftClient.getInstance();
+ if (client.player != null && SkyblockerConfigManager.get().general.enableTips) {
+ client.player.sendMessage(nextTip(), false);
+ }
+ }
+
+ private static int enableTips(CommandContext<FabricClientCommandSource> context) {
+ SkyblockerConfigManager.get().general.enableTips = true;
+ SkyblockerConfigManager.save();
+ context.getSource().sendFeedback(Constants.PREFIX.get().append(Text.translatable("skyblocker.tips.enabled")).append(" ").append(Text.translatable("skyblocker.tips.clickDisable").styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/skyblocker tips disable")))));
+ return Command.SINGLE_SUCCESS;
+ }
+
+ private static int disableTips(CommandContext<FabricClientCommandSource> context) {
+ SkyblockerConfigManager.get().general.enableTips = false;
+ SkyblockerConfigManager.save();
+ context.getSource().sendFeedback(Constants.PREFIX.get().append(Text.translatable("skyblocker.tips.disabled")).append(" ").append(Text.translatable("skyblocker.tips.clickEnable").styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/skyblocker tips enable")))));
+ return Command.SINGLE_SUCCESS;
+ }
+
+ private static int nextTip(CommandContext<FabricClientCommandSource> context) {
+ context.getSource().sendFeedback(nextTip());
+ return Command.SINGLE_SUCCESS;
+ }
+
+ private static Text nextTip() {
+ return Constants.PREFIX.get().append(Text.translatable("skyblocker.tips.tip", nextTipInternal()))
+ .append(Text.translatable("skyblocker.tips.clickNextTip").styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/skyblocker tips next"))))
+ .append(" ")
+ .append(Text.translatable("skyblocker.tips.clickDisable").styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/skyblocker tips disable"))));
+ }
+
+ private static Text nextTipInternal() {
+ return TIPS.get(RANDOM.nextInt(TIPS.size())).get();
+ }
+}