mirror of
https://github.com/PikaMug/Quests.git
synced 2025-02-16 12:31:19 +01:00
Initial attempt
This commit is contained in:
parent
a587a0c1c0
commit
71e2b82984
25
core/pom.xml
25
core/pom.xml
@ -16,7 +16,7 @@
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- DungeonsXL, LocaleLib, mcMMO Classic, PhatLoots, Unite, ZNPCsPlus -->
|
||||
<!-- ConversationAPI, DungeonsXL, LocaleLib, mcMMO Classic, PhatLoots, Unite, ZNPCsPlus -->
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
@ -178,6 +178,11 @@
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.Browsit</groupId>
|
||||
<artifactId>ConversationAPI</artifactId>
|
||||
<version>67983728aa</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.pikamug.quests</groupId>
|
||||
<artifactId>quests-api</artifactId>
|
||||
@ -250,8 +255,12 @@
|
||||
</executions>
|
||||
|
||||
<configuration>
|
||||
<transformers>
|
||||
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
|
||||
</transformers>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<include>com.github.Browsit.ConversationAPI:*</include>
|
||||
<include>me.*</include>
|
||||
<include>com.github.PikaMug:LocaleLib</include>
|
||||
<include>org.slf4j:slf4j-simple</include>
|
||||
@ -260,12 +269,6 @@
|
||||
</includes>
|
||||
</artifactSet>
|
||||
<filters>
|
||||
<filter>
|
||||
<artifact>*:*</artifact>
|
||||
<excludes>
|
||||
<exclude>META-INF/*.MF</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>com.github.PikaMug:LocaleLib</artifact>
|
||||
<excludes>
|
||||
@ -274,6 +277,14 @@
|
||||
</filter>
|
||||
</filters>
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>org.browsit.conversation</pattern>
|
||||
<shadedPattern>me.pikamug.quests.libs.conversation</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.browsit.libs.kyori</pattern>
|
||||
<shadedPattern>me.pikamug.quests.libs.kyori</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>me.pikamug.localelib</pattern>
|
||||
<shadedPattern>me.pikamug.quests.libs.localelib</shadedPattern>
|
||||
|
@ -18,14 +18,20 @@ import me.pikamug.quests.conditions.Condition;
|
||||
import me.pikamug.quests.config.BukkitConfigSettings;
|
||||
import me.pikamug.quests.config.ConfigSettings;
|
||||
import me.pikamug.quests.convo.misc.NpcOfferQuestPrompt;
|
||||
import me.pikamug.quests.convo.misc.QuestAcceptPrompt;
|
||||
import me.pikamug.quests.dependencies.BukkitDenizenTrigger;
|
||||
import me.pikamug.quests.dependencies.BukkitDependencies;
|
||||
import me.pikamug.quests.interfaces.ReloadCallback;
|
||||
import me.pikamug.quests.listeners.*;
|
||||
import me.pikamug.quests.listeners.BukkitBlockListener;
|
||||
import me.pikamug.quests.listeners.BukkitCitizensListener;
|
||||
import me.pikamug.quests.listeners.BukkitCommandManager;
|
||||
import me.pikamug.quests.listeners.BukkitConvoListener;
|
||||
import me.pikamug.quests.listeners.BukkitItemListener;
|
||||
import me.pikamug.quests.listeners.BukkitPartiesListener;
|
||||
import me.pikamug.quests.listeners.BukkitPlayerListener;
|
||||
import me.pikamug.quests.listeners.BukkitUniteListener;
|
||||
import me.pikamug.quests.listeners.BukkitZnpcsApiListener;
|
||||
import me.pikamug.quests.listeners.BukkitZnpcsListener;
|
||||
import me.pikamug.quests.logging.BukkitQuestsLog4JFilter;
|
||||
import me.pikamug.quests.storage.implementation.jar.BukkitModuleJarStorage;
|
||||
import me.pikamug.quests.storage.implementation.ModuleStorageImpl;
|
||||
import me.pikamug.quests.module.CustomObjective;
|
||||
import me.pikamug.quests.module.CustomRequirement;
|
||||
import me.pikamug.quests.module.CustomReward;
|
||||
@ -36,14 +42,19 @@ import me.pikamug.quests.quests.Quest;
|
||||
import me.pikamug.quests.statistics.BukkitMetrics;
|
||||
import me.pikamug.quests.storage.BukkitStorageFactory;
|
||||
import me.pikamug.quests.storage.QuesterStorage;
|
||||
import me.pikamug.quests.storage.implementation.ModuleStorageImpl;
|
||||
import me.pikamug.quests.storage.implementation.file.BukkitActionYamlStorage;
|
||||
import me.pikamug.quests.storage.implementation.file.BukkitConditionYamlStorage;
|
||||
import me.pikamug.quests.storage.implementation.file.BukkitQuestYamlStorage;
|
||||
import me.pikamug.quests.storage.implementation.jar.BukkitModuleJarStorage;
|
||||
import me.pikamug.quests.tasks.BukkitNpcEffectThread;
|
||||
import me.pikamug.quests.tasks.BukkitPlayerMoveThread;
|
||||
import me.pikamug.quests.util.BukkitLang;
|
||||
import me.pikamug.quests.util.BukkitUpdateChecker;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.browsit.conversations.api.Conversations;
|
||||
import org.browsit.conversations.bukkit.BukkitConversationsForwarder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
@ -114,6 +125,8 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
/*----> WARNING: ORDER OF STEPS MATTERS <----*/
|
||||
Conversations.init(BukkitAudiences.create(this));
|
||||
new BukkitConversationsForwarder().register(this);
|
||||
|
||||
// 1 - Trigger server to initialize Legacy Material Support
|
||||
try {
|
||||
@ -203,11 +216,11 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
|
||||
}
|
||||
|
||||
// 10 - Build conversation factories
|
||||
this.conversationFactory = new ConversationFactory(this).withModality(false)
|
||||
/*this.conversationFactory = new ConversationFactory(this).withModality(false)
|
||||
.withPrefix(context -> ChatColor.GRAY.toString())
|
||||
.withFirstPrompt(new QuestAcceptPrompt(this)).withTimeout(configSettings.getAcceptTimeout())
|
||||
.thatExcludesNonPlayersWithMessage("Console may not perform this conversation!")
|
||||
.addConversationAbandonedListener(convoListener);
|
||||
.addConversationAbandonedListener(convoListener);*/
|
||||
this.npcConversationFactory = new ConversationFactory(this).withModality(false)
|
||||
.withFirstPrompt(new NpcOfferQuestPrompt(this)).withTimeout(configSettings.getAcceptTimeout())
|
||||
.withLocalEcho(false).addConversationAbandonedListener(convoListener);
|
||||
@ -245,6 +258,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
Conversations.cleanUp();
|
||||
getLogger().info("Saving Quester data...");
|
||||
for (final Player p : getServer().getOnlinePlayers()) {
|
||||
getQuester(p.getUniqueId()).saveData();
|
||||
|
@ -10,10 +10,10 @@
|
||||
|
||||
package me.pikamug.quests.convo.misc;
|
||||
|
||||
import me.pikamug.quests.quests.BukkitQuest;
|
||||
import me.pikamug.quests.BukkitQuestsPlugin;
|
||||
import me.pikamug.quests.events.misc.MiscPostNpcOfferQuestEvent;
|
||||
import me.pikamug.quests.player.Quester;
|
||||
import me.pikamug.quests.quests.BukkitQuest;
|
||||
import me.pikamug.quests.quests.Quest;
|
||||
import me.pikamug.quests.util.BukkitLang;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
@ -227,7 +227,7 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
if (!plugin.getConfigSettings().canConfirmAccept()) {
|
||||
quester.takeQuest(q, false);
|
||||
} else {
|
||||
plugin.getConversationFactory().buildConversation(player).begin();
|
||||
new QuestAcceptPrompt(player.getUniqueId(), plugin).start();
|
||||
}
|
||||
}
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
|
@ -1,47 +1,40 @@
|
||||
package me.pikamug.quests.convo.misc;
|
||||
|
||||
import me.pikamug.quests.BukkitQuestsPlugin;
|
||||
import me.pikamug.quests.events.misc.MiscPostQuestAcceptEvent;
|
||||
import me.pikamug.quests.player.Quester;
|
||||
import me.pikamug.quests.util.BukkitLang;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.browsit.conversations.api.action.Prompt;
|
||||
import org.browsit.conversations.api.data.Conversation;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class QuestAcceptPrompt extends MiscStringPrompt {
|
||||
import java.util.UUID;
|
||||
|
||||
private ConversationContext context;
|
||||
public class QuestAcceptPrompt {
|
||||
|
||||
private final UUID uuid;
|
||||
private final BukkitQuestsPlugin plugin;
|
||||
|
||||
public QuestAcceptPrompt(BukkitQuestsPlugin plugin) {
|
||||
super(null);
|
||||
public QuestAcceptPrompt(final UUID uuid, BukkitQuestsPlugin plugin) {
|
||||
super();
|
||||
this.uuid = uuid;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public QuestAcceptPrompt(final ConversationContext context) {
|
||||
super(context);
|
||||
plugin = (BukkitQuestsPlugin)context.getPlugin();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConversationContext getConversationContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
public String getTitle(final ConversationContext context) {
|
||||
public String getTitle() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public ChatColor getNumberColor(final ConversationContext context, final int number) {
|
||||
public ChatColor getNumberColor(final int number) {
|
||||
switch (number) {
|
||||
case 1:
|
||||
return ChatColor.GREEN;
|
||||
@ -53,7 +46,7 @@ public class QuestAcceptPrompt extends MiscStringPrompt {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public String getSelectionText(final ConversationContext context, final int number) {
|
||||
public String getSelectionText(final int number) {
|
||||
switch (number) {
|
||||
case 1:
|
||||
return ChatColor.GREEN + BukkitLang.get("yesWord");
|
||||
@ -64,53 +57,50 @@ public class QuestAcceptPrompt extends MiscStringPrompt {
|
||||
}
|
||||
}
|
||||
|
||||
public String getQueryText(final ConversationContext context) {
|
||||
public String getQueryText() {
|
||||
return BukkitLang.get("acceptQuest");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getPromptText(final @NotNull ConversationContext context) {
|
||||
this.context = context;
|
||||
public @NotNull String getPromptText(final @NotNull UUID uuid) {
|
||||
if (plugin == null) {
|
||||
return ChatColor.YELLOW + BukkitLang.get("itemCreateCriticalError");
|
||||
}
|
||||
|
||||
final MiscPostQuestAcceptEvent event = new MiscPostQuestAcceptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
// TODO resolve
|
||||
/*final MiscPostQuestAcceptEvent event = new MiscPostQuestAcceptEvent(this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);*/
|
||||
|
||||
if (!plugin.getConfigSettings().canClickablePrompts()) {
|
||||
return ChatColor.YELLOW + getQueryText(context) + " " + ChatColor.GREEN
|
||||
+ getSelectionText(context, 1) + ChatColor.RESET + " / " + getSelectionText(context, 2);
|
||||
return ChatColor.YELLOW + getQueryText() + " " + ChatColor.GREEN
|
||||
+ getSelectionText(1) + ChatColor.RESET + " / " + getSelectionText(2);
|
||||
}
|
||||
|
||||
final TextComponent component = new TextComponent("");
|
||||
component.addExtra(ChatColor.YELLOW + getQueryText(context) + " " + ChatColor.GREEN);
|
||||
final TextComponent yes = new TextComponent(getSelectionText(context, 1));
|
||||
component.addExtra(ChatColor.YELLOW + getQueryText() + " " + ChatColor.GREEN);
|
||||
final TextComponent yes = new TextComponent(getSelectionText(1));
|
||||
yes.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/quests choice " + BukkitLang.get("yesWord")));
|
||||
component.addExtra(yes);
|
||||
component.addExtra(ChatColor.RESET + " / ");
|
||||
final TextComponent no = new TextComponent(getSelectionText(context, 2));
|
||||
final TextComponent no = new TextComponent(getSelectionText(2));
|
||||
no.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/quests choice " + BukkitLang.get("noWord")));
|
||||
component.addExtra(no);
|
||||
|
||||
((Player)context.getForWhom()).spigot().sendMessage(component);
|
||||
Bukkit.getPlayer(uuid).spigot().sendMessage(component);
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Prompt acceptInput(final @NotNull ConversationContext context, final String input) {
|
||||
final BukkitQuestsPlugin plugin = (BukkitQuestsPlugin)context.getPlugin();
|
||||
public void acceptInput(final @NotNull UUID uuid, final String input) {
|
||||
if (plugin == null || input == null) {
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
return;
|
||||
}
|
||||
final Player player = (Player) context.getForWhom();
|
||||
final Player player = Bukkit.getPlayer(uuid);
|
||||
if (input.equalsIgnoreCase("1") || input.equalsIgnoreCase("y")
|
||||
|| input.equalsIgnoreCase(BukkitLang.get("yesWord"))
|
||||
|| input.equalsIgnoreCase(BukkitLang.get(player, "yesWord"))) {
|
||||
final Quester quester = plugin.getQuester(player.getUniqueId());
|
||||
final Quester quester = plugin.getQuester(uuid);
|
||||
if (quester == null) {
|
||||
plugin.getLogger().info("Ended conversation because quester for " + getName() + "was null");
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
plugin.getLogger().info("Ended conversation because quester for " + player.getName() + "was null");
|
||||
return;
|
||||
}
|
||||
final String questIdToTake = quester.getQuestIdToTake();
|
||||
if (plugin.getQuestById(questIdToTake) == null) {
|
||||
@ -121,18 +111,25 @@ public class QuestAcceptPrompt extends MiscStringPrompt {
|
||||
} else {
|
||||
quester.takeQuest(plugin.getQuestById(questIdToTake), false);
|
||||
}
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
return;
|
||||
} else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase("n")
|
||||
|| input.equalsIgnoreCase(BukkitLang.get("noWord"))
|
||||
|| input.equalsIgnoreCase(BukkitLang.get(player, "noWord"))) {
|
||||
BukkitLang.send(player, ChatColor.YELLOW + BukkitLang.get("cancelled"));
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
return;
|
||||
} else {
|
||||
final String msg = BukkitLang.get(player, "questInvalidChoice")
|
||||
.replace("<yes>", BukkitLang.get(player, "yesWord"))
|
||||
.replace("<no>", BukkitLang.get(player, "noWord"));
|
||||
BukkitLang.send(player, ChatColor.RED + msg);
|
||||
return new QuestAcceptPrompt(context);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
new Conversation(uuid)
|
||||
.prompt(new Prompt<String>(getPromptText(uuid))
|
||||
.fetch((input, sender) -> acceptInput(uuid, input)))
|
||||
.run();
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
package me.pikamug.quests.listeners;
|
||||
|
||||
import me.pikamug.quests.BukkitQuestsPlugin;
|
||||
import me.pikamug.quests.convo.misc.QuestAcceptPrompt;
|
||||
import me.pikamug.quests.enums.ObjectiveType;
|
||||
import me.pikamug.quests.player.BukkitQuestProgress;
|
||||
import me.pikamug.quests.player.Quester;
|
||||
@ -251,7 +252,7 @@ public class BukkitCitizensListener implements Listener {
|
||||
for (final String msg : extracted(quester).split("<br>")) {
|
||||
player.sendMessage(msg);
|
||||
}
|
||||
plugin.getConversationFactory().buildConversation(player).begin();
|
||||
new QuestAcceptPrompt(player.getUniqueId(), plugin).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
package me.pikamug.quests.listeners;
|
||||
|
||||
import me.pikamug.quests.convo.misc.QuestAcceptPrompt;
|
||||
import me.pikamug.quests.quests.BukkitQuest;
|
||||
import me.pikamug.quests.player.BukkitQuester;
|
||||
import me.pikamug.quests.BukkitQuestsPlugin;
|
||||
@ -415,7 +416,7 @@ public class BukkitPlayerListener implements Listener {
|
||||
for (final String msg : s.split("<br>")) {
|
||||
BukkitLang.send(player, msg);
|
||||
}
|
||||
plugin.getConversationFactory().buildConversation(player).begin();
|
||||
new QuestAcceptPrompt(player.getUniqueId(), plugin).start();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import lol.pyr.znpcsplus.api.event.NpcInteractEvent;
|
||||
import lol.pyr.znpcsplus.api.interaction.InteractionType;
|
||||
import lol.pyr.znpcsplus.api.npc.Npc;
|
||||
import me.pikamug.quests.BukkitQuestsPlugin;
|
||||
import me.pikamug.quests.convo.misc.QuestAcceptPrompt;
|
||||
import me.pikamug.quests.enums.ObjectiveType;
|
||||
import me.pikamug.quests.player.BukkitQuestProgress;
|
||||
import me.pikamug.quests.player.Quester;
|
||||
@ -244,7 +245,7 @@ public class BukkitZnpcsApiListener implements Listener {
|
||||
for (final String msg : extracted(quester).split("<br>")) {
|
||||
player.sendMessage(msg);
|
||||
}
|
||||
plugin.getConversationFactory().buildConversation(player).begin();
|
||||
new QuestAcceptPrompt(player.getUniqueId(), plugin).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ import me.pikamug.quests.conditions.BukkitCondition;
|
||||
import me.pikamug.quests.config.BukkitConfigSettings;
|
||||
import me.pikamug.quests.config.ConfigSettings;
|
||||
import me.pikamug.quests.convo.misc.QuestAbandonPrompt;
|
||||
import me.pikamug.quests.convo.misc.QuestAcceptPrompt;
|
||||
import me.pikamug.quests.dependencies.BukkitDependencies;
|
||||
import me.pikamug.quests.entity.BukkitCountableMob;
|
||||
import me.pikamug.quests.enums.ObjectiveType;
|
||||
@ -522,7 +523,7 @@ public class BukkitQuester implements Quester {
|
||||
if (!plugin.getConfigSettings().canConfirmAccept()) {
|
||||
takeQuest(quest, false);
|
||||
} else {
|
||||
plugin.getConversationFactory().buildConversation(getPlayer()).begin();
|
||||
new QuestAcceptPrompt(getPlayer().getUniqueId(), plugin).start();
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user