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') 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 c2357ce5246598c520c8c8e27aadb5bbce3dcc0e Mon Sep 17 00:00:00 2001 From: CraivMan Date: Tue, 6 Dec 2022 20:08:31 -0600 Subject: GIVING ITEMS IS SO ANNOYING! (And prevented item dropping) --- src/main/java/com/MylesAndMore/tumble/EventListener.java | 16 +++++++++++++++- src/main/java/com/MylesAndMore/tumble/Main.java | 10 +++++----- 2 files changed, 20 insertions(+), 6 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/MylesAndMore/tumble/EventListener.java b/src/main/java/com/MylesAndMore/tumble/EventListener.java index 86bf851..4c3d154 100644 --- a/src/main/java/com/MylesAndMore/tumble/EventListener.java +++ b/src/main/java/com/MylesAndMore/tumble/EventListener.java @@ -10,6 +10,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -78,12 +79,25 @@ public class EventListener implements Listener{ if (event.getEntity().getWorld() == Bukkit.getWorld(TumbleManager.getGameWorld())) { if (event.getEntity() instanceof Snowball) { if (event.getEntity().getShooter() instanceof Player player) { - player.getInventory().addItem(new ItemStack(Material.SNOWBALL)); + player.getInventory().addItem(new ItemStack(Material.SNOWBALL,1)); } } } } } + + + @EventHandler + public void PlayerDropItemEvent(PlayerDropItemEvent event) { + // When an item is dropped, make sure there is a defined gameWorld + if (TumbleManager.getGameWorld() != null) { + // Then check if the item was dropped in the game world + if (event.getPlayer().getWorld() == Bukkit.getWorld((TumbleManager.getGameWorld()))) { + event.setCancelled(true); + + } + } + } } diff --git a/src/main/java/com/MylesAndMore/tumble/Main.java b/src/main/java/com/MylesAndMore/tumble/Main.java index 862de47..5c08907 100644 --- a/src/main/java/com/MylesAndMore/tumble/Main.java +++ b/src/main/java/com/MylesAndMore/tumble/Main.java @@ -23,15 +23,15 @@ public class Main extends JavaPlugin{ // Check if worlds are null in config if (TumbleManager.getGameWorld() == null) { - Bukkit.getServer().getLogger().warning("[tumble] It appears you have not configured a game world for Tumble."); - Bukkit.getServer().getLogger().info("[tumble] If this is your first time running the plugin, you may disregard this message."); + Bukkit.getServer().getLogger().warning("[Tumble] It appears you have not configured a game world for Tumble."); + Bukkit.getServer().getLogger().info("[Tumble] If this is your first time running the plugin, you may disregard this message."); } if (TumbleManager.getLobbyWorld() == null) { - Bukkit.getServer().getLogger().warning("[tumble] It appears you have not configured a lobby world for Tumble."); - Bukkit.getServer().getLogger().info("[tumble] If this is your first time running the plugin, you may disregard this message."); + Bukkit.getServer().getLogger().warning("[Tumble] It appears you have not configured a lobby world for Tumble."); + Bukkit.getServer().getLogger().info("[Tumble] If this is your first time running the plugin, you may disregard this message."); } // Init message - Bukkit.getServer().getLogger().info("[tumble] Tumble initialization complete!"); + Bukkit.getServer().getLogger().info("[Tumble] Tumble initialization complete!"); } } \ 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') 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') 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