Untitled
unknown
plain_text
2 months ago
4.0 kB
5
Indexable
package com.arknesia.timesync; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; public class TimeSyncPlaceholder extends PlaceholderExpansion { private final Plugin plugin; private final TimeManager timeManager; public TimeSyncPlaceholder(Plugin plugin, TimeManager timeManager) { this.plugin = plugin; this.timeManager = timeManager; } @Override public String getIdentifier() { return "timesync"; } @Override public String getAuthor() { return "Lexivale"; } @Override public String getVersion() { return "0.2.0"; } @Override public boolean persist() { return true; } @Override public String onPlaceholderRequest(Player player, String identifier) { if (timeManager == null) return "N/A"; long ticks = timeManager.getCurrentTicks(); Calendar calendar = timeManager.getCalendar(); switch (identifier.toLowerCase()) { case "time_24h": return get24HourTime(ticks); case "time_12h": return get12HourTime(ticks); case "time_ampm": return getAMPM(ticks); case "date": return String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)); case "date_ordinal": return getOrdinalNumber(calendar.get(Calendar.DAY_OF_MONTH)); case "day_of_year": return String.valueOf(calendar.get(Calendar.DAY_OF_YEAR)); case "month": return String.valueOf(calendar.get(Calendar.MONTH) + 1); case "season": return getSeason(calendar.get(Calendar.MONTH) + 1); case "year": return String.valueOf(calendar.get(Calendar.YEAR)); case "dayparts": return getDayPartSymbol(ticks); default: return null; } } private String get24HourTime(long ticks) { int hours = (int) ((ticks / 1000) % 24); int minutes = (int) ((ticks % 1000) * 60 / 1000); return String.format("%02d:%02d", hours, minutes); } private String get12HourTime(long ticks) { int hours = (int) ((ticks / 1000) % 24); int minutes = (int) ((ticks % 1000) * 60 / 1000); String period = (hours >= 12) ? "PM" : "AM"; if (hours > 12) hours -= 12; if (hours == 0) hours = 12; return String.format("%02d:%02d %s", hours, minutes, period); } private String getAMPM(long ticks) { int hours = (int) ((ticks / 1000) % 24); return (hours >= 12) ? "PM" : "AM"; } private String getOrdinalNumber(int day) { if (day >= 11 && day <= 13) return day + "th"; switch (day % 10) { case 1: return day + "st"; case 2: return day + "nd"; case 3: return day + "rd"; default: return day + "th"; } } private String getSeason(int month) { switch (month) { case 1: return "Mid Winter"; case 2: return "Late Winter"; case 3: return "Early Spring"; case 4: return "Mid Spring"; case 5: return "Late Spring"; case 6: return "Early Summer"; case 7: return "Mid Summer"; case 8: return "Late Summer"; case 9: return "Early Autumn"; case 10: return "Mid Autumn"; case 11: return "Late Autumn"; case 12: return "Early Winter"; default: return "Unknown"; } } private String getDayPartSymbol(long ticks) { if (ticks < 1000) return "&6☀"; if (ticks < 12000) return "&e☀"; if (ticks < 13000) return "&7☀"; return "&8☀"; } }
Editor is loading...
Leave a Comment