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 lombok.Getter;
import org.bukkit.NamespacedKey;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.twovb.sgm.SGM; import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.levels.LevelManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -43,11 +47,20 @@ public class GameManager {
return false; return false;
} }
public void createGame(Minigame game, CommandSender owner) { public void createGame(Minigame game, CommandSender owner, String level) {
game.init(owner); // World world = createGameWorld(level);
game.init(owner, level);
activeGames.put(game.getGameId(), game); 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) { public void addPlayerToGame(Player player, UUID gameId) {
Minigame game = findGame(gameId); Minigame game = findGame(gameId);
if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player) && !isInGame(player)) { if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player) && !isInGame(player)) {
@ -64,7 +77,7 @@ public class GameManager {
registeredGames.add(game.getName().toLowerCase()); registeredGames.add(game.getName().toLowerCase());
SGM.getInstance().getCLogger().log("Registered game " + game.getName()); SGM.getInstance().getCLogger().log("Registered game " + game.getName());
SGM.getInstance().getCLogger().log(registeredGames); 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 * 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.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.levels.LevelManager;
import xyz.twovb.toolbox.api.CustomPlayer; import xyz.twovb.toolbox.api.CustomPlayer;
import java.util.List; import java.util.List;
@ -14,7 +19,7 @@ import java.util.UUID;
public interface Minigame extends Listener { public interface Minigame extends Listener {
void init(CommandSender owner); void init(CommandSender owner, String world);
void start(); 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 { enum GameState {
PRESTART, READY, STARTED, ENDING PRESTART, READY, STARTED, ENDING
} }

View File

@ -5,6 +5,7 @@ package xyz.twovb.sgm.games.impl;
*/ */
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -22,9 +23,10 @@ public class TestGame implements Minigame {
final static String name = "TestGame"; final static String name = "TestGame";
private final UUID uuid; private final UUID uuid;
private final List<Player> players;
private World gameWorld;
private CommandSender owner; private CommandSender owner;
private GameState state; private GameState state;
private final List<Player> players;
public TestGame() { public TestGame() {
this.uuid = UUID.randomUUID(); this.uuid = UUID.randomUUID();
@ -32,10 +34,11 @@ public class TestGame implements Minigame {
this.players = new ArrayList<>(); this.players = new ArrayList<>();
} }
public void init(CommandSender owner) { public void init(CommandSender owner, String world) {
// Perform initialization logic here // Perform initialization logic here
Bukkit.getPluginManager().registerEvents(this, SGM.getInstance()); Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
this.owner = owner; this.owner = owner;
gameWorld = createGameWorld(world);
state = GameState.READY; state = GameState.READY;
owner.sendMessage("A new " + name + " instance with ID " + uuid + " has been created and is now 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 @Override
public void addPlayer(Player player) { public void addPlayer(Player player) {
players.add(player); players.add(player);
player.teleport(gameWorld.getSpawnLocation());
sendMessageToAllPlayers(player.getName() + " has joined the game!"); sendMessageToAllPlayers(player.getName() + " has joined the game!");
} }

View File

@ -27,7 +27,7 @@ public class LevelManager {
private static void loadWorld(String worldName) { private static void loadWorld(String worldName) {
// Check if the world is already loaded // 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."); SGM.getInstance().getCLogger().log("World " + worldName + " is already loaded.");
return; return;
} }