src/main/java/dev/viper/weathertime/WeatherTimeData.java aktualisiert

This commit is contained in:
2025-08-09 20:58:30 +00:00
parent fe3e1c1534
commit ac318f4f78

View File

@@ -1,57 +1,87 @@
package dev.viper.weathertime;
import java.time.Instant;
import java.time.LocalTime;
import java.time.ZoneOffset;
public class WeatherTimeData {
private final boolean rain;
private final boolean thunder;
private final long unixTime;
private final double tempCelsius;
public WeatherTimeData(boolean rain, boolean thunder, long unixTime, double tempCelsius) {
this.rain = rain;
this.thunder = thunder;
this.unixTime = unixTime;
this.tempCelsius = tempCelsius;
}
public boolean isRain() {
return rain;
}
public boolean isThunder() {
return thunder;
}
public double getTemp(String unit) {
return unit.equalsIgnoreCase("F") ? (tempCelsius * 9 / 5) + 32 : tempCelsius;
}
public String getFormattedTime(String format) {
LocalTime time = Instant.ofEpochSecond(unixTime)
.atOffset(ZoneOffset.UTC)
.toLocalTime();
if ("12h".equalsIgnoreCase(format)) {
int hour = time.getHour();
String ampm = hour >= 12 ? "PM" : "AM";
hour = hour % 12;
if (hour == 0) hour = 12;
return String.format("%02d:%02d %s", hour, time.getMinute(), ampm);
} else {
return String.format("%02d:%02d", time.getHour(), time.getMinute());
}
}
public long toMinecraftTime() {
LocalTime time = Instant.ofEpochSecond(unixTime)
.atOffset(ZoneOffset.UTC)
.toLocalTime();
int hour = time.getHour();
int minute = time.getMinute();
return (hour * 1000L / 24) + (minute * 1000L / (24 * 60));
}
}
package dev.viper.weathertime;
import java.time.ZonedDateTime;
/**
* Zentrale Datenklasse für Wetter- und Zeitinformationen.
* Erweiterung: enthält jetzt auch Luftfeuchtigkeit, Windgeschwindigkeit und Sonnenauf/untergang.
*/
public class WeatherTimeData {
private final ZonedDateTime dateTime; // Lokale Zeit am Standort
private final String weatherMain; // Hauptwetterbeschreibung (z. B. "Clear", "Rain")
private final double tempCelsius; // Temperatur in °C
private final int humidity; // Luftfeuchtigkeit in %
private final double windSpeed; // Windgeschwindigkeit (m/s oder mph)
private final ZonedDateTime sunrise; // Sonnenaufgang
private final ZonedDateTime sunset; // Sonnenuntergang
public WeatherTimeData(
ZonedDateTime dateTime,
String weatherMain,
double tempCelsius,
int humidity,
double windSpeed,
ZonedDateTime sunrise,
ZonedDateTime sunset) {
this.dateTime = dateTime;
this.weatherMain = weatherMain;
this.tempCelsius = tempCelsius;
this.humidity = humidity;
this.windSpeed = windSpeed;
this.sunrise = sunrise;
this.sunset = sunset;
}
public ZonedDateTime getDateTime() {
return dateTime;
}
public String getWeatherMain() {
return weatherMain;
}
public double getTemp(String unit) {
return "F".equalsIgnoreCase(unit)
? (tempCelsius * 9 / 5) + 32
: tempCelsius;
}
public int getHumidity() {
return humidity;
}
public double getWindSpeed() {
return windSpeed;
}
public ZonedDateTime getSunrise() {
return sunrise;
}
public ZonedDateTime getSunset() {
return sunset;
}
public String getFormattedTime(String format) {
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
if ("12h".equalsIgnoreCase(format)) {
String ampm = hour >= 12 ? "PM" : "AM";
hour = hour % 12;
if (hour == 0) hour = 12;
return String.format("%02d:%02d %s", hour, minute, ampm);
}
return String.format("%02d:%02d", hour, minute);
}
public long toMinecraftTime() {
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();
return ((hour + 18) % 24) * 1000L
+ (minute * 1000L / 60)
+ (second * 1000L / 3600);
}
}