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 /src/main/java/com | |
| 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
Diffstat (limited to '')
| -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 | 
3 files changed, 62 insertions, 49 deletions
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  | 
