Files
EnderDragon/src/main/java/xanadu/enderdragon/manager/TaskManager.java
T
2023-02-10 19:58:06 +08:00

94 lines
3.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package xanadu.enderdragon.manager;
import xanadu.enderdragon.config.Config;
import xanadu.enderdragon.config.Lang;
import xanadu.enderdragon.task.Task;
import xanadu.enderdragon.task.TaskType;
import xanadu.enderdragon.task.types.*;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Date;
import static xanadu.enderdragon.EnderDragon.*;
import static xanadu.enderdragon.config.Lang.error;
import static xanadu.enderdragon.config.Lang.plugin_file_save_error;
public class TaskManager {
public static String path = "auto_respawn.next_respawn_time";
public static Task task = null;
public static Task parse(String string){
String[] str = string.split(":",2);
TaskType taskType = TaskType.getByName(str[0]);
switch (taskType){
case minute : {
return new Minute(TaskType.minute,str[1]);
}
case hour : {
return new Hour(TaskType.hour,str[1]);
}
case day : {
return new Day(TaskType.day,str[1]);
}
case week : {
return new Week(TaskType.week,str[1]);
}
case month : {
return new Month(TaskType.month,str[1]);
}
case year : {
return new Year(TaskType.year,str[1]);
}
default : {
return null;
}
}
}
public static void reload(){
task = parse(Config.auto_respawn_respawn_time);
}
public static LocalTime getRoundTime(String str){
try {
return LocalTime.parse(str, DateTimeFormatter.ofPattern("HH:mm"));
}catch (DateTimeParseException e){
Lang.error("\"respawn_time\" in config.yml error!The format of time should be HH:mm.");
}
return null;
}
public static String getRoundTimeStr(LocalDateTime time){
return time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
}
public static LocalDateTime getLocalDateTime(String str){
if(isValidTime(str)) return LocalDateTime.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
return null;
}
public static boolean isValidTime(String str){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try{
df.parse(str);
} catch (ParseException e) {
Lang.error("\"next_respawn_time\" in data.yml error!The format of time should be HH:mm.");
return false;
}
return true;
}
public static void saveFile(LocalDateTime nextTime){
data.set(TaskManager.path,getRoundTimeStr(nextTime));
try{
data.save(dataF);
}catch (IOException ex){
error(plugin_file_save_error.replaceAll("\\{file_name}",dataF.getName()));
}
}
public static String getCurrentTimeWithSpecialFormat(){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HHmmss");
return df.format(new Date());
}
}