From 5d0035282d6fcc61fab4809ef3a7cf54085ce716 Mon Sep 17 00:00:00 2001 From: 2vb <2vb@protonmail.com> Date: Wed, 26 Jun 2024 00:21:19 -0700 Subject: [PATCH] a --- pom.xml | 2 +- src/main/java/xyz/twovb/sgm/SGM.java | 28 ++-- .../java/xyz/twovb/sgm/games/Minigame.java | 6 +- .../xyz/twovb/sgm/games/impl/TestGame.java | 129 ++++++++++++++++++ 4 files changed, 144 insertions(+), 21 deletions(-) create mode 100644 src/main/java/xyz/twovb/sgm/games/impl/TestGame.java diff --git a/pom.xml b/pom.xml index ae7adb9..fa81e02 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,7 @@ xyz.twovb Toolbox - 0.1 + 0.2 diff --git a/src/main/java/xyz/twovb/sgm/SGM.java b/src/main/java/xyz/twovb/sgm/SGM.java index ac664fc..0d56acd 100644 --- a/src/main/java/xyz/twovb/sgm/SGM.java +++ b/src/main/java/xyz/twovb/sgm/SGM.java @@ -7,14 +7,14 @@ import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; -import xyz.twovb.sgm.commands.impl.LevelCommand; -import xyz.twovb.sgm.commands.impl.SGMCommand; import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler; import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler; +import xyz.twovb.sgm.commands.impl.LevelCommand; +import xyz.twovb.sgm.commands.impl.SGMCommand; import xyz.twovb.toolbox.managers.ConfigManager; -import xyz.twovb.toolbox.managers.PlaceholderManager; import xyz.twovb.toolbox.managers.DatabaseManager; -import xyz.twovb.toolbox.utils.ToolLogger; +import xyz.twovb.toolbox.managers.PlaceholderManager; +import xyz.twovb.toolbox.utils.CustomLogger; import java.io.IOException; import java.sql.SQLException; @@ -29,7 +29,7 @@ public final class SGM extends JavaPlugin { @Getter private FileConfiguration Messages; @Getter - private ToolLogger toolLogger; + private CustomLogger cLogger; private ConfigManager configManager; @Getter private DatabaseManager databaseManager; @@ -38,14 +38,15 @@ public final class SGM extends JavaPlugin { @Override public void onEnable() { instance = this; - toolLogger = new ToolLogger(this); + cLogger = new CustomLogger(this); configManager = new ConfigManager(this); Messages = configManager.loadConfig("messages.yml"); this.saveDefaultConfig(); BuildInfo = new YamlConfiguration(); try { BuildInfo.load(Objects.requireNonNull(this.getTextResource("build-info.yml"))); - } catch (IOException | InvalidConfigurationException ignored) {} + } catch (IOException | InvalidConfigurationException ignored) { + } registerCommands(); registerPlaceholders(); connectToDatabase(); @@ -55,7 +56,7 @@ public final class SGM extends JavaPlugin { databaseManager = new DatabaseManager(); try { databaseManager.connect(DatabaseManager.DatabaseType.SQLITE, this, "sgm"); - toolLogger.log("Connected to database!"); + cLogger.log("Connected to database!"); } catch (SQLException | ClassNotFoundException e) { throw new RuntimeException(e); } @@ -70,14 +71,7 @@ public final class SGM extends JavaPlugin { } private void registerCommands() { - LiteCommandsBukkit.builder() -// .settings(settings -> settings.fallbackPrefix("sgm").nativePermissions(false)) - .commands(new SGMCommand(), new LevelCommand()) - .invalidUsage(new InvalidArgsHandler()) - .missingPermission(new NoPermissionsHandler()) - .message(LiteBukkitMessages.PLAYER_NOT_FOUND, input -> Messages.getString("commands.invalid-player").replace("%player%", input)) - .message(LiteBukkitMessages.PLAYER_ONLY, input -> Messages.getString("commands.player-only")) - .build(); + LiteCommandsBukkit.builder().commands(new SGMCommand(), new LevelCommand()).invalidUsage(new InvalidArgsHandler()).missingPermission(new NoPermissionsHandler()).message(LiteBukkitMessages.PLAYER_NOT_FOUND, input -> Messages.getString("commands.invalid-player").replace("%player%", input)).message(LiteBukkitMessages.PLAYER_ONLY, input -> Messages.getString("commands.player-only")).build(); } @Override @@ -85,7 +79,7 @@ public final class SGM extends JavaPlugin { try { databaseManager.close(); } catch (SQLException e) { - toolLogger.error(e); + cLogger.error(e); } } diff --git a/src/main/java/xyz/twovb/sgm/games/Minigame.java b/src/main/java/xyz/twovb/sgm/games/Minigame.java index ef56f0d..d243fd5 100644 --- a/src/main/java/xyz/twovb/sgm/games/Minigame.java +++ b/src/main/java/xyz/twovb/sgm/games/Minigame.java @@ -7,7 +7,7 @@ package xyz.twovb.sgm.games; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.Listener; -import xyz.twovb.toolbox.api.ToolPlayer; +import xyz.twovb.toolbox.api.CustomPlayer; import java.util.List; import java.util.UUID; @@ -34,8 +34,8 @@ public interface Minigame extends Listener { CommandSender getOwner(); default void sendMessageToAllPlayers(String message) { for (Player player : getPlayers()) { - ToolPlayer toolPlayer = new ToolPlayer(player); - toolPlayer.sendMessage(message); + CustomPlayer cPlayer = new CustomPlayer(player); + cPlayer.sendMessage(message); } } diff --git a/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java b/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java new file mode 100644 index 0000000..34d43d8 --- /dev/null +++ b/src/main/java/xyz/twovb/sgm/games/impl/TestGame.java @@ -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 TestGame implements Minigame { + + final String name = "TestGame"; + private final UUID uuid; + private CommandSender owner; + private GameState state; + private final List players; + + public TestGame() { + 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 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(); + } + } + +} \ No newline at end of file