aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/MylesAndMore/tumble/Game.java
diff options
context:
space:
mode:
authorMylesAndMore <mylesandmore9@gmail.com>2023-06-17 20:46:36 +0200
committerMylesAndMore <mylesandmore9@gmail.com>2023-06-17 20:46:36 +0200
commit19d8ffbc6659c7de13b81a587dae7081078649c6 (patch)
treeb15435cb788f0a221a7393739908b4c84baa51ad /src/main/java/com/MylesAndMore/tumble/Game.java
parent3c48bd3f9587ae9459d789f70ba1ebaaf691209b (diff)
downloadTumble-19d8ffbc6659c7de13b81a587dae7081078649c6.tar.gz
Tumble-19d8ffbc6659c7de13b81a587dae7081078649c6.tar.bz2
Tumble-19d8ffbc6659c7de13b81a587dae7081078649c6.zip
refactoring!
it's been a while, I thought I would clean up the code a bit and test to make sure everything works on 1.20 :)
Diffstat (limited to '')
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/game/Game.java (renamed from src/main/java/com/MylesAndMore/tumble/Game.java)182
1 files changed, 62 insertions, 120 deletions
diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/Tumble/game/Game.java
index 1400887..0ea74f5 100644
--- a/src/main/java/com/MylesAndMore/tumble/Game.java
+++ b/src/main/java/com/MylesAndMore/Tumble/game/Game.java
@@ -1,8 +1,7 @@
-package com.MylesAndMore.tumble;
+package com.MylesAndMore.Tumble.game;
-import com.MylesAndMore.tumble.api.Generator;
+import com.MylesAndMore.Tumble.plugin.Constants;
-import com.MylesAndMore.tumble.api.Layers;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
@@ -18,20 +17,15 @@ import javax.annotation.Nullable;
import java.util.*;
/**
- * This class holds all methods relating to the tumble Game in any way!
+ * Everything relating to the Tumble game
*/
public class Game {
// Singleton class logic
- // Define the gameInstance
private static Game gameInstance;
-
- // Private Game() constructor for singleton instance
private Game() {
- gameWorld = Bukkit.getWorld(TumbleManager.getGameWorld());
- gameSpawn = gameWorld.getSpawnLocation();
+ gameWorld = Bukkit.getWorld(Constants.getGameWorld());
+ gameSpawn = Objects.requireNonNull(gameWorld).getSpawnLocation();
}
-
- // ONLY Public method to get the game instance
public static Game getGame() {
if (gameInstance == null) {
gameInstance = new Game();
@@ -39,33 +33,18 @@ public class Game {
return gameInstance;
}
-
// Define local game vars
- // The gameState keeps the current state of the game (I'm so creative, I know)
private String gameState;
- // Define a variable for the gameType
private String gameType;
- // Define a variable for the game ID
private int gameID = -1;
- // Define a variable for the autostart PID
private int autoStartID = -1;
- // Define a variable to keep the list of tracks that have already played in the game
- List<String> sounds = new ArrayList<>();
-
- // Initialize a new instance of the Random class for use later
- private final Random Random = new Random();
- // Define the game world and its spawnpoint as a new Location for use later
private final World gameWorld;
private final Location gameSpawn;
- // Make a list of the game's players for later
private List<Player> gamePlayers;
- // Make a list of the round's players
private List<Player> roundPlayers;
- // Initialize a list to keep track of wins between rounds
private List<Integer> gameWins;
-
- // BEGIN PUBLIC METHODS
+ private final Random Random = new Random();
/**
* Creates a new Game
@@ -73,61 +52,52 @@ public class Game {
* @return true if the game succeeds creation, and false if not
*/
public boolean startGame(@NotNull String type) {
- // Check if the game is starting or running, if so, do not start
- if (Objects.equals(gameState, "starting")) {
- return false;
- }
- else if (Objects.equals(gameState, "running")) {
- return false;
- }
+ // Check if the game is starting or running
+ if (Objects.equals(gameState, "starting")) { return false; }
+ else if (Objects.equals(gameState, "running")) { return false; }
else {
// Define the gameType
switch (type) {
- case "shovels":
- case "snowballs":
- case "mixed":
+ case "shovels", "snowballs", "mixed" -> {
gameState = "starting";
// Set the type to gameType since it won't change for this mode
gameType = type;
// Clear the players' inventories so they can't bring any items into the game
- clearInventories(TumbleManager.getPlayersInLobby());
+ clearInventories(Constants.getPlayersInLobby());
// Generate the correct layers for a Shovels game
// The else statement is just in case the generator fails; this command will fail
if (generateLayers(type)) {
// Send all players from lobby to the game
- scatterPlayers(TumbleManager.getPlayersInLobby());
+ scatterPlayers(Constants.getPlayersInLobby());
} else {
return false;
}
- break;
- default:
- // The game type in the config did not match a specified game type; return false to signify that
+ }
+ default -> {
+ // The game type in the config did not match a specified game type
return false;
+ }
}
- // If a game creation succeeded, then,
- // Update the game's players for later
- gamePlayers = new ArrayList<>(TumbleManager.getPlayersInGame());
- // Update the round's players for later
- roundPlayers = new ArrayList<>(TumbleManager.getPlayersInGame());
+ // Update the game/round players for later
+ gamePlayers = new ArrayList<>(Constants.getPlayersInGame());
+ roundPlayers = new ArrayList<>(Constants.getPlayersInGame());
// 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));
- // Put all players in spectator to prevent them from getting kicked for flying (this needs a delay bc servers are SLOOOWWW)
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- setGamemode(gamePlayers, GameMode.SPECTATOR);
- }, 25);
+ // Put all players in spectator to prevent them from getting kicked for flying (this needs a delay bc servers are slow)
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> setGamemode(gamePlayers, GameMode.SPECTATOR), 25);
// Wait 5s (100t) for the clients to load in
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
// Begin the countdown sequence
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.DARK_GREEN + "3", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.YELLOW + "2", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.DARK_RED + "1", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 2);
displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1);
setGamemode(gamePlayers, GameMode.SURVIVAL);
@@ -145,15 +115,13 @@ public class Game {
*/
public void autoStart() {
// Wait for the player to load in
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
gameState = "waiting";
- displayActionbar(TumbleManager.getPlayersInLobby(), ChatColor.GREEN + "Game will begin in 15 seconds!");
- playSound(TumbleManager.getPlayersInLobby(), Sound.BLOCK_NOTE_BLOCK_CHIME, SoundCategory.BLOCKS, 1, 1);
- TumbleManager.getMVWorldManager().loadWorld(TumbleManager.getGameWorld());
+ displayActionbar(Constants.getPlayersInLobby(), ChatColor.GREEN + "Game will begin in 15 seconds!");
+ playSound(Constants.getPlayersInLobby(), Sound.BLOCK_NOTE_BLOCK_CHIME, SoundCategory.BLOCKS, 1, 1);
+ Constants.getMVWorldManager().loadWorld(Constants.getGameWorld());
// Schedule a process to start the game in 300t (15s) and save the PID so we can cancel it later if needed
- autoStartID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- startGame(TumbleManager.getGameType());
- }, 300);
+ autoStartID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> startGame(Constants.getGameType()), 300);
}, 50);
}
@@ -162,8 +130,8 @@ public class Game {
*/
public void cancelStart() {
Bukkit.getServer().getScheduler().cancelTask(Game.getGame().getAutoStartID());
- displayActionbar(TumbleManager.getPlayersInLobby(), ChatColor.RED + "Game start cancelled!");
- playSound(TumbleManager.getPlayersInLobby(), Sound.BLOCK_NOTE_BLOCK_BASS, SoundCategory.BLOCKS, 1, 1);
+ displayActionbar(Constants.getPlayersInLobby(), ChatColor.RED + "Game start cancelled!");
+ playSound(Constants.getPlayersInLobby(), Sound.BLOCK_NOTE_BLOCK_BASS, SoundCategory.BLOCKS, 1, 1);
gameState = null;
autoStartID = -1;
}
@@ -174,19 +142,16 @@ public class Game {
*/
public void playerDeath(Player player) {
player.setGameMode(GameMode.SPECTATOR);
- // Add a delay to tp them to the gameWorld just in case they have a bed in another world
- // Delay is needed because instant respawn takes 1t
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ // Add a delay to tp them to the gameWorld just in case they have a bed in another world (yes you Jacob)
+ // Delay is needed because instant respawn is a lie (it's not actually instant)
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
player.teleport(gameSpawn);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- player.setGameMode(GameMode.SPECTATOR);
- }, 5);
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> player.setGameMode(GameMode.SPECTATOR), 5);
}, 5);
// remove that player (who just died) from the roundPlayersArray, effectively eliminating them,
roundPlayers.remove(player);
// If there are less than 2 players in the game (1 just died),
if (roundPlayers.size() < 2) {
- // End the game, passing the winner to the gameEnd method
roundEnd(roundPlayers.get(0));
}
}
@@ -201,14 +166,11 @@ public class Game {
/**
* @return The Bukkit process ID of the autostart process, if applicable
- * Can also be null if not initialized, and -1 if the process failed to schedule.
+ * Can also be null if not initialized, or -1 if the process failed to schedule.
*/
public int getAutoStartID() { return autoStartID; }
- // BEGIN PRIVATE METHODS
-
- // Initialize Layers class
private final Layers layers = new Layers();
/**
* Generates the layers in the gameWorld for a certain gameType
@@ -252,22 +214,19 @@ public class Game {
ItemStack shovel = new ItemStack(Material.IRON_SHOVEL);
shovel.addEnchantment(Enchantment.SILK_TOUCH, 1);
if (Objects.equals(gameState, "running")) {
- giveItems(TumbleManager.getPlayersInGame(), shovel);
+ giveItems(Constants.getPlayersInGame(), shovel);
}
else if (Objects.equals(gameState, "starting")) {
- giveItems(TumbleManager.getPlayersInLobby(), shovel);
+ giveItems(Constants.getPlayersInLobby(), shovel);
}
- // Schedule a process to give snowballs after 2m30s (so people can't island, the OG game had this)
- // Add 160t because of the countdown
- gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ // Schedule a process to give snowballs after 2m30s (so people can't island, the OG game had this); add 160t because of the countdown
+ gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
clearInventories(gamePlayers);
giveItems(gamePlayers, new ItemStack(Material.SNOWBALL));
displayActionbar(gamePlayers, ChatColor.DARK_RED + "Showdown!");
playSound(gamePlayers, Sound.ENTITY_ELDER_GUARDIAN_CURSE, SoundCategory.HOSTILE, 1, 1);
// End the round in another 2m30s
- gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- roundEnd(null);
- }, 3000);
+ gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> roundEnd(null), 3000);
}, 3160);
}
else if (Objects.equals(type, "snowballs")) {
@@ -346,13 +305,13 @@ public class Game {
Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList());
}
if (Objects.equals(gameState, "running")) {
- giveItems(TumbleManager.getPlayersInGame(), new ItemStack(Material.SNOWBALL));
+ giveItems(Constants.getPlayersInGame(), new ItemStack(Material.SNOWBALL));
}
else if (Objects.equals(gameState, "starting")) {
- giveItems(TumbleManager.getPlayersInLobby(), new ItemStack(Material.SNOWBALL));
+ giveItems(Constants.getPlayersInLobby(), new ItemStack(Material.SNOWBALL));
}
// End the round in 5m
- gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> roundEnd(null), 6160);
+ gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> roundEnd(null), 6160);
}
else if (Objects.equals(type, "mixed")) {
// Randomly select either shovels or snowballs and re-run the method
@@ -376,7 +335,6 @@ public class Game {
*/
private void giveItems(List<Player> players, ItemStack itemStack) {
for (Player aPlayer : players) {
- // Get a singular player from the player list and give that player the specified item
aPlayer.getInventory().addItem(itemStack);
}
}
@@ -398,7 +356,6 @@ public class Game {
*/
private void setGamemode(List<Player> players, GameMode gameMode) {
for (Player aPlayer : players) {
- // Get a singular player from the player list and set their gamemode to the specified gamemode
aPlayer.setGameMode(gameMode);
}
}
@@ -414,7 +371,6 @@ public class Game {
*/
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);
}
}
@@ -449,7 +405,6 @@ public class Game {
* @param players a List of Players to teleport
*/
private void scatterPlayers(List<Player> players) {
- // Get the coords of the game's spawn location
double x = gameSpawn.getX();
double y = gameSpawn.getY();
double z = gameSpawn.getZ();
@@ -463,14 +418,10 @@ public class Game {
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 list (randomize)
Collections.shuffle(scatterLocations);
- // While there are still unteleported players from the list, teleport them
for (Player aPlayer : players) {
- // Select a singular player and singular location from the lists and teleport that player
aPlayer.teleport(scatterLocations.get(0));
- // Remove that location so multiple players won't get the same one
- scatterLocations.remove(0);
+ scatterLocations.remove(0); // Remove that location so multiple players won't get the same one
}
}
@@ -495,30 +446,28 @@ public class Game {
roundPlayers.addAll(gamePlayers);
clearInventories(gamePlayers);
displayTitles(gamePlayers, ChatColor.RED + "Round over!", ChatColor.GOLD + winner.getName() + " has won the round!", 5, 60, 5);
- // Wait for player to respawn before completely l a g g i n g the server ._.
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- // Re-generate layers
+ // Wait for the player to respawn before completely lagging the server ._.
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
generateLayers(gameType);
// Wait 5s (100t) for tp method
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
// Kill all items (pistons are weird)
for (Entity entity : gameWorld.getEntities()) {
if (entity instanceof Item) {
entity.remove();
}
}
- // Re-scatter players
gameState = "starting";
scatterPlayers(gamePlayers);
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.DARK_GREEN + "3", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.YELLOW + "2", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.DARK_RED + "1", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 2);
displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1);
setGamemode(gamePlayers, GameMode.SURVIVAL);
@@ -532,34 +481,29 @@ public class Game {
}
else {
setGamemode(gamePlayers, GameMode.SPECTATOR);
- roundPlayers.removeAll(roundPlayers);
+ roundPlayers.clear();
roundPlayers.addAll(gamePlayers);
clearInventories(gamePlayers);
displayTitles(gamePlayers, ChatColor.RED + "Round over!", ChatColor.GOLD + "Draw!", 5, 60, 5);
- // Wait for player to respawn before completely l a g g i n g the server ._.
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- // Re-generate layers
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
generateLayers(gameType);
- // Wait 5s (100t) for tp method
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
- // Kill all items (pistons are weird)
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
for (Entity entity : gameWorld.getEntities()) {
if (entity instanceof Item) {
entity.remove();
}
}
- // Re-scatter players
gameState = "starting";
scatterPlayers(gamePlayers);
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.DARK_GREEN + "3", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.YELLOW + "2", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1);
displayTitles(gamePlayers, ChatColor.DARK_RED + "1", null, 3, 10, 7);
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 2);
displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1);
setGamemode(gamePlayers, GameMode.SURVIVAL);
@@ -575,21 +519,19 @@ public class Game {
private void gameEnd(Player winner) {
winner.setGameMode(GameMode.SPECTATOR);
clearInventories(gamePlayers);
- // Announce win
displayTitles(gamePlayers, ChatColor.RED + "Game over!", ChatColor.GOLD + winner.getName() + " has won the game!", 5, 60, 5);
displayActionbar(gamePlayers, ChatColor.BLUE + "Returning to lobby in ten seconds...");
// Wait 10s (200t), then
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Constants.getPlugin(), () -> {
// First, check to see if there is a separate location to tp the winner to
- if ((TumbleManager.getPlugin().getConfig().getDouble("winnerTeleport.x") != 0) && (TumbleManager.getPlugin().getConfig().getDouble("winnerTeleport.y") != 0) && (TumbleManager.getPlugin().getConfig().getDouble("winnerTeleport.z") != 0)) {
- // Tp the winner to that location
- winner.teleport(new Location(Bukkit.getWorld(TumbleManager.getLobbyWorld()), TumbleManager.getPlugin().getConfig().getDouble("winnerTeleport.x"), TumbleManager.getPlugin().getConfig().getDouble("winnerTeleport.y"), TumbleManager.getPlugin().getConfig().getDouble("winnerTeleport.z")));
+ if ((Constants.getPlugin().getConfig().getDouble("winnerTeleport.x") != 0) && (Constants.getPlugin().getConfig().getDouble("winnerTeleport.y") != 0) && (Constants.getPlugin().getConfig().getDouble("winnerTeleport.z") != 0)) {
+ winner.teleport(new Location(Bukkit.getWorld(Constants.getLobbyWorld()), Constants.getPlugin().getConfig().getDouble("winnerTeleport.x"), Constants.getPlugin().getConfig().getDouble("winnerTeleport.y"), Constants.getPlugin().getConfig().getDouble("winnerTeleport.z")));
// Remove the winner from the gamePlayers so they don't get double-tp'd
gamePlayers.remove(winner);
}
// Send all players back to lobby (spawn)
for (Player aPlayer : gamePlayers) {
- aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation());
+ aPlayer.teleport(Objects.requireNonNull(Bukkit.getWorld(Constants.getLobbyWorld())).getSpawnLocation());
}
}, 200);
gameState = "complete";