Skip to content

Commit e7ace11

Browse files
author
MiraiSawatari
committed
First
0 parents  commit e7ace11

File tree

8 files changed

+153
-0
lines changed

8 files changed

+153
-0
lines changed

src/main/java/META-INF/MANIFEST.MF

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Manifest-Version: 1.0
2+
Main-Class: RealTimeWorld
3+

src/main/java/config.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#IgnoreWorlds: World1,World2,World3...
2+
IgnoreWorlds:
3+
#Interval 何Tickに一回同期するかどうか
4+
Interval: 60
5+
TimeZone: "Asia/Tokyo"
6+
7+
TimeOnTab: true
8+
msg: "§a%year%§7/§a%month%§7/§a%day% §a%hour%§7:§a%min%"
9+

src/main/java/plugin.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
name: RealTimeWorld
2+
version: 1.0
3+
main: remi.realtimeworld.RealTimeWorld
4+
api-version: 1.13
5+
description: Sync Worldtime To Japantime
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package remi.realtimeworld;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.configuration.file.FileConfiguration;
5+
import org.bukkit.entity.Player;
6+
import org.bukkit.plugin.java.JavaPlugin;
7+
8+
public final class RealTimeWorld extends JavaPlugin {
9+
public static FileConfiguration config;
10+
public static RealTimeWorld instance;
11+
private SyncTimeTask SyncTimeTask;
12+
@Override
13+
public void onEnable() {
14+
saveDefaultConfig();
15+
config = this.getConfig();
16+
instance = this;
17+
startAsyncTask();
18+
19+
}
20+
protected void syncTime() {
21+
timeSetter setter = new timeSetter();
22+
timeGetter getter = new timeGetter();
23+
24+
String tzn = config.getString("TimeZone","Asia/Tokyo");
25+
int time = getter.getMinecraftTimeFromTime(tzn);
26+
setter.set(time);
27+
28+
}
29+
30+
private void startAsyncTask() {
31+
if ( SyncTimeTask != null ) {
32+
SyncTimeTask.cancel();
33+
SyncTimeTask = null;
34+
}
35+
int it = config.getInt("Interval",60);
36+
int it2 = config.getInt("TabInterval",20);
37+
SyncTimeTask = new SyncTimeTask();
38+
SyncTimeTask.runTaskTimerAsynchronously(this, 0, it);
39+
}
40+
41+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package remi.realtimeworld;
2+
3+
import org.bukkit.scheduler.BukkitRunnable;
4+
5+
6+
public class SyncTimeTask extends BukkitRunnable {
7+
8+
9+
@Override
10+
public void run() {
11+
12+
13+
new BukkitRunnable() {
14+
public void run() {
15+
RealTimeWorld.instance.syncTime();
16+
}
17+
}.runTask(RealTimeWorld.instance);
18+
}
19+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package remi.realtimeworld;
2+
3+
import net.minecraft.server.v1_15_R1.ChatComponentText;
4+
import net.minecraft.server.v1_15_R1.PacketPlayOutPlayerListHeaderFooter;
5+
import org.bukkit.Bukkit;
6+
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.scheduler.BukkitRunnable;
9+
10+
import java.lang.reflect.Field;
11+
import java.util.Calendar;
12+
import java.util.TimeZone;
13+
14+
public class TabTime {
15+
16+
public static void set() {
17+
18+
String tz = RealTimeWorld.config.getString("TimeZone","Asia/Tokyo");
19+
Calendar cal = Calendar.getInstance();
20+
TimeZone tzn = TimeZone.getTimeZone(tz);
21+
cal.setTimeZone(tzn);
22+
int year = cal.get(Calendar.YEAR);
23+
int month = cal.get(Calendar.MONTH);
24+
int day = cal.get(Calendar.DAY_OF_MONTH);
25+
int hour = cal.get(Calendar.HOUR_OF_DAY);
26+
int minute = cal.get(Calendar.MINUTE);
27+
String msg = RealTimeWorld.config.getString("msg","§a%year%§7/§a%month%§7/§a%day% §a%hour%§7:§a%min%");
28+
for (Player player : Bukkit.getOnlinePlayers()) {
29+
player.setPlayerListHeaderFooter("\n","\n"+msg.replace("%hour%",Integer.toString(hour)).replace("%min%",String.format("%02d", minute)).replace("%day%",Integer.toString(day)).replace("%month%",Integer.toString(month+1)).replace("%year%",Integer.toString(year))+"\n");
30+
}
31+
32+
33+
}
34+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package remi.realtimeworld;
2+
3+
import java.util.Calendar;
4+
import java.util.TimeZone;
5+
6+
public class timeGetter {
7+
public static int getMinecraftTimeFromTime(String tz) {
8+
Calendar cal = Calendar.getInstance();
9+
TimeZone tzn = TimeZone.getTimeZone(tz);
10+
cal.setTimeZone(tzn);
11+
int hour = cal.get(Calendar.HOUR_OF_DAY);
12+
int minute = cal.get(Calendar.MINUTE);
13+
int second = cal.get(Calendar.SECOND);
14+
int milli = cal.get(Calendar.MILLISECOND);
15+
int current = ((hour * 60 + minute) * 60 + second) * 1000 + milli;
16+
17+
return ((int) (current / 3600) + 18000) % 24000;
18+
}
19+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package remi.realtimeworld;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.World;
5+
import org.bukkit.configuration.file.FileConfiguration;
6+
7+
import java.util.Arrays;
8+
import java.util.List;
9+
10+
public class timeSetter {
11+
public static void set(int mctime) {
12+
FileConfiguration conf = RealTimeWorld.instance.getConfig();
13+
String ignores = conf.getString("IgnoreWorlds","");
14+
List<String> ignoreWorlds = Arrays.asList(ignores.split(","));
15+
for (World world : Bukkit.getWorlds()) {
16+
if (!ignores.contains(world.getName())) {
17+
long days = world.getFullTime() / 24000;
18+
long time = days * 24000 + mctime;
19+
world.setFullTime(time);
20+
}
21+
}
22+
}
23+
}

0 commit comments

Comments
 (0)