12
0

Optimizing code

Dieser Commit ist enthalten in:
Lixfel 2020-05-03 16:11:23 +02:00
Ursprung 585a604a17
Commit d7eaf140a9
2 geänderte Dateien mit 40 neuen und 64 gelöschten Zeilen

Datei anzeigen

@ -6,27 +6,21 @@ import org.bukkit.configuration.file.FileConfiguration;
import java.io.File; import java.io.File;
import java.util.logging.Level; import java.util.logging.Level;
public class Config { class Config {
private Config() {} private Config() {}
private static Realtime instance = Realtime.getInstance(); static final boolean RealTime;
static final boolean RealWeather;
//Cache
public static final boolean RealTime;
public static final boolean RealWeather;
static { static {
if(!new File(Bukkit.getWorlds().get(0).getWorldFolder(), "weather.yml").exists()) { if(!new File(Bukkit.getWorlds().get(0).getWorldFolder(), "weather.yml").exists()) {
Bukkit.getLogger().log(Level.SEVERE, "Config fehlt!"); Bukkit.getLogger().log(Level.WARNING, "Wetter-Config fehlt!");
RealTime = true; RealTime = true;
RealWeather = false; RealWeather = false;
} else { } else {
FileConfiguration config = instance.getConfig(); FileConfiguration config = Realtime.getInstance().getConfig();
RealTime = config.getBoolean("RealTime"); RealTime = config.getBoolean("RealTime");
RealWeather = config.getBoolean("RealWeather"); RealWeather = config.getBoolean("RealWeather");
} }
} }
} }

Datei anzeigen

@ -10,24 +10,17 @@ import org.json.simple.JSONArray;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.JSONValue; import org.json.simple.JSONValue;
import java.io.BufferedInputStream; import java.io.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
public class Realtime extends JavaPlugin implements Listener { public class Realtime extends JavaPlugin implements Listener {
private static Realtime instance; private static Realtime instance;
DateFormat dateFormat = new SimpleDateFormat("HHmm"); private WeatherState oldWeatherState = null;
private WeatherState weatherState = null;
WeatherState oldWeatherState = null;
WeatherState weatherState = null;
@Override @Override
public void onEnable() { public void onEnable() {
@ -39,28 +32,22 @@ public class Realtime extends JavaPlugin implements Listener {
if(Config.RealTime) { if(Config.RealTime) {
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> { Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> {
Date date = new Date(); Date date = new Date();
int time = Integer.parseInt((dateFormat.format(date) + "0")); long time = date.getHours() * 1000 + (long)(date.getMinutes() * 16.66666666666667) + (long)(date.getSeconds() * 0.1666666666666667) - 6000;
time -= 6000;
if(time < 0) {
time+= 24000;
}
for(World world : Bukkit.getWorlds()) for(World world : Bukkit.getWorlds())
world.setTime(time); world.setTime(time);
}, 0, 20 * 60); }, 0, 600);
} }
//Weather Updater //Weather Updater
if(Config.RealWeather) { if(Config.RealWeather) {
Bukkit.getScheduler().scheduleAsyncRepeatingTask(this, () -> updateCurrentWeather(), 0, 20 * 60 * 10); //Die Wetterdaten werden bei OpenWeatherMAP nur alle 10 Minuten erneuert Bukkit.getScheduler().runTaskTimerAsynchronously(this, this::updateCurrentWeather, 0, 12000); //Die Wetterdaten werden bei OpenWeatherMAP nur alle 10 Minuten erneuert
} }
} }
private String jsonString = ""; private String jsonString = "";
public void updateCurrentWeather() { private void updateCurrentWeather() {
/* /*
* https://openweathermap.org/current * https://openweathermap.org/current
@ -92,17 +79,18 @@ public class Realtime extends JavaPlugin implements Listener {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
String inputLine; String inputLine;
while ((inputLine = dataInputStream.readLine()) != null) { while ((inputLine = dataInputStream.readLine()) != null) {
stringBuilder.append(inputLine); stringBuilder.append(inputLine);
} }
jsonString = stringBuilder.toString(); jsonString = stringBuilder.toString();
} catch (MalformedURLException ex) { } catch (IOException e) {
ex.printStackTrace(); throw new SecurityException("Could not read weather data", e);
} catch (IOException ex) {
ex.printStackTrace();
} finally { } finally {
IOUtils.closeQuietly(inputStream); try {
inputStream.close();
} catch (IOException | NullPointerException e) {
//ignored
}
} }
@ -132,36 +120,30 @@ public class Realtime extends JavaPlugin implements Listener {
} }
//Weltänderungen //Weltänderungen
Bukkit.getScheduler().scheduleSyncDelayedTask(getInstance(), () -> { if(oldWeatherState == null || oldWeatherState != weatherState){
if(oldWeatherState != null && oldWeatherState == weatherState) Bukkit.getScheduler().scheduleSyncDelayedTask(getInstance(), () -> {
return; for(World world : Bukkit.getWorlds()) {
switch (weatherState) {
for(World world : Bukkit.getWorlds()) { case CLEAR_SKY:
switch (weatherState) { world.setThundering(false);
case CLEAR_SKY: world.setStorm(false);
world.setThundering(false); break;
world.setStorm(false); case RAIN:
break; case SNOW:
case RAIN: world.setThundering(false);
case SNOW: world.setStorm(true);
world.setThundering(false); break;
world.setStorm(true); case THUNDER_STORM:
break; world.setThundering(true);
case THUNDER_STORM: world.setStorm(true);
world.setThundering(true); break;
world.setStorm(true); }
break;
} }
} }, 0);
}, 0); }
} }
public void shutdown(final String reason) { static Realtime getInstance() {
Bukkit.getOnlinePlayers().forEach(player -> player.kickPlayer(reason));
Bukkit.shutdown();
}
public static Realtime getInstance() {
return instance; return instance;
} }