From fdd5c3d58a1bcb91f06ebe6f9dac87e6a5262831 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Wed, 24 Jan 2024 16:21:18 +0100 Subject: [PATCH] Add worldgenerator --- .../cometskyblock/CometSkyBlockPlugin.java | 7 --- .../worldgenerator/MasterWorldGenerator.java | 56 +++++++++++++++++++ 2 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/MasterWorldGenerator.java diff --git a/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java b/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java index 2bb7aa9..265313f 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java @@ -48,13 +48,6 @@ public class CometSkyBlockPlugin extends JavaPlugin implements CometSkyBlockAPI // 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 diff --git a/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/MasterWorldGenerator.java b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/MasterWorldGenerator.java new file mode 100644 index 0000000..cc4c853 --- /dev/null +++ b/plugin/src/main/java/com/alttd/cometskyblock/worldgenerator/MasterWorldGenerator.java @@ -0,0 +1,56 @@ +package com.alttd.cometskyblock.worldgenerator; + +import com.alttd.cometskyblock.CometSkyBlockPlugin; +import com.alttd.cometskyblock.configuration.PluginConfiguration; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.WorldCreator; + +/** + * This is the main island that will be used to create all the following islands for players. + */ +public class MasterWorldGenerator { + + CometSkyBlockPlugin plugin; + public static final String WORLD_NAME = "CometSkyBlockMasterWorld"; + + public MasterWorldGenerator(CometSkyBlockPlugin plugin) { + this.plugin = plugin; + } + + public void checkMasterIslandWorld() { + if (plugin.getServer().getWorld(WORLD_NAME) == null) { + createMasterIslandWorld(result -> { + plugin.getLogger().info(WORLD_NAME + " has been created"); + }); + } + } + + void createMasterIslandWorld(Callback callback) { + plugin.getServer().getScheduler().runTask(plugin, () -> { + WorldCreator worldCreator = new WorldCreator(WORLD_NAME); + worldCreator.generator(new CometIslandGenerator()); + worldCreator.environment(World.Environment.NORMAL); + worldCreator.generateStructures(true); + + World world = worldCreator.createWorld(); + if (world == null) { + plugin.getLogger().warning("Could not create CometSkyBlock MasterIslandWorld! Does the world(" + WORLD_NAME + ") already exist?"); + return; + } + PluginConfiguration pluginConfiguration = plugin.getPluginConfiguration().get(); + world.getWorldBorder().setCenter(pluginConfiguration.getMasterWorldGenerator().getCenterX(), pluginConfiguration.getMasterWorldGenerator().getCenterZ()); + world.getWorldBorder().setSize(pluginConfiguration.getMasterWorldGenerator().getSize()); + world.setAutoSave(true); + world.setSpawnLocation(pluginConfiguration.getMasterWorldGenerator().getSpawnX(), pluginConfiguration.getMasterWorldGenerator().getSpawnY(), pluginConfiguration.getMasterWorldGenerator().getSpawnz()); // TODO + + // TODO Load a schematic into this world? + + Bukkit.getScheduler().runTask(plugin, () -> callback.onQueryDone(WORLD_NAME)); + }); + } + + public interface Callback { + void onQueryDone(String result); + } +}