dang things r rlly starting to get blurry i think its wraps for 2 day

This commit is contained in:
2vb 2024-07-02 20:11:40 -07:00
parent 24e267b31b
commit 049b5da27c
4 changed files with 37 additions and 7 deletions

View File

@ -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");
}
}

View File

@ -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
}

View File

@ -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<Player> players;
private World gameWorld;
private CommandSender owner;
private GameState state;
private final List<Player> 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!");
}

View File

@ -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;
}