- Баллы
- 76
Я хотел реализовать редактирование сообщений одним костылём и у меня даже получилось, но я заметил,что sendMessage не работает, он ничего не отправляет.
Я посмотрел туториал, но не понял как работает Conversation API и в документации, как мне кажется, не очень хорошо это объяснено. Не работает именно sendMessage чтобы отправлять пустые строки во время работы Conversation
Код:
public void edit(UUID uuid){
Player player = Bukkit.getPlayer(messages.getMessageByID(uuid).getSender());
ChatMessage message = messages.getMessageByID(uuid);
PlayerQueue queue = messages.getPersonalHistory(player);
TextComponent component = new TextComponent(new ComponentBuilder("§aВставить сообщение").create());
component.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND,message.getMessage()));
component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,new ComponentBuilder("§aВставить текст!").create()));
player.spigot().sendMessage(component);
ConversationFactory factory = new ConversationFactory(ChatManager.getManager());
Conversation conversation = factory.withFirstPrompt(new EditConversation(message,messages)).buildConversation(player);
conversation.begin();
}
Код:
public class EditConversation extends StringPrompt
{
private final ChatMessage message;
private final MessageManager queue;
public EditConversation(ChatMessage edit, MessageManager queue) {
this.message = edit;
this.queue = queue;
}
@Override
public String getPromptText(ConversationContext conversationContext) {
return "EDIT";
}
@Override
public Prompt acceptInput(ConversationContext context, String answer) {
Player player = (Player) context.getForWhom();
if(queue.editMessage(message.getId(),answer)){
for (int i = 0; i < 50; i++) {
player.sendMessage("\n");
}
queue.resend(message);
}
return END_OF_CONVERSATION;
}
}