From 3ea2b796a5b94bbf4acb304bc388fd0ce48678c1 Mon Sep 17 00:00:00 2001
From: 2vb <2vb@protonmail.com>
Date: Tue, 2 Jul 2024 20:54:31 -0700
Subject: [PATCH] idk what im doing rn but just in case smth breaks
---
pom.xml | 7 ++++++
.../twovb/sgm/commands/impl/GameCommand.java | 13 ++++++++++-
.../twovb/sgm/commands/impl/SGMCommand.java | 10 +++------
.../java/xyz/twovb/sgm/games/GameManager.java | 10 ++++++++-
.../java/xyz/twovb/sgm/games/Minigame.java | 22 ++++++++++++++++---
.../xyz/twovb/sgm/games/impl/TestGame.java | 5 +++--
.../xyz/twovb/sgm/levels/LevelManager.java | 4 +++-
7 files changed, 56 insertions(+), 15 deletions(-)
diff --git a/pom.xml b/pom.xml
index 3f330b7..0ce1bf7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -153,6 +153,13 @@
snakeyaml
2.2
+
+
+ commons-io
+ commons-io
+ 2.16.1
+
+
diff --git a/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java b/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java
index f8bf2d3..f2a2f3e 100644
--- a/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java
+++ b/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java
@@ -12,7 +12,11 @@ import dev.rollczi.litecommands.annotations.permission.Permission;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import xyz.twovb.sgm.SGM;
+import xyz.twovb.sgm.games.impl.TestGame;
import xyz.twovb.toolbox.api.CustomPlayer;
+import xyz.twovb.toolbox.utils.ChatUtils;
+
+import java.util.UUID;
@Command(name = "game")
public class GameCommand {
@@ -29,13 +33,20 @@ public class GameCommand {
builder.append(", ");
}
}
- sender.sendMessage(builder.toString());
+ sender.sendMessage(ChatUtils.translate(builder.toString()));
}
@Execute(name = "start")
@Permission("sgm.games.start")
void game(@Context Player player, @Arg("name") String name) {
CustomPlayer cPlayer = new CustomPlayer(player);
+ SGM.getInstance().getGameManager().createGame(new TestGame(), player, name);
+ }
+
+ @Execute(name = "join")
+ void join(@Context Player player, @Arg("id") String id) {
+ CustomPlayer cPlayer = new CustomPlayer(player);
+ SGM.getInstance().getGameManager().addPlayerToGame(player, UUID.fromString(id));
}
}
diff --git a/src/main/java/xyz/twovb/sgm/commands/impl/SGMCommand.java b/src/main/java/xyz/twovb/sgm/commands/impl/SGMCommand.java
index 6348676..68017ec 100644
--- a/src/main/java/xyz/twovb/sgm/commands/impl/SGMCommand.java
+++ b/src/main/java/xyz/twovb/sgm/commands/impl/SGMCommand.java
@@ -22,15 +22,11 @@ public class SGMCommand {
builder.append("\n");
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();
sender.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(string, sender)));
}
+ @Execute(name = "a")
+ void a(@Context CommandSender sender) {}
+
}
diff --git a/src/main/java/xyz/twovb/sgm/games/GameManager.java b/src/main/java/xyz/twovb/sgm/games/GameManager.java
index a8297fe..940daea 100644
--- a/src/main/java/xyz/twovb/sgm/games/GameManager.java
+++ b/src/main/java/xyz/twovb/sgm/games/GameManager.java
@@ -12,7 +12,10 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.levels.LevelManager;
+import xyz.twovb.toolbox.managers.PlaceholderManager;
+import xyz.twovb.toolbox.utils.ChatUtils;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@@ -49,7 +52,12 @@ public class GameManager {
public void createGame(Minigame game, CommandSender owner, String level) {
// World world = createGameWorld(level);
- game.init(owner, level);
+ try {
+ game.init(owner, level);
+ } catch (IOException e) {
+ SGM.getInstance().getCLogger().error(e.getMessage());
+ owner.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.game.cant-start"), owner)));
+ }
activeGames.put(game.getGameId(), game);
}
diff --git a/src/main/java/xyz/twovb/sgm/games/Minigame.java b/src/main/java/xyz/twovb/sgm/games/Minigame.java
index c8a78d7..49f2061 100644
--- a/src/main/java/xyz/twovb/sgm/games/Minigame.java
+++ b/src/main/java/xyz/twovb/sgm/games/Minigame.java
@@ -4,6 +4,8 @@ package xyz.twovb.sgm.games;
* Created by 2vb - 4/6/2024
*/
+import org.apache.commons.io.FileUtils;
+import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey;
import org.bukkit.World;
import org.bukkit.WorldCreator;
@@ -14,12 +16,14 @@ import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.levels.LevelManager;
import xyz.twovb.toolbox.api.CustomPlayer;
+import java.io.File;
+import java.io.IOException;
import java.util.List;
import java.util.UUID;
public interface Minigame extends Listener {
- void init(CommandSender owner, String world);
+ void init(CommandSender owner, String world) throws IOException;
void start();
@@ -48,8 +52,20 @@ public interface Minigame extends Listener {
}
}
- default World createGameWorld(String name) {
- WorldCreator wc = new WorldCreator(LevelManager.path + name, new NamespacedKey(SGM.getInstance(), name + "-" + UUID.randomUUID()));
+ default World createGameWorld(String name, UUID id) throws IOException {
+ File levelDir = new File(LevelManager.path + name);
+// if (Bukkit.getWorld(new NamespacedKey(SGM.getInstance(), "level_" + name)) != null) {
+// World levelWorld = Bukkit.getWorld(new NamespacedKey(SGM.getInstance(), "level_" + name));
+// if (levelWorld != null && levelWorld.getPlayerCount() == 0 && !Bukkit.isTickingWorlds()) {
+// Bukkit.getServer().unloadWorld(levelWorld, true);
+// } else {
+// return null;
+// }
+// }
+ String tempName = name + "_" + id;
+ File tempDir = new File(LevelManager.gamePath + tempName);
+ FileUtils.copyDirectory(levelDir, tempDir);
+ WorldCreator wc = new WorldCreator(LevelManager.gamePath + name, new NamespacedKey(SGM.getInstance(), name + "-" + UUID.randomUUID()));
World world = wc.createWorld();
if (world == null) return null;
world.setAutoSave(false);
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 af023e1..eb388c9 100644
--- a/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java
+++ b/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java
@@ -15,6 +15,7 @@ import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.games.GameManager;
import xyz.twovb.sgm.games.Minigame;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -34,11 +35,11 @@ public class TestGame implements Minigame {
this.players = new ArrayList<>();
}
- public void init(CommandSender owner, String world) {
+ public void init(CommandSender owner, String world) throws IOException {
// Perform initialization logic here
Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
this.owner = owner;
- gameWorld = createGameWorld(world);
+ gameWorld = createGameWorld(world, uuid);
state = GameState.READY;
owner.sendMessage("A new " + name + " instance with ID " + uuid + " has been created and is now ready!");
}
diff --git a/src/main/java/xyz/twovb/sgm/levels/LevelManager.java b/src/main/java/xyz/twovb/sgm/levels/LevelManager.java
index 97315ea..be0165b 100644
--- a/src/main/java/xyz/twovb/sgm/levels/LevelManager.java
+++ b/src/main/java/xyz/twovb/sgm/levels/LevelManager.java
@@ -23,6 +23,8 @@ public class LevelManager {
public static final String path = SGM.getInstance().getDataFolder().getPath() + "/levels/";
+ public static final String gamePath = SGM.getInstance().getDataFolder().getPath() + "/games/";
+
public HashMap> enabledMaps = new HashMap<>();
private static void loadWorld(String worldName) {
@@ -59,7 +61,7 @@ public class LevelManager {
return CreationResult.UNKNOWN;
}
Location location = new Location(world, 0, 0, 0);
- Block block = location.subtract(0, 1, 0).getBlock();
+ Block block = location.subtract(0, 2, 0).getBlock();
block.setType(Material.STONE);
world.setSpawnLocation(location);
world.setSpawnFlags(false, false);