diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/AutoSavingService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/AutoSavingService.java index cc982b244..1720e08fa 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/AutoSavingService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/AutoSavingService.java @@ -14,54 +14,54 @@ import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; public class AutoSavingService { - + private int interval; - + public void start(Plugin plugin, int interval) { this.interval = interval; - + plugin.getServer().getScheduler().runTaskTimer(plugin, this::saveAllPlayers, 2000L, interval * 60L * 20L); plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, this::saveAllBlocks, 2000L, interval * 60L * 20L); - + } - + public void saveAllPlayers() { Iterator iterator = PlayerProfile.iterator(); int players = 0; - + while (iterator.hasNext()) { PlayerProfile profile = iterator.next(); - + if (profile.isDirty()) { players++; profile.save(); } - + if (profile.isMarkedForDeletion()) iterator.remove(); } - + if (players > 0) { Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for {0} Player(s)!", players); } } - + public void saveAllBlocks() { Set worlds = new HashSet<>(); - + for (World world : Bukkit.getWorlds()) { if (BlockStorage.isWorldRegistered(world.getName())) { BlockStorage storage = BlockStorage.getStorage(world); storage.computeChanges(); - + if (storage.getChanges() > 0) { worlds.add(storage); } } } - + if (!worlds.isEmpty()) { Slimefun.getLogger().log(Level.INFO, "Auto-Saving Block Data... (Next Auto-Save: {0}m)", interval); - + for (BlockStorage storage : worlds) { storage.save(false); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/BlockDataService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/BlockDataService.java index 4e66061bd..3fdc92b7a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/BlockDataService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/BlockDataService.java @@ -9,18 +9,18 @@ import org.bukkit.plugin.Plugin; import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI; public class BlockDataService { - + private final NamespacedKey namespacedKey; - + public BlockDataService(Plugin plugin, String key) { namespacedKey = new NamespacedKey(plugin, key); } - + public void setBlockData(TileState tileEntity, String value) { PersistentDataAPI.setString(tileEntity, namespacedKey, value); tileEntity.update(); } - + public Optional getBlockData(TileState tileEntity) { return PersistentDataAPI.getOptionalString(tileEntity, namespacedKey); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomItemDataService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomItemDataService.java index fddcf9b92..58eaaf1ae 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomItemDataService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomItemDataService.java @@ -10,9 +10,9 @@ import org.bukkit.plugin.Plugin; import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI; public class CustomItemDataService { - + private final NamespacedKey namespacedKey; - + public CustomItemDataService(Plugin plugin, String key) { namespacedKey = new NamespacedKey(plugin, key); } @@ -30,7 +30,7 @@ public class CustomItemDataService { public Optional getItemData(ItemStack item) { return getItemData(item.getItemMeta()); } - + public Optional getItemData(ItemMeta meta) { return PersistentDataAPI.getOptionalString(meta, namespacedKey); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java index cadd80b47..bf536dfda 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/CustomTextureService.java @@ -8,17 +8,17 @@ import io.github.thebusybiscuit.cscorelib2.config.Config; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; public class CustomTextureService { - + private final Config config; private boolean modified = false; - + public CustomTextureService(Plugin plugin) { this.config = new Config(plugin, "item-models.yml"); } - + public void setup(Iterable items) { config.setDefaultValue("SLIMEFUN_GUIDE", 0); - + config.setDefaultValue("_UI_BACKGROUND", 0); config.setDefaultValue("_UI_BACK", 0); config.setDefaultValue("_UI_MENU", 0); @@ -28,28 +28,28 @@ public class CustomTextureService { config.setDefaultValue("_UI_PREVIOUS_INACTIVE", 0); config.setDefaultValue("_UI_NEXT_ACTIVE", 0); config.setDefaultValue("_UI_NEXT_INACTIVE", 0); - + for (SlimefunItem item : items) { if (item != null && item.getID() != null) { config.setDefaultValue(item.getID(), 0); - + if (config.getInt(item.getID()) != 0) { modified = true; } } } - + config.save(); } - + public String getVersion() { return config.getString("version"); } - + public boolean isActive() { return modified; } - + public int getModelData(String id) { return config.getInt(id); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java index 62621e039..63f797dea 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java @@ -19,51 +19,51 @@ import io.github.thebusybiscuit.slimefun4.core.services.github.GitHubTask; import io.github.thebusybiscuit.slimefun4.utils.NumberUtils; public class GitHubService { - + private final String repository; private final Set connectors; private final ConcurrentMap contributors; - + private boolean logging = false; - + private int issues = 0; private int pullRequests = 0; private int forks = 0; private int stars = 0; private int codeBytes = 0; private Date lastUpdate = new Date(); - + public GitHubService(String repository) { this.repository = repository; - + connectors = new HashSet<>(); contributors = new ConcurrentHashMap<>(); } - + public void start(Plugin plugin) { plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, new GitHubTask(this), 80L, 60 * 60 * 20L); } - + private void addDefaultContributors() { Contributor thebusybiscuit = new Contributor("TheBusyBiscuit", "https://github.com/TheBusyBiscuit"); thebusybiscuit.setContribution("&4Original Creator", 0); contributors.put(thebusybiscuit.getName(), thebusybiscuit); - + Contributor fuffles = new Contributor("Fuffles_"); fuffles.setContribution("&dSkull Texture Artist", 0); contributors.put(fuffles.getName(), fuffles); } - + public void connect(boolean logging) { this.logging = logging; addDefaultContributors(); - + connectors.add(new ContributionsConnector(this, "code", repository, "&6Developer")); connectors.add(new ContributionsConnector(this, "wiki", "TheBusyBiscuit/Slimefun4-wiki", "&3Wiki Editor")); connectors.add(new ContributionsConnector(this, "resourcepack", "TheBusyBiscuit/Slimefun4-Resourcepack", "&cResourcepack Artist")); - + connectors.add(new GitHubConnector(this) { - + @Override public void onSuccess(JsonElement element) { JsonObject object = element.getAsJsonObject(); @@ -71,12 +71,12 @@ public class GitHubService { stars = object.get("stargazers_count").getAsInt(); lastUpdate = NumberUtils.parseGitHubDate(object.get("pushed_at").getAsString()); } - + @Override public String getRepository() { return repository; } - + @Override public String getFileName() { return "repo"; @@ -87,32 +87,32 @@ public class GitHubService { return ""; } }); - + connectors.add(new GitHubConnector(this) { - + @Override public void onSuccess(JsonElement element) { JsonArray array = element.getAsJsonArray(); - + int issueCount = 0; int prCount = 0; - + for (JsonElement elem : array) { JsonObject obj = elem.getAsJsonObject(); - + if (obj.has("pull_request")) prCount++; else issueCount++; } - + issues = issueCount; pullRequests = prCount; } - + @Override public String getRepository() { return repository; } - + @Override public String getFileName() { return "issues"; @@ -123,20 +123,20 @@ public class GitHubService { return "/issues"; } }); - + connectors.add(new GitHubConnector(this) { - + @Override public void onSuccess(JsonElement element) { JsonObject object = element.getAsJsonObject(); codeBytes = object.get("Java").getAsInt(); } - + @Override public String getRepository() { return repository; } - + @Override public String getFileName() { return "languages"; @@ -148,27 +148,27 @@ public class GitHubService { } }); } - + public Set getConnectors() { return connectors; } - + public ConcurrentMap getContributors() { return contributors; } - + public int getForks() { return forks; } - + public int getStars() { return stars; } - + public int getIssues() { return issues; } - + public int getPullRequests() { return pullRequests; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java index bc0d5fdbf..73c26a786 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java @@ -21,7 +21,7 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.Slimefun; public class LocalizationService extends SlimefunLocalization { - + private static final String LANGUAGE_PATH = "language"; // All supported languages are stored in this LinkedHashMap, it is Linked so we keep the order @@ -32,15 +32,15 @@ public class LocalizationService extends SlimefunLocalization { public LocalizationService(SlimefunPlugin plugin, String serverDefaultLanguage) { super(plugin); - + this.plugin = plugin; languageKey = new NamespacedKey(plugin, LANGUAGE_PATH); defaultLanguage = new Language(serverDefaultLanguage, getConfig().getConfiguration(), "11b3188fd44902f72602bd7c2141f5a70673a411adb3d81862c69e536166b"); loadLanguages(); - + String language = getConfig().getString(LANGUAGE_PATH); if (language == null) language = serverDefaultLanguage; - + if (hasLanguage(serverDefaultLanguage)) { setLanguage(serverDefaultLanguage, !serverDefaultLanguage.equals(language)); } @@ -48,11 +48,11 @@ public class LocalizationService extends SlimefunLocalization { setLanguage("en", false); plugin.getLogger().log(Level.WARNING, "Could not recognize the given language: \"{0}\"", serverDefaultLanguage); } - + setPrefix("&aSlimefun 4 &7> "); save(); } - + private void loadLanguages() { addLanguage("en", "a1701f21835a898b20759fb30a583a38b994abf60d3912ab4ce9f2311e74f72"); } @@ -66,7 +66,7 @@ public class LocalizationService extends SlimefunLocalization { public Language getLanguage(String id) { return languages.get(id); } - + @Override public Collection getLanguages() { return languages.values(); @@ -85,11 +85,11 @@ public class LocalizationService extends SlimefunLocalization { @Override public Language getLanguage(Player p) { Optional language = PersistentDataAPI.getOptionalString(p, languageKey); - + if (language.isPresent()) return languages.get(language.get()); else return getDefaultLanguage(); } - + private void setLanguage(String language, boolean reset) { // Clearing out the old Language (if necessary) if (reset) { @@ -97,26 +97,26 @@ public class LocalizationService extends SlimefunLocalization { getConfig().setValue(key, null); } } - + Slimefun.getLogger().log(Level.INFO, "Loading language \"{0}\"", language); getConfig().setValue(LANGUAGE_PATH, language); - + // Loading in the defaults from our resources folder String path = "/languages/messages_" + language + ".yml"; - + try (BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getClass().getResourceAsStream(path)))) { FileConfiguration config = YamlConfiguration.loadConfiguration(reader); getConfig().getConfiguration().setDefaults(config); - } catch (IOException e) { - Slimefun.getLogger().log(Level.SEVERE, "Failed to load language file: \"" + path + "\"", e); - } - + } catch (IOException e) { + Slimefun.getLogger().log(Level.SEVERE, "Failed to load language file: \"" + path + "\"", e); + } + save(); } - + private void addLanguage(String id, String hash) { FileConfiguration cfg; - + if (!hasLanguage(id)) { cfg = getConfig().getConfiguration(); } @@ -125,12 +125,12 @@ public class LocalizationService extends SlimefunLocalization { try (BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getClass().getResourceAsStream(path)))) { cfg = YamlConfiguration.loadConfiguration(reader); cfg.setDefaults(getConfig().getConfiguration()); - } catch (IOException e) { - Slimefun.getLogger().log(Level.SEVERE, "Failed to load language file into memory: \"" + path + "\"", e); + } catch (IOException e) { + Slimefun.getLogger().log(Level.SEVERE, "Failed to load language file into memory: \"" + path + "\"", e); cfg = getConfig().getConfiguration(); - } + } } - + languages.put(id, new Language(id, cfg, hash)); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java index 1b5d48fde..fb9bc67a3 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java @@ -14,14 +14,14 @@ public class MetricsService extends Metrics { public MetricsService(SlimefunPlugin plugin) { super(plugin); - + addCustomChart(new SimplePie("auto_updates", () -> SlimefunPlugin.getCfg().getBoolean("options.auto-update") ? "enabled": "disabled" )); - + addCustomChart(new SimplePie("resourcepack", () -> { String version = SlimefunPlugin.getItemTextureService().getVersion(); - + if (version != null && version.startsWith("v")) { return version + " (Official)"; } @@ -32,7 +32,7 @@ public class MetricsService extends Metrics { return "None"; } })); - + addCustomChart(new SimplePie("branch", () -> { if (plugin.getDescription().getVersion().startsWith("DEV - ")) { return "master"; @@ -44,20 +44,20 @@ public class MetricsService extends Metrics { return "Unknown"; } })); - + addCustomChart(new SimplePie("language", () -> { Language language = SlimefunPlugin.getLocal().getDefaultLanguage(); return language.getID(); })); - + addCustomChart(new AdvancedPie("player_languages", () -> { Map languages = new HashMap<>(); - + for (Player p : Bukkit.getOnlinePlayers()) { Language lang = SlimefunPlugin.getLocal().getLanguage(p); languages.merge(lang.getID(), 1, Integer::sum); } - + return languages; })); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/UpdaterService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/UpdaterService.java index e5e5aa1d6..7229f200d 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/UpdaterService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/UpdaterService.java @@ -10,12 +10,12 @@ import io.github.thebusybiscuit.cscorelib2.updater.GitHubBuildsUpdater; import io.github.thebusybiscuit.cscorelib2.updater.Updater; public class UpdaterService { - + private final Updater updater; - + public UpdaterService(Plugin plugin, File file) { String version = plugin.getDescription().getVersion(); - + if (version.equals("UNOFFICIAL")) { // This Server is using a modified build that is not a public release. plugin.getLogger().log(Level.WARNING, "It looks like you are using an unofficially modified build of Slimefun!"); @@ -35,7 +35,7 @@ public class UpdaterService { updater = new BukkitUpdater(plugin, file, 53485); } } - + public void start() { if (updater != null) { updater.start(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java index c23ed594a..4098e6dbf 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java @@ -8,25 +8,25 @@ import io.github.thebusybiscuit.cscorelib2.skull.SkullItem; import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class Language { - + private final String id; private final FileConfiguration config; private final ItemStack item; - + public Language(String id, FileConfiguration config, String hash) { this.id = id; this.config = config; this.item = SkullItem.fromHash(hash); } - + public String getID() { return id; } - + public FileConfiguration getConfig() { return config; } - + public ItemStack getItem() { return item; } @@ -34,7 +34,7 @@ public final class Language { public String getName(Player p) { return SlimefunPlugin.getLocal().getMessage(p, "languages." + id); } - + public boolean isDefault() { return this == SlimefunPlugin.getLocal().getDefaultLanguage(); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java index 3ba3d19a3..234687091 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java @@ -14,36 +14,36 @@ import io.github.thebusybiscuit.cscorelib2.config.Localization; import me.mrCookieSlime.Slimefun.SlimefunPlugin; public abstract class SlimefunLocalization extends Localization implements Keyed{ - + public SlimefunLocalization(SlimefunPlugin plugin) { super(plugin); } - + public abstract Language getLanguage(String id); public abstract Language getLanguage(Player p); public abstract Language getDefaultLanguage(); - + public abstract boolean hasLanguage(String id); public abstract Collection getLanguages(); - + public String getPrefix() { return getMessage("prefix"); } - + public String getMessage(Player p, String key) { Language language = getLanguage(p); return language.getConfig().getString(key); } - + public List getMessages(Player p, String key) { Language language = getLanguage(p); return language.getConfig().getStringList(key); } - + @Override public void sendMessage(CommandSender sender, String key) { String prefix = getPrefix(); - + if (sender instanceof Player) { sender.sendMessage(ChatColors.color(prefix + getMessage((Player) sender, key))); } @@ -51,15 +51,15 @@ public abstract class SlimefunLocalization extends Localization implements Keyed sender.sendMessage(ChatColor.stripColor(ChatColors.color(prefix + getMessage(key)))); } } - + @Override public void sendMessage(CommandSender sender, String key, boolean addPrefix) { sendMessage(sender, key); } - + public void sendMessage(CommandSender sender, String key, UnaryOperator function) { String prefix = getPrefix(); - + if (sender instanceof Player) { sender.sendMessage(ChatColors.color(prefix + function.apply(getMessage((Player) sender, key)))); } @@ -67,16 +67,16 @@ public abstract class SlimefunLocalization extends Localization implements Keyed sender.sendMessage(ChatColor.stripColor(ChatColors.color(prefix + function.apply(getMessage(key))))); } } - + @Override public void sendMessage(CommandSender sender, String key, boolean addPrefix, UnaryOperator function) { sendMessage(sender, key, function); } - + @Override public void sendMessages(CommandSender sender, String key) { String prefix = getPrefix(); - + if (sender instanceof Player) { for (String translation : getMessages((Player) sender, key)) { String message = ChatColors.color(prefix + translation); @@ -90,15 +90,15 @@ public abstract class SlimefunLocalization extends Localization implements Keyed } } } - + @Override public void sendMessages(CommandSender sender, String key, boolean addPrefix, UnaryOperator function) { sendMessages(sender, key, function); } - + public void sendMessages(CommandSender sender, String key, UnaryOperator function) { String prefix = getPrefix(); - + if (sender instanceof Player) { for (String translation : getMessages((Player) sender, key)) { String message = ChatColors.color(prefix + function.apply(translation));