Periods parser

This commit is contained in:
Ilya 2022-02-10 20:52:54 +03:00
parent 358aa4e2dc
commit 38e9c458e9
2 changed files with 85 additions and 1 deletions

View File

@ -6,7 +6,10 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.*;
public final class ExtendedPistons extends JavaPlugin {
@ -14,6 +17,9 @@ public final class ExtendedPistons extends JavaPlugin {
public FileConfiguration conf;
public Permission permsService = null;
public SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
public SimpleDateFormat dayOfWeek = new SimpleDateFormat("EEE",Locale.ENGLISH);
public HashMap<String,ArrayList<Period>> weekPeriods;
@Override
public void onEnable() {
@ -26,14 +32,62 @@ public final class ExtendedPistons extends JavaPlugin {
put("vip", 12);
put("premium", 20);
}});
if(!conf.isSet("enabled-times.Mon"))
conf.set("enabled-times.Mon",new ArrayList<String>() {{add("14:00-18:00");}});
if(!conf.isSet("enabled-times.Tue"))
conf.set("enabled-times.Tue",new ArrayList<String>() {{add("14:00-18:00");}});
if(!conf.isSet("enabled-times.Wed"))
conf.set("enabled-times.Wed",new ArrayList<String>() {{add("14:00-18:00");}});
if(!conf.isSet("enabled-times.Thu"))
conf.set("enabled-times.Thu",new ArrayList<String>() {{add("14:00-18:00");}});
if(!conf.isSet("enabled-times.Fri"))
conf.set("enabled-times.Fri",new ArrayList<String>() {{add("14:00-18:00");}});
if(!conf.isSet("enabled-times.Sat"))
conf.set("enabled-times.Sat",new ArrayList<String>() {{add("14:00-18:00");}});
if(!conf.isSet("enabled-times.Sun"))
conf.set("enabled-times.Sun",new ArrayList<String>() {{add("14:00-18:00");}});
saveConfig();
weekPeriods = new HashMap<>();
parsePeriods("Mon");
parsePeriods("Tue");
parsePeriods("Wed");
parsePeriods("Thu");
parsePeriods("Fri");
parsePeriods("Sat");
parsePeriods("Sun");
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
permsService = rsp.getProvider();
Bukkit.getPluginManager().registerEvents(new WorldListener(), this);
}
public void parsePeriods(String dow) {
List<String> times = conf.getStringList("enabled-times."+dow);
ArrayList<Period> periods = new ArrayList<>();
for (String time : times) {
try {
String[] t = time.split("-");
periods.add(new Period(sdf.parse(t[0]), sdf.parse(t[1])));
} catch (ParseException e) {
getLogger().warning("Unable to parse time period :"+time);
}
}
weekPeriods.put(dow,periods);
}
public boolean isAllowedTime() {
String dow = dayOfWeek.format(Calendar.getInstance(Locale.ENGLISH).getTime());
ArrayList<Period> periods = weekPeriods.get(dow);
Instant now = Instant.now();
for (Period period : periods) {
if(period.isBehind(now)) return true;
}
return false;
}
@Override
public void onDisable() {

View File

@ -0,0 +1,30 @@
package ru.redguy.extendedpistons;
import java.time.Instant;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Period {
private final Instant from;
private final Instant to;
public Period(Date from, Date to) {
this.from = nowtifyDate(from);
this.to = nowtifyDate(to);
}
public boolean isBehind(Instant date) {
return from.isBefore(date)&&to.isAfter(date);
}
public Instant nowtifyDate(Date ins) {
Calendar now = GregorianCalendar.getInstance();
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(ins);
cal.set(Calendar.YEAR, now.get(Calendar.YEAR));
cal.set(Calendar.MONTH, now.get(Calendar.MONTH));
cal.set(Calendar.DAY_OF_MONTH, now.get(Calendar.DAY_OF_MONTH));
return cal.getTime().toInstant();
}
}