aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerScreen.java33
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/Tips.java96
3 files changed, 97 insertions, 40 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerScreen.java b/src/main/java/de/hysky/skyblocker/SkyblockerScreen.java
index 15c855a0..1fdbe038 100644
--- a/src/main/java/de/hysky/skyblocker/SkyblockerScreen.java
+++ b/src/main/java/de/hysky/skyblocker/SkyblockerScreen.java
@@ -1,7 +1,5 @@
package de.hysky.skyblocker;
-import java.time.LocalDate;
-
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.Tips;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
@@ -11,11 +9,7 @@ import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ConfirmLinkScreen;
import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.gui.widget.ButtonWidget;
-import net.minecraft.client.gui.widget.GridWidget;
-import net.minecraft.client.gui.widget.MultilineTextWidget;
-import net.minecraft.client.gui.widget.TextWidget;
-import net.minecraft.client.gui.widget.ThreePartsLayoutWidget;
+import net.minecraft.client.gui.widget.*;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.OrderedText;
import net.minecraft.text.StringVisitable;
@@ -23,6 +17,8 @@ import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.Language;
+import java.time.LocalDate;
+
public class SkyblockerScreen extends Screen {
private static final int SPACING = 8;
private static final int BUTTON_WIDTH = 210;
@@ -36,7 +32,8 @@ public class SkyblockerScreen extends Screen {
private static final Text TRANSLATE_TEXT = Text.translatable("text.skyblocker.translate");
private static final Text MODRINTH_TEXT = Text.translatable("text.skyblocker.modrinth");
private static final Text DISCORD_TEXT = Text.translatable("text.skyblocker.discord");
- private final ThreePartsLayoutWidget layout = new ThreePartsLayoutWidget(this);
+ private ThreePartsLayoutWidget layout;
+ private MultilineTextWidget tip;
static {
LocalDate date = LocalDate.now();
@@ -44,7 +41,7 @@ public class SkyblockerScreen extends Screen {
ICON = date.getMonthValue() == 4 && date.getDayOfMonth() == 1 ? new Identifier(SkyblockerMod.NAMESPACE, "icons.png") : new Identifier(SkyblockerMod.NAMESPACE, "icon.png");
}
- private SkyblockerScreen() {
+ public SkyblockerScreen() {
super(TITLE);
}
@@ -57,6 +54,7 @@ public class SkyblockerScreen extends Screen {
@Override
protected void init() {
+ this.layout = new ThreePartsLayoutWidget(this, 50, 100);
this.layout.addHeader(new IconTextWidget(this.getTitle(), this.textRenderer, ICON));
GridWidget gridWidget = this.layout.addBody(new GridWidget()).setSpacing(SPACING);
@@ -72,17 +70,26 @@ public class SkyblockerScreen extends Screen {
adder.add(ButtonWidget.builder(DISCORD_TEXT, ConfirmLinkScreen.opening(this, "https://discord.gg/aNNJHQykck")).width(HALF_BUTTON_WIDTH).build());
adder.add(ButtonWidget.builder(ScreenTexts.DONE, button -> this.close()).width(BUTTON_WIDTH).build(), 2);
- MultilineTextWidget tip = new MultilineTextWidget(Text.translatable("skyblocker.tips.tip", Tips.nextTipInternal()), this.textRenderer)
- .setCentered(true)
- .setMaxWidth((int) (this.width * 0.7));
+ GridWidget footerGridWidget = this.layout.addFooter(new GridWidget()).setSpacing(SPACING).setRowSpacing(0);
+ footerGridWidget.getMainPositioner().alignHorizontalCenter();
+ GridWidget.Adder footerAdder = footerGridWidget.createAdder(2);
+ footerAdder.add(tip = new MultilineTextWidget(Tips.nextTip(), this.textRenderer).setCentered(true).setMaxWidth((int) (this.width * 0.7)), 2);
+ footerAdder.add(ButtonWidget.builder(Text.translatable("skyblocker.tips.previous"), button -> {
+ tip.setMessage(Tips.previousTip());
+ layout.refreshPositions();
+ }).build());
+ footerAdder.add(ButtonWidget.builder(Text.translatable("skyblocker.tips.next"), button -> {
+ tip.setMessage(Tips.nextTip());
+ layout.refreshPositions();
+ }).build());
- this.layout.addFooter(tip);
this.layout.refreshPositions();
this.layout.forEachChild(this::addDrawableChild);
}
@Override
protected void initTabNavigation() {
+ super.initTabNavigation();
this.layout.refreshPositions();
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
index 1477d669..2015e75f 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.config.categories;
+import de.hysky.skyblocker.SkyblockerScreen;
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.configs.GeneralConfig;
@@ -16,6 +17,13 @@ public class GeneralCategory {
return ConfigCategory.createBuilder()
.name(Text.translatable("skyblocker.config.general"))
+ //Skyblocker Screen
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.skyblockerScreen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new SkyblockerScreen()))
+ .build())
+
//Ungrouped Options
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.general.enableTips"))
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/Tips.java b/src/main/java/de/hysky/skyblocker/skyblock/Tips.java
index 513dc4b7..fb29dc3a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/Tips.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/Tips.java
@@ -14,16 +14,16 @@ import net.minecraft.command.CommandRegistryAccess;
import net.minecraft.text.ClickEvent;
import net.minecraft.text.Text;
+import java.util.ArrayList;
+import java.util.Collections;
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 int previousTipIndex = -1;
- private static final List<Supplier<Text>> TIPS = List.of(
+ private static int currentTipIndex = 0;
+ private static final List<Supplier<Text>> TIPS = new ArrayList<>(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"),
@@ -36,15 +36,33 @@ public class Tips {
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.issues", ClickEvent.Action.OPEN_URL, "https://github.com/SkyblockerMod/Skyblocker/issues"),
getTipFactory("skyblocker.tips.beta", ClickEvent.Action.OPEN_URL, "https://github.com/SkyblockerMod/Skyblocker/actions"),
+ getTipFactory("skyblocker.tips.contribute", ClickEvent.Action.OPEN_URL, "https://github.com/SkyblockerMod/Skyblocker/wiki/contribute"),
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.protectItem", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker protectItem"),
getTipFactory("skyblocker.tips.fairySoulsEnigmaSoulsRelics", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker fairySouls"),
- getTipFactory("skyblocker.tips.quickNav", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config")
- );
+ getTipFactory("skyblocker.tips.quickNav", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.waypoints", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker waypoint"),
+ getTipFactory("skyblocker.tips.orderedWaypoints", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker waypoint ordered"),
+ getTipFactory("skyblocker.tips.visitorHelper"),
+ getTipFactory("skyblocker.tips.slotText"),
+ getTipFactory("skyblocker.tips.profileViewer", ClickEvent.Action.SUGGEST_COMMAND, "/pv"),
+ getTipFactory("skyblocker.tips.configSearch", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.compactDamage", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.skyblockerScreen", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker"),
+ getTipFactory("skyblocker.tips.tipsClick", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker tips next"),
+ getTipFactory("skyblocker.tips.eventNotifications", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.signCalculator"),
+ getTipFactory("skyblocker.tips.fancierBars", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker bars"),
+ getTipFactory("skyblocker.tips.crystalWaypointsShare", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker crystalWaypoints share"),
+ getTipFactory("skyblocker.tips.gardenMouseLock", ClickEvent.Action.SUGGEST_COMMAND, "/skyblocker config"),
+ getTipFactory("skyblocker.tips.newYearCakesHelper"),
+ getTipFactory("skyblocker.tips.accessoryHelper"),
+ getTipFactory("skyblocker.tips.fancyAuctionHouseCheapHighlight")
+ ));
private static boolean sentTip = false;
@@ -59,24 +77,18 @@ public class Tips {
public static void init() {
ClientCommandRegistrationCallback.EVENT.register(Tips::registerTipsCommand);
SkyblockEvents.JOIN.register(Tips::sendNextTip);
+ Collections.shuffle(TIPS);
}
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))
+ .then(literal("previous").executes(Tips::sendPreviousTipCommand))
+ .then(literal("next").executes(Tips::sendNextTipCommand))
));
}
- private static void sendNextTip() {
- MinecraftClient client = MinecraftClient.getInstance();
- if (client.player != null && SkyblockerConfigManager.get().general.enableTips && !sentTip) {
- client.player.sendMessage(nextTip(), false);
- sentTip = true;
- }
- }
-
private static int enableTips(CommandContext<FabricClientCommandSource> context) {
SkyblockerConfigManager.get().general.enableTips = true;
SkyblockerConfigManager.save();
@@ -91,22 +103,52 @@ public class Tips {
return Command.SINGLE_SUCCESS;
}
- private static int nextTip(CommandContext<FabricClientCommandSource> context) {
- context.getSource().sendFeedback(nextTip());
+ private static void sendNextTip() {
+ MinecraftClient client = MinecraftClient.getInstance();
+ if (client.player != null && SkyblockerConfigManager.get().general.enableTips && !sentTip) {
+ client.player.sendMessage(tipMessage(nextTip()), false);
+ sentTip = true;
+ }
+ }
+
+ private static int sendNextTipCommand(CommandContext<FabricClientCommandSource> context) {
+ context.getSource().sendFeedback(tipMessage(nextTip()));
return Command.SINGLE_SUCCESS;
}
- private static Text nextTip() {
- return Constants.PREFIX.get().append(Text.translatable("skyblocker.tips.tip", nextTipInternal()))
+ public static Text nextTip() {
+ return Text.translatable("skyblocker.tips.tip", nextTipInternal());
+ }
+
+ private static Text nextTipInternal() {
+ currentTipIndex++;
+ currentTipIndex %= TIPS.size();
+ return TIPS.get(currentTipIndex).get();
+ }
+
+ private static int sendPreviousTipCommand(CommandContext<FabricClientCommandSource> context) {
+ context.getSource().sendFeedback(tipMessage(previousTip()));
+ return Command.SINGLE_SUCCESS;
+ }
+
+ public static Text previousTip() {
+ return Text.translatable("skyblocker.tips.tip", previousTipInternal());
+ }
+
+ private static Text previousTipInternal() {
+ currentTipIndex--;
+ currentTipIndex += TIPS.size();
+ currentTipIndex %= TIPS.size();
+ return TIPS.get(currentTipIndex).get();
+ }
+
+ private static Text tipMessage(Text tip) {
+ return Constants.PREFIX.get().append(tip)
+ .append(" ")
+ .append(Text.translatable("skyblocker.tips.clickPreviousTip").styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/skyblocker tips previous"))))
+ .append(" ")
.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"))));
}
-
- public static Text nextTipInternal() {
- int randomInt = RANDOM.nextInt(TIPS.size());
- while (randomInt == previousTipIndex) randomInt = RANDOM.nextInt(TIPS.size());
- previousTipIndex = randomInt;
- return TIPS.get(randomInt).get();
- }
}