NOTE: THIS MOD IS STILL IN EARLY DEVELOPMENT AND THE API MIGHT CHANGE.
Questlines is a data driven Minecraft mod that adds - you guessed it - quest lines to the game. These quest lines can be created using data packs. This making crating quest lines very easy for people who don't know how to code.
Structure
A quest line consisits of multiple quests. These quest can just be consecutive or they can brach out into multiple quest branches. Each quest contains on or more objectives. When all objectives have been completed, the quest will also be marked as complete and all its child quests will become available.
Arc Lib
Questlines uses a library mod called Arc Lib (which is also made by DAQEM Studios) to register the objective player actions. Arc Lib makes it extremely easy to define player actions. All you have to do it tell Arc Lib which objective the action is for, descrive the conditions of the action and set the reward to an 'objective occurance' reward.
Example
In this example, the objective is to mine 10 Grass Blocks with a reward of 10 Stone blocks.
Questline
File: data/namespace/questlines/questlines/questline_name.json
{
"is_unlocked_by_default": true
}
Quest
File: data/namespace/questlines/quests/quest_name.json
{
"questline": "namespace:questline_name",
"objectives": [
{
"id": "objective_name",
"goal": 10
}
],
"rewards": [
{
"type": "arc:item",
"item": "minecraft:stone",
"amount": 10
}
]
}
Objective Actions (Arc Lib)
File: data/namespace/arc/quest_name/objective_name.json
{
"holder": {
"type": "questlines:objective",
"id": "namespace:quest_name/objective_name"
},
"type": "arc:on_break_block",
"conditions": [
{
"type": "arc:block",
"block": "minecraft:grass_block"
}
],
"rewards": [
{
"type": "questlines:objective_occurrence"
}
]
}
Language
File: assets/namespace/lang/en_us.json
{
"questlines.questline.namespace.questline_name": "The Best Quest Line Name!",
"questlines.quest.namespace.quest_name": "Touch Grass",
"questlines.quest.namespace.quest_name.description": "Break 10 Blocks of Grass and recieve 10 Stone.",
"questlines.objective.namespace.quest_name.objective_name.description": "Break Grass Block"
}