diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
5 files changed, 59 insertions, 9 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index 9c495382..a1f4fa2c 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -45,4 +45,7 @@ public class SkyblockerConfig { @SerialEntry public MiscConfig misc = new MiscConfig(); + + @SerialEntry + public EventNotificationsConfig eventNotifications = new EventNotificationsConfig(); } diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java index dd406b8a..25da464e 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java @@ -83,7 +83,8 @@ public class SkyblockerConfigManager { .category(SlayersCategory.create(defaults, config)) .category(ChatCategory.create(defaults, config)) .category(QuickNavigationCategory.create(defaults, config)) - .category(MiscCategory.create(defaults, config))).generateScreen(parent); + .category(MiscCategory.create(defaults, config)) + .category(EventNotificationsCategory.create(defaults, config))).generateScreen(parent); } /** 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 b6272403..e353b5d1 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java @@ -2,6 +2,7 @@ package de.hysky.skyblocker.config.categories; import de.hysky.skyblocker.config.ConfigUtils; import de.hysky.skyblocker.config.SkyblockerConfig; +import de.hysky.skyblocker.config.configs.EventNotificationsConfig; import de.hysky.skyblocker.skyblock.events.EventNotifications; import de.hysky.skyblocker.utils.config.DurationController; import dev.isxander.yacl3.api.*; @@ -20,13 +21,13 @@ public class EventNotificationsCategory { public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { shouldPlaySound = false; return ConfigCategory.createBuilder() - .name(Text.translatable("text.autoconfig.skyblocker.option.eventNotifications")) - .option(Option.<SkyblockerConfig.EventNotifications.Sound>createBuilder() + .name(Text.translatable("skyblocker.config.eventNotifications")) + .option(Option.<EventNotificationsConfig.Sound>createBuilder() .binding(defaults.eventNotifications.reminderSound, () -> config.eventNotifications.reminderSound, sound -> config.eventNotifications.reminderSound = sound) .controller(ConfigUtils::createEnumCyclingListController) - .name(Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.notificationSound")) + .name(Text.translatable("skyblocker.config.eventNotifications.notificationSound")) .listener((soundOption, sound) -> { if (!shouldPlaySound) { shouldPlaySound = true; @@ -44,17 +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()); + if (eventsReminderTimes.isEmpty()) return List.of(OptionGroup.createBuilder().option(LabelOption.create(Text.translatable("skyblocker.config.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.eventNotifications.@Tooltip[0]"), + .description(OptionDescription.of(Text.translatable("skyblocker.config.eventNotifications.@Tooltip[0]"), Text.empty(), - Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.@Tooltip[1]"), + Text.translatable("skyblocker.config.eventNotifications.@Tooltip[1]"), Text.empty(), - Text.translatable("text.autoconfig.skyblocker.option.eventNotifications.@Tooltip[2]", entry.getKey()))) + Text.translatable("skyblocker.config.eventNotifications.@Tooltip[2]", entry.getKey()))) .initial(60) .collapsed(true) .build() diff --git a/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java new file mode 100644 index 00000000..cc51e536 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java @@ -0,0 +1,35 @@ +package de.hysky.skyblocker.config.configs; + +import dev.isxander.yacl3.config.v2.api.SerialEntry; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class EventNotificationsConfig { + + @SerialEntry + public Sound reminderSound = Sound.PLING; + + @SerialEntry + public Map<String, List<Integer>> eventsReminderTimes = new HashMap<>(); + + public enum Sound { + NONE(null), + BELL(SoundEvents.BLOCK_BELL_USE), + DING(SoundEvents.ENTITY_ARROW_HIT_PLAYER), + PLING(SoundEvents.BLOCK_NOTE_BLOCK_PLING.value()), + GOAT(SoundEvents.GOAT_HORN_SOUNDS.getFirst().value()); + + public SoundEvent getSoundEvent() { + return soundEvent; + } + + final SoundEvent soundEvent; + Sound(SoundEvent soundEvent) { + this.soundEvent = soundEvent; + } + } +} 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 58e57120..18d9a7b2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java @@ -1,5 +1,8 @@ package de.hysky.skyblocker.skyblock.events; +import com.mojang.blaze3d.systems.RenderSystem; +import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.render.RenderHelper; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.toast.ToastManager; @@ -54,12 +57,19 @@ public class JacobEventToast extends EventToast{ for (int i = 0; i < crops.length; i++) { context.drawItem(cropItems.get(crops[i]), x + i * (16 + 8), 7); } - context.fill(30, 6, 30 + messageWidth, 22, 400, 0x212121 | k); + // IDK how to make the items transparent, so I just redraw the texture on top + context.getMatrices().push(); + context.getMatrices().translate(0, 0, 400f); + RenderHelper.renderNineSliceColored(context, TEXTURE, 0, 0, getWidth(), getHeight(), 1f, 1f, 1f, (k >> 24)/ 255f); + context.getMatrices().pop(); y += textRenderer.fontHeight * message.size(); } + context.getMatrices().push(); + context.getMatrices().translate(0, 0, 400f); drawTimer(context, 30, y); context.drawItemWithoutEntity(icon, 8, getHeight()/2 - 8); + context.getMatrices().pop(); return startTime > 5_000 ? Visibility.HIDE: Visibility.SHOW; } } |