diff options
author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-05-05 19:13:22 +0200 |
---|---|---|
committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-06-02 13:26:45 +0200 |
commit | db271cbea20bbf43892d33b3adc88819ba56a469 (patch) | |
tree | 0dfc7676a01903012e27d5baee689af013d5cb2a /src/main/java/de/hysky | |
parent | abd94904c0959b1cf2621fca7e4d9f5415e9407f (diff) | |
download | Skyblocker-db271cbea20bbf43892d33b3adc88819ba56a469.tar.gz Skyblocker-db271cbea20bbf43892d33b3adc88819ba56a469.tar.bz2 Skyblocker-db271cbea20bbf43892d33b3adc88819ba56a469.zip |
little touches
Diffstat (limited to 'src/main/java/de/hysky')
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; |