Advertisement
Guest User

Untitled

a guest
Sep 26th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.65 KB | None | 0 0
  1. package ovh.rehost.realWeatherSponge;
  2.  
  3. import com.google.common.reflect.TypeToken;
  4. import com.google.inject.Inject;
  5. import ninja.leaping.configurate.ConfigurationNode;
  6. import ninja.leaping.configurate.commented.CommentedConfigurationNode;
  7. import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
  8. import ninja.leaping.configurate.loader.ConfigurationLoader;
  9. import ninja.leaping.configurate.objectmapping.ObjectMappingException;
  10. import org.slf4j.Logger;
  11. import org.spongepowered.api.Sponge;
  12. import org.spongepowered.api.command.args.GenericArguments;
  13. import org.spongepowered.api.command.spec.CommandSpec;
  14. import org.spongepowered.api.config.DefaultConfig;
  15. import org.spongepowered.api.event.Listener;
  16. import org.spongepowered.api.event.game.state.GameStartedServerEvent;
  17. import org.spongepowered.api.plugin.Dependency;
  18. import org.spongepowered.api.plugin.Plugin;
  19. import org.spongepowered.api.scheduler.Task;
  20. import org.spongepowered.api.text.Text;
  21. import org.spongepowered.api.text.serializer.TextSerializers;
  22.  
  23. import java.io.*;
  24. import java.nio.file.Path;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28.  
  29. @Plugin(id = "realweather", name = "RH-RealWeather", authors = "Michał \"Bopke\" Kubik", version = "1.1", dependencies = @Dependency(id = "spongeapi", version = "7.1.0"))
  30. public class RealWeather {
  31.  
  32. private String country;
  33. private String city;
  34. private String apikey;
  35. private int interval;
  36.  
  37. private List<String> affectedWorlds;
  38. private Map<String, Text> messages = new HashMap<>();
  39.  
  40. private final Task.Builder taskBuilder = Sponge.getScheduler().createTaskBuilder();
  41. private Task task;
  42.  
  43. private Plugin plugin;
  44.  
  45. @Inject
  46. private Logger logger;
  47.  
  48. @Inject
  49. @DefaultConfig(sharedRoot = true)
  50. private Path config;
  51.  
  52. @Inject
  53. private void setLogger(Logger logger) {
  54. this.logger = logger;
  55. }
  56.  
  57. @Listener
  58. public void onServerStart(GameStartedServerEvent event) {
  59.  
  60. // rh-realweather command
  61. CommandSpec RealWeatherCommandSpec = CommandSpec.builder()
  62. .description(Text.of("Administrative command for RH-RealWeather"))
  63. .permission("rh.realweather.reload")
  64. .arguments(GenericArguments.string(Text.of("reload")))
  65. .executor(new RealweatherCommand(this))
  66. .build();
  67. Sponge.getCommandManager().register(this, RealWeatherCommandSpec, "rh-realweather");
  68.  
  69. createConfigIfNotExists();
  70. loadNewConfigValues();
  71. task = makeTask();
  72. }
  73.  
  74. private Task makeTask() {
  75. return taskBuilder
  76. .execute(new ScheduledWeatherStateUpdateHandler(this))
  77. .async()
  78. .intervalTicks(interval)
  79. .name("RealWeatherChecker")
  80. .submit((Plugin)this);
  81. }
  82.  
  83. private void reloadTask() {
  84. task.cancel();
  85. task = makeTask();
  86. }
  87.  
  88. void reloadPlugin() {
  89. loadNewConfigValues();
  90. reloadTask();
  91. }
  92.  
  93. private void createConfigIfNotExists() {
  94. if (!config.toFile().exists()) {
  95. try {
  96. InputStream in = this.getClass().getResourceAsStream("/config.conf");
  97. OutputStream out = new FileOutputStream(config.toFile());
  98. byte[] buff = new byte[1024];
  99. int len;
  100. while ((len = in.read(buff)) > 0) {
  101. out.write(buff, 0, len);
  102. }
  103. } catch (IOException e) {
  104. e.printStackTrace();
  105. }
  106. }
  107. }
  108.  
  109. private void loadNewConfigValues() {
  110. try {
  111. ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setPath(config).build();
  112. ConfigurationNode rootNode = loader.load().getNode();
  113. affectedWorlds = rootNode.getNode("worlds").getList(TypeToken.of(String.class));//config.getStringList("worlds");
  114. city = rootNode.getNode("city").getString();//config.getString("city");
  115. country = rootNode.getNode("country").getString();//.getString("country");
  116. apikey = rootNode.getNode("API_Key").getString();//config.getString("API_Key");
  117. interval = rootNode.getNode("interval").getInt();//config.getInt("interval");
  118. ConfigurationNode mess = rootNode.getNode("messages");
  119. messages.put("localisation-information", TextSerializers.FORMATTING_CODE.deserialize(mess.getNode("localisation-information").getString()));
  120. messages.put("invalid-response-code", TextSerializers.FORMATTING_CODE.deserialize(mess.getNode("invalid-response-code").getString()));
  121. messages.put("reloading-config", TextSerializers.FORMATTING_CODE.deserialize(mess.getNode("reloading-config").getString()));
  122. messages.put("reloaded-config", TextSerializers.FORMATTING_CODE.deserialize(mess.getNode("reloaded-config").getString()));
  123. messages.put("API-offline", TextSerializers.FORMATTING_CODE.deserialize(mess.getNode("API-offline").getString()));
  124. } catch (IOException | ObjectMappingException e) {
  125. e.printStackTrace();
  126. }
  127. }
  128.  
  129. String getCity() {
  130. return this.city;
  131. }
  132.  
  133. String getCountry() {
  134. return this.country;
  135. }
  136.  
  137. String getApikey() {
  138. return this.apikey;
  139. }
  140.  
  141. int getInterval() {
  142. return this.interval;
  143. }
  144.  
  145. Map<String, Text> getMessages() {
  146. return this.messages;
  147. }
  148.  
  149. List<String> getAffectedWorlds() {
  150. return this.affectedWorlds;
  151. }
  152.  
  153. Logger getLogger() {
  154. return this.logger;
  155. }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement