From 8d02557d6d8bb9a9ff20ed20cc256620f9ef70ca Mon Sep 17 00:00:00 2001 From: Esophose Date: Fri, 22 Feb 2019 19:48:55 -0700 Subject: [PATCH] Fix stackables loading/saving --- .../me/goodandevil/skyblock/SkyBlock.java | 36 ++--------------- .../skyblock/stackable/Stackable.java | 15 ++++--- .../skyblock/stackable/StackableManager.java | 39 +++++++++++++++---- 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/src/main/java/me/goodandevil/skyblock/SkyBlock.java b/src/main/java/me/goodandevil/skyblock/SkyBlock.java index b95a5cf0..23e4f0fc 100644 --- a/src/main/java/me/goodandevil/skyblock/SkyBlock.java +++ b/src/main/java/me/goodandevil/skyblock/SkyBlock.java @@ -1,19 +1,10 @@ package me.goodandevil.skyblock; import java.io.File; -import java.io.IOException; -import java.util.UUID; -import me.goodandevil.skyblock.command.commands.SkyBlockCommand; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.stackable.Stackable; -import me.goodandevil.skyblock.stackable.StackableManager; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Location; import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.HandlerList; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.PluginManager; @@ -23,6 +14,7 @@ import me.goodandevil.skyblock.api.SkyBlockAPI; import me.goodandevil.skyblock.ban.BanManager; import me.goodandevil.skyblock.biome.BiomeManager; import me.goodandevil.skyblock.command.CommandManager; +import me.goodandevil.skyblock.command.commands.SkyBlockCommand; import me.goodandevil.skyblock.config.FileManager; import me.goodandevil.skyblock.confirmation.ConfirmationTask; import me.goodandevil.skyblock.cooldown.CooldownManager; @@ -60,6 +52,7 @@ import me.goodandevil.skyblock.playerdata.PlayerDataManager; import me.goodandevil.skyblock.playtime.PlaytimeTask; import me.goodandevil.skyblock.scoreboard.ScoreboardManager; import me.goodandevil.skyblock.sound.SoundManager; +import me.goodandevil.skyblock.stackable.StackableManager; import me.goodandevil.skyblock.structure.StructureManager; import me.goodandevil.skyblock.upgrade.UpgradeManager; import me.goodandevil.skyblock.usercache.UserCacheManager; @@ -136,6 +129,7 @@ public class SkyBlock extends JavaPlugin { if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() .getBoolean("Island.Stackable.Enable")) { stackableManager = new StackableManager(this); + stackableManager.loadSavedStackables(); } leaderboardManager = new LeaderboardManager(this); @@ -178,8 +172,6 @@ public class SkyBlock extends JavaPlugin { this.getCommand("skyblock").setExecutor(new SkyBlockCommand()); SkyBlockAPI.setImplementation(instance); - - Bukkit.getScheduler().scheduleSyncDelayedTask(this, this::loadFromFile, 5L); } @Override @@ -221,28 +213,6 @@ public class SkyBlock extends JavaPlugin { HandlerList.unregisterAll(this); } - private void loadFromFile() { - //Load Stackables - String path = getDataFolder().toString() + "/island-data"; - File[] files = new File(path).listFiles(); - if (files == null) return; - for (File file : files) { - File configFile = new File(path); - FileManager.Config config = fileManager.getConfig(new File(configFile, file.getName())); - FileConfiguration configLoad = config.getFileConfiguration(); - ConfigurationSection cs = configLoad.getConfigurationSection("Stackables"); - if (cs == null || cs.getKeys(false) == null) return; - for (String uuid : cs.getKeys(false)) { - ConfigurationSection section = configLoad.getConfigurationSection("Stackables." + uuid); - Location location = (Location)section.get("Location"); - org.bukkit.Material material = org.bukkit.Material.valueOf(section.getString("Material")); - int size = section.getInt("Size"); - if (size == 0) return; - stackableManager.addStack(new Stackable(UUID.fromString(uuid), location, material, size)); - } - } - } - private String formatText(String string){ return ChatColor.translateAlternateColorCodes('&', string); } diff --git a/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java b/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java index 1b5521ad..e7d03bee 100644 --- a/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java +++ b/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java @@ -34,7 +34,6 @@ public class Stackable { private Material material; private Integer size = 2; - public Stackable(Location location, Material material) { this.uuid = UUID.randomUUID(); this.location = location; @@ -127,10 +126,14 @@ public class Stackable { FileManager.Config config = SkyBlock.getInstance().getFileManager().getConfig(new File(configFile, SkyBlock.getInstance().getIslandManager().getIslandAtLocation(location).getOwnerUUID() + ".yml")); FileConfiguration configLoad = config.getFileConfiguration(); - - ConfigurationSection section = configLoad.createSection("Stackables." + getUuid().toString()); - section.set("Location", getLocation()); - section.set("Material", getMaterial().name()); - section.set("Size", getSize()); + + if (getSize() == 0) { + configLoad.set("Stackables." + getUuid().toString(), null); + } else { + ConfigurationSection section = configLoad.createSection("Stackables." + getUuid().toString()); + section.set("Location", getLocation()); + section.set("Material", getMaterial().name()); + section.set("Size", getSize()); + } } } diff --git a/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java b/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java index ea121101..57924a11 100644 --- a/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java +++ b/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java @@ -1,17 +1,20 @@ package me.goodandevil.skyblock.stackable; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.listeners.Entity; -import org.bukkit.Bukkit; +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Item; -import java.io.File; -import java.util.*; +import me.goodandevil.skyblock.SkyBlock; +import me.goodandevil.skyblock.config.FileManager; public class StackableManager { @@ -39,6 +42,28 @@ public class StackableManager { } catch (Exception ignored) {} } } + + public void loadSavedStackables() { + FileManager fileManager = SkyBlock.getInstance().getFileManager(); + String path = SkyBlock.getInstance().getDataFolder().toString() + "/island-data"; + File[] files = new File(path).listFiles(); + if (files == null) return; + for (File file : files) { + File configFile = new File(path); + FileManager.Config config = fileManager.getConfig(new File(configFile, file.getName())); + FileConfiguration configLoad = config.getFileConfiguration(); + ConfigurationSection cs = configLoad.getConfigurationSection("Stackables"); + if (cs == null || cs.getKeys(false) == null) continue; + for (String uuid : cs.getKeys(false)) { + ConfigurationSection section = configLoad.getConfigurationSection("Stackables." + uuid); + Location location = (Location)section.get("Location"); + org.bukkit.Material material = org.bukkit.Material.valueOf(section.getString("Material")); + int size = section.getInt("Size"); + if (size == 0) continue; + this.addStack(new Stackable(UUID.fromString(uuid), location, material, size)); + } + } + } public void unregisterStackables() { stackableMaterials.clear();