aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java
diff options
context:
space:
mode:
authorBuildTools <james.jenour@protonmail.com>2021-01-07 12:57:35 +0800
committerBuildTools <james.jenour@protonmail.com>2021-01-07 12:57:35 +0800
commitcfa0aa0c9a24aa739d3254b24ef4bf0bea7087a6 (patch)
tree37195b6df62d8281e236e0fb87e5d9edbd60f625 /src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java
parent9ae63509ab33c4d3f0ee19bc618ef4e4c654ef46 (diff)
downloadnotenoughupdates-cfa0aa0c9a24aa739d3254b24ef4bf0bea7087a6.tar.gz
notenoughupdates-cfa0aa0c9a24aa739d3254b24ef4bf0bea7087a6.tar.bz2
notenoughupdates-cfa0aa0c9a24aa739d3254b24ef4bf0bea7087a6.zip
PRE4
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java1472
1 files changed, 0 insertions, 1472 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java
deleted file mode 100644
index ccfe4a65..00000000
--- a/src/main/java/io/github/moulberry/notenoughupdates/CalendarOverlay.java
+++ /dev/null
@@ -1,1472 +0,0 @@
-package io.github.moulberry.notenoughupdates;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
-import io.github.moulberry.notenoughupdates.util.Utils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.audio.PositionedSoundRecord;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.gui.Gui;
-import net.minecraft.client.gui.ScaledResolution;
-import net.minecraft.client.gui.inventory.GuiChest;
-import net.minecraft.client.gui.inventory.GuiContainer;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.OpenGlHelper;
-import net.minecraft.client.shader.Framebuffer;
-import net.minecraft.client.shader.Shader;
-import net.minecraft.init.Items;
-import net.minecraft.inventory.ContainerChest;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.nbt.NBTTagList;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.Matrix4f;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.client.ClientCommandHandler;
-import net.minecraftforge.client.event.GuiScreenEvent;
-import net.minecraftforge.client.event.RenderGameOverlayEvent;
-import net.minecraftforge.client.event.sound.SoundEvent;
-import net.minecraftforge.fml.common.eventhandler.EventPriority;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
-import org.lwjgl.input.Keyboard;
-import org.lwjgl.input.Mouse;
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL14;
-
-import static io.github.moulberry.notenoughupdates.GuiTextures.*;
-
-import java.io.File;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class CalendarOverlay {
-
- private static final ResourceLocation BACKGROUND = new ResourceLocation("notenoughupdates:calendar/background.png");
- private static final ResourceLocation DISPLAYBAR = new ResourceLocation("notenoughupdates:calendar/displaybar.png");
- private static final ResourceLocation TOAST = new ResourceLocation("notenoughupdates:calendar/toast.png");
-
- private static JsonObject farmingEventTypes = null;
-
- private static boolean enabled = false;
-
- public static void setEnabled(boolean enabled) {
- CalendarOverlay.enabled = enabled;
- }
-
- public static boolean isEnabled() {
- return enabled;
- }
-
- private int guiLeft = -1;
- private int guiTop = -1;
- private int xSize = 168;
- private int ySize = 170;
-
- private class SBEvent {
- String id;
- String display;
- ItemStack stack;
- List<String> desc;
- long lastsFor;
-
- public SBEvent(String id, String display, ItemStack stack, List<String> desc) {
- this(id, display, stack, desc, -1);
- }
-
- public SBEvent(String id, String display, ItemStack stack, List<String> desc, long lastsFor) {
- this.id = id;
- this.display = display;
- this.stack = stack;
- this.desc = desc;
- this.lastsFor = lastsFor;
- }
- }
-
- private int jingleIndex = -1;
-
- private TreeMap<Long, Set<SBEvent>> eventMap = new TreeMap<>();
- private List<String> jfFavouriteSelect = null;
- private int jfFavouriteSelectIndex = 0;
- private int jfFavouriteSelectX = 0;
- private int jfFavouriteSelectY = 0;
-
- private boolean drawTimerForeground = false;
-
- private static long spookyStart = 0;
-
- private static long SECOND = 1000;
- private static long MINUTE = SECOND*60;
- private static long HOUR = MINUTE*60;
- private static long DAY = HOUR*24;
-
- private static long DA_OFFSET = 1000*60*55;
- private static long JF_OFFSET = 1000*60*15;
-
- private static ItemStack DA_STACK;
- private static ItemStack JF_STACK;
- static {
- NBTTagCompound tag = new NBTTagCompound();
- tag.setString("event_id", "dark_auction");
- //tag.setTag("ench", new NBTTagList());
-
- DA_STACK = new ItemStack(Items.netherbrick);
- DA_STACK.setTagCompound(tag);
-
- tag.setString("event_id", "jacob_farming");
- JF_STACK = new ItemStack(Items.wheat);
- JF_STACK.setTagCompound(tag);
- }
-
- public long getTimeOffset(String time) {
- long offset = 0;
-
- StringBuilder numS = new StringBuilder();
- for(int timeIndex=0; timeIndex<time.length(); timeIndex++) {
- char c = time.charAt(timeIndex);
-
- if(c >= '0' && c <= '9') {
- numS.append(c);
- } else {
- try {
- int num = Integer.parseInt(numS.toString());
- switch (c) {
- case 'd':
- offset += num * DAY; continue;
- case 'h':
- offset += num * HOUR; continue;
- case 'm':
- offset += num * MINUTE; continue;
- case 's':
- offset += num * SECOND; continue;
- }
- } catch(Exception ignored) {}
- numS = new StringBuilder();
- }
- }
-
- return offset;
- }
-
- private static Pattern CALENDAR_PATTERN = Pattern.compile("([A-Za-z ]+), Year ([0-9]+)");
- private static long SKYBLOCK_START = 1559829300000L; //Day 0, Year 0
-
- @SubscribeEvent
- public void tick(TickEvent.ClientTickEvent event) {
- if(event.phase != TickEvent.Phase.START) return;
-
- if(jingleIndex == 0) {
- if (NotEnoughUpdates.INSTANCE.manager.config.eventNotificationSounds.value) {
- Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(
- new ResourceLocation("notenoughupdates:calendar_notif_jingle")
- ));
- Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(
- new ResourceLocation("notenoughupdates:calendar_notif_in")
- ));
- }
- jingleIndex = -15*20;
- } else if(jingleIndex >= 1) {
- if (NotEnoughUpdates.INSTANCE.manager.config.eventNotificationSounds.value) {
- Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(
- new ResourceLocation("notenoughupdates:calendar_notif_in")
- ));
- }
- jingleIndex = -15*20;
- } else if(jingleIndex < -1) {
- jingleIndex++;
- }
- if(jingleIndex == -20*6-10) {
- if(NotEnoughUpdates.INSTANCE.manager.config.eventNotificationSounds.value) {
- Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(
- new ResourceLocation("notenoughupdates:calendar_notif_out")
- ));
- }
- }
-
- if(farmingEventTypes == null) {
- farmingEventTypes = NotEnoughUpdates.INSTANCE.manager.getJsonFromFile(new File(NotEnoughUpdates.INSTANCE.manager.configLocation,
- "farmingEventTypes.json"));
- if(farmingEventTypes == null) {
- farmingEventTypes = new JsonObject();
- }
- }
-
- if(!(Minecraft.getMinecraft().currentScreen instanceof GuiChest)) {
- jfFavouriteSelect = null;
- if(eventMap.isEmpty() || eventMap.size() <= 20) {
- long currentTime = System.currentTimeMillis();
- long floorHour = (currentTime/HOUR)*HOUR;
- for(int i=0; i<15; i++) {
- long daEvent = floorHour+i*HOUR+DA_OFFSET;
- long jfEvent = floorHour+i*HOUR+JF_OFFSET;
-
- if(daEvent > currentTime) {
- eventMap.computeIfAbsent(daEvent, k->new HashSet<>()).add(new SBEvent("dark_auction",
- EnumChatFormatting.DARK_PURPLE+"Dark Auction", DA_STACK, null, MINUTE*5));
- }
- if(jfEvent > currentTime) {
- SBEvent jf = new SBEvent("jacob_farming",
- EnumChatFormatting.YELLOW+"Jacob's Farming Contest", JF_STACK, null, MINUTE*20);
- if(farmingEventTypes != null && farmingEventTypes.has(""+jfEvent) &&
- farmingEventTypes.get(""+jfEvent).isJsonArray()) {
- JsonArray arr = farmingEventTypes.get(""+jfEvent).getAsJsonArray();
- jf.desc = new ArrayList<>();
- for(JsonElement e : arr) {
- jf.desc.add(EnumChatFormatting.YELLOW+"\u25CB "+e.getAsString());
- jf.id += ":" + e.getAsString();
- }
- }
- eventMap.computeIfAbsent(jfEvent, k->new HashSet<>()).add(jf);
- }
- }
- }
- return;
- }
-
- GuiChest eventGui = (GuiChest) Minecraft.getMinecraft().currentScreen;
- ContainerChest cc = (ContainerChest) eventGui.inventorySlots;
- String containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText();
-
- Matcher matcher = CALENDAR_PATTERN.matcher(Utils.cleanColour(containerName));
- if(farmingEventTypes != null && matcher.matches()) {
- try {
- int year = Integer.parseInt(matcher.group(2));
- int skyblockDays = year * 12 * 31;
-
- String month = matcher.group(1);
- boolean spring = month.endsWith("Spring");
- boolean summer = month.endsWith("Summer");
- boolean autumn = month.endsWith("Autumn");
- boolean winter = month.endsWith("Winter");
- if(spring || summer || autumn || winter) {
- if(spring) {
- skyblockDays += 1*31;
- } else if(summer) {
- skyblockDays += 4*31;
- } else if(autumn) {
- skyblockDays += 7*31;
- } else {
- skyblockDays += 10*31;
- }
- if(month.startsWith("Early")) {
- skyblockDays -= 31;
- } else if(month.startsWith("Late")) {
- skyblockDays += 31;
- }
-
- long start = SKYBLOCK_START + skyblockDays*20*MINUTE;
-
- boolean changed = false;
- for(int i=0; i<31; i++) {
- ItemStack item = cc.getLowerChestInventory().getStackInSlot(1+(i%7)+(i/7)*9);
-
- JsonArray array = new JsonArray();
- if(item.getTagCompound() != null) {
- NBTTagCompound tag = item.getTagCompound();
-
- if(tag.hasKey("display", 10)) {
- NBTTagCompound display = tag.getCompoundTag("display");
- if (display.hasKey("Lore", 9)) {
- NBTTagList list = display.getTagList("Lore", 8);
- for(int j=0; j<list.tagCount(); j++) {
- String line = list.getStringTagAt(j);
- if(line.startsWith(EnumChatFormatting.YELLOW+"\u25CB")) {
- array.add(new JsonPrimitive(Utils.cleanColour(line.substring(4))));
- }
- }
- }
- }
- }
- if(array.size() == 3) {
- String prop = String.valueOf(start + i*20*MINUTE);
- if(!farmingEventTypes.has(prop) || !farmingEventTypes.get(prop).isJsonArray() ||
- farmingEventTypes.get(prop).getAsJsonArray().equals(array)) {
- changed = true;
- }
- farmingEventTypes.add(prop, array);
- }
- }
- if(changed) {
- File f = new File(NotEnoughUpdates.INSTANCE.manager.configLocation,
- "farmingEventTypes.json");
- NotEnoughUpdates.INSTANCE.manager.writeJson(farmingEventTypes, f);
- }
- }
- } catch(Exception ignored) {
- ignored.printStackTrace();
- }
- }
-
- if(!enabled) {
- jfFavouriteSelect = null;
- if(eventMap.isEmpty() || eventMap.size() <= 20) {
- long currentTime = System.currentTimeMillis();
- long floorHour = (currentTime/HOUR)*HOUR;
- for(int i=0; i<15; i++) {
- long daEvent = floorHour+i*HOUR+DA_OFFSET;
- long jfEvent = floorHour+i*HOUR+JF_OFFSET;
-
- if(daEvent > currentTime) {
- eventMap.computeIfAbsent(daEvent, k->new HashSet<>()).add(new SBEvent("dark_auction",
- EnumChatFormatting.DARK_PURPLE+"Dark Auction", DA_STACK, null, MINUTE*5));
- }
- if(jfEvent > currentTime) {
- SBEvent jf = new SBEvent("jacob_farming",
- EnumChatFormatting.YELLOW+"Jacob's Farming Contest", JF_STACK, null, MINUTE*20);
- if(farmingEventTypes != null && farmingEventTypes.has(""+jfEvent) &&
- farmingEventTypes.get(""+jfEvent).isJsonArray()) {
- JsonArray arr = farmingEventTypes.get(""+jfEvent).getAsJsonArray();
- jf.desc = new ArrayList<>();
- for(JsonElement e : arr) {
- jf.desc.add(EnumChatFormatting.YELLOW+"\u25CB "+e.getAsString());
- jf.id += ":" + e.getAsString();
- }
- }
- eventMap.computeIfAbsent(jfEvent, k->new HashSet<>()).add(jf);
- }
- }
- }
- return;
- }
-
- if(!containerName.trim().equals("Calendar and Events")) {
- setEnabled(false);
- return;
- }
-
- eventMap.clear();
-
- long currentTime = System.currentTimeMillis();
- long floorHour = (currentTime/HOUR)*HOUR;
- for(int i=0; i<15; i++) {
- long daEvent = floorHour+i*HOUR+DA_OFFSET;
- long jfEvent = floorHour+i*HOUR+JF_OFFSET;
-
- if(daEvent > currentTime) {
- eventMap.computeIfAbsent(daEvent, k->new HashSet<>()).add(new SBEvent("dark_auction",
- EnumChatFormatting.DARK_PURPLE+"Dark Auction", DA_STACK, null, MINUTE*5));
- }
- if(jfEvent > currentTime) {
- SBEvent jf = new SBEvent("jacob_farming",
- EnumChatFormatting.YELLOW+"Jacob's Farming Contest", JF_STACK, null, MINUTE*20);
- if(farmingEventTypes != null && farmingEventTypes.has(""+jfEvent) &&
- farmingEventTypes.get(""+jfEvent).isJsonArray()) {
- JsonArray arr = farmingEventTypes.get(""+jfEvent).getAsJsonArray();
- jf.desc = new ArrayList<>();
- for(JsonElement e : arr) {
- jf.desc.add(EnumChatFormatting.YELLOW+"\u25CB "+e.getAsString());
- jf.id += ":" + e.getAsString();
- }
- }
- eventMap.computeIfAbsent(jfEvent, k->new HashSet<>()).add(jf);
- }
- }
-
- String lastsForText = EnumChatFormatting.GRAY+"Event lasts for "+EnumChatFormatting.YELLOW;
- String startsInText = EnumChatFormatting.GRAY+"Starts in: "+EnumChatFormatting.YELLOW;
- for(int i=0; i<21; i++) {
- int itemIndex = 10+i+(i/7)*2;
- ItemStack item = cc.getLowerChestInventory().getStackInSlot(itemIndex);
-
- if(item != null && item.getTagCompound() != null) {
- NBTTagCompound tag = item.getTagCompound();
-
- if(tag.hasKey("display", 10)) {
- NBTTagCompound display = tag.getCompoundTag("display");
- if (display.hasKey("Lore", 9)) {
- NBTTagList list = display.getTagList("Lore", 8);
-
- String first = list.getStringTagAt(0);
- if(first.startsWith(startsInText)) {
- String time = Utils.cleanColour(first.substring(startsInText.length()));
- long eventTime = currentTime + getTimeOffset(time);
-
- long lastsFor = -1;
-
- List<String> desc = new ArrayList<>();
- boolean foundBreak = false;
- for(int index=1; index<list.tagCount(); index++) {
- String line = list.getStringTagAt(index);
- if(foundBreak) {
- desc.add(line);
- } else {
- if(line.startsWith(lastsForText)) {
- String lastsForS = Utils.cleanColour(line.substring(lastsForText.length()));
- lastsFor = getTimeOffset(lastsForS);
- }
- if(Utils.cleanColour(line).trim().length() == 0) {
- foundBreak = true;
- }
- }
- }
- eventMap.computeIfAbsent(eventTime, k->new HashSet<>()).add(new SBEvent(
- getIdForDisplayName(item.getDisplayName()), item.getDisplayName(),
- item, desc, lastsFor));
- }
- }
- }
- }
- }
- }
-
- private static String getIdForDisplayName(String displayName) {
- return Utils.cleanColour(displayName)
- .toLowerCase()
- .replaceAll("[0-9]+th", "")
- .replaceAll("[0-9]+nd", "")
- .replaceAll("[0-9]+rd", "")
- .replaceAll("[0-9]+st", "")
- .replaceAll("[^a-z ]", "")
- .trim()
- .replace(" ", "_");
- }
-
-
- @SubscribeEvent
- public void onGuiScreenMouse(GuiScreenEvent.MouseInputEvent.Pre event) {
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
- int width = scaledResolution.getScaledWidth();
- int height = scaledResolution.getScaledHeight();
- int mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth;
- int mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1;
-
- if(!enabled) {
- if(Mouse.getEventButtonState() && NotEnoughUpdates.INSTANCE.manager.config.showEventTimerInInventory.value &&
- Minecraft.getMinecraft().currentScreen instanceof GuiContainer) {
- xSize = 168;
- ySize = 20;
-
- guiLeft = (width - xSize)/2;
- guiTop = 5;
-
- if(mouseX >= guiLeft && mouseX <= guiLeft+xSize) {
- if(mouseY >= guiTop && mouseY <= guiTop+ySize) {
- ClientCommandHandler.instance.executeCommand(Minecraft.getMinecraft().thePlayer, "/neucalendar");
- }
- }
- }
-
- return;
- }
-
- if(!(Minecraft.getMinecraft().currentScreen instanceof GuiChest)) {
- return;
- }
-
- GuiChest eventGui = (GuiChest) Minecraft.getMinecraft().currentScreen;
- ContainerChest cc = (ContainerChest) eventGui.inventorySlots;
- String containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText();
- if(!containerName.trim().equals("Calendar and Events")) {
- setEnabled(false);
- return;
- }
-
- event.setCanceled(true);
-
- xSize = 168;
- ySize = 170;
- guiLeft = (width - xSize) / 2;
- guiTop = (height - ySize) / 2;
-
- if(Mouse.getEventButtonState()) {
- if(jfFavouriteSelect != null) {
- FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
- int arrowLen = fr.getStringWidth("> ");
- int selectSizeX = 0;
- int selectStringIndex = 0;
- for (String s : jfFavouriteSelect) {
- int sWidth = fr.getStringWidth(s);
- if (selectStringIndex + 1 == jfFavouriteSelectIndex) sWidth += arrowLen;
- if (sWidth > selectSizeX) {
- selectSizeX = sWidth;
- }
- selectStringIndex++;
- }
- selectSizeX += +10;
-
- if(mouseX > jfFavouriteSelectX && mouseX < jfFavouriteSelectX + selectSizeX &&
- mouseY > jfFavouriteSelectY && mouseY < jfFavouriteSelectY + 18 + jfFavouriteSelect.size() * 10) {
- jfFavouriteSelectIndex = Math.max(0, (mouseY - jfFavouriteSelectY - 5)/10);
-
- List<String> eventFavourites = NotEnoughUpdates.INSTANCE.manager.config.eventFavourites.value;
- String id = null;
- if(jfFavouriteSelectIndex == 0) {
- id = "jacob_farming";
- } else if(jfFavouriteSelectIndex-1 < jfFavouriteSelect.size()) {
- id = "jacob_farming:"+jfFavouriteSelect.get(jfFavouriteSelectIndex-1);
- }
- if(id != null) {
- if (eventFavourites.contains(id)) {
- eventFavourites.remove(id);
- } else {
- eventFavourites.add(id);
- }
- try {
- NotEnoughUpdates.INSTANCE.manager.saveConfig();
- } catch (Exception ignored) {
- }
- }
- } else {
- jfFavouriteSelect = null;
- }
- }
- if(mouseY >= guiTop+26 && mouseY <= guiTop+26+141) {
- if(mouseX >= guiLeft+151 && mouseX <= guiLeft+151+14) {
- if(mouseY <= guiTop+26+70) {
- Minecraft.getMinecraft().playerController.windowClick(cc.windowId,
- 50, 2, 3, Minecraft.getMinecraft().thePlayer);
- } else {
- Minecraft.getMinecraft().playerController.windowClick(cc.windowId,
- 45, 2, 3, Minecraft.getMinecraft().thePlayer);
- }
- }
- }
- }
- }
-
- @SubscribeEvent
- public void onGuiScreenKeyboard(GuiScreenEvent.KeyboardInputEvent.Pre event) {
- if(Keyboard.getEventKey() == Keyboard.KEY_ESCAPE) {
- if(jfFavouriteSelect != null) {
- jfFavouriteSelect = null;
- event.setCanceled(true);
- }
- } else {
- if (!enabled) {
- return;
- }
-
- if (!(Minecraft.getMinecraft().currentScreen instanceof GuiChest)) {
- return;
- }
-
- GuiChest eventGui = (GuiChest) Minecraft.getMinecraft().currentScreen;
- ContainerChest cc = (ContainerChest) eventGui.inventorySlots;
- String containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText();
- if (!containerName.trim().equals("Calendar and Events")) {
- setEnabled(false);
- return;
- }
-
- event.setCanceled(true);
- xSize = 168;
- ySize = 170;
-
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
- int width = scaledResolution.getScaledWidth();
- int height = scaledResolution.getScaledHeight();
- int mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth;
- int mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1;
- guiLeft = (width - xSize) / 2;
- guiTop = (height - ySize) / 2;
-
- int keyPressed = Keyboard.getEventKey() == 0 ? Keyboard.getEventCharacter() + 256 : Keyboard.getEventKey();
- if(Keyboard.getEventKeyState()) {
- if(jfFavouriteSelect != null) {
- if(keyPressed == Keyboard.KEY_DOWN) {
- jfFavouriteSelectIndex++;
- jfFavouriteSelectIndex %= jfFavouriteSelect.size()+1;
- } else if(keyPressed == Keyboard.KEY_UP) {
- jfFavouriteSelectIndex--;
- if(jfFavouriteSelectIndex < 0) jfFavouriteSelectIndex = jfFavouriteSelect.size();
- } else if(keyPressed == Keyboard.KEY_RIGHT || keyPressed == Keyboard.KEY_RETURN) {
- List<String> eventFavourites = NotEnoughUpdates.INSTANCE.manager.config.eventFavourites.value;
- String id = null;
- if(jfFavouriteSelectIndex == 0) {
- id = "jacob_farming";
- } else if(jfFavouriteSelectIndex-1 < jfFavouriteSelect.size()) {
- id = "jacob_farming:"+jfFavouriteSelect.get(jfFavouriteSelectIndex-1);
- }
- if(id != null) {
- if (eventFavourites.contains(id)) {
- eventFavourites.remove(id);
- } else {
- eventFavourites.add(id);
- }
- try {
- NotEnoughUpdates.INSTANCE.manager.saveConfig();
- } catch (Exception ignored) {
- }
- }
- } else if(keyPressed == Keyboard.KEY_LEFT ||
- keyPressed == NotEnoughUpdates.INSTANCE.manager.keybindFavourite.getKeyCode()) {
- jfFavouriteSelect = null;
- }
- } else if(keyPressed == NotEnoughUpdates.INSTANCE.manager.keybindFavourite.getKeyCode()) {
- String id = null;
-
- //Daily Events
- int index = 0;
- out:
- for (Map.Entry<Long, Set<SBEvent>> sbEvents : eventMap.entrySet()) {
- for (SBEvent sbEvent : sbEvents.getValue()) {
- int x = guiLeft + 29 + 17 * (index % 3);
- int y = guiTop + 44 + 17 * (index / 3);
-
- if (mouseX >= x && mouseX <= x + 16) {
- if (mouseY >= y && mouseY <= y + 16) {
- id = sbEvent.id;
- }
- }
-
- if (++index >= 21) break out;
- }
- }
-
- //Special Events
- for (int i = 0; i < 21; i++) {
- int itemIndex = 10 + i + (i / 7) * 2;
- ItemStack item = cc.getLowerChestInventory().getStackInSlot(itemIndex);
- if (item == null) continue;
-
- int x = guiLeft + 89 + 17 * (i % 3);
- int y = guiTop + 44 + 17 * (i / 3);
-
- if (mouseX >= x && mouseX <= x + 16) {
- if (mouseY >= y && mouseY <= y + 16) {
- id = getIdForDisplayName(item.getDisplayName());
- }
- }
- }
-
- if (id != null) {
- String[] split = id.split(":");
- if(split.length > 1 && split[0].equals("jacob_farming")) {
- jfFavouriteSelect = new ArrayList<>();
- for(int i=1; i<split.length; i++) {
- jfFavouriteSelect.add(split[i]);
- }
- jfFavouriteSelectIndex = 0;
- jfFavouriteSelectX = mouseX;
- jfFavouriteSelectY = mouseY;
- } else {
- List<String> eventFavourites = NotEnoughUpdates.INSTANCE.manager.config.eventFavourites.value;
- if (eventFavourites.contains(id)) {
- eventFavourites.remove(id);
- } else {
- eventFavourites.add(id);
- }
- try {
- NotEnoughUpdates.INSTANCE.manager.saveConfig();
- } catch (Exception ignored) {
- }
- }
- }
- }
- }
- }
- }
-
- @SubscribeEvent(priority = EventPriority.LOW)
- public void onGuiDraw(RenderGameOverlayEvent.Post event) {
- if(NotEnoughUpdates.INSTANCE.manager.config.eventNotifications.value &&
- event.type == RenderGameOverlayEvent.ElementType.ALL) {
- GlStateManager.pushMatrix();
- GlStateManager.translate(0, 0, 10);
- if(!(Minecraft.getMinecraft().currentScreen instanceof GuiContainer) && NotEnoughUpdates.INSTANCE.isOnSkyblock()) {
- long currentTime = System.currentTimeMillis();
-
- long timeUntilNext = 0;
- SBEvent nextEvent = null;
- long timeUntilFirst = 0;
- SBEvent firstEvent = null;
-
- List<String> eventFavourites = NotEnoughUpdates.INSTANCE.manager.config.eventFavourites.value;
-
- //Daily Events
- out:
- for(Map.Entry<Long, Set<SBEvent>> sbEvents : eventMap.entrySet()) {
- for(SBEvent sbEvent : sbEvents.getValue()) {
- long timeUntilMillis = sbEvents.getKey() - currentTime;
-
- if(timeUntilMillis < -10*SECOND) {
- continue;
- }
-
- if(firstEvent == null) {
- firstEvent = sbEvent;
- timeUntilFirst = timeUntilMillis;
- }
-
- String[] split = sbEvent.id.split(":");
- boolean containsId = false;
- for(int i=1; i<split.length; i++) {
- if(eventFavourites.contains(split[0]+":"+split[i])) {
- containsId = true;
- break;
- }
- }
- if(eventFavourites.isEmpty() || eventFavourites.contains(split[0]) || containsId) {
- nextEvent = sbEvent;
- timeUntilNext = timeUntilMillis;
- break out;
- }
- }
- }
-
- if(nextEvent == null) {
- nextEvent = firstEvent;
- timeUntilNext = timeUntilFirst;
- }
-
- if(nextEvent != null) {
- renderToast(nextEvent, timeUntilNext);
- }
- }
- GlStateManager.translate(0, 0, -10);
- GlStateManager.popMatrix();
- }
- }
-
- public boolean renderToast(SBEvent event, long timeUntil) {
- if(!NotEnoughUpdates.INSTANCE.manager.config.eventNotifications.value) {
- return false;
- }
-
- long currentTime = System.currentTimeMillis();
- if(currentTime - spookyStart < HOUR && NotEnoughUpdates.INSTANCE.manager.config.spookyMorningNotification.value) {
- long delta = (currentTime - SKYBLOCK_START) % (20*MINUTE) - 7*50*SECOND - 10*SECOND;
- if(delta < 500 && delta > -8500) {
- event = new SBEvent("spooky_festival_7am", "Spooky Festival 7am", new ItemStack(Items.bone), null);
- timeUntil = delta;
- }
- }
-
- FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
- int width = scaledResolution.getScaledWidth();
- int height = scaledResolution.getScaledHeight();
-
- int ySize = 32;
- int xSize = 160;
- int guiLeft = (width - xSize)/2;
- int guiTop = 5;
-
- boolean preNotification = false;
- long preNotificationTime = SECOND*NotEnoughUpdates.INSTANCE.manager.config.eventNotificationBeforeSeconds.value.intValue();
-
- if(preNotificationTime > 500 && timeUntil > 500) {
- timeUntil = timeUntil - preNotificationTime;
- preNotification = true;
- }
-
- if(timeUntil < 500 && timeUntil > -8500) {
- if(jingleIndex == -1) {
- if(preNotification) {
- jingleIndex = 1;
- } else {
- jingleIndex = 0;
- }
- }
-
- float offset;
- float factor = 0;
- if(timeUntil > 0) {
- factor = (timeUntil/500f);
- } else if(timeUntil < -8000) {
- factor = -((timeUntil+8000)/500f);
- }
- factor = (float)(1.06f/(1+Math.exp(-7*(factor-0.5f)))-0.03f);
- offset = -(ySize+5)*factor;
- float y = guiTop+offset;
-
- GlStateManager.color(1, 1, 1, 1);
- Minecraft.getMinecraft().getTextureManager().bindTexture(TOAST);
- Utils.drawTexturedRect(guiLeft, y, xSize, ySize, GL11.GL_NEAREST);
-
- GlStateManager.translate(0, y, 0);
- Utils.drawItemStack(event.stack, guiLeft+6, 8);
- GlStateManager.translate(0, -y, 0);
-
- if(preNotification) {
- String starting = EnumChatFormatting.YELLOW+"Event Starting in "+prettyTime(preNotificationTime, true)+"!";
- int startingWidth = fr.getStringWidth(starting);
- fr.drawString(starting, Math.max(guiLeft+23, width/2f-startingWidth/2f), y+7, -1, false);
- } else {
- Utils.drawStringCentered(EnumChatFormatting.YELLOW+"Event Starting Now!", fr, width/2, y+11, false, -1);
- }
-
- int displayWidth = fr.getStringWidth(event.display);
- fr.drawString(event.display, Math.max(guiLeft+23, width/2f-displayWidth/2f), y+17, -1, false);
-
-
- return true;
- }
- return false;
- }
-
- @SubscribeEvent
- public void onGuiScreenDrawTimer(GuiScreenEvent.BackgroundDrawnEvent event) {
- blurBackground();
- if(!drawTimerForeground) {
- drawTimer();
- }
- GlStateManager.color(1, 1, 1, 1);
- GlStateManager.enableBlend();
- }
-
- @SubscribeEvent
- public void onGuiScreenDrawTimer(GuiScreenEvent.DrawScreenEvent.Post event) {
- if(drawTimerForeground) {
- drawTimer();
- }
- }
-
- public void drawTimer() {
- GlStateManager.pushMatrix();
- GlStateManager.translate(0, 0, 10);
- if(Minecraft.getMinecraft().currentScreen instanceof GuiContainer && NotEnoughUpdates.INSTANCE.isOnSkyblock()) {
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
- int width = scaledResolution.getScaledWidth();
- int height = scaledResolution.getScaledHeight();
- int mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth;
- int mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1;
- long currentTime = System.currentTimeMillis();
-
- xSize = 168;
- ySize = 20;
-
- long timeUntilNext = 0;
- SBEvent nextEvent = null;