Allow multi-word names in /ma addarena and /ma autogenerate.

Introduces support for multi-word arena names in the two commands. The
approach is to simply join the arguments by spaces. Because of the new
slug-based lookups, multi-word names are fairly straightforward.
This commit is contained in:
Andreas Troelsen
2020-11-03 19:58:30 +01:00
parent 0f93d8ac05
commit 06cedde031
3 changed files with 18 additions and 8 deletions
@@ -6,9 +6,13 @@ import com.garbagemule.MobArena.commands.CommandInfo;
import com.garbagemule.MobArena.commands.Commands;
import com.garbagemule.MobArena.framework.Arena;
import com.garbagemule.MobArena.framework.ArenaMaster;
import com.garbagemule.MobArena.util.Slugs;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.Arrays;
import java.util.stream.Collectors;
@CommandInfo(
name = "addarena",
pattern = "(add|new)arena",
@@ -26,18 +30,20 @@ public class AddArenaCommand implements Command
}
// Require an arena name
if (args.length != 1) return false;
if (args.length < 1) return false;
// Unwrap the sender.
Player p = Commands.unwrap(sender);
Arena arena = am.getArenaWithName(args[0]);
String name = String.join(" ", args);
String slug = Slugs.create(name);
Arena arena = am.getArenaWithName(slug);
if (arena != null) {
am.getGlobalMessenger().tell(sender, "An arena with that name already exists.");
return true;
}
am.createArenaNode(args[0], p.getWorld());
am.getGlobalMessenger().tell(sender, "New arena with name '" + args[0] + "' created!");
am.createArenaNode(name, p.getWorld());
am.getGlobalMessenger().tell(sender, "New arena with name '" + name + "' created!");
return true;
}
}
@@ -7,6 +7,7 @@ import com.garbagemule.MobArena.commands.CommandInfo;
import com.garbagemule.MobArena.commands.Commands;
import com.garbagemule.MobArena.framework.Arena;
import com.garbagemule.MobArena.framework.ArenaMaster;
import com.garbagemule.MobArena.util.Slugs;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -27,24 +28,26 @@ public class AutoGenerateCommand implements Command
}
// Require an arena name
if (args.length != 1) return false;
if (args.length < 1) return false;
// Unwrap the sender.
Player p = Commands.unwrap(sender);
// Check if arena already exists.
Arena arena = am.getArenaWithName(args[0]);
String name = String.join(" ", args);
String slug = Slugs.create(name);
Arena arena = am.getArenaWithName(slug);
if (arena != null) {
am.getGlobalMessenger().tell(sender, "An arena with that name already exists.");
return true;
}
if (!MAUtils.doooooItHippieMonster(p.getLocation(), 13, args[0], am.getPlugin())) {
if (!MAUtils.doooooItHippieMonster(p.getLocation(), 13, name, am.getPlugin())) {
am.getGlobalMessenger().tell(sender, "Could not auto-generate arena.");
return true;
}
am.getGlobalMessenger().tell(sender, "Arena with name '" + args[0] + "' generated.");
am.getGlobalMessenger().tell(sender, "Arena with name '" + name + "' generated.");
return true;
}
}