aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/thatgravyboat/skyblockhud/seasons/SeasonDateHandler.java
blob: ef61b4398fd2844be201876ed5b07343198825bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package com.thatgravyboat.skyblockhud.seasons;

import com.thatgravyboat.skyblockhud.Utils;
import com.thatgravyboat.skyblockhud.api.events.SidebarLineUpdateEvent;
import java.util.regex.Pattern;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

public class SeasonDateHandler {

    private static Season currentSeason = Season.ERROR;
    private static int currentDate = 1;
    private static String currentEvent = "";
    private static String eventTime = "";

    @SubscribeEvent
    public void onSidebarLineUpdate(SidebarLineUpdateEvent event) {
        if (Season.get(SeasonDateHandler.removeDate(event.formattedLine.toLowerCase()).toUpperCase()) != Season.ERROR) {
            SeasonDateHandler.setCurrentDateAndSeason(
                SeasonDateHandler.removeSeason(Utils.removeColor(event.formattedLine.toLowerCase().trim())),
                SeasonDateHandler.removeDate(Utils.removeColor(event.formattedLine.toLowerCase().trim())).toUpperCase()
            );
        }
    }

    public static void setCurrentDateAndSeason(int date, String season) {
        currentDate = date;
        currentSeason = Season.get(season);
    }

    public static void setCurrentEvent(String event, String time) {
        currentEvent = event;
        eventTime = time;
    }

    public static Season getCurrentSeason() {
        return currentSeason;
    }

    public static int getCurrentDate() {
        return currentDate;
    }

    private static String getDataSuffix(int date) {
        if (date > 10 && date < 14) return "th";
        switch (date % 10) {
            case 1:
                return "st";
            case 2:
                return "nd";
            case 3:
                return "rd";
            default:
                return "th";
        }
    }

    public static String getFancySeasonAndDate() {
        return (currentSeason.getDisplayName() + " " + currentDate + getDataSuffix(currentDate));
    }

    public static String getCurrentEvent() {
        return currentEvent;
    }

    public static String getCurrentEventTime() {
        return eventTime;
    }

    public static String removeDate(String seasonDate) {
        return Pattern
            .compile("[^a-zA-Z]")
            .matcher(seasonDate.toLowerCase())
            .replaceAll("")
            .replaceAll("st|nd|rd|th", "")
            .trim();
    }

    public static int removeSeason(String seasonDate) {
        return Integer.parseInt(Pattern.compile("[^0-9]").matcher(seasonDate.toLowerCase()).replaceAll("").trim());
    }
}