mirror of
https://github.com/PikaMug/Quests.git
synced 2024-09-27 14:42:36 +02:00
Clickable quest accept prompt
This commit is contained in:
parent
095fd8c419
commit
7b7b676b8d
@ -49,6 +49,8 @@ import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import me.pikamug.localelib.LocaleManager;
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
@ -642,8 +644,18 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
||||
final MiscPostQuestAcceptEvent event = new MiscPostQuestAcceptEvent(context, this);
|
||||
getServer().getPluginManager().callEvent(event);
|
||||
|
||||
return ChatColor.YELLOW + getQueryText(context) + " " + ChatColor.GREEN
|
||||
+ getSelectionText(context, 1) + ChatColor.RESET + " / " + getSelectionText(context, 2);
|
||||
final TextComponent component = new TextComponent("");
|
||||
component.addExtra(ChatColor.YELLOW + getQueryText(context) + " " + ChatColor.GREEN);
|
||||
final TextComponent yes = new TextComponent(getSelectionText(context, 1));
|
||||
yes.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Lang.get("yesWord")));
|
||||
component.addExtra(yes);
|
||||
component.addExtra(ChatColor.RESET + " / ");
|
||||
final TextComponent no = new TextComponent(getSelectionText(context, 2));
|
||||
no.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Lang.get("noWord")));
|
||||
component.addExtra(no);
|
||||
|
||||
((Player)context.getForWhom()).spigot().sendMessage(component);
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -653,7 +665,8 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
}
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input.equalsIgnoreCase("1") || input.equalsIgnoreCase(Lang.get(player, "yesWord"))) {
|
||||
if (input.equalsIgnoreCase("1") || input.equalsIgnoreCase("y")
|
||||
|| input.equalsIgnoreCase(Lang.get(player, "yesWord"))) {
|
||||
Quester quester = getQuester(player.getUniqueId());
|
||||
if (quester == null) {
|
||||
// Must be new player
|
||||
@ -678,7 +691,8 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
||||
e.printStackTrace();
|
||||
}
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
} else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase(Lang.get("noWord"))) {
|
||||
} else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase("n")
|
||||
|| input.equalsIgnoreCase(Lang.get("noWord"))) {
|
||||
Lang.send(player, ChatColor.YELLOW + Lang.get("cancelled"));
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
} else {
|
||||
|
@ -12,22 +12,23 @@
|
||||
|
||||
package me.blackvein.quests.convo;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.Conversable;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.NumericPrompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public abstract class QuestsNumericPrompt extends NumericPrompt {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private static final Pattern NUMBER_PATTERN = Pattern.compile("^(\\d+) - ");
|
||||
|
||||
public QuestsNumericPrompt() {
|
||||
}
|
||||
|
||||
@ -44,7 +45,7 @@ public abstract class QuestsNumericPrompt extends NumericPrompt {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPromptText(ConversationContext cc) {
|
||||
public @NotNull String getPromptText(@NotNull ConversationContext cc) {
|
||||
return sendClickableSelection(getBasicPromptText(cc), cc.getForWhom());
|
||||
}
|
||||
|
||||
@ -60,16 +61,16 @@ public abstract class QuestsNumericPrompt extends NumericPrompt {
|
||||
* @param forWhom the conversation participant
|
||||
* @return plain text to deliver
|
||||
*/
|
||||
public static String sendClickableSelection(String input, Conversable forWhom) {
|
||||
public static String sendClickableSelection(final String input, final Conversable forWhom) {
|
||||
if (!(forWhom instanceof Player)) {
|
||||
return input;
|
||||
}
|
||||
String[] basicText = input.split("\n");
|
||||
TextComponent component = new TextComponent("");
|
||||
final String[] basicText = input.split("\n");
|
||||
final TextComponent component = new TextComponent("");
|
||||
boolean first = true;
|
||||
for (String line : basicText) {
|
||||
Matcher matcher = NUMBER_PATTERN.matcher(ChatColor.stripColor(line));
|
||||
TextComponent lineComponent = new TextComponent(TextComponent.fromLegacyText(line));
|
||||
for (final String line : basicText) {
|
||||
final Matcher matcher = NUMBER_PATTERN.matcher(ChatColor.stripColor(line));
|
||||
final TextComponent lineComponent = new TextComponent(TextComponent.fromLegacyText(line));
|
||||
if (matcher.find()) {
|
||||
lineComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, matcher.group(1)));
|
||||
}
|
||||
@ -80,8 +81,7 @@ public abstract class QuestsNumericPrompt extends NumericPrompt {
|
||||
}
|
||||
component.addExtra(lineComponent);
|
||||
}
|
||||
Player player = (Player)forWhom;
|
||||
player.spigot().sendMessage(component);
|
||||
((Player)forWhom).spigot().sendMessage(component);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
@ -12,16 +12,15 @@
|
||||
|
||||
package me.blackvein.quests.convo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.conversations.Conversable;
|
||||
import org.bukkit.conversations.StringPrompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class QuestsStringPrompt extends StringPrompt {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
@ -53,7 +52,8 @@ public abstract class QuestsStringPrompt extends StringPrompt {
|
||||
* @param forWhom the conversation participant
|
||||
* @return plain text to deliver
|
||||
*/
|
||||
protected String sendClickableMenu(String header, List<String> list, String footer, Conversable forWhom) {
|
||||
protected String sendClickableMenu(final String header, final List<String> list, final String footer,
|
||||
final Conversable forWhom) {
|
||||
if (!(forWhom instanceof Player)) {
|
||||
return ChatColor.GOLD + header + "\n" + ChatColor.AQUA + String.join(ChatColor.GRAY + ", " + ChatColor.AQUA, list) + "\n" + ChatColor.YELLOW + footer;
|
||||
}
|
||||
@ -73,8 +73,7 @@ public abstract class QuestsStringPrompt extends StringPrompt {
|
||||
}
|
||||
}
|
||||
component.addExtra(footerComponent);
|
||||
Player player = (Player)forWhom;
|
||||
player.spigot().sendMessage(component);
|
||||
((Player)forWhom).spigot().sendMessage(component);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user