Join our discord
In partnership with NodeCraft Logo NodeCraft


You are not logged in! Create an account or login to contribute! Log in here!

Quests/Creation

From Pixelmon Wiki
Revision as of 18:51, 25 July 2020 by Hacko (talk | contribs)

This is a step-by-step guide on building your own quests!

Blank Quest

This blank quest has had all details removed. For the purpose of this guide, it will be used as a reference and starting point to building your own quests.

Show

Quest Information

At the top of all quests, there will be four fields which need to be set.

radiant

The radiant is used to specify if the quest uses inserters to make it available for completion by players. Inserters will be covered in in Quest Stages.

If the radiant is set to true, inserters (#!) will be used by the quest. If set to false, inserters will not be used - typically used by Instantaneous quests. An example of what this looks like in the quest file is "radiant": true.

In the Blank Quest, it has been set to true as it will use inserters in the stages.

rarity

The rarity is used to specify the color of the ring around the Poké Ball's color for the quest's quest markers. This is purely a cosmetic option - the rarity of quest is specify by the inserters.

The colors available for the rarity are shown below. The rarity name (for example, Epic) would need to be specified rather than the color (for example, purple). An example of what this looks like in the quest file is "rarity": "Epic".

Rarity Color
Common White
Uncommon Green
Rare Blue
Epic Purple
Legendary Orange

type

The type is used to specify which of the following types the quest will be. This is used to change the logic of the quest (for example, if the quest type is Repeatable, it will be made available to complete multiple times) and the color of the quest markers.

The types available are shown below. The type (for example, Legendary) would need to be specified rather than the color (for example, Red). An example of what this looks like in the quest file is "type": "Legendary".

Type Color
Standard Yellow
Repeatable Blue
Instantaneous Green
Legendary Red

activeStage

The activeStage is used to specify the stage number at which the quest will appear in the player's quest log.

The activeStage will need to be a number which corresponds to one of the stage's numbers (for example, "stage": 0).

Quests that use the DIALOGUE objective on the first stage (stage 0) to ask the player if they wish to accept the quest or not will have the activeStage set to the next stage (stage 10) as the player has to accept the quest before it is available in their quest log.

In the Blank Quest, it has been set to 10 as the player will have to accept the quest.

strings

The strings are used to specify names and messages that will appear in the player's quest log.

As a minimum, quests require the strings name, desc-# (# being a stage number), desc-X, and stage-##-# (## being a stage number). If the quest has multiple stages, there can be additional strings for desc-# and stage-##-# with the appropriate stage number to help direct the player.


String Name Description
name This is the name of the quest which is displayed.
desc-# This is the message describing the quest in the player's quest log.
desc-X This is the message shown for the quest in the history log.
npcName This is the name of the NPC which is displayed.
start This is the message given by the DIALOGUE objective to the player before they either accept or decline the quest.
startYes This is the message given by the DIALOGUE objective to the NPC when the player accept the quest.
startNo This is the message given by the DIALOGUE objective to the NPC when the player decline the quest.
stage-#-# This is a message the player receives in chat when they start the stage directing them what to do.
end This is the message given by the DIALOGUE objective to the player when they end the quest.
goodbye This is the message given by the DIALOGUE objective to the NPC when the player finishes the quest.

Quest Stages

All quests will have stages, these are what the player will progress through.

stage

The stage is used to specify different parts of the quest and what the player will need to progress through. Stages are given a unique number, these are located by the "stage":.

It is recommended to have the general rule of a quest's first stage being stage 0 ("stage": 0), the next being 10 ("stage": 10), the next being 20 ("stage": 20) and so fourth.

nextStage

The nextStage is used to specify the next stage which will follow after the current one. As previously explained, stages are given unique numbers, located by the "stage":.

If there is a stage after the current one, the "nextStage": would have specified the number of that next stage ("nextStage":10). This number would be next to the "stage": field. If the current stage if the final one, the "nextStage": would have specified "-1":. For example: "nextStage": -1.

objectives

Objectives are goals in which the player has to complete to progress.

Objective Name Required Arguments Optional Arguments Description
ABSOLUTE_POSITION <x1>
[y1]
<z1>
<x2>
[y2]
<z2>
<dimension>
None This objective completes once the player is within an area specified by <x1>, <z1>, <x2> and <z2> in <dimension>. The optional arguments of [y1] and [y2] can also be added. For example: ABSOLUTE_POSITION 8412 75 7767 8401 80 7758 3.
APRICORN_HARVEST item=
count=
mod=
tag=
name=
damage=
This objective completes once the player harvests the Apricorn amount specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: APRICORN_HARVEST item=pxielmon:red_apricorn count=1.
BATTLE_MOVE_TARGET soundbase=[true/false]
count=[number]
category=[physical/special/status]
type=[any of the 17 types]
move=[attack name],[attack name],[attack name],[attack name]
result=[proceed/hit/ignore/killed/succeeded/charging/unable/failed/missed/notarget]
damage[=/</>][number]
fulldamage[=/</>][number]
accuracy[=/</>][number]
None This objective completes once the target Pokémon of a battle meet the conditions specified by soundbase=[true/false] count=[number] category=[physical/special/status] type=[any of the 17 types] move=[attack name],[attack name],[attack name],[attack name] result=[proceed/hit/ignore/killed/succeeded/charging/unable/failed/missed/notarget] damage[=/</>][number] fulldamage[=/</>][number] accuracy[=/</>][number].
BATTLE_MOVE_USER soundbase=[true/false]
count=[number]
category=[physical/special/status]
type=[any of the 17 types]
move=[attack name],[attack name],[attack name],[attack name]
result=[proceed/hit/ignore/killed/succeeded/charging/unable/failed/missed/notarget]
damage[=/</>][number]
fulldamage[=/</>][number]
accuracy[=/</>][number]
None This objective completes once the user Pokémon of a battle meet the conditions specified by soundbase=[true/false] count=[number] category=[physical/special/status] type=[any of the 17 types] move=[attack name],[attack name],[attack name],[attack name] result=[proceed/hit/ignore/killed/succeeded/charging/unable/failed/missed/notarget] damage[=/</>][number] fulldamage[=/</>][number] accuracy[=/</>][number].
BLOCK_BREAK item=
count=
mod=
tag=
name=
damage=
This objective completes once the player breaks the block specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: BLOCK_BREAK item=minecraft:stone count=1.
BLOCKER None None This objective can't be completed. It is intended to be used alongside the SET_STAGE objective. If the quest is started by something else (for example, an Instantaneous quest or a plugin), a BLOCKER objective is required in the first stage.
BLOCK_PLACE item=
count=
mod=
tag=
name=
damage=
This objective completes once the player places the block specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: BLOCK_PLACE item=minecraft:stone count=1.
BLOCK_USE item=
count=
mod=
tag=
name=
damage=
This objective completes once the player uses the block specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: BLOCK_USE item=minecraft:stone_button count=1.
DIALOGUE inserter> name= text= choice= This objective can't be completed. It causes the the NPC specified by <uuid|inserter> with the specified name string name=to display the message string specified by text=. The optional addition of choice= can be added multiple times so the player can pick responses. For example: "DIALOGUE NPCExample name=npcName text=start choice=startYes choice=startNo".
DIMENSION <dimension> None This objective completes once the player is within the dimension specified by <dimension>. For example: DIMENSION 1.
ENTITY_INTERACT class name>
<count>
None This objective completes once the player has interacted an entity specified by <uuid|class name> and <count>. For example: ENTITY_INTERACT Creeper 1.
ENTITY_VICINITY class name>
<count> <distance>
None This objective completes once the player is within an area specified by <distance> of an entity specified by <uuid|class name> and <count>. For example: ENTITY_VICINITY Creeper 1 10.
FOLLOWTHROUGH None None This objective will automatically complete.
ITEM_CRAFT item=
count=
mod=
tag=
name=
damage=
This objective completes once the player crafts the item specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: ITEM_CRAFT item=minecraft:enchanting_table count=1 mod=minecraft tag=TagA tag=TagB name=Crafting Example damage=100.
ITEM_DROP item=
count=
mod=
tag=
name=
damage=
This objective completes once the player drops the item specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: ITEM_DROP item=minecraft:enchanting_table count=1 mod=minecraft tag=TagA tag=TagB name=Crafting Example damage=100.
ITEM_PICKUP item=
count=
mod=
tag=
name=
damage=
This objective completes once the player picks up the item specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: ITEM_PICKUP item=minecraft:enchanting_table count=1 mod=minecraft tag=TagA tag=TagB name=Crafting Example damage=100.
ITEM_SMELT item=
count=
mod=
tag=
name=
damage=
This objective completes once the player smelts the the item specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: ITEM_SMELT item=minecraft:iron_ore count=1 mod=minecraft tag=TagA tag=TagB name=Crafting Example damage=100.
ITEM_USE item=
count=
mod=
tag=
name=
damage=
This objective completes once the player uses the item specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: ITEM_USE item=minecraft:enchanting_table count=1 mod=minecraft tag=TagA tag=TagB name=Crafting Example damage=100.
NPC_RESPOND test test Test
POKEMON_CAPTURE <pokémon specsor or inserter>
<count>
None This objective completes once the player captures the Pokémon specified by <pokémon specs or inserter> and <count>. For example: POKEMON_CAPTURE #!Types,any,any,any 30.
POKEMON_DEFEAT <pokémon specs or inserter>
<count>
None This objective completes once the player defeats the Pokémon specified by <pokémon specs or inserter> and <count>. For example: POKEMON_DEFEAT #!Types,any,any,any 30.
POKEMON_EVOLVE_POST <pokémon specs or inserter>
<count>
None Test
POKEMON_EVOLVE_PRE <pokémon specs or inserter>
<count>
None Test
POKEMON_HAS <pokémon specs or inserter>
<count>
None This objective completes once the player has the Pokémon specified by <pokémon specs or inserter> and <count>. For example: POKEMON_HAS #!Types,any,any,any 1.
POKEMON_HATCH <pokémon specs or inserter>
<count>
None This objective completes once the player hatches the Pokémon specified by <pokémon specs or inserter> and <count>. For example: POKEMON_HATCH #!Types,any,any,any 30.
POKEMON_TRADE_GET <pokémon specs or inserter>
<count>
None This objective completes once the player received via a trade the Pokémon specified by <pokémon specs or inserter> and <count>. For example: POKEMON_TRADE_GET #!Types,any,any,any 1.
POKEMON_TRADE_GIVE <pokémon specs or inserter>
<count>
None This objective completes once the player gives via a trade the Pokémon specified by <pokémon specs or inserter> and <count>. For example: POKEMON_TRADE_GIVE #!Types,any,any,any 1.
RANDOM <ActionA>:<actionB> <PercentageA>:<PercentageB> None This objective automatically completes and randomly selects an action specified by <ActionA>:<actionB> and <PercentageA>:<PercentageB>. For example: RANDOM 1:0 99:1, 1% to activate action 0, 99% to activate action 1.
SERVER_TIME [range] This objective completes once the server has hit a time specified by . The optional arguments of [range] can also be added to specify a time range before and after. For example: SERVER_TIME 12:00.
STRUCTURE <structure name> None This objective completes once the player is within the structure specified by <structure name>. For example: STRUCTURE Stronghold.
TILEENTITY_VICINITY <uuid or class name>
<count>
<distance>
None This objective completes once the player is within an area specified by <distance> of an tile entity specified by <uuid|class name> and <count>. For example: TILEENTITY_VICINITY TileEntityChest 1 10.
WORLD_TIME [range] This objective completes once the world has hit a time specified by . The optional arguments of [range] can also be added to specify a time range before and after. For example: WORLD_TIME 12:00.

actions

Actions are rewards which the player receives once they have completed an objective.

Action Name Required Arguments Optional Arguments Description
COMMAND <command> None Runs the command specified by <command> as the console. @p can be used as a placeholder for the player's username. For example COMMAND megaring @p.
COMPLETE_QUEST None None Finishes and completes the quest for the player.
FAIL_QUEST None None Stops and fails the quest for the player.
ITEM_GIVE item=
count=
mod=
tag=
name=
damage=
Gives the player the item specified by item= and count=. The optional arguments of mod=, multiple versions of tag=TagA and tag=TagB, name= and damage= can also be added. For example: ITEM_GIVE item=pixelmon:rare_candy count=1 mod=pixelmon tag=TagA tag=TagB name=Item Example damage=100.
MESSAGE <message> None Displays the message specified by <message> to the player in their chat. @p can be used as a placeholder for the player's username. MOTD Codes can be inserted before the <message> to give them some color. For example: MESSAGE \u00A7eHello @p!.
POKEMON_GIVE <Pokémon Spec> None Gives the player the Pokémon specified by <Pokémon Spec>. For example: POKEMON_GIVE Dragonite shiny:true nature:jolly growth:microscopic unbreedable.
POKEMON_SPAWN <x>
<y>
<z>
<Pokémon Spec>
None Spawns the Pokémon specified by <Pokémon Spec> at the specified coordinates <x>, <y>, and <z>. ~ can be for the relative whilst r can be used for the radius. For example POKEMON_SPAWN 0 100 0 Dragonite shiny:true nature:jolly growth:microscopic unbreedable.
SET_STAGE <stage number> [Quest filename].json Sets the player to the stage number specified by <stage number>. The optional argument of [Quest filename].json can also be added to set the player to the stage specified on a different quest. For example: SET_STAGE 10 Another Quest.json.
TELEPORT X=
Y=
Z=
YAW=
PITCH=
DIM=
None Teleports the player to the location specified by X=, Y=, Z=. YAW= can be used to specify the direction the player is looking, PITCH= can be used to specify if the player is looking up or down and DIM= can be used to specify the dimension ID. ~ can be for the relative whilst r can be used for the radius. For example: TELEPORT X=~0 Y=~100 Z=~0 YAW=0 PITCH=0 DIM=1.

© 2012 - 2025 Pixelmon Mod