This commit is contained in:
parent
894b9c2fe0
commit
c34a2a4d55
3
pom.xml
3
pom.xml
|
@ -145,7 +145,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>xyz.twovb</groupId>
|
<groupId>xyz.twovb</groupId>
|
||||||
<artifactId>Toolbox</artifactId>
|
<artifactId>Toolbox</artifactId>
|
||||||
<version>0.2-FIX</version>
|
<version>0.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
|
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -153,7 +153,6 @@
|
||||||
<artifactId>snakeyaml</artifactId>
|
<artifactId>snakeyaml</artifactId>
|
||||||
<version>2.2</version>
|
<version>2.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,9 @@ import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler;
|
||||||
import xyz.twovb.sgm.commands.impl.LevelCommand;
|
import xyz.twovb.sgm.commands.impl.LevelCommand;
|
||||||
import xyz.twovb.sgm.commands.impl.SGMCommand;
|
import xyz.twovb.sgm.commands.impl.SGMCommand;
|
||||||
import xyz.twovb.sgm.games.GameManager;
|
import xyz.twovb.sgm.games.GameManager;
|
||||||
import xyz.twovb.sgm.games.impl.TestGame;
|
//import xyz.twovb.sgm.games.impl.TestGame;
|
||||||
|
import xyz.twovb.sgm.games.impl.*;
|
||||||
|
import xyz.twovb.sgm.levels.LevelManager;
|
||||||
import xyz.twovb.toolbox.managers.ConfigManager;
|
import xyz.twovb.toolbox.managers.ConfigManager;
|
||||||
import xyz.twovb.toolbox.managers.PlaceholderManager;
|
import xyz.twovb.toolbox.managers.PlaceholderManager;
|
||||||
import xyz.twovb.toolbox.utils.CustomLogger;
|
import xyz.twovb.toolbox.utils.CustomLogger;
|
||||||
|
@ -25,14 +27,12 @@ public final class SGM extends JavaPlugin {
|
||||||
@Getter
|
@Getter
|
||||||
private static SGM instance;
|
private static SGM instance;
|
||||||
private FileConfiguration BuildInfo;
|
private FileConfiguration BuildInfo;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private FileConfiguration Messages;
|
private FileConfiguration Messages;
|
||||||
@Getter
|
@Getter
|
||||||
private CustomLogger cLogger;
|
private CustomLogger cLogger;
|
||||||
|
@Getter
|
||||||
private ConfigManager configManager;
|
private ConfigManager configManager;
|
||||||
// @Getter
|
|
||||||
// private DatabaseManager databaseManager;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private GameManager gameManager;
|
private GameManager gameManager;
|
||||||
|
@ -45,7 +45,6 @@ public final class SGM extends JavaPlugin {
|
||||||
configManager = new ConfigManager(this);
|
configManager = new ConfigManager(this);
|
||||||
gameManager = new GameManager();
|
gameManager = new GameManager();
|
||||||
Messages = configManager.loadConfig("messages.yml");
|
Messages = configManager.loadConfig("messages.yml");
|
||||||
// this.saveDefaultConfig();
|
|
||||||
BuildInfo = new YamlConfiguration();
|
BuildInfo = new YamlConfiguration();
|
||||||
try {
|
try {
|
||||||
BuildInfo.load(Objects.requireNonNull(this.getTextResource("build-info.yml")));
|
BuildInfo.load(Objects.requireNonNull(this.getTextResource("build-info.yml")));
|
||||||
|
@ -54,6 +53,7 @@ public final class SGM extends JavaPlugin {
|
||||||
registerCommands();
|
registerCommands();
|
||||||
registerGames();
|
registerGames();
|
||||||
registerPlaceholders();
|
registerPlaceholders();
|
||||||
|
LevelManager.loadLevels();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerPlaceholders() {
|
private void registerPlaceholders() {
|
||||||
|
@ -70,26 +70,14 @@ public final class SGM extends JavaPlugin {
|
||||||
|
|
||||||
private void registerGames() {
|
private void registerGames() {
|
||||||
gameManager.registerGame(new TestGame());
|
gameManager.registerGame(new TestGame());
|
||||||
|
gameManager.registerGame(new TestGame1());
|
||||||
|
gameManager.registerGame(new TestGame2());
|
||||||
|
gameManager.registerGame(new TestGame3());
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void connectToDatabase() {
|
@Override
|
||||||
// databaseManager = new DatabaseManager();
|
public void onDisable() {
|
||||||
// try {
|
}
|
||||||
// databaseManager.connect(DatabaseManager.DatabaseType.SQLITE, this, "sgm");
|
|
||||||
// cLogger.log("Connected to database!");
|
|
||||||
// } catch (SQLException | ClassNotFoundException e) {
|
|
||||||
// throw new RuntimeException(e);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public void onDisable() {
|
|
||||||
// try {
|
|
||||||
// databaseManager.close();
|
|
||||||
// } catch (SQLException e) {
|
|
||||||
// cLogger.error(e);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,20 @@ public class SGMCommand {
|
||||||
@Execute
|
@Execute
|
||||||
void command(@Context CommandSender sender) {
|
void command(@Context CommandSender sender) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
StringBuilder gameBuilder = new StringBuilder();
|
||||||
builder.insert(0, SGM.getInstance().getMessages().getString("main-command.lines.1"));
|
builder.insert(0, SGM.getInstance().getMessages().getString("main-command.lines.1"));
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
builder.append(SGM.getInstance().getMessages().getString("main-command.lines.2"));
|
builder.append(SGM.getInstance().getMessages().getString("main-command.lines.2"));
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
builder.append(SGM.getInstance().getMessages().getString("main-command.lines.3"));
|
builder.append(SGM.getInstance().getMessages().getString("main-command.lines.3"));
|
||||||
|
builder.append("\n");
|
||||||
|
builder.append("Enabled games:");
|
||||||
|
builder.append("\n");
|
||||||
|
for (String game : SGM.getInstance().getGameManager().getRegisteredGames()) {
|
||||||
|
gameBuilder.append(game);
|
||||||
|
gameBuilder.append(", ");
|
||||||
|
}
|
||||||
|
builder.append(gameBuilder.toString());
|
||||||
String string = builder.toString();
|
String string = builder.toString();
|
||||||
sender.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(string, sender)));
|
sender.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(string, sender)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,10 @@ public class GameManager {
|
||||||
private static Map<UUID, Minigame> activeGames = new HashMap<UUID, Minigame>();
|
private static Map<UUID, Minigame> activeGames = new HashMap<UUID, Minigame>();
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private ArrayList<String> registeredGames = new ArrayList<>();
|
private ArrayList<String> registeredGames = new ArrayList<String>();
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public Map<String, String> enabledLevels = new HashMap<String, String>();
|
||||||
|
|
||||||
public static Minigame findGame(UUID gameId) {
|
public static Minigame findGame(UUID gameId) {
|
||||||
return activeGames.get(gameId);
|
return activeGames.get(gameId);
|
||||||
|
|
129
src/main/java/xyz/twovb/sgm/games/impl/TestGame1.java
Normal file
129
src/main/java/xyz/twovb/sgm/games/impl/TestGame1.java
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
package xyz.twovb.sgm.games.impl;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 26/6/2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import xyz.twovb.sgm.SGM;
|
||||||
|
import xyz.twovb.sgm.games.GameManager;
|
||||||
|
import xyz.twovb.sgm.games.Minigame;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class TestGame1 implements Minigame {
|
||||||
|
|
||||||
|
final static String name = "TestGame1";
|
||||||
|
private final UUID uuid;
|
||||||
|
private CommandSender owner;
|
||||||
|
private GameState state;
|
||||||
|
private final List<Player> players;
|
||||||
|
|
||||||
|
public TestGame1() {
|
||||||
|
this.uuid = UUID.randomUUID();
|
||||||
|
this.state = GameState.PRESTART;
|
||||||
|
this.players = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(CommandSender owner) {
|
||||||
|
// Perform initialization logic here
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
|
||||||
|
this.owner = owner;
|
||||||
|
state = GameState.READY;
|
||||||
|
owner.sendMessage("A new " + name + " instance with ID " + uuid + " has been created and is now ready!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() {
|
||||||
|
if (state == GameState.PRESTART) {
|
||||||
|
state = GameState.STARTED;
|
||||||
|
sendMessageToAllPlayers("The game has started!");
|
||||||
|
for (Player player : players) {
|
||||||
|
player.teleport(player.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().runTaskTimer(SGM.getInstance(), this::onTick, 0L, 1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
// Stop game logic
|
||||||
|
state = GameState.ENDING;
|
||||||
|
Player winner;
|
||||||
|
if (players.size() <= 1) {
|
||||||
|
winner = players.get(0);
|
||||||
|
winner.sendMessage("Congratulations on winning the game!");
|
||||||
|
}
|
||||||
|
players.clear(); // Clear player list
|
||||||
|
GameManager.getActiveGames().remove(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
players.add(player);
|
||||||
|
sendMessageToAllPlayers(player.getName() + " has joined the game!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
players.remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
removePlayer(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
||||||
|
event.setDeathMessage("");
|
||||||
|
removePlayer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Player> getPlayers() {
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UUID getGameId() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GameState getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandSender getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick() {
|
||||||
|
if (state == GameState.STARTED && players.size() <= 1) {
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
129
src/main/java/xyz/twovb/sgm/games/impl/TestGame2.java
Normal file
129
src/main/java/xyz/twovb/sgm/games/impl/TestGame2.java
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
package xyz.twovb.sgm.games.impl;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 26/6/2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import xyz.twovb.sgm.SGM;
|
||||||
|
import xyz.twovb.sgm.games.GameManager;
|
||||||
|
import xyz.twovb.sgm.games.Minigame;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class TestGame2 implements Minigame {
|
||||||
|
|
||||||
|
final static String name = "TestGame2";
|
||||||
|
private final UUID uuid;
|
||||||
|
private CommandSender owner;
|
||||||
|
private GameState state;
|
||||||
|
private final List<Player> players;
|
||||||
|
|
||||||
|
public TestGame2() {
|
||||||
|
this.uuid = UUID.randomUUID();
|
||||||
|
this.state = GameState.PRESTART;
|
||||||
|
this.players = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(CommandSender owner) {
|
||||||
|
// Perform initialization logic here
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
|
||||||
|
this.owner = owner;
|
||||||
|
state = GameState.READY;
|
||||||
|
owner.sendMessage("A new " + name + " instance with ID " + uuid + " has been created and is now ready!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() {
|
||||||
|
if (state == GameState.PRESTART) {
|
||||||
|
state = GameState.STARTED;
|
||||||
|
sendMessageToAllPlayers("The game has started!");
|
||||||
|
for (Player player : players) {
|
||||||
|
player.teleport(player.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().runTaskTimer(SGM.getInstance(), this::onTick, 0L, 1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
// Stop game logic
|
||||||
|
state = GameState.ENDING;
|
||||||
|
Player winner;
|
||||||
|
if (players.size() <= 1) {
|
||||||
|
winner = players.get(0);
|
||||||
|
winner.sendMessage("Congratulations on winning the game!");
|
||||||
|
}
|
||||||
|
players.clear(); // Clear player list
|
||||||
|
GameManager.getActiveGames().remove(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
players.add(player);
|
||||||
|
sendMessageToAllPlayers(player.getName() + " has joined the game!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
players.remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
removePlayer(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
||||||
|
event.setDeathMessage("");
|
||||||
|
removePlayer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Player> getPlayers() {
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UUID getGameId() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GameState getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandSender getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick() {
|
||||||
|
if (state == GameState.STARTED && players.size() <= 1) {
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
129
src/main/java/xyz/twovb/sgm/games/impl/TestGame3.java
Normal file
129
src/main/java/xyz/twovb/sgm/games/impl/TestGame3.java
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
package xyz.twovb.sgm.games.impl;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 26/6/2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import xyz.twovb.sgm.SGM;
|
||||||
|
import xyz.twovb.sgm.games.GameManager;
|
||||||
|
import xyz.twovb.sgm.games.Minigame;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class TestGame3 implements Minigame {
|
||||||
|
|
||||||
|
final static String name = "TestGame3";
|
||||||
|
private final UUID uuid;
|
||||||
|
private CommandSender owner;
|
||||||
|
private GameState state;
|
||||||
|
private final List<Player> players;
|
||||||
|
|
||||||
|
public TestGame3() {
|
||||||
|
this.uuid = UUID.randomUUID();
|
||||||
|
this.state = GameState.PRESTART;
|
||||||
|
this.players = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(CommandSender owner) {
|
||||||
|
// Perform initialization logic here
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
|
||||||
|
this.owner = owner;
|
||||||
|
state = GameState.READY;
|
||||||
|
owner.sendMessage("A new " + name + " instance with ID " + uuid + " has been created and is now ready!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() {
|
||||||
|
if (state == GameState.PRESTART) {
|
||||||
|
state = GameState.STARTED;
|
||||||
|
sendMessageToAllPlayers("The game has started!");
|
||||||
|
for (Player player : players) {
|
||||||
|
player.teleport(player.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().runTaskTimer(SGM.getInstance(), this::onTick, 0L, 1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
// Stop game logic
|
||||||
|
state = GameState.ENDING;
|
||||||
|
Player winner;
|
||||||
|
if (players.size() <= 1) {
|
||||||
|
winner = players.get(0);
|
||||||
|
winner.sendMessage("Congratulations on winning the game!");
|
||||||
|
}
|
||||||
|
players.clear(); // Clear player list
|
||||||
|
GameManager.getActiveGames().remove(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
players.add(player);
|
||||||
|
sendMessageToAllPlayers(player.getName() + " has joined the game!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
players.remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
removePlayer(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
||||||
|
event.setDeathMessage("");
|
||||||
|
removePlayer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Player> getPlayers() {
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UUID getGameId() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GameState getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandSender getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick() {
|
||||||
|
if (state == GameState.STARTED && players.size() <= 1) {
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ package xyz.twovb.sgm.levels;
|
||||||
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.yaml.snakeyaml.DumperOptions;
|
import org.yaml.snakeyaml.DumperOptions;
|
||||||
import org.yaml.snakeyaml.Yaml;
|
import org.yaml.snakeyaml.Yaml;
|
||||||
import xyz.twovb.sgm.SGM;
|
import xyz.twovb.sgm.SGM;
|
||||||
|
@ -20,6 +21,45 @@ public class LevelManager {
|
||||||
|
|
||||||
public static final String path = SGM.getInstance().getDataFolder().getPath() + "/levels/";
|
public static final String path = SGM.getInstance().getDataFolder().getPath() + "/levels/";
|
||||||
|
|
||||||
|
public static void loadLevels() {
|
||||||
|
// List all files (worlds) in the folder
|
||||||
|
File folder = new File(path);
|
||||||
|
File[] files = folder.listFiles();
|
||||||
|
if (files != null) {
|
||||||
|
for (File file : files) {
|
||||||
|
if (file.isDirectory()) {
|
||||||
|
// Check if sgm.yml exists in the world directory
|
||||||
|
File configFile = new File(file, "sgm.yml");
|
||||||
|
if (configFile.exists()) {
|
||||||
|
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
SGM.getInstance().getGameManager().enabledLevels.put(config.getString("game"), config.getString("name"));
|
||||||
|
// Load the world if sgm.yml exists
|
||||||
|
loadWorld(file.getName());
|
||||||
|
} else {
|
||||||
|
SGM.getInstance().getCLogger().log("Skipping directory " + file.getName() + ": sgm.yml not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void loadWorld(String worldName) {
|
||||||
|
// Check if the world is already loaded
|
||||||
|
if (Bukkit.getWorld(worldName) != null) {
|
||||||
|
SGM.getInstance().getCLogger().log("World " + worldName + " is already loaded.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the world
|
||||||
|
WorldCreator wc = new WorldCreator(path + worldName, new NamespacedKey(SGM.getInstance(), "level_" + worldName));
|
||||||
|
World world = wc.createWorld();
|
||||||
|
if (world != null) {
|
||||||
|
SGM.getInstance().getCLogger().log("Loaded world: " + worldName);
|
||||||
|
} else {
|
||||||
|
SGM.getInstance().getCLogger().error("Failed to load world: " + worldName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static CreationResult createLevel(String name, String game) {
|
public static CreationResult createLevel(String name, String game) {
|
||||||
File level = new File(path + name);
|
File level = new File(path + name);
|
||||||
if (!SGM.getInstance().getGameManager().getRegisteredGames().contains(game.toLowerCase())) {
|
if (!SGM.getInstance().getGameManager().getRegisteredGames().contains(game.toLowerCase())) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user