Added RealTime Day

This commit is contained in:
hibo98
2014-10-26 16:09:11 +01:00
parent fa79378935
commit b2b701a4f9

View File

@@ -14,6 +14,9 @@ import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -89,6 +92,7 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
this.getConfig().addDefault("disable-mushroom-spread", false);
this.getConfig().addDefault("on-join-to-spawn", false);
this.getConfig().addDefault("golf", false);
this.getConfig().addDefault("realtime-day", false);
this.getConfig().options().copyDefaults(true);
this.getConfig().options().header("Config File of the Anura Core-Plugin:");
sql.queryUpdate("DELETE FROM coreServers WHERE name = '"+this.getConfig().getString("server-name")+"'");
@@ -231,6 +235,22 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
}
}, 600, 600);
if (this.getConfig().getBoolean("realtime-day")) {
for (World world : Bukkit.getWorlds()) {
world.setGameRuleValue("doDaylightCycle", "false");
world.setTime(0);
}
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
Integer[] time = getSystemTime();
int TTime = convertTime(time[0], time[1]);
setWorldTime(TTime);
System.out.println("World Time synchronized");
}
}, 0, (20 * 60 * 10));
}
}
else
{
@@ -1222,4 +1242,36 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
public Features getFeatures() {
return features;
}
private Integer[] getSystemTime() {
Date date = new Date();
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
Integer[] time = new Integer[]{hour, minute};
return time;
}
private void setWorldTime(Integer ticks) {
for (World world : Bukkit.getWorlds()) {
world.setGameRuleValue("doDaylightCycle", "false");
world.setTime(ticks);
}
}
private int convertTime(Integer hour, Integer minute) {
int TMinute = (int) (83 * (round(minute, 5)) / 5);
int THour;
if (hour >= 6) {
THour = (hour - 6) * 1000;
} else {
THour = ((hour + 24) - 6) * 1000;
}
return THour + TMinute;
}
private static double round(double num, int multipleOf) {
return Math.floor((num + (double) multipleOf / 2) / multipleOf) * multipleOf;
}
}