aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-05-05 19:13:22 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-06-02 13:26:45 +0200
commitdb271cbea20bbf43892d33b3adc88819ba56a469 (patch)
tree0dfc7676a01903012e27d5baee689af013d5cb2a /src/main/java/de/hysky
parentabd94904c0959b1cf2621fca7e4d9f5415e9407f (diff)
downloadSkyblocker-db271cbea20bbf43892d33b3adc88819ba56a469.tar.gz
Skyblocker-db271cbea20bbf43892d33b3adc88819ba56a469.tar.bz2
Skyblocker-db271cbea20bbf43892d33b3adc88819ba56a469.zip
little touches
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java44
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java25
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java2
5 files changed, 54 insertions, 34 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java
index af30f502..709c994e 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java
@@ -12,6 +12,7 @@ import net.minecraft.text.Text;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
public class EventNotificationsCategory {
@@ -20,7 +21,7 @@ public class EventNotificationsCategory {
public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
shouldPlaySound = false;
return ConfigCategory.createBuilder()
- .name(Text.literal("Event Notifications"))
+ .name(Text.translatable("text.autoconfig.skyblocker.option.eventNotifications"))
.option(Option.<SkyblockerConfig.EventNotifications.Sound>createBuilder()
.binding(defaults.eventNotifications.reminderSound,
() -> config.eventNotifications.reminderSound,
@@ -44,16 +45,17 @@ public class EventNotificationsCategory {
private static List<OptionGroup> createGroups(SkyblockerConfig config) {
Map<String, List<Integer>> eventsReminderTimes = config.eventNotifications.eventsReminderTimes;
List<OptionGroup> groups = new ArrayList<>(eventsReminderTimes.size());
+ if (eventsReminderTimes.isEmpty()) return List.of(OptionGroup.createBuilder().option(LabelOption.create(Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.monologue"))).build());
for (Map.Entry<String, List<Integer>> entry : eventsReminderTimes.entrySet()) {
groups.add(ListOption.<Integer>createBuilder()
.name(Text.literal(entry.getKey()))
.binding(EventNotifications.DEFAULT_REMINDERS, entry::getValue, entry::setValue)
.controller(option -> () -> new DurationController(option)) // yea
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[0]"),
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.@Tooltip[0]"),
Text.empty(),
- Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[1]"),
+ Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.@Tooltip[1]"),
Text.empty(),
- Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[2]", entry.getKey())))
+ Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.@Tooltip[2]", entry.getKey())))
.initial(60)
.collapsed(true)
.build()
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java
index c62fed21..662f6b12 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.events;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.logging.LogUtils;
import de.hysky.skyblocker.SkyblockerMod;
@@ -32,7 +33,7 @@ public class EventNotifications {
public static final String JACOBS = "Jacob's Farming Contest";
- public static final List<Integer> DEFAULT_REMINDERS = List.of(60, 60*5);
+ public static final List<Integer> DEFAULT_REMINDERS = List.of(60, 60 * 5);
public static final Map<String, ItemStack> eventIcons = new Object2ObjectOpenHashMap<>();
@@ -56,18 +57,26 @@ public class EventNotifications {
SkyblockEvents.JOIN.register(EventNotifications::refreshEvents);
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(
ClientCommandManager.literal("skyblocker").then(
- ClientCommandManager.literal("ye").then(
- ClientCommandManager.argument("time", IntegerArgumentType.integer(6)).executes(context -> {
- MinecraftClient.getInstance().getToastManager().add(
- new EventToast(System.currentTimeMillis() / 1000 + context.getArgument("time", int.class), "Jacob's or something idk", new ItemStack(Items.PAPER))
- );
- return 0;
- })
- ).executes(context -> {
- MinecraftClient.getInstance().getToastManager().add(
- new JacobEventToast(System.currentTimeMillis() / 1000 + 60, "Jacob's farming contest", new String[]{"Cactus","Cocoa Beans","Pumpkin"})
- );
- return 0;})
+ ClientCommandManager.literal("debug").then(
+ ClientCommandManager.literal("toasts").then(
+ ClientCommandManager.argument("time", IntegerArgumentType.integer(0))
+ .then(ClientCommandManager.argument("jacob", BoolArgumentType.bool()).executes(context -> {
+ long time = System.currentTimeMillis() / 1000 + context.getArgument("time", int.class);
+ if (context.getArgument("jacob", Boolean.class)) {
+ MinecraftClient.getInstance().getToastManager().add(
+ new JacobEventToast(time, "Jacob's farming contest", new String[]{"Cactus", "Cocoa Beans", "Pumpkin"})
+ );
+ } else {
+ MinecraftClient.getInstance().getToastManager().add(
+ new EventToast(time, "Jacob's or something idk", new ItemStack(Items.PAPER))
+ );
+ }
+ return 0;
+ }
+ )
+ )
+ )
+ )
)
));
}
@@ -112,7 +121,6 @@ public class EventNotifications {
}
-
private static void timeUpdate() {
long newTime = System.currentTimeMillis() / 1000;
@@ -136,14 +144,14 @@ public class EventNotifications {
instance.getToastManager().add(
new JacobEventToast(skyblockEvent.start(), eventName, skyblockEvent.extras())
);
- }
- else {
+ } else {
instance.getToastManager().add(
new EventToast(skyblockEvent.start(), eventName, eventIcons.getOrDefault(eventName, new ItemStack(Items.PAPER)))
);
}
SoundEvent soundEvent = SkyblockerConfigManager.get().eventNotifications.reminderSound.getSoundEvent();
- if (soundEvent != null) instance.getSoundManager().play(PositionedSoundInstance.master(soundEvent, 1f, 1f));
+ if (soundEvent != null)
+ instance.getSoundManager().play(PositionedSoundInstance.master(soundEvent, 1f, 1f));
break;
}
}
@@ -154,7 +162,7 @@ public class EventNotifications {
public record SkyblockEvent(long start, int duration, String[] extras, @Nullable String warpCommand) {
public static SkyblockEvent of(JsonObject jsonObject) {
String location = jsonObject.get("location").getAsString();
- location = location.isBlank() ? null: location;
+ location = location.isBlank() ? null : location;
return new SkyblockEvent(jsonObject.get("timestamp").getAsLong(),
jsonObject.get("duration").getAsInt(),
jsonObject.get("extras").getAsJsonArray().asList().stream().map(JsonElement::getAsString).toArray(String[]::new),
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
index bd44c0a5..567c800a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
@@ -23,23 +23,32 @@ public class EventToast implements Toast {
private final long eventStartTime;
protected final List<OrderedText> message;
+ protected final List<OrderedText> messageNow;
protected final int messageWidth;
+ protected final int messageNowWidth;
protected final ItemStack icon;
+ protected boolean started;
+
public EventToast(long eventStartTime, String name, ItemStack icon) {
this.eventStartTime = eventStartTime;
MutableText formatted = Text.translatable("skyblocker.events.startsSoon", Text.literal(name).formatted(Formatting.YELLOW)).formatted(Formatting.WHITE);
TextRenderer renderer = MinecraftClient.getInstance().textRenderer;
message = renderer.wrapLines(formatted, 150);
messageWidth = message.stream().mapToInt(renderer::getWidth).max().orElse(150);
+
+ MutableText formattedNow = Text.translatable("skyblocker.events.startsNow", Text.literal(name).formatted(Formatting.YELLOW)).formatted(Formatting.WHITE);
+ messageNow = renderer.wrapLines(formattedNow, 150);
+ messageNowWidth = messageNow.stream().mapToInt(renderer::getWidth).max().orElse(150);
this.icon = icon;
+ this.started = eventStartTime - System.currentTimeMillis() / 1000 < 0;
}
@Override
public Visibility draw(DrawContext context, ToastManager manager, long startTime) {
context.drawGuiTexture(TEXTURE, 0, 0, getWidth(), getHeight());
- int y = 7;
+ int y = (getHeight() - getInnerContentsHeight())/2;
y = 2 + drawMessage(context, 30, y, Colors.WHITE);
drawTimer(context, 30, y);
@@ -49,7 +58,7 @@ public class EventToast implements Toast {
protected int drawMessage(DrawContext context, int x, int y, int color) {
TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
- for (OrderedText orderedText : message) {
+ for (OrderedText orderedText : started ? messageNow: message) {
context.drawText(textRenderer, orderedText, x, y, color, false);
y += textRenderer.fontHeight;
}
@@ -59,8 +68,10 @@ public class EventToast implements Toast {
protected void drawTimer(DrawContext context, int x, int y) {
long currentTime = System.currentTimeMillis() / 1000;
int timeTillEvent = (int) (eventStartTime - currentTime);
+ started = timeTillEvent < 0;
+ if (started) return;
- Text time = timeTillEvent < 0 ? Text.literal("Starts now!"): Utils.getDurationText(timeTillEvent);
+ Text time = Utils.getDurationText(timeTillEvent);
TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
context.drawText(textRenderer, time, x, y, Colors.LIGHT_YELLOW, false);
@@ -68,11 +79,15 @@ public class EventToast implements Toast {
@Override
public int getWidth() {
- return messageWidth + 30 + 6;
+ return (started ? messageNowWidth: messageWidth) + 30 + 6;
+ }
+
+ protected int getInnerContentsHeight() {
+ return message.size() * 9 + (started ? 0 : 9);
}
@Override
public int getHeight() {
- return 12 + 2 + (message.size()+1)*9;
+ return Math.max(getInnerContentsHeight() + 12 + 2, 32);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java b/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java
index a7a5f9c0..58e57120 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java
@@ -39,7 +39,7 @@ public class JacobEventToast extends EventToast{
public Visibility draw(DrawContext context, ToastManager manager, long startTime) {
context.drawGuiTexture(TEXTURE, 0, 0, getWidth(), getHeight());
- int y = 7;
+ int y = (getHeight() - getInnerContentsHeight())/2;
TextRenderer textRenderer = manager.getClient().textRenderer;
if (startTime < 3_000){
int k = MathHelper.floor(MathHelper.clamp((3_000 - startTime) / 200.0f, 0.0f, 1.0f) * 255.0f) << 24 | 0x4000000;
@@ -62,9 +62,4 @@ public class JacobEventToast extends EventToast{
context.drawItemWithoutEntity(icon, 8, getHeight()/2 - 8);
return startTime > 5_000 ? Visibility.HIDE: Visibility.SHOW;
}
-
- @Override
- public int getHeight() {
- return Math.max(super.getHeight(), 32);
- }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java
index 8d459242..ce48018d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java
@@ -1,6 +1,6 @@
package de.hysky.skyblocker.skyblock.itemlist;
-import de.hysky.skyblocker.mixin.accessor.DrawContextInvoker;
+import de.hysky.skyblocker.mixins.accessors.DrawContextInvoker;
import de.hysky.skyblocker.skyblock.events.EventNotifications;
import de.hysky.skyblocker.skyblock.events.JacobEventToast;
import de.hysky.skyblocker.utils.Utils;