idk what im doing rn but just in case smth breaks

This commit is contained in:
2vb 2024-07-02 20:54:31 -07:00
parent 049b5da27c
commit 3ea2b796a5
7 changed files with 56 additions and 15 deletions

View File

@ -153,6 +153,13 @@
<artifactId>snakeyaml</artifactId> <artifactId>snakeyaml</artifactId>
<version>2.2</version> <version>2.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.16.1</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -12,7 +12,11 @@ import dev.rollczi.litecommands.annotations.permission.Permission;
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.games.impl.TestGame;
import xyz.twovb.toolbox.api.CustomPlayer; import xyz.twovb.toolbox.api.CustomPlayer;
import xyz.twovb.toolbox.utils.ChatUtils;
import java.util.UUID;
@Command(name = "game") @Command(name = "game")
public class GameCommand { public class GameCommand {
@ -29,13 +33,20 @@ public class GameCommand {
builder.append(", "); builder.append(", ");
} }
} }
sender.sendMessage(builder.toString()); sender.sendMessage(ChatUtils.translate(builder.toString()));
} }
@Execute(name = "start") @Execute(name = "start")
@Permission("sgm.games.start") @Permission("sgm.games.start")
void game(@Context Player player, @Arg("name") String name) { void game(@Context Player player, @Arg("name") String name) {
CustomPlayer cPlayer = new CustomPlayer(player); 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));
} }
} }

View File

@ -22,15 +22,11 @@ public class SGMCommand {
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("\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)));
} }
@Execute(name = "a")
void a(@Context CommandSender sender) {}
} }

View File

@ -12,7 +12,10 @@ 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 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -49,7 +52,12 @@ public class GameManager {
public void createGame(Minigame game, CommandSender owner, String level) { public void createGame(Minigame game, CommandSender owner, String level) {
// World world = createGameWorld(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); activeGames.put(game.getGameId(), game);
} }

View File

@ -4,6 +4,8 @@ package xyz.twovb.sgm.games;
* Created by 2vb - 4/6/2024 * Created by 2vb - 4/6/2024
*/ */
import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.WorldCreator; import org.bukkit.WorldCreator;
@ -14,12 +16,14 @@ import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.levels.LevelManager; import xyz.twovb.sgm.levels.LevelManager;
import xyz.twovb.toolbox.api.CustomPlayer; import xyz.twovb.toolbox.api.CustomPlayer;
import java.io.File;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
public interface Minigame extends Listener { public interface Minigame extends Listener {
void init(CommandSender owner, String world); void init(CommandSender owner, String world) throws IOException;
void start(); void start();
@ -48,8 +52,20 @@ public interface Minigame extends Listener {
} }
} }
default World createGameWorld(String name) { default World createGameWorld(String name, UUID id) throws IOException {
WorldCreator wc = new WorldCreator(LevelManager.path + name, new NamespacedKey(SGM.getInstance(), name + "-" + UUID.randomUUID())); 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(); World world = wc.createWorld();
if (world == null) return null; if (world == null) return null;
world.setAutoSave(false); world.setAutoSave(false);

View File

@ -15,6 +15,7 @@ import xyz.twovb.sgm.SGM;
import xyz.twovb.sgm.games.GameManager; import xyz.twovb.sgm.games.GameManager;
import xyz.twovb.sgm.games.Minigame; import xyz.twovb.sgm.games.Minigame;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@ -34,11 +35,11 @@ public class TestGame implements Minigame {
this.players = new ArrayList<>(); this.players = new ArrayList<>();
} }
public void init(CommandSender owner, String world) { public void init(CommandSender owner, String world) throws IOException {
// 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); gameWorld = createGameWorld(world, uuid);
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!");
} }

View File

@ -23,6 +23,8 @@ 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 final String gamePath = SGM.getInstance().getDataFolder().getPath() + "/games/";
public HashMap<String, List<String>> enabledMaps = new HashMap<>(); public HashMap<String, List<String>> enabledMaps = new HashMap<>();
private static void loadWorld(String worldName) { private static void loadWorld(String worldName) {
@ -59,7 +61,7 @@ public class LevelManager {
return CreationResult.UNKNOWN; return CreationResult.UNKNOWN;
} }
Location location = new Location(world, 0, 0, 0); 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); block.setType(Material.STONE);
world.setSpawnLocation(location); world.setSpawnLocation(location);
world.setSpawnFlags(false, false); world.setSpawnFlags(false, false);