1. sn
This commit is contained in:
parent
66103a26e4
commit
afe4297640
@ -1,12 +1,17 @@
|
||||
package net.t2code.automatedMessages.config;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
|
||||
public enum Config {
|
||||
|
||||
updateCheckOnJoin("plugin.updateCheck.onJoin", true, ConfigParam.BOOLEAN),
|
||||
updateCheckSeePreReleaseUpdates("plugin.updateCheck.seePreReleaseUpdates", true, ConfigParam.BOOLEAN),
|
||||
updateCheckTimeInterval("plugin.updateCheck.timeInterval", 60, ConfigParam.INTEGER),
|
||||
|
||||
prefix("plugin.prefix", "", ConfigParam.STRING),
|
||||
prefix("plugin.prefix", "<dark_gray>[<dark_red>T2C</dark_red>-<color:#5cff5c>Automated</color><color:#69d2ff>Messages</color>]</dark_gray>", ConfigParam.STRING),
|
||||
sendConsole("plugin.broadcastInConsole", true, ConfigParam.BOOLEAN),
|
||||
|
||||
timeFormat("plugin.timeFormat", "HH:mm:ss yyyy/MM/dd", ConfigParam.STRING),
|
||||
|
||||
msgReloadStart("plugin.messages.reloadStart", "Reload start", ConfigParam.STRING),
|
||||
msgReloadEnd("plugin.messages.reloadEnd", "Reload end", ConfigParam.STRING),
|
||||
@ -14,12 +19,19 @@ public enum Config {
|
||||
message("messages",
|
||||
"messages.KEY.enable", false,
|
||||
"messages.KEY.message", "",
|
||||
"messages.KEY.sound.enable", true,
|
||||
"messages.KEY.sound.sound",FileBuild.sound(),
|
||||
"messages.KEY.intervalInMin", 0,
|
||||
"messages.KEY.useCronJob.enable", false,
|
||||
"messages.KEY.useCronJob.value", "",
|
||||
"messages.KEY.exactTime.enable", false,
|
||||
"messages.KEY.exactTime.timeMinute", "*/5",
|
||||
"messages.KEY.exactTime.timeHour", "*",
|
||||
"messages.KEY.exactTime.timeDayOfMonth", "*",
|
||||
"messages.KEY.exactTime.timeMonth", "*",
|
||||
"messages.KEY.exactTime.timeDayOfWeek", "*",
|
||||
ConfigParam.MESSAGE
|
||||
);
|
||||
|
||||
|
||||
public String path;
|
||||
public String valueString;
|
||||
public Boolean valueBoolean;
|
||||
@ -31,12 +43,33 @@ public enum Config {
|
||||
|
||||
public String msgMsgPath;
|
||||
public String msgMsg;
|
||||
|
||||
public String soundEnablePath;
|
||||
public Boolean soundEnable;
|
||||
|
||||
public String soundPath;
|
||||
public Sound sound;
|
||||
|
||||
public String msgIntervalPath;
|
||||
public Integer msgInterval;
|
||||
public String msgCronJobPath;
|
||||
public Boolean msgCronJob;
|
||||
public String msgCronJobStringPath;
|
||||
public String msgCronJobString;
|
||||
|
||||
public String exactTimePath;
|
||||
public Boolean exactTime;
|
||||
|
||||
public String timeMinutePath;
|
||||
public String timeMinute;
|
||||
|
||||
public String timeHourPath;
|
||||
public String timeHour;
|
||||
|
||||
public String timeDayOfMonthPath;
|
||||
public String timeDayOfMonth;
|
||||
|
||||
public String timeMonthPath;
|
||||
public String timeMonth;
|
||||
|
||||
public String timeDayOfWeekPath;
|
||||
public String timeDayOfWeek;
|
||||
|
||||
public ConfigParam configParam;
|
||||
|
||||
@ -61,21 +94,41 @@ public enum Config {
|
||||
Config(String msgPath,
|
||||
String msgEnablePath, Boolean msgEnable,
|
||||
String msgMsgPath, String msgMsg,
|
||||
String soundEnablePath, Boolean soundEnable,
|
||||
String soundPath , Sound sound,
|
||||
String msgIntervalPath, Integer msgInterval,
|
||||
String msgCronJobPath, Boolean msgCronJob,
|
||||
String msgCronJobStringPath, String msgCronJobString,
|
||||
String exactTimePath, Boolean exactTime, String timeMinutePath, String timeMinute,
|
||||
String timeHourPath, String timeHour,
|
||||
String timeDayOfMonthPath, String timeDayOfMonth,
|
||||
String timeMonthPath, String timeMonth,
|
||||
String timeDayOfWeekPath, String timeDayOfWeek,
|
||||
ConfigParam configParam) {
|
||||
this.msgPath = msgPath;
|
||||
this.msgEnablePath = msgEnablePath;
|
||||
this.msgEnable = msgEnable;
|
||||
this.msgMsgPath = msgMsgPath;
|
||||
this.msgMsg = msgMsg;
|
||||
|
||||
this.soundEnablePath = soundEnablePath;
|
||||
this.soundEnable=soundEnable;
|
||||
this.soundPath=soundPath;
|
||||
this.sound=sound;
|
||||
|
||||
this.msgIntervalPath = msgIntervalPath;
|
||||
this.msgInterval = msgInterval;
|
||||
this.msgCronJobPath = msgCronJobPath;
|
||||
this.msgCronJob = msgCronJob;
|
||||
this.msgCronJobStringPath = msgCronJobStringPath;
|
||||
this.msgCronJobString = msgCronJobString;
|
||||
this.exactTimePath = exactTimePath;
|
||||
this.exactTime = exactTime;
|
||||
this.timeMinutePath = timeMinutePath;
|
||||
this.timeMinute = timeMinute;
|
||||
this.timeHourPath = timeHourPath;
|
||||
this.timeHour = timeHour;
|
||||
|
||||
this.timeDayOfMonthPath = timeDayOfMonthPath;
|
||||
this.timeDayOfMonth = timeDayOfMonth;
|
||||
this.timeMonthPath = timeMonthPath;
|
||||
this.timeMonth = timeMonth;
|
||||
this.timeDayOfWeekPath = timeDayOfWeekPath;
|
||||
this.timeDayOfWeek = timeDayOfWeek;
|
||||
this.configParam = configParam;
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import net.t2code.automatedMessages.objects.Message;
|
||||
import net.t2code.automatedMessages.system.Main;
|
||||
import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
|
||||
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
||||
import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
@ -50,21 +52,33 @@ public class FileBuild {
|
||||
if (!yamlConfiguration.contains(value.msgPath)) {
|
||||
setExample("exampleDiscord", true,
|
||||
"[prefix] <aqua>If you need help, just contact us on our <color:#ffcb2e><hover:show_text:'<red>dc.t2code.net</red>'><click:open_url:'https://discord.t2code.net'>T2Code Support Discord server</click></hover></color>.</aqua>",
|
||||
20, false, "0 0/5 * ? * * *", yamlConfiguration);
|
||||
true, sound(), 20, false, "*", "*", "*", "*", "*", yamlConfiguration);
|
||||
setExample("exampleTime", true,
|
||||
"[prefix] <aqua>Es ist jetzt <yellow>[time]</yellow></aqua>",
|
||||
0, true, "0 0/20 * ? * * *", yamlConfiguration);
|
||||
true, sound(),0, true, "0/15/30/45", "*", "*", "*", "*", yamlConfiguration);
|
||||
}
|
||||
for (String key : yamlConfiguration.getConfigurationSection(value.msgPath).getKeys(false)) {
|
||||
Boolean enable = yamlConfiguration.getBoolean(value.msgEnablePath.replace("KEY", key));
|
||||
String message = yamlConfiguration.getString(value.msgMsgPath.replace("KEY", key));
|
||||
Boolean soundEnable = yamlConfiguration.getBoolean(value.soundEnablePath.replace("KEY", key));
|
||||
|
||||
Sound sound;
|
||||
try {
|
||||
sound = Sound.valueOf(yamlConfiguration.getString(value.soundPath.replace("KEY", key)));
|
||||
} catch (Exception e) {
|
||||
sound = sound();
|
||||
}
|
||||
|
||||
|
||||
Integer interval = yamlConfiguration.getInt(value.msgIntervalPath.replace("KEY", key));
|
||||
Boolean cronJob = yamlConfiguration.getBoolean(value.msgCronJobPath.replace("KEY", key));
|
||||
String cronJobString = yamlConfiguration.getString(value.msgCronJobStringPath.replace("KEY", key));
|
||||
Message msg = new Message(key, enable, message, interval, cronJob, cronJobString);
|
||||
T2Csend.debugmsg(Main.getPlugin(),key);
|
||||
T2Csend.debugmsg(Main.getPlugin(), String.valueOf(cronJob));
|
||||
T2Csend.debugmsg(Main.getPlugin(),cronJobString);
|
||||
|
||||
Boolean exactTime = yamlConfiguration.getBoolean(value.exactTimePath.replace("KEY", key));
|
||||
String timeMinute = yamlConfiguration.getString(value.timeMinutePath.replace("KEY", key));
|
||||
String timeHour = yamlConfiguration.getString(value.timeHourPath.replace("KEY", key));
|
||||
String timeDayOfMonth = yamlConfiguration.getString(value.timeDayOfMonthPath.replace("KEY", key));
|
||||
String timeMonth = yamlConfiguration.getString(value.timeMonthPath.replace("KEY", key));
|
||||
String timeDayOfWeek = yamlConfiguration.getString(value.timeDayOfWeekPath.replace("KEY", key));
|
||||
Message msg = new Message(key, enable, message, soundEnable, sound, interval, exactTime, timeMinute, timeHour, timeDayOfMonth, timeMonth, timeDayOfWeek);
|
||||
messageHashMap.put(key, msg);
|
||||
}
|
||||
break;
|
||||
@ -77,11 +91,26 @@ public class FileBuild {
|
||||
}
|
||||
}
|
||||
|
||||
private static void setExample(String key, Boolean enable, String msg, Integer interval, Boolean useCronJobEnable, String useCronJobValue,YamlConfiguration yamlConfiguration) {
|
||||
static Sound sound() {
|
||||
if (T2CmcVersion.isMc1_8()) {
|
||||
return Sound.valueOf("NOTE_PIANO");
|
||||
} else if (T2CmcVersion.isMc1_9() || T2CmcVersion.isMc1_10() || T2CmcVersion.isMc1_11() || T2CmcVersion.isMc1_12()) {
|
||||
return Sound.valueOf("BLOCK_NOTE_HARP");
|
||||
} else return Sound.BLOCK_NOTE_BLOCK_HARP;
|
||||
}
|
||||
|
||||
private static void setExample(String key, Boolean enable, String msg,Boolean soundEnable,Sound sound, Integer interval, Boolean exactTime, String timeMinute, String timeHour, String timeDayOfMonth,
|
||||
String timeMonth, String timeDayOfWeek, YamlConfiguration yamlConfiguration) {
|
||||
yamlConfiguration.set("messages." + key + ".enable", enable);
|
||||
yamlConfiguration.set("messages." + key + ".message", msg);
|
||||
yamlConfiguration.set("messages." + key + ".sound.enable", soundEnable);
|
||||
yamlConfiguration.set("messages." + key + ".sound.sound", sound.toString());
|
||||
yamlConfiguration.set("messages." + key + ".intervalInMin", interval);
|
||||
yamlConfiguration.set("messages." + key + ".useCronJob.enable", useCronJobEnable);
|
||||
yamlConfiguration.set("messages." + key + ".useCronJob.value", useCronJobValue);
|
||||
yamlConfiguration.set("messages." + key + ".exactTime.enable", exactTime);
|
||||
yamlConfiguration.set("messages." + key + ".exactTime.timeMinute", timeMinute);
|
||||
yamlConfiguration.set("messages." + key + ".exactTime.timeHour", timeHour);
|
||||
yamlConfiguration.set("messages." + key + ".exactTime.timeDayOfMonth", timeDayOfMonth);
|
||||
yamlConfiguration.set("messages." + key + ".exactTime.timeMonth", timeMonth);
|
||||
yamlConfiguration.set("messages." + key + ".exactTime.timeDayOfWeek", timeDayOfWeek);
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,85 @@
|
||||
package net.t2code.automatedMessages.messages;
|
||||
|
||||
import net.t2code.automatedMessages.objects.Message;
|
||||
import net.t2code.automatedMessages.system.Main;
|
||||
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class CronJob {
|
||||
public Message message;
|
||||
|
||||
private Message message;
|
||||
private Boolean shutdown = false;
|
||||
|
||||
public CronJob(Message message) {
|
||||
this.message = message;
|
||||
String minuteString = message.timeMinute;
|
||||
String hourString = message.timeHour;
|
||||
|
||||
if (minuteString.contains("*/")) {
|
||||
timer(Integer.valueOf(minuteString.replace("*/", "")), 60);
|
||||
return;
|
||||
}
|
||||
if (hourString.contains("*/")) {
|
||||
timer(Integer.valueOf(hourString.replace("*/", "")), 60 * 60);
|
||||
return;
|
||||
}
|
||||
job();
|
||||
}
|
||||
|
||||
public void execute() {
|
||||
SendMessage.send(message.message);
|
||||
private void job() {
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(Main.getPlugin(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (shutdown) return;
|
||||
executeJob();
|
||||
}
|
||||
}, 0, 60 * 20L);
|
||||
}
|
||||
|
||||
private void executeJob() {
|
||||
LocalDateTime dateTime = LocalDateTime.now();
|
||||
|
||||
if (check(message.timeMinute, dateTime.getMinute(), "minute")) return;
|
||||
if (check(message.timeHour, dateTime.getHour(), "h")) return;
|
||||
if (check(message.timeDayOfMonth, dateTime.getDayOfMonth(), "dom")) return;
|
||||
if (check(message.timeMonth, dateTime.getMonth().getValue(), "mon")) return;
|
||||
if (check(message.timeDayOfWeek, dateTime.getDayOfWeek().getValue(), "dow")) return;
|
||||
|
||||
SendMessage.send(message);
|
||||
}
|
||||
|
||||
private boolean check(String check, Integer value, String v) {
|
||||
if (check.equals("*")) return false;
|
||||
if (check.contains("/")) {
|
||||
String[] strings = check.split("/");
|
||||
for (String string : strings) {
|
||||
if (string.equals("*")) return false;
|
||||
if (Integer.parseInt(string) == value) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
if (Integer.parseInt(check) == value) return false;
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void timer(Integer period, Integer value) {
|
||||
Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getPlugin(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (shutdown) return;
|
||||
SendMessage.send(message);
|
||||
}
|
||||
}, 0, 20L * value * period);
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
this.shutdown = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,15 +9,15 @@ import java.util.Map;
|
||||
|
||||
public class Management {
|
||||
private static final List<Timer> timerJobList = new ArrayList<>();
|
||||
private static final List<CronJob> cronJobs = new ArrayList<>();
|
||||
|
||||
public static void start() {
|
||||
for (Map.Entry<String, Message> value : FileBuild.getMessageHashMap().entrySet()) {
|
||||
Message message = value.getValue();
|
||||
if (!message.enable) continue;
|
||||
if (message.cronJob) {
|
||||
startCronJob(message);
|
||||
|
||||
|
||||
if (message.exactTime) {
|
||||
CronJob cronJob = new CronJob(message);
|
||||
cronJobs.add(cronJob);
|
||||
} else {
|
||||
Timer job = new Timer(message);
|
||||
timerJobList.add(job);
|
||||
@ -25,37 +25,12 @@ public class Management {
|
||||
}
|
||||
}
|
||||
|
||||
public static void startCronJob(Message message) {
|
||||
try {
|
||||
CronJob cronJob = new CronJob(message);
|
||||
JobDetail job = JobBuilder.newJob(cronJob.getClass())
|
||||
.withIdentity(message.key, message.key).build();
|
||||
Trigger trigger = TriggerBuilder.newTrigger()
|
||||
.withIdentity(message.key, message.key)
|
||||
.withSchedule(CronScheduleBuilder.cronSchedule(message.cronJobString))
|
||||
//.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
|
||||
.build();
|
||||
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
|
||||
scheduler.start();
|
||||
scheduler.scheduleJob(job, trigger);
|
||||
jobList.add(scheduler);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void end() {
|
||||
for (Timer job : timerJobList) {
|
||||
job.disable = true;
|
||||
}
|
||||
for (Scheduler scheduler : jobList) {
|
||||
try {
|
||||
scheduler.shutdown();
|
||||
} catch (SchedulerException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
for (CronJob cronJob : cronJobs) {
|
||||
cronJob.shutdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,21 @@
|
||||
package net.t2code.automatedMessages.messages;
|
||||
|
||||
import net.t2code.automatedMessages.system.Main;
|
||||
import net.t2code.automatedMessages.config.Config;
|
||||
import net.t2code.automatedMessages.objects.Message;
|
||||
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class SendMessage {
|
||||
public static void send(String msg){
|
||||
T2Csend.debugmsg(Main.getPlugin(),msg);
|
||||
public static void send(Message message) {
|
||||
String timeStamp = new SimpleDateFormat(Config.timeFormat.valueString).format(Calendar.getInstance().getTime());
|
||||
if (Config.sendConsole.valueBoolean) T2Csend.console(message.message.replace("[time]", timeStamp).replace("[prefix]",Config.prefix.valueString));
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
T2Csend.player(player, msg);
|
||||
T2Csend.player(player, message.message.replace("[time]", timeStamp).replace("[prefix]",Config.prefix.valueString));
|
||||
player.playSound(player.getLocation(), message.sound, 3, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,14 @@
|
||||
package net.t2code.automatedMessages.messages;
|
||||
|
||||
import net.t2code.automatedMessages.config.Config;
|
||||
import net.t2code.automatedMessages.messages.SendMessage;
|
||||
import net.t2code.automatedMessages.objects.Message;
|
||||
import net.t2code.automatedMessages.system.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class Timer {
|
||||
|
||||
public Timer(Message message) {
|
||||
@ -12,9 +16,10 @@ public class Timer {
|
||||
@Override
|
||||
public void run() {
|
||||
if (disable) return;
|
||||
SendMessage.send(message.message);
|
||||
SendMessage.send(message);
|
||||
}
|
||||
}, 0, 20L * 60 * message.interval);
|
||||
}
|
||||
|
||||
public Boolean disable = false;
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package net.t2code.automatedMessages.objects;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
|
||||
import javax.sound.midi.Soundbank;
|
||||
import java.util.List;
|
||||
|
||||
public class Message {
|
||||
@ -7,21 +10,42 @@ public class Message {
|
||||
public String key;
|
||||
public Boolean enable;
|
||||
public String message;
|
||||
|
||||
public Boolean soundEnable;
|
||||
public Sound sound;
|
||||
public Integer interval;
|
||||
public Boolean cronJob;
|
||||
public String cronJobString;
|
||||
public Boolean exactTime;
|
||||
public String timeMinute;
|
||||
public String timeHour;
|
||||
public String timeDayOfMonth;
|
||||
public String timeMonth;
|
||||
public String timeDayOfWeek;
|
||||
|
||||
public Message(String key,
|
||||
Boolean enable,
|
||||
String message,
|
||||
Boolean soundEnable,
|
||||
Sound sound,
|
||||
Integer interval,
|
||||
Boolean cronJob,
|
||||
String cronJobString) {
|
||||
|
||||
Boolean exactTime,
|
||||
String timeMinute,
|
||||
String timeHour,
|
||||
String timeDayOfMonth,
|
||||
String timeMonth,
|
||||
String timeDayOfWeek) {
|
||||
this.key = key;
|
||||
this.enable = enable;
|
||||
this.message = message;
|
||||
this.soundEnable = soundEnable;
|
||||
this.sound=sound;
|
||||
this.interval = interval;
|
||||
this.cronJob = cronJob;
|
||||
this.cronJobString=cronJobString;
|
||||
this.exactTime = exactTime;
|
||||
this.timeMinute = timeMinute;
|
||||
this.timeHour = timeHour;
|
||||
this.timeDayOfMonth = timeDayOfMonth;
|
||||
this.timeMonth = timeMonth;
|
||||
this.timeDayOfWeek = timeDayOfWeek;
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user