Untitled
unknown
plain_text
10 months ago
4.0 kB
8
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