diff --git a/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java b/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java index dd70fe1..2bb7aa9 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java @@ -1,15 +1,28 @@ package com.alttd.cometskyblock; +import com.alttd.cometskyblock.configuration.*; import com.alttd.cometskyblock.listeners.PlayerJoinListener; -import com.alttd.cometskyblock.worldgenerator.IslandGenerator; +import com.alttd.cometskyblock.managers.IslandManager; +import com.alttd.cometskyblock.worldgenerator.MasterWorldGenerator; +import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import org.slf4j.Logger; + +import java.nio.file.Path; public class CometSkyBlockPlugin extends JavaPlugin implements CometSkyBlockAPI { - private static CometSkyBlockPlugin instance; + @Getter private static CometSkyBlockPlugin instance; + + @Getter private ConfigurationContainer pluginConfiguration; + @Getter private ConfigurationContainer databaseConfiguration; + @Getter private ConfigurationContainer messagesConfiguration; + @Getter private ConfigurationContainer challengesConfiguration; + + @Getter private IslandManager islandManager; @Override public void onLoad() { @@ -19,19 +32,56 @@ public class CometSkyBlockPlugin extends JavaPlugin implements CometSkyBlockAPI @Override public void onEnable() { - String island = "Island"; - World world = Bukkit.getWorld(island); - if (world == null) { - new IslandGenerator(instance).create(island); - } + // Load configurations + loadConfiguration(); - final PluginManager pm = getServer().getPluginManager(); - pm.registerEvents(new PlayerJoinListener(this), this); + // Load commands + loadCommands(); + + // Load event listeners + loadEventListeners(); + + // load data from storage + + // run cleanup tasks + // CleanupAndDeleteOldIslands and playerdata + + // load worlds & manager + islandManager = new IslandManager(this); + + // + World world = Bukkit.getWorld(MasterWorldGenerator.WORLD_NAME); + if (world == null) { + MasterWorldGenerator masterWorldGenerator = new MasterWorldGenerator(this); + masterWorldGenerator.checkMasterIslandWorld(); + } } @Override public void onDisable() { + // Cancel all running tasks + getServer().getScheduler().cancelTasks(this); + + // close data connection + } + + public void loadConfiguration() { + Path path = this.getDataFolder().toPath(); + Logger logger = this.getSLF4JLogger(); + pluginConfiguration = ConfigurationContainer.load(logger, path, PluginConfiguration.class, "config"); + databaseConfiguration = ConfigurationContainer.load(logger, path, DatabaseConfiguration.class, "database"); + messagesConfiguration = ConfigurationContainer.load(logger, path, MessageConfiguration.class, "messages"); + challengesConfiguration = ConfigurationContainer.load(logger, path, ChallengesConfiguration.class, "challenges"); + } + + public void loadCommands() { } + public void loadEventListeners() { + // TODO - Use reflection to load all of these + final PluginManager pm = getServer().getPluginManager(); + pm.registerEvents(new PlayerJoinListener(this), this); + } + } diff --git a/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometNetherGenerator.java b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometNetherGenerator.java new file mode 100644 index 0000000..57ff23c --- /dev/null +++ b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometNetherGenerator.java @@ -0,0 +1,17 @@ +package com.alttd.cometskyblock.worldgenerator; + +import org.bukkit.World; +import org.bukkit.generator.BlockPopulator; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class CometNetherGenerator extends CometVoidGenerator { + @Override + public @NotNull List getDefaultPopulators(World world) { + List populators = new ArrayList<>(1); + populators.add(new NetherIslandGenerator()); + return populators; + } +} \ No newline at end of file diff --git a/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometVoidGenerator.java b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometVoidGenerator.java index d5d9497..a4cb038 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometVoidGenerator.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/CometVoidGenerator.java @@ -9,7 +9,6 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -import java.util.Random; public class CometVoidGenerator extends ChunkGenerator { @@ -18,10 +17,6 @@ public class CometVoidGenerator extends ChunkGenerator { return new ArrayList<>(); } - @Override - public void generateSurface(@NotNull WorldInfo info, @NotNull Random random, int x, int z, @NotNull ChunkData data) { - } - @Override public BiomeProvider getDefaultBiomeProvider(WorldInfo worldInfo) { return worldInfo.vanillaBiomeProvider(); diff --git a/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/NetherIslandGenerator.java b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/NetherIslandGenerator.java new file mode 100644 index 0000000..2f065a1 --- /dev/null +++ b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/NetherIslandGenerator.java @@ -0,0 +1,15 @@ +package com.alttd.cometskyblock.worldgenerator; + +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.LimitedRegion; +import org.bukkit.generator.WorldInfo; +import org.jetbrains.annotations.NotNull; + +import java.util.Random; + +public class NetherIslandGenerator extends BlockPopulator { + + @Override + public void populate(@NotNull WorldInfo worldInfo, @NotNull Random random, int x, int z, @NotNull LimitedRegion limitedRegion) { + } +}