diff --git a/src/main/java/xyz/twovb/sgm/games/GameManager.java b/src/main/java/xyz/twovb/sgm/games/GameManager.java index 70a68b2..a8297fe 100644 --- a/src/main/java/xyz/twovb/sgm/games/GameManager.java +++ b/src/main/java/xyz/twovb/sgm/games/GameManager.java @@ -5,9 +5,13 @@ package xyz.twovb.sgm.games; */ import lombok.Getter; +import org.bukkit.NamespacedKey; +import org.bukkit.World; +import org.bukkit.WorldCreator; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import xyz.twovb.sgm.SGM; +import xyz.twovb.sgm.levels.LevelManager; import java.util.ArrayList; import java.util.HashMap; @@ -43,11 +47,20 @@ public class GameManager { return false; } - public void createGame(Minigame game, CommandSender owner) { - game.init(owner); + public void createGame(Minigame game, CommandSender owner, String level) { +// World world = createGameWorld(level); + game.init(owner, level); activeGames.put(game.getGameId(), game); } +// private World createGameWorld(String name) { +// WorldCreator wc = new WorldCreator(LevelManager.path + name, new NamespacedKey(SGM.getInstance(), name + "-" + UUID.randomUUID())); +// World world = wc.createWorld(); +// if (world == null) return null; +// world.setAutoSave(false); +// return world; +// } + public void addPlayerToGame(Player player, UUID gameId) { Minigame game = findGame(gameId); if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player) && !isInGame(player)) { @@ -64,7 +77,7 @@ public class GameManager { registeredGames.add(game.getName().toLowerCase()); SGM.getInstance().getCLogger().log("Registered game " + game.getName()); SGM.getInstance().getCLogger().log(registeredGames); - registeredGames.add("ctb"); +// registeredGames.add("ctb"); } } \ No newline at end of file diff --git a/src/main/java/xyz/twovb/sgm/games/Minigame.java b/src/main/java/xyz/twovb/sgm/games/Minigame.java index 1d15e40..c8a78d7 100644 --- a/src/main/java/xyz/twovb/sgm/games/Minigame.java +++ b/src/main/java/xyz/twovb/sgm/games/Minigame.java @@ -4,9 +4,14 @@ package xyz.twovb.sgm.games; * Created by 2vb - 4/6/2024 */ +import org.bukkit.NamespacedKey; +import org.bukkit.World; +import org.bukkit.WorldCreator; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.Listener; +import xyz.twovb.sgm.SGM; +import xyz.twovb.sgm.levels.LevelManager; import xyz.twovb.toolbox.api.CustomPlayer; import java.util.List; @@ -14,7 +19,7 @@ import java.util.UUID; public interface Minigame extends Listener { - void init(CommandSender owner); + void init(CommandSender owner, String world); void start(); @@ -43,6 +48,14 @@ public interface Minigame extends Listener { } } + default World createGameWorld(String name) { + WorldCreator wc = new WorldCreator(LevelManager.path + name, new NamespacedKey(SGM.getInstance(), name + "-" + UUID.randomUUID())); + World world = wc.createWorld(); + if (world == null) return null; + world.setAutoSave(false); + return world; + } + enum GameState { PRESTART, READY, STARTED, ENDING } diff --git a/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java b/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java index 8544c9e..af023e1 100644 --- a/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java +++ b/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java @@ -5,6 +5,7 @@ package xyz.twovb.sgm.games.impl; */ import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -22,9 +23,10 @@ public class TestGame implements Minigame { final static String name = "TestGame"; private final UUID uuid; + private final List players; + private World gameWorld; private CommandSender owner; private GameState state; - private final List players; public TestGame() { this.uuid = UUID.randomUUID(); @@ -32,10 +34,11 @@ public class TestGame implements Minigame { this.players = new ArrayList<>(); } - public void init(CommandSender owner) { + public void init(CommandSender owner, String world) { // Perform initialization logic here Bukkit.getPluginManager().registerEvents(this, SGM.getInstance()); this.owner = owner; + gameWorld = createGameWorld(world); state = GameState.READY; owner.sendMessage("A new " + name + " instance with ID " + uuid + " has been created and is now ready!"); } @@ -68,6 +71,7 @@ public class TestGame implements Minigame { @Override public void addPlayer(Player player) { players.add(player); + player.teleport(gameWorld.getSpawnLocation()); sendMessageToAllPlayers(player.getName() + " has joined the game!"); } diff --git a/src/main/java/xyz/twovb/sgm/levels/LevelManager.java b/src/main/java/xyz/twovb/sgm/levels/LevelManager.java index e7fe3bc..97315ea 100644 --- a/src/main/java/xyz/twovb/sgm/levels/LevelManager.java +++ b/src/main/java/xyz/twovb/sgm/levels/LevelManager.java @@ -27,7 +27,7 @@ public class LevelManager { private static void loadWorld(String worldName) { // Check if the world is already loaded - if (Bukkit.getWorld(worldName) != null) { + if (Bukkit.getWorld(new NamespacedKey(SGM.getInstance(), "level_" + worldName)) != null) { SGM.getInstance().getCLogger().log("World " + worldName + " is already loaded."); return; }