From 219e94232e53dedfe1ddc45f0a7cfa94e398bfeb Mon Sep 17 00:00:00 2001 From: Myles <43725835+MylesAndMore@users.noreply.github.com> Date: Tue, 6 Dec 2022 15:50:17 -0600 Subject: Dedication is when you: Forget about ONE PART of the method so then you get on your phone in the GitHub web ui and change it (much harder than it seems!!) Added change game modes to game end --- src/main/java/com/MylesAndMore/tumble/Game.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/MylesAndMore/tumble/Game.java') diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index d2097d6..05ac05f 100644 --- a/src/main/java/com/MylesAndMore/tumble/Game.java +++ b/src/main/java/com/MylesAndMore/tumble/Game.java @@ -314,10 +314,12 @@ public class Game { private void gameEnd(Player winner) { // Announce win Bukkit.getServer().broadcastMessage(ChatColor.GOLD + winner.getName() + " has won the game!"); + // Set their gamemodes to survival + setGamemode(gamePlayers, GameMode.SURVIVAL); // Send all players back to lobby (spawn) for (Player aPlayer : gamePlayers) { aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation()); } } -} \ No newline at end of file +} -- cgit v1.2.3 From acaca4200a8c5479fb8f7be0c06a3b0064591c43 Mon Sep 17 00:00:00 2001 From: Myles Date: Tue, 6 Dec 2022 21:22:10 -0600 Subject: add delay in gameEnd --- src/main/java/com/MylesAndMore/tumble/Game.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/MylesAndMore/tumble/Game.java') diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index 05ac05f..5b594fa 100644 --- a/src/main/java/com/MylesAndMore/tumble/Game.java +++ b/src/main/java/com/MylesAndMore/tumble/Game.java @@ -314,12 +314,19 @@ public class Game { private void gameEnd(Player winner) { // Announce win Bukkit.getServer().broadcastMessage(ChatColor.GOLD + winner.getName() + " has won the game!"); - // Set their gamemodes to survival - setGamemode(gamePlayers, GameMode.SURVIVAL); - // Send all players back to lobby (spawn) - for (Player aPlayer : gamePlayers) { - aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation()); - } + Bukkit.getServer().broadcastMessage(ChatColor.GREEN + "Teleporting in five seconds..."); + // Wait 5s (100t), then + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), new Runnable() { + @Override + public void run() { + // Set their gamemodes to survival + setGamemode(gamePlayers, GameMode.SURVIVAL); + // Send all players back to lobby (spawn) + for (Player aPlayer : gamePlayers) { + aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation()); + } + } + }, 100); } } -- cgit v1.2.3 From eb95848cb47a86e8f21bdcce9afe552f8dc14707 Mon Sep 17 00:00:00 2001 From: Myles Date: Tue, 6 Dec 2022 22:09:40 -0600 Subject: look we have fancy titles now! and just a *quick* side note, everything actually works now basically: bug fixes, title, more user feedback, the usual --- src/main/java/com/MylesAndMore/tumble/Game.java | 86 +++++++++++-------------- 1 file changed, 38 insertions(+), 48 deletions(-) (limited to 'src/main/java/com/MylesAndMore/tumble/Game.java') diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index 5b594fa..ce27f66 100644 --- a/src/main/java/com/MylesAndMore/tumble/Game.java +++ b/src/main/java/com/MylesAndMore/tumble/Game.java @@ -5,6 +5,7 @@ import org.bukkit.*; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import javax.annotation.Nullable; import java.util.*; public class Game { @@ -112,7 +113,14 @@ public class Game { // Create a list that will later keep track of each player's wins gameWins = new ArrayList<>(); gameWins.addAll(List.of(0,0,0,0,0,0,0,0)); - gameState = "running"; + // Wait 5s (50t) for the clients to load in + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> { + // Display the "go!" title + displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1); + // Set gamemodes to survival + setGamemode(gamePlayers, GameMode.SURVIVAL); + gameState = "running"; + }, 50); return true; } @@ -221,42 +229,21 @@ public class Game { } } - // THIS METHOD IS DEPRECATED!! - // It has been replaced by teleportPlayers(), I'm just leaving this just in case teleportPlayers() doesn't work out /** - private void sendPlayers() { - // Get the X, Y, and Z coords of that location - double x = gameSpawn.getX(); - double y = gameSpawn.getY(); - double z = gameSpawn.getZ(); - // Create Locations to scatter players around the first layer - // These are just edited off the original spawn location; - // they assume that the first layer has a radius of 17 blocks (it always will w/ the current generator code) - List scatterLocations = new ArrayList<>(); - scatterLocations.addAll(List.of( - new Location(gameWorld, (x - 14.5), y, (z + 0.5) , -90, 0), - new Location(gameWorld, (x + 0.5), y, (z - 14.5), 0, 0), - new Location(gameWorld, (x + 15.5), y, (z + 0.5), 90, 0), - new Location(gameWorld, (x + 0.5), y, (z + 15.5), 180, 0 ), - new Location(gameWorld, (x - 10.5), y, (z - 10.5), -45, 0), - new Location(gameWorld, (x - 10.5), y, (z + 11.5), -135, 0), - new Location(gameWorld, (x + 11.5), y, (z - 10.5), 45, 0), - new Location(gameWorld, (x + 11.5), y, (z + 11.5), 135, 0)) - ); - // Shuffle the location list so players don't always spawn in the same location (basically, actually scatter the locations) - Collections.shuffle(scatterLocations); - // While there are still players in the lobby, send them to the gameWorld - // This is just a way of sending everybody in the lobby to the game - for (Player aPlayer : TumbleManager.getPlayersInLobby()) { - // Get a singular location from the scatter list - Location aLocation = scatterLocations.get(0); - // Teleport that player to that scatter location - aPlayer.teleport(aLocation); - // Remove that location from the list so that it cannot be used again - scatterLocations.remove(0); + * Displays a customized title to a provided list of players + * @param players The player list for which to show the titles to + * @param title The top title text + * @param subtitle The bottom title subtext (nullable) + * @param fadeIn The fadeIn duration (in ticks) + * @param stay The stay duration (in ticks) + * @param fadeOut The fadeOut duration (in ticks) + */ + private void displayTitles(List players, String title, @Nullable String subtitle, int fadeIn, int stay, int fadeOut) { + for (Player aPlayer : players) { + // Get a singular player from the player list and display them the specified title + aPlayer.sendTitle(title, subtitle, fadeIn, stay, fadeOut); } } - */ /** * Teleports a list of players to the specified scatter locations in the gameWorld @@ -304,29 +291,32 @@ public class Game { else { // Re-generate layers generateLayers(gameType); - // Re-scatter players - scatterPlayers(gamePlayers); - // Set their gamemodes to survival - setGamemode(gamePlayers, GameMode.SURVIVAL); + Bukkit.getServer().broadcastMessage(ChatColor.BLUE + "A new round will begin in ten seconds!"); + // Wait 10s (100t) for tp method + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> { + // Re-scatter players + scatterPlayers(gamePlayers); + displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1); + // Set their gamemodes to survival + setGamemode(gamePlayers, GameMode.SURVIVAL); + }, 200); } } private void gameEnd(Player winner) { // Announce win Bukkit.getServer().broadcastMessage(ChatColor.GOLD + winner.getName() + " has won the game!"); - Bukkit.getServer().broadcastMessage(ChatColor.GREEN + "Teleporting in five seconds..."); + Bukkit.getServer().broadcastMessage(ChatColor.BLUE + "Teleporting back in five seconds..."); // Wait 5s (100t), then - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), new Runnable() { - @Override - public void run() { - // Set their gamemodes to survival - setGamemode(gamePlayers, GameMode.SURVIVAL); - // Send all players back to lobby (spawn) - for (Player aPlayer : gamePlayers) { - aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation()); - } + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> { + // Set their gamemodes to survival + setGamemode(gamePlayers, GameMode.SURVIVAL); + // Send all players back to lobby (spawn) + for (Player aPlayer : gamePlayers) { + aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation()); } }, 100); + gameState = "complete"; } } -- cgit v1.2.3