EpicBosses/plugin-modules/Core/src/com/songoda/epicbosses/commands/CommandNewMessage.java

100 lines
3.0 KiB
Java

package com.songoda.epicbosses.commands;
import com.songoda.core.commands.AbstractCommand;
import com.songoda.epicbosses.managers.files.CommandsFileManager;
import com.songoda.epicbosses.managers.files.MessagesFileManager;
import com.songoda.epicbosses.utils.Message;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CommandNewMessage extends AbstractCommand {
private CommandsFileManager commandsFileManager;
private MessagesFileManager messagesFileManager;
public CommandNewMessage(CommandsFileManager commandsFileManager, MessagesFileManager messagesFileManager) {
super(false, "new message");
this.commandsFileManager = commandsFileManager;
this.messagesFileManager = messagesFileManager;
}
@Override
protected ReturnType runCommand(CommandSender sender, String... args) {
if (args.length < 2)
return ReturnType.SYNTAX_ERROR;
String nameInput = args[0];
if (this.commandsFileManager.getCommands(nameInput) != null) {
Message.Boss_New_AlreadyExists.msg(sender, "Message");
return ReturnType.FAILURE;
}
List<String> messages = appendList(args);
this.messagesFileManager.addNewMessage(nameInput, messages);
this.messagesFileManager.save();
Message.Boss_New_Message.msg(sender, nameInput);
return ReturnType.SUCCESS;
}
@Override
protected List<String> onTab(CommandSender commandSender, String... args) {
if (args.length == 1) {
return Collections.singletonList("name");
}
return Collections.singletonList("message");
}
@Override
public String getPermissionNode() {
return "boss.admin";
}
@Override
public String getSyntax() {
return "new message <name> <message...>";
}
@Override
public String getDescription() {
return "Create a new message section.";
}
private List<String> appendList(String[] args) {
String[] params = Arrays.copyOfRange(args, 2, args.length);
List<String> sections = new ArrayList<>();
StringBuilder currentSection = new StringBuilder();
for (String param : params) {
String[] split = param.split("\\|");
if (split.length == 1) {
currentSection.append(split[0]).append(" ");
continue;
}
boolean firstAdded = false;
for (String piece : split) {
currentSection.append(piece).append(" ");
if (!firstAdded) {
sections.add(currentSection.toString().trim());
currentSection = new StringBuilder();
firstAdded = true;
}
}
}
if (!currentSection.toString().trim().isEmpty())
sections.add(currentSection.toString().trim());
return sections;
}
}