aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/thatgravyboat/skyblockhud/seasons/SeasonDateHandler.java
blob: 06b70098e872f43b8c0d0b5933acce9fd614f805 (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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()
    );
  }
}