0.3
This commit is contained in:
parent
54625a0bf0
commit
be2b69e30c
6 changed files with 32 additions and 18 deletions
2
pom.xml
2
pom.xml
|
@ -2,7 +2,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>pl.minecon724</groupId>
|
<groupId>pl.minecon724</groupId>
|
||||||
<artifactId>realweather</artifactId>
|
<artifactId>realweather</artifactId>
|
||||||
<version>0.2.0</version>
|
<version>0.3.0</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>17</maven.compiler.source>
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package pl.minecon724.realweather;
|
package pl.minecon724.realweather;
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
|
||||||
public class ConfigUtils {
|
public class ConfigUtils {
|
||||||
public static String parsePlaceholders(String key, String value, Object[] data) {
|
public static String parsePlaceholders(String key, String value, String[] data) {
|
||||||
if (key.equals("messages.actionbarInfo")) {
|
if (key.equals("messages.actionbarInfo")) {
|
||||||
value = value.replaceAll('%weather_full%', data[0]).replaceAll('%weather%', data[1]);
|
value = value.replaceAll("%weather_full%", data[0] + " " + data[1]).replaceAll("%weather%", data[1]);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,9 @@ import com.maxmind.geoip2.exception.AddressNotFoundException;
|
||||||
import com.maxmind.geoip2.model.CityResponse;
|
import com.maxmind.geoip2.model.CityResponse;
|
||||||
import com.maxmind.geoip2.record.Location;
|
import com.maxmind.geoip2.record.Location;
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.WeatherType;
|
import org.bukkit.WeatherType;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
@ -27,11 +30,11 @@ public class GetStateTask extends BukkitRunnable {
|
||||||
List<String> worlds;
|
List<String> worlds;
|
||||||
Logger logger;
|
Logger logger;
|
||||||
WebServiceClient client;
|
WebServiceClient client;
|
||||||
boolean broadcast;
|
|
||||||
boolean debug, debugDox;
|
boolean debug, debugDox;
|
||||||
double scaleLat, scaleLon;
|
double scaleLat, scaleLon;
|
||||||
int onExceed;
|
int onExceed;
|
||||||
boolean actionbar;
|
boolean actionbar;
|
||||||
|
String actionbarInfo;
|
||||||
|
|
||||||
MapUtils mapUtils = new MapUtils();
|
MapUtils mapUtils = new MapUtils();
|
||||||
|
|
||||||
|
@ -39,10 +42,11 @@ public class GetStateTask extends BukkitRunnable {
|
||||||
Provider provider, String source,
|
Provider provider, String source,
|
||||||
double pointLatitude, double pointLongitude,
|
double pointLatitude, double pointLongitude,
|
||||||
List<String> worlds, Logger logger,
|
List<String> worlds, Logger logger,
|
||||||
WebServiceClient client, boolean broadcast,
|
WebServiceClient client,
|
||||||
boolean debug, boolean debugDox,
|
boolean debug, boolean debugDox,
|
||||||
double scaleLat, double scaleLon,
|
double scaleLat, double scaleLon,
|
||||||
int onExceed, boolean actionbar
|
int onExceed, boolean actionbar,
|
||||||
|
String actionbarInfo
|
||||||
) {
|
) {
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
this.source = source;
|
this.source = source;
|
||||||
|
@ -51,13 +55,13 @@ public class GetStateTask extends BukkitRunnable {
|
||||||
this.worlds = worlds;
|
this.worlds = worlds;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.broadcast = broadcast;
|
|
||||||
this.debug = debug;
|
this.debug = debug;
|
||||||
this.debugDox = debugDox;
|
this.debugDox = debugDox;
|
||||||
this.scaleLat = scaleLat;
|
this.scaleLat = scaleLat;
|
||||||
this.scaleLon = scaleLon;
|
this.scaleLon = scaleLon;
|
||||||
this.onExceed = onExceed;
|
this.onExceed = onExceed;
|
||||||
this.actionbar = actionbar;
|
this.actionbar = actionbar;
|
||||||
|
this.actionbarInfo = actionbarInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
// That's a lot of variables
|
// That's a lot of variables
|
||||||
|
@ -75,8 +79,9 @@ public class GetStateTask extends BukkitRunnable {
|
||||||
world.setStorm(state.simple == ConditionSimple.CLEAR ? false : true);
|
world.setStorm(state.simple == ConditionSimple.CLEAR ? false : true);
|
||||||
}
|
}
|
||||||
if (actionbar) {
|
if (actionbar) {
|
||||||
|
String[] data = {state.level.name(), state.condition.name()};
|
||||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(ConfigUtils.parsePlaceholders("messages.actionbarInfo", actionbarInfo, data)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (source.equals("player")) {
|
} else if (source.equals("player")) {
|
||||||
|
@ -100,7 +105,12 @@ public class GetStateTask extends BukkitRunnable {
|
||||||
"Provider returned state %s %s for %s", state.condition.name(), state.level.name(), p.getName()
|
"Provider returned state %s %s for %s", state.condition.name(), state.level.name(), p.getName()
|
||||||
));
|
));
|
||||||
p.setPlayerWeather(state.simple == ConditionSimple.CLEAR ? WeatherType.CLEAR : WeatherType.DOWNFALL);
|
p.setPlayerWeather(state.simple == ConditionSimple.CLEAR ? WeatherType.CLEAR : WeatherType.DOWNFALL);
|
||||||
if (broadcast) p.sendMessage( String.format("%s %s in %s", state.level.name(), state.condition.name(), city.getCity().getName()) );
|
if (actionbar) {
|
||||||
|
String[] data = {state.level.name(), state.condition.name()};
|
||||||
|
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(
|
||||||
|
ConfigUtils.parsePlaceholders("messages.actionbarInfo", actionbarInfo, data))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (AddressNotFoundException e) {
|
} catch (AddressNotFoundException e) {
|
||||||
logger.warning(String.format("%s's IP address (%s) is not a public IP address, therefore we can't retrieve their location.", curr.getName(), playerIp.toString()));
|
logger.warning(String.format("%s's IP address (%s) is not a public IP address, therefore we can't retrieve their location.", curr.getName(), playerIp.toString()));
|
||||||
|
@ -121,9 +131,12 @@ public class GetStateTask extends BukkitRunnable {
|
||||||
if (debug) logger.info( String.format(
|
if (debug) logger.info( String.format(
|
||||||
"Provider returned state %s %s for %f, %f", state.condition.name(), state.level.name(), lat, lon
|
"Provider returned state %s %s for %f, %f", state.condition.name(), state.level.name(), lat, lon
|
||||||
));
|
));
|
||||||
if (broadcast) p.sendMessage( String.format("%s %s in %f, %f",
|
if (actionbar) {
|
||||||
state.level.name(), state.condition.name(), lat, lon
|
String[] data = {state.level.name(), state.condition.name()};
|
||||||
) );
|
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(
|
||||||
|
ConfigUtils.parsePlaceholders("messages.actionbarInfo", actionbarInfo, data))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ public class RW extends JavaPlugin {
|
||||||
ConfigurationSection weatherSec = config.getConfigurationSection("weather");
|
ConfigurationSection weatherSec = config.getConfigurationSection("weather");
|
||||||
ConfigurationSection providerSec = config.getConfigurationSection("provider");
|
ConfigurationSection providerSec = config.getConfigurationSection("provider");
|
||||||
ConfigurationSection settingsSec = config.getConfigurationSection("settings");
|
ConfigurationSection settingsSec = config.getConfigurationSection("settings");
|
||||||
|
ConfigurationSection messagesSec = config.getConfigurationSection("messages");
|
||||||
|
|
||||||
String source = weatherSec.getString("source");
|
String source = weatherSec.getString("source");
|
||||||
ConfigurationSection point = weatherSec.getConfigurationSection("point");
|
ConfigurationSection point = weatherSec.getConfigurationSection("point");
|
||||||
|
@ -64,20 +65,20 @@ public class RW extends JavaPlugin {
|
||||||
double scale_lon = map.getDouble("scale_lon");
|
double scale_lon = map.getDouble("scale_lon");
|
||||||
int on_exceed = map.getInt("on_exceed");
|
int on_exceed = map.getInt("on_exceed");
|
||||||
|
|
||||||
boolean broadcast = settingsSec.getBoolean("broadcast");
|
|
||||||
boolean debug = settingsSec.getBoolean("debug");
|
boolean debug = settingsSec.getBoolean("debug");
|
||||||
boolean debugDox = settingsSec.getBoolean("debugDox");
|
boolean debugDox = settingsSec.getBoolean("debugDox");
|
||||||
|
|
||||||
new GetStateTask(
|
new GetStateTask(
|
||||||
provider, source, pointLatitude, pointLongitude, worlds, this.getLogger(),
|
provider, source, pointLatitude, pointLongitude, worlds, this.getLogger(),
|
||||||
client, broadcast, debug, debugDox, scale_lat, scale_lon, on_exceed
|
client, debug, debugDox, scale_lat, scale_lon, on_exceed,
|
||||||
|
settingsSec.getBoolean("actionbar"), ConfigUtils.color(messagesSec.getString("actionbarInfo"))
|
||||||
).runTaskTimerAsynchronously(this,
|
).runTaskTimerAsynchronously(this,
|
||||||
settingsSec.getLong("timeBeforeInitialRun"),
|
settingsSec.getLong("timeBeforeInitialRun"),
|
||||||
settingsSec.getLong("timeBetweenRecheck")
|
settingsSec.getLong("timeBetweenRecheck")
|
||||||
);
|
);
|
||||||
|
|
||||||
Metrics metrics = new Metrics(this, 15020);
|
Metrics metrics = new Metrics(this, 15020);
|
||||||
metrics.addCustomChart(new SimplePie("source_type", () -> {
|
metrics.addCustomChart(new Metrics.SimplePie("source_type", () -> {
|
||||||
return source;
|
return source;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,6 @@ settings:
|
||||||
# 20 is one second
|
# 20 is one second
|
||||||
# Shouldn't affect performance
|
# Shouldn't affect performance
|
||||||
timeBetweenRecheck: 600
|
timeBetweenRecheck: 600
|
||||||
# Whether to broadcast messages about weather updates
|
|
||||||
broadcast: false
|
|
||||||
# Whether to display an actionbar containing info
|
# Whether to display an actionbar containing info
|
||||||
actionbar: true
|
actionbar: true
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue