diff options
| author | Myles <mylesandmore9@gmail.com> | 2024-08-01 16:17:01 -0500 | 
|---|---|---|
| committer | Myles <mylesandmore9@gmail.com> | 2024-08-01 16:17:01 -0500 | 
| commit | cadddd7499f92b4529ce34231ff4a379011515ff (patch) | |
| tree | bbb00c8a7172c5ebad06168ad68b6a5064de5552 /src | |
| parent | b9295115ff968b3d6d941ac3af91afe598420202 (diff) | |
| download | Tumble-cadddd7499f92b4529ce34231ff4a379011515ff.tar.gz Tumble-cadddd7499f92b4529ce34231ff4a379011515ff.tar.bz2 Tumble-cadddd7499f92b4529ce34231ff4a379011515ff.zip | |
bugfixes and more stylistic changes
- remove update checker and multiverse from build dependencies
- add config option to hide death messages
- ensure join/leave/death messages only apply for tumble games
- fix a bunch of random command bugs I found
- layers no longer generate with a placeholder material before being clumped
- misc refactoring
Diffstat (limited to 'src')
16 files changed, 144 insertions, 136 deletions
| diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Create.java b/src/main/java/com/MylesAndMore/Tumble/commands/Create.java index 667be5e..d60ca64 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Create.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Create.java @@ -33,7 +33,7 @@ public class Create implements SubCommand, CommandExecutor, TabCompleter {          String arenaName = args[0];          ArenaManager.arenas.put(arenaName, new Arena(arenaName)); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("create-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Join.java b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java index 3f1a8fb..f26d4e5 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Join.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java @@ -56,6 +56,16 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter {          }          Arena arena = ArenaManager.arenas.get(arenaName); +        // Check to make sure this arena has a game spawn +        if (arena.gameSpawn == null) { +            if (p.isOp()) { +                sender.sendMessage(LanguageManager.fromKey("arena-not-ready-op")); +            } else { +                sender.sendMessage(LanguageManager.fromKey("arena-not-ready")); +            } +            return false; +        } +          Game game;          if (args.length < 2 || args[1] == null) {              // No type specified: try to infer game type from game taking place in the arena @@ -80,10 +90,10 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter {              }              if (arena.game == null) { -                // no game is taking place in this arena, start one +                // No game is taking place in this arena, start one                  game = arena.game = new Game(arena, type);              } else { -                // a game is taking place in this arena, check that it is the right type +                // A game is taking place in this arena, check that it is the right type                  if (arena.game.type == type) {                      game = arena.game;                  } @@ -96,16 +106,7 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter {              }          } -        // Check to make sure the arena has a game spawn -        if (game.arena.gameSpawn == null) { -            if (p.isOp()) { -                sender.sendMessage(LanguageManager.fromKey("arena-not-ready-op")); -            } else { -                sender.sendMessage(LanguageManager.fromKey("arena-not-ready")); -            } -            return false; -        } - +        // Make sure the game isn't in progress before adding the player          if (game.gameState != GameState.WAITING) {              sender.sendMessage(LanguageManager.fromKey("game-in-progress"));              return false; diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java b/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java index c2aa149..9abc784 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java @@ -38,7 +38,7 @@ public class Remove implements SubCommand, CommandExecutor, TabCompleter {          }          ArenaManager.arenas.remove(arenaName); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("remove-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java index 21bdfe8..817a1a4 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java @@ -45,7 +45,7 @@ public class SetGameSpawn implements SubCommand, CommandExecutor, TabCompleter {          Arena arena = ArenaManager.arenas.get(arenaName);          arena.gameSpawn = ((Player)sender).getLocation(); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("set-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java index 142ffdd..27cc410 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java @@ -46,7 +46,7 @@ public class SetKillYLevel implements SubCommand, CommandExecutor, TabCompleter          Arena arena = ArenaManager.arenas.get(arenaName);          arena.killAtY = ((int) ((Player) sender).getLocation().getY()); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("set-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java index a080d08..5708643 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java @@ -45,7 +45,7 @@ public class SetLobby implements SubCommand, CommandExecutor, TabCompleter {          Arena arena = ArenaManager.arenas.get(arenaName);          arena.lobby = ((Player)sender).getLocation(); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("set-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java index a96e1a9..7b90099 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java @@ -45,7 +45,7 @@ public class SetWaitArea implements SubCommand, CommandExecutor, TabCompleter {          Arena arena = ArenaManager.arenas.get(arenaName);          arena.waitArea = ((Player)sender).getLocation(); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("set-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java index 98a535b..e0d2bea 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java @@ -45,7 +45,7 @@ public class SetWinnerLobby implements SubCommand, CommandExecutor, TabCompleter          Arena arena = ArenaManager.arenas.get(arenaName);          arena.winnerLobby = ((Player)sender).getLocation(); -        ArenaManager.WriteConfig(); +        ArenaManager.writeConfig();          sender.sendMessage(LanguageManager.fromKey("set-success"));          return true;      } diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java index 2f21a32..583f333 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java @@ -58,44 +58,51 @@ public class ArenaManager {                  arena.waitArea = readWorld("arenas." + arenaName + ".wait-area");              } -            // Validate arena locations -            if (arena.gameSpawn == null) { -                plugin.getLogger().severe("arenas.yml: Arena " + arenaName + " is missing a game spawn, before you can join you must set it with '/tumble setgamespawn'."); -            } -            if (arena.lobby == null) { -                plugin.getLogger().warning("arenas.yml: Arena " + arenaName + " is missing a lobby location. The spawn point of the default world will be used."); -            } -              arenas.put(arena.name, arena);          } +        validate(); // Validate arenas      }      /**       * Write arenas from this.arenas to arenas.yml       */ -    public static void WriteConfig() { -        config.set("arenas", null); // clear everything +    public static void writeConfig() { +        config.set("arenas", null); // Clear everything          for (Arena arena: arenas.values()) {              if (arena.killAtY != null) {                  config.set("arenas." + arena.name + ".kill-at-y", arena.killAtY);              }              if (arena.gameSpawn != null) { -                WriteWorld("arenas." + arena.name + ".game-spawn", arena.gameSpawn); +                writeWorld("arenas." + arena.name + ".game-spawn", arena.gameSpawn);              }              if (arena.lobby != null) { -                WriteWorld("arenas." + arena.name + ".lobby", arena.lobby); +                writeWorld("arenas." + arena.name + ".lobby", arena.lobby);              }              if (arena.winnerLobby != null) { -                WriteWorld("arenas." + arena.name + ".winner-lobby", arena.winnerLobby); +                writeWorld("arenas." + arena.name + ".winner-lobby", arena.winnerLobby);              }              if (arena.waitArea != null) { -                WriteWorld("arenas." + arena.name + ".wait-area", arena.waitArea); +                writeWorld("arenas." + arena.name + ".wait-area", arena.waitArea);              }          } +        validate();          arenasYml.saveConfig(); +    } +    /** +     * Check that all arenas are valid +     */ +    public static void validate() { +        for (Arena arena: arenas.values()) { +            if (arena.gameSpawn == null) { +                plugin.getLogger().severe("arenas.yml: Arena '" + arena.name + "' is missing a game spawn, before it is usable you must set a spawn with '/tumble setgamespawn'."); +            } +            if (arena.lobby == null) { +                plugin.getLogger().warning("arenas.yml: Arena '" + arena.name + "' is missing a lobby location. The spawn point of the default world will be used."); +            } +        }      }      /** @@ -125,7 +132,6 @@ public class ArenaManager {       *   Result#success = false and Result#error       */      private static Location readWorld(String path) { -          ConfigurationSection section = config.getConfigurationSection(path);          if (section == null) {              plugin.getLogger().warning("arenas.yml: Error loading location at '" + path + "' - " + "Section is null"); @@ -165,8 +171,7 @@ public class ArenaManager {       * @param path The path of the section to write       * @param location The location to write       */ -    private static void WriteWorld(String path, @NotNull Location location) { - +    private static void writeWorld(String path, @NotNull Location location) {          ConfigurationSection section = config.getConfigurationSection(path);          if (section == null) { diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java index 2d2bd4c..c279a22 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java @@ -11,7 +11,8 @@ import static com.MylesAndMore.Tumble.Main.plugin;   * Manages config.yml and stores its options   */  public class ConfigManager { -    public static boolean HideLeaveJoin; +    public static boolean hideLeaveJoin; +    public static boolean hideDeathMessages;      public static int waitDuration;      private static Configuration config; @@ -25,7 +26,8 @@ public class ConfigManager {          configYml.saveDefaultConfig();          config = configYml.getConfig();          defaultConfig = Objects.requireNonNull(config.getDefaults()); -        HideLeaveJoin = config.getBoolean("hide-join-leave-messages", false); +        hideLeaveJoin = config.getBoolean("hide-join-leave-messages", false); +        hideDeathMessages = config.getBoolean("hide-death-messages", false);          waitDuration = config.getInt("wait-duration", 15);          validate(); diff --git a/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java b/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java index c8331f7..0b23779 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java @@ -29,7 +29,7 @@ import static com.MylesAndMore.Tumble.Main.plugin;   * An event listener for a game of Tumble.   */  public class EventListener implements Listener { -    Game game; +    final Game game;      /**       * Create a new EventListener for a game. @@ -43,7 +43,7 @@ public class EventListener implements Listener {      @EventHandler      public void PlayerJoinEvent(PlayerJoinEvent event) {          // Hide/show join message accordingly -        if (ConfigManager.HideLeaveJoin) { +        if (event.getPlayer().getWorld() == game.arena.gameSpawn.getWorld() && ConfigManager.hideLeaveJoin) {              event.setJoinMessage(null);          }      } @@ -51,7 +51,7 @@ public class EventListener implements Listener {      @EventHandler      public void PlayerQuitEvent(PlayerQuitEvent event) {          // Hide/show leave message accordingly -        if (ConfigManager.HideLeaveJoin) { +        if (event.getPlayer().getWorld() == game.arena.gameSpawn.getWorld() && ConfigManager.hideLeaveJoin) {              event.setQuitMessage(null);          } @@ -63,6 +63,11 @@ public class EventListener implements Listener {      @EventHandler      public void PlayerDeathEvent(PlayerDeathEvent event) { +        // Hide death messages if configured +        if (event.getEntity().getWorld() == game.arena.gameSpawn.getWorld() && ConfigManager.hideDeathMessages) { +            event.setDeathMessage(null); +        } +          // Inform the game that the player died and respawn them          if (game.gamePlayers.contains(event.getEntity()) && game.gameState == GameState.RUNNING) {              game.playerDeath(event.getEntity()); @@ -203,7 +208,7 @@ public class EventListener implements Listener {      }      @EventHandler -    public void PlayerRespwanEvent(PlayerRespawnEvent event) { +    public void PlayerRespawnEvent(PlayerRespawnEvent event) {          // Make sure players respawn in the correct location          if (game.gamePlayers.contains(event.getPlayer())) {              event.setRespawnLocation(game.arena.gameSpawn); diff --git a/src/main/java/com/MylesAndMore/Tumble/game/Game.java b/src/main/java/com/MylesAndMore/Tumble/game/Game.java index 5ccb757..b309d42 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/Game.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/Game.java @@ -212,26 +212,12 @@ public class Game {              }              displayActionbar(gamePlayers, LanguageManager.fromKeyNoPrefix("lobby-in-10")); - -            // Wait 10s (200t), then +            // Wait 10s (200t), then clear the arena and teleport players back              Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {                  clearArena(); - -                // teleport player back and restore inventory                  for (Player p : gamePlayers) { -                    p.getInventory().clear(); -                    p.setGameMode(GameMode.SURVIVAL); -                    if (p == winner && arena.winnerLobby != null) { -                        p.teleport(arena.winnerLobby); -                    } else { -                        p.teleport(Objects.requireNonNull(arena.lobby)); -                    } - -                    if (inventories.containsKey(p)) { -                        p.getInventory().setContents(inventories.get(p)); -                    } +                    sendToLobby(p, p == winner);                  } -              }, 200);          } @@ -248,7 +234,9 @@ public class Game {       * Called if too many players leave, or from /tumble forceStop       */      public void stopGame() { -        gamePlayers.forEach(this::removePlayer); +        // A new list must be created to avoid removing elements while iterating +        List<Player> players = new ArrayList<>(gamePlayers); +        players.forEach(this::removePlayer);          Bukkit.getServer().getScheduler().cancelTask(gameID);          gameID = -1; @@ -268,46 +256,32 @@ public class Game {          // Check if the game has not started yet          if (gameState == GameState.WAITING) { -              // Inform player that there are no longer enough players to start              if (gamePlayers.size() < 2) {                  displayActionbar(gamePlayers, LanguageManager.fromKeyNoPrefix("waiting-for-players"));              } -            // Teleport player back and restore inventory -            if (arena.waitArea != null) { -                p.getInventory().clear(); -                p.setGameMode(GameMode.SURVIVAL); -                p.teleport(arena.lobby); -                if (inventories.containsKey(p)) { -                    p.getInventory().setContents(inventories.get(p)); -                } -            } +            sendToLobby(p, false);          } else { -            // Stop the game if there are not enough players +            // Stop the game if there are no longer enough players              if (gamePlayers.size() < 2) {                  stopGame();              } -            p.getInventory().clear(); -            p.setGameMode(GameMode.SURVIVAL); -            p.teleport(arena.lobby); -            if (inventories.containsKey(p)) { -                p.getInventory().setContents(inventories.get(p)); -            } +            sendToLobby(p, false); // You can never win if you quit, remember that kids!!          }      }      /** -     * Initiates an automatic start of a Tumble game +     * Attempts to initiate an automatic start of a Tumble game       */      public void autoStart() { -        // Wait for the player to load in          int waitDuration = ConfigManager.waitDuration; +        if (waitDuration <= 0) { return; }          Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {              displayActionbar(gamePlayers, LanguageManager.fromKeyNoPrefix("time-till-start").replace("%wait%",waitDuration+""));              playSound(gamePlayers, Sound.BLOCK_NOTE_BLOCK_CHIME, SoundCategory.BLOCKS, 1, 1); -            // Schedule a process to start the game in 300t (15s) and save the PID so we can cancel it later if needed +            // Schedule a process to start the game in the specified waitDuration and save the PID so we can cancel it later if needed              autoStartID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, this::gameStart, waitDuration * 20L);          }, 50);      } @@ -471,4 +445,27 @@ public class Game {                  new Location(gameSpawn.getWorld(), gameSpawn.getX() + 20, gameSpawn.getY(), gameSpawn.getZ() + 20),                  Material.AIR);      } + +    /** +     * Teleports a player to the lobby and restores their inventory +     * @param p Player to teleport +     * @param winner Whether the player is the winner +     */ +    private void sendToLobby(Player p, boolean winner) { +        p.getInventory().clear(); +        p.setGameMode(GameMode.SURVIVAL); +        if (winner && arena.winnerLobby != null) { +            p.teleport(arena.winnerLobby); +        } else { +            // Use default world spawn if lobby is not set +            if (arena.lobby == null) { +                p.teleport(Objects.requireNonNull(Bukkit.getWorlds().get(0)).getSpawnLocation()); +            } else { +                p.teleport(Objects.requireNonNull(arena.lobby)); +            } +        } +        if (inventories.containsKey(p)) { +            p.getInventory().setContents(inventories.get(p)); +        } +    }  } diff --git a/src/main/java/com/MylesAndMore/Tumble/game/Generator.java b/src/main/java/com/MylesAndMore/Tumble/game/Generator.java index d91c9e6..3136a93 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/Generator.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/Generator.java @@ -25,28 +25,28 @@ public class Generator {          // Choose a random type of generation; a circular layer, a square layer, or a multi-tiered layer of either variety          if (random.nextInt(4) == 0) {              // Circular layer -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getSafeMaterialList());          } else if (random.nextInt(4) == 1) {              // Square layer -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.SNOW_BLOCK), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getSafeMaterialList());          } else if (random.nextInt(4) == 2) {              // Multi-tiered circle -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getSafeMaterialList());              Generator.generateLayer(layer, 13, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRASS_BLOCK), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.AIR), layers.getMaterialList());              Generator.generateLayer(layer, 4, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.PODZOL), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.AIR), layers.getMaterialList());          } else {              // Multi-tiered square -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.SNOW_BLOCK), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getSafeMaterialList());              Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRASS_BLOCK), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR), layers.getMaterialList());              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.AIR);              layer.setY(layer.getY() - 1); -            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.PODZOL), layers.getMaterialList()); +            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.AIR), layers.getMaterialList());          }      } @@ -62,72 +62,72 @@ public class Generator {          // Similar generation to shovels, except there are three layers          if (random.nextInt(4) == 0) {              // Circular layer -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getSafeMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getMaterialList());          } else if (random.nextInt(4) == 1) {              // Square layer -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getSafeMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getMaterialList());          } else if (random.nextInt(4) == 2) {              // Multi-tiered circle -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getSafeMaterialList());              Generator.generateLayer(layer, 13, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.AIR), layers.getMaterialList());              Generator.generateLayer(layer, 4, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.AIR), layers.getMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getSafeMaterialList());              Generator.generateLayer(layer, 13, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.AIR), layers.getMaterialList());              Generator.generateLayer(layer, 4, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.AIR), layers.getMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.AIR), layers.getSafeMaterialList());              Generator.generateLayer(layer, 13, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.AIR), layers.getMaterialList());              Generator.generateLayer(layer, 4, 1, Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.AIR), layers.getMaterialList());          } else {              // Multi-tiered square -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getSafeMaterialList());              Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR), layers.getMaterialList());              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.AIR);              layer.setY(layer.getY() - 1); -            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()); +            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.AIR), layers.getMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getSafeMaterialList());              Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR), layers.getMaterialList());              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.AIR);              layer.setY(layer.getY() - 1); -            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()); +            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.AIR), layers.getMaterialList());              layer.setY(layer.getY() - 6); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.AIR), layers.getSafeMaterialList());              Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR);              layer.setY(layer.getY() - 1); -            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), layers.getMaterialList()); +            Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR), layers.getMaterialList());              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.AIR);              layer.setY(layer.getY() - 1); -            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()); +            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.AIR), layers.getMaterialList());          }      } diff --git a/src/main/resources/arenas.yml b/src/main/resources/arenas.yml index 6d3e3bb..7c26e08 100644 --- a/src/main/resources/arenas.yml +++ b/src/main/resources/arenas.yml @@ -1,2 +1,2 @@  # NOTE: No coordinate can be equal to zero! Use 0.5 instead if needed. -arenas: {} +arenas: diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b15acaf..28cc4e2 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,9 @@ -# Hides player join and leave messages in public chat +# Hides player join and leave messages in public chat during games  hide-join-leave-messages: false +# Hides player death messages in public chat during games +hide-death-messages: false +  # Duration (in seconds) to wait for more players to join a game before starting +# Set to 0 to disable  wait-duration: 15 diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml index dabb5f4..388c975 100644 --- a/src/main/resources/language.yml +++ b/src/main/resources/language.yml @@ -2,35 +2,35 @@  prefix: "&f[&eTumble&f] "  # Error messages -unknown-command: "&4Unknown command '%command%'" -no-permission: "&4You do not have permission to perform this command! &7Required permission: '%permission%.'" -missing-arena-parameter: "&4Missing arena name!" -invalid-arena: "&4arena '%arena%' does not exist!" -invalid-type: "&4Invalid game type!" -no-game-in-arena: "&4No game is currently running in this arena!" -player-not-in-game: "&4You are not in a game!" -not-for-console: "&4This cannot be run by the console!" -game-in-progress: "&4This game is still in progress!&7 wait until it finishes or join another game." +unknown-command: "&cUnknown command '%command%'" +no-permission: "&cYou do not have permission to perform this command! &7Required permission: '%permission%.'" +missing-arena-parameter: "&cMissing arena name!" +invalid-arena: "&carena '%arena%' does not exist!" +invalid-type: "&cInvalid game type!" +no-game-in-arena: "&cNo game is currently running in this arena!" +player-not-in-game: "&cYou are not in a game!" +not-for-console: "&cThis cannot be run by the console!" +game-in-progress: "&cThis game is still in progress!&7 wait until it finishes or join another game."  another-type-in-arena: "A game of %type% is currently taking place in this arena!&7 choose another arena or join it with '/tumble join %arena% %type%'." -already-in-game: "&4You are already in a game! Leave it to join another one." -arena-not-ready: "&4This arena is not finished being set up!" -arena-not-ready-op: "&4Incomplete arena. &7Set a game spawn with '/tumble setGameSpawn'." -specify-game-type: "&4No game is currently taking place in this arena! &7Provide the game type to start one." +already-in-game: "&cYou are already in a game! Leave it to join another one." +arena-not-ready: "&cThis arena is not yet set up!" +arena-not-ready-op: "&cIncomplete arena. &7Set a game spawn with '/tumble setGameSpawn'." +specify-game-type: "&cNo game is currently taking place in this arena! &7Provide the game type to start one."  # Success messages -create-success: "&aArena created successfully! &eBefore you can join, you must set a game spawn location with '/tumble setgamespawn'." -forcestart-success: "&aStarting game." +create-success: "&aArena created successfully! &eBefore this arena is usable, you must set a game spawn location with '/tumble setgamespawn'." +forcestart-success: "&aStarting game..."  forcestop-success: "&aGame stopped."  join-success: "&aJoined game &d%arena% - %type%"  leave-success: "&aLeft game &d%arena% - %type%" -reload-success: "&aConfig files reloaded. &eCheck console for errors." +reload-success: "&aConfig files reloaded. &eCheck console for possible errors."  remove-success: "&aArena removed."  set-success: "&aLocation set."  # Game messages  showdown: "&4Showdown!"  lobby-in-10: "&9Returning to lobby in ten seconds..." -waiting-for-players: "&aWaiting for players" +waiting-for-players: "&aWaiting for players..."  time-till-start: "&aGame will begin in %wait% seconds!"  round-over: "&cRound over!"  round-winner: "&6%winner%  has won the round!" @@ -41,9 +41,3 @@ count-3: "&23"  count-2: "&e2"  count-1: "&41"  count-go: "&aGo!" - - - - - - | 
