diff --git a/src/main/java/dev/logal/snowbrawl/CommandHandler.java b/src/main/java/dev/logal/snowbrawl/CommandHandler.java index 530639b..815206d 100644 --- a/src/main/java/dev/logal/snowbrawl/CommandHandler.java +++ b/src/main/java/dev/logal/snowbrawl/CommandHandler.java @@ -226,6 +226,7 @@ public final class CommandHandler { sender.sendMessage(successMessage("Configuration variables for arena " + arena.getName()) + ":"); sender.sendMessage(successMessage(" - Enabled: " + arena.isEnabled())); + sender.sendMessage(successMessage(" - Subtitle: " + arena.getSubtitle())); sender.sendMessage(successMessage(" - Refill: " + arena.getRefill() + " snowballs")); sender.sendMessage(successMessage(" - Player Limit: " + arena.getPlayerLimit() + " players")); sender.sendMessage(successMessage(" - Grace Time: " + (arena.getGraceTime() / 20) + "s")); @@ -268,7 +269,48 @@ public final class CommandHandler { return; } - sender.sendMessage(successMessage("The name for arena " + oldName + " has been changed to " + arena.getName())); + sender.sendMessage(successMessage("The name for arena " + oldName + " has been changed to " + arena.getName()) + "."); + this.snowbrawl.saveConfig(); + } + + /** + * Clears the subtitle of an arena. + * + * @param sender The user who executed the command. + * @param name The name of the arena. + */ + @Command(hook = "clear_arena_subtitle") + public void commandArenaConfigSubtitleClear(CommandSender sender, String name){ + Arena arena = this.snowbrawl.getArenaManager().getArenaByName(name); + if (arena == null){ + sender.sendMessage(failMessage("The specified arena does not exist.")); + return; + } + + arena.setSubtitle(""); + + sender.sendMessage(successMessage("The subtitle for arena " + arena.getName() + " has been cleared.")); + this.snowbrawl.saveConfig(); + } + + /** + * Changes the subtitle of an arena. + * + * @param sender The user who executed the command. + * @param name The name of the arena. + * @param newSubtitle The new name for the arena. + */ + @Command(hook = "set_arena_subtitle") + public void commandArenaConfigSubtitle(CommandSender sender, String name, String newSubtitle){ + Arena arena = this.snowbrawl.getArenaManager().getArenaByName(name); + if (arena == null){ + sender.sendMessage(failMessage("The specified arena does not exist.")); + return; + } + + arena.setSubtitle(newSubtitle); + + sender.sendMessage(successMessage("The name for arena " + arena.getName() + " has been changed to '" + arena.getSubtitle()) + "'."); this.snowbrawl.saveConfig(); } diff --git a/src/main/java/dev/logal/snowbrawl/Snowbrawl.java b/src/main/java/dev/logal/snowbrawl/Snowbrawl.java index e52c7cc..96db24d 100644 --- a/src/main/java/dev/logal/snowbrawl/Snowbrawl.java +++ b/src/main/java/dev/logal/snowbrawl/Snowbrawl.java @@ -85,6 +85,7 @@ public final class Snowbrawl extends JavaPlugin { newConfig.set("arenas." + id + ".enabled", arena.isEnabled()); newConfig.set("arenas." + id + ".name", arena.getName()); + newConfig.set("arenas." + id + ".subtitle", arena.getSubtitle()); newConfig.set("arenas." + id + ".refill", arena.getRefill()); newConfig.set("arenas." + id + ".playerLimit", arena.getPlayerLimit()); newConfig.set("arenas." + id + ".graceTime", arena.getGraceTime()); @@ -158,6 +159,7 @@ public final class Snowbrawl extends JavaPlugin { // Finally, we populate all the configuration variables. // If any of these config options don't exist in the config file, then default to the defaults defined in Arena. arena.setEnabled(config.getBoolean("arenas." + id + ".enabled", Arena.DEFAULT_ENABLED)); + arena.setSubtitle(config.getString("arenas." + id + ".subtitle", Arena.DEFAULT_SUBTITLE)); arena.setRefill(config.getInt("arenas." + id + ".refill", Arena.DEFAULT_REFILL)); arena.setPlayerLimit(config.getInt("arenas." + id + ".playerLimit", Arena.DEFAULT_PLAYER_LIMIT)); arena.setGraceTime(config.getInt("arenas." + id + ".graceTime", Arena.DEFAULT_GRACE_TIME)); diff --git a/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java b/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java index b44a482..75cbd70 100644 --- a/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java +++ b/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java @@ -812,8 +812,7 @@ public class ArenaManager implements Listener { if (arena != null){ // Did this player move into an arena's bounding box? if (this.playersInArenas.get(player) != arena){ // Is the arena they entered different than the one they were last in? (Including not in an arena) - // TODO: Add configurable arena subtitle (such as for giving credit to the arena's builders) - player.sendTitle(ChatColor.AQUA + "" + arena.getName(), "", 10, 70, 20); // Display a title screen with the arena's name. + player.sendTitle(ChatColor.AQUA + "" + arena.getName(), ChatColor.GOLD + "" + arena.getSubtitle(), 10, 70, 20); // Display a title screen with the arena's name. this.playersInArenas.put(player, arena); // Store which arena the player is in for future checks. } @@ -900,6 +899,7 @@ public class ArenaManager implements Listener { private void logArenaInfo(Arena arena){ Logger logger = this.snowbrawl.getLogger(); logger.info(" - Name: " + arena.getName()); + logger.info(" - Subtitle: " + arena.getSubtitle()); logger.info(" - Enabled: " + arena.isEnabled()); logger.info(" - Refill: " + arena.getRefill() + " snowballs"); logger.info(" - Player Limit: " + arena.getPlayerLimit() + " players"); diff --git a/src/main/java/dev/logal/snowbrawl/types/Arena.java b/src/main/java/dev/logal/snowbrawl/types/Arena.java index 9027bb4..249a987 100644 --- a/src/main/java/dev/logal/snowbrawl/types/Arena.java +++ b/src/main/java/dev/logal/snowbrawl/types/Arena.java @@ -13,6 +13,7 @@ import org.bukkit.World; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Random; /** @@ -21,6 +22,7 @@ import java.util.Random; public class Arena { // Default config variables public static final boolean DEFAULT_ENABLED = false; + public static final String DEFAULT_SUBTITLE = ""; public static final int DEFAULT_REFILL = 16; public static final int DEFAULT_PLAYER_LIMIT = 8; public static final int DEFAULT_GRACE_TIME = 15 * 20; @@ -36,7 +38,7 @@ public class Arena { private final Random rng = new Random(); // Config variables private boolean enabled; // Flag for whether the arena can be used in matches. - private String name; // A friendly name for this arena + private String name, subtitle; // A friendly name and subtitle for this arena private int refill; // Amount of snowballs to give players per snow block right click. private int playerLimit; // Maximum amount of players allowed in this arena in a match. private int graceTime, matchTime; @@ -51,6 +53,7 @@ public class Arena { * Creates a new arena with a given name in a given world and sets all other attributes to the below defaults: *