Conversations let an NPC talk to a player, show clickable answers, branch into different paths, and run quest actions or checks during the dialogue.
You do not need to understand the whole system before making your first one. Start with a tiny file, test it in-game, then add choices and logic one piece at a time.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.createcreateCreates a new conversation file.intro<conversation-name>Unique file/name for the new conversation.AcceptstextExampleintro
Open:
plugins/NotQuests/default/conversations/intro.yml
Replace the file with this:
start: Guard.hello
Lines:
Guard:
color:"<gold>"
hello:
text:"Welcome to town. Need directions?"
next: Player.yes,Player.no
directions:
text:"The market is north, the mine is east, and the inn is behind you."
goodbye:
text:"Safe travels."
Player:
color:"<green>"
yes:
text:"Yes, please."
next: Guard.directions
no:
text:"No thanks."
next: Guard.goodbye
Reload conversations:
/qa/qaAdmin commands for NotQuestsreloadreloadReloads NotQuests data or configuration.conversationsconversationsManages conversations and their NPC attachments.
Start it as a player:
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.startstartStarts the selected conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintro
If that works, you already know the main idea:
an NPC line sends text,
next: points to the answers the player can choose,
each player answer points back to the next NPC line.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.editeditOpens subcommands for editing a saved conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintronpcsnpcsManages NPCs attached to this quest or conversation.addaddAttaches the selected conversation to an NPC or armor stand.citizens:5<NPC>ID of the NPC which should start the conversationAcceptsNPC selector such as citizens:1, fancynpcs:<id>, none, or rightClickSelectExamplecitizens:5
For a FancyNPCs NPC:
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.editeditOpens subcommands for editing a saved conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintronpcsnpcsManages NPCs attached to this quest or conversation.addaddAttaches the selected conversation to an NPC or armor stand.fancynpcs:guard<NPC>ID of the NPC which should start the conversationAcceptsNPC selector such as citizens:1, fancynpcs:<id>, none, or rightClickSelectExamplefancynpcs:guard
If you do not want to type an id, use the selector item:
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.editeditOpens subcommands for editing a saved conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintronpcsnpcsManages NPCs attached to this quest or conversation.addaddAttaches the selected conversation to an NPC or armor stand.rightClickSelect<NPC>ID of the NPC which should start the conversationAcceptsNPC selector such as citizens:1, fancynpcs:<id>, none, or rightClickSelectExamplerightClickSelect
Then right-click the NPC or armor stand in-game. Players can now right-click that NPC to start the conversation.
The demo is useful after you understand the small version above:
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.createcreateCreates a new conversation file.atlas<conversation-name>Unique file/name for the new conversation.AcceptstextExampleatlas--demo--demoFills the new conversation file with demo data
It creates a larger conversation with multiple answers, random text variants, MiniMessage formatting, and nested branches. Use it for ideas after your small test conversation works.
Conditions decide whether a line is allowed to play.
You can skip this section until your basic conversation works.
First create a saved condition in-game:
/qa/qaAdmin commands for NotQuestsconditionsconditionsManages saved conditions that can be reused by quests, objectives, and actions.addaddCreates a new saved condition.HasTenQuestPoints<Condition Identifier>Unique identifier for the new saved condition.AcceptstextExampleHasTenQuestPointsQuestPointsQuestPointsSelects the QuestPoints variable for this action, condition, objective, or variable check.moreOrEqualThan<operator>How to compare the QuestPoints number variable against the expression.AcceptstextExamplemoreOrEqualThan10<amount>Number expression to compare with the current QuestPoints value.Acceptsnumber or numeric expressionExample10
Then use it in the conversation:
start: Guard.reward,Guard.noReward
Lines:
Guard:
color:"<gold>"
reward:
text:"You have proven yourself. Take this reward."
conditions:
- condition HasTenQuestPoints
actions:
- action GiveReward
noReward:
text:"Come back after you have earned 10 quest points."
Because start lists Guard.reward first, NotQuests tries that line first. If the player does not pass the condition, NotQuests tries Guard.noReward instead.
To negate a condition, add ! before it and quote the line:
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.GiveReward<Action Identifier>Unique identifier for the new saved action.AcceptstextExampleGiveRewardQuestPointsQuestPointsSelects the QuestPoints variable for this action, condition, objective, or variable check.add<operator>How to change the QuestPoints number variable: set, add, deduct, multiply, or divide.AcceptstextExampleadd5<amount>Number expression used as the value for this QuestPoints action.Acceptsnumber or numeric expressionExample5
Use it in a line:
reward:
text:"You have proven yourself. Take this reward."
actions:
- action GiveReward
You can also run inline actions:
actions:
- SendMessage Thanks for talking to the guard.
- QuestPoints add 5
Saved actions are easier to test because the command tells you immediately if the action syntax is wrong. Inline actions are handy later, once you know the action types well.
Run /qa/qaAdmin commands for NotQuestsreloadreloadReloads NotQuests data or configuration.conversationsconversationsManages conversations and their NPC attachments..
Watch the server console for warnings.
Run /qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.analyzeanalyzeRuns conversation analysis checks.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintro--printToConsole--printToConsolePrints the output to the console.
Start it with /qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.startstartStarts the selected conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintro or right-click the attached NPC.
Most conversation problems come from one of these:
The YAML indentation is wrong.
start: or next: points to a line that does not exist.
A line uses conditions: or actions: but the saved condition/action name is wrong.
A player answer points nowhere, so the conversation ends earlier than expected.
You edited the file but forgot /qa/qaAdmin commands for NotQuestsreloadreloadReloads NotQuests data or configuration.conversationsconversationsManages conversations and their NPC attachments..
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.createcreateCreates a new conversation file.intro<conversation-name>Unique file/name for the new conversation.AcceptstextExampleintro - create a blank conversation file.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.createcreateCreates a new conversation file.intro<conversation-name>Unique file/name for the new conversation.AcceptstextExampleintro--demo--demoFills the new conversation file with demo data - create the larger demo conversation.
/qa/qaAdmin commands for NotQuestsreloadreloadReloads NotQuests data or configuration.conversationsconversationsManages conversations and their NPC attachments. - reload edited files.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.startstartStarts the selected conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintro - start a conversation as a player.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.analyzeanalyzeRuns conversation analysis checks.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintro--printToConsole--printToConsolePrints the output to the console - print the parsed conversation tree to console.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.listlistLists every saved conversation. - list loaded conversations and their attached NPCs.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.editeditOpens subcommands for editing a saved conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintronpcsnpcsManages NPCs attached to this quest or conversation.addaddAttaches the selected conversation to an NPC or armor stand.rightClickSelect<NPC>ID of the NPC which should start the conversationAcceptsNPC selector such as citizens:1, fancynpcs:<id>, none, or rightClickSelectExamplerightClickSelect - attach the conversation by clicking an NPC or armor stand.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.editeditOpens subcommands for editing a saved conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintronpcsnpcsManages NPCs attached to this quest or conversation.addaddAttaches the selected conversation to an NPC or armor stand.citizens:5<NPC>ID of the NPC which should start the conversationAcceptsNPC selector such as citizens:1, fancynpcs:<id>, none, or rightClickSelectExamplecitizens:5 - attach to a Citizens NPC.
/qa/qaAdmin commands for NotQuestsconversationsconversationsManages conversations and their NPC attachments.editeditOpens subcommands for editing a saved conversation.intro<conversation>Name of the Conversation.Acceptsconversation nameExampleintronpcsnpcsManages NPCs attached to this quest or conversation.addaddAttaches the selected conversation to an NPC or armor stand.fancynpcs:guard<NPC>ID of the NPC which should start the conversationAcceptsNPC selector such as citizens:1, fancynpcs:<id>, none, or rightClickSelectExamplefancynpcs:guard - attach to a FancyNPCs NPC.