diff options
author | Myles <43725835+MylesAndMore@users.noreply.github.com> | 2022-12-07 13:59:03 +0000 |
---|---|---|
committer | Myles <43725835+MylesAndMore@users.noreply.github.com> | 2022-12-07 13:59:03 +0000 |
commit | 8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2 (patch) | |
tree | 644d2d49eab65e669d4b680687ab37efac30a770 | |
parent | 135a411985ba67f45951c90f67d6c3730f133b0d (diff) | |
parent | eb95848cb47a86e8f21bdcce9afe552f8dc14707 (diff) | |
download | Tumble-8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2.tar.gz Tumble-8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2.tar.bz2 Tumble-8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2.zip |
Merge branch 'alphatest' of https://github.com/MylesAndMore/tumble into alphatest
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/EventListener.java | 16 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/Game.java | 85 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/Main.java | 10 |
4 files changed, 63 insertions, 49 deletions
@@ -12,6 +12,7 @@ once this list is complete and all bugs are fixed, we *should* be ready for rele ## game realism - [x] make the shovel in shovels mode not lose any durabilty +- [ ] make it so that you can't move until the game begins - [ ] make the game blocks breakable very fast, but **not instantly--very important for balancing!!** - [ ] add infinite snowballs in the gamemanager for tumble mode - [ ] make it so that you can't remove any of the game items from your inventory 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/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index d2097d6..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<Location> 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<Player> 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,20 +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!"); - // Send all players back to lobby (spawn) - for (Player aPlayer : gamePlayers) { - aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation()); - } + Bukkit.getServer().broadcastMessage(ChatColor.BLUE + "Teleporting back in five seconds..."); + // Wait 5s (100t), then + 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"; } -}
\ No newline at end of file +} 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 |