plugins/FirstHour/paths.yml. A path is an ordered list of steps. Each step is one goal with a type, a title, a hint and a reward.
On first start, FirstHour writes the Survival preset as paths.yml. Edit it, then run /firsthour reload.
A step
plugins/FirstHour/paths.yml
Step ids (
wood above) use letters, digits, _ and - only. A step pays its reward once per player, keyed by its id, so renaming a step lets it pay again.
Step types
Type names are case-insensitive, and
go-to works as well as go_to.
Notes per type
command
command
Write targets with or without the slash.
/essentials:rtp far counts as rtp. Aliases count under the real command name too, so a rtp target also finishes when a player types an alias such as /wild, as long as the server registers it as an alias of rtp. Commands that another plugin cancels do not count.go_to
go_to
location is "world, x, y, z" using the world’s folder name. The check runs every second and measures straight-line distance, including height. The particle trail and compass point at the location. A go_to step with a missing or broken location is left out.break, place, craft, fish
break, place, craft, fish
Targets are material names like
oak_log or minecraft:oak_log. A craft step counts the items one craft makes. A shift-click craft counts one recipe’s output, not the whole stack, so keep craft amounts low.kill
kill
Targets are living entity types like
zombie or skeleton. Use player for a PvP goal.earn
earn
Progress is the player’s balance now minus their balance when the step started, checked every second. Spending money lowers it. Without Vault,
earn steps are left out with a console warning.playtime
playtime
Counts the minutes FirstHour has seen the player online since their first join, not since the step started. A player who already has 10 minutes finishes a 10-minute step the moment they reach it.
stonkz_sell (PRO)
stonkz_sell (PRO)
Counts Stonkz’s
/sell, /sellhand, /sellinv, /sellinventory and /sellall. A plain command step with the same targets also works, which is what the Economy SMP preset does.we_event_join (PRO)
we_event_join (PRO)
Every online player on this step gets progress when a WorldEvents PRO event starts. Add event names as targets to count only those events. Target names can’t contain spaces.
relic_seen (PRO)
relic_seen (PRO)
Finishes when the player opens the relic board with
/relics or /relic, or picks up a Relics SMP relic item.skip-if-done
Players don’t always do things in order. Withskip-if-done: true, actions that match a later step count toward it before the player gets there. When they reach it, it ticks off at once.
earn and playtime steps measure a running total, so they only count while they are the current step.
Several paths (PRO)
PRO runs as many paths as you like. Addpermission: to a path, and each new player gets the first path in the file they have permission for. A path with no permission is open to everyone.
Lite runs one path of up to 6 steps and ignores
permission:. Extra paths and steps stay in the file and start working when you move to PRO.Presets
paths.yml, the old file is saved as paths.yml.bak, and FirstHour reloads. Each run replaces the previous .bak.
- Survival
- Economy SMP
- Lifesteal
Lite and PRO. Six steps:
- Chop 8 logs.
break: oak, spruce, birch, jungle, acacia, dark oak, mangrove or cherry logs. Reward: 4 apples - Craft a crafting table.
craft, skip-if-done. Reward: 16 torches - Craft a stone pickaxe.
craft, skip-if-done. Reward: 8 coal, 6 bread - Protect your base.
command:/claim,/lands,/land,/claims. Skip-if-done. Reward: 4 iron ingots - Set your first home.
command:/sethome,/createhome. Skip-if-done. Reward: 2 ender pearls - Defeat a hostile mob.
kill: zombie, skeleton, spider, creeper, husk, drowned, stray, enderman, witch. Reward: iron sword, 8 cooked beef

Validation
A broken step never stops the plugin. FirstHour leaves it out, keeps the rest of the path, and logs the reason so nobody gets stuck on a goal they can’t finish:- an unknown
type, or a PRO type on Lite - a type whose plugin isn’t installed (
earnwithout Vault,stonkz_sellwithout Stonkz, and so on) - a
commandstep with no target - a step whose targets are all invalid. Single bad targets are dropped with a warning
- a
go_tostep without a validlocationand a radius above 0 - a step id with characters other than letters, digits,
_and-
/firsthour reload and /firsthour preset report the warning count in chat. The details are in the console, each line starting with paths.yml.
Editing a live path
After/firsthour reload, FirstHour re-checks every online player, and does the same for others when they next join:
- If a player’s path no longer exists, they move to the first path they qualify for and start at goal 1.
- If the path got shorter and they were past the new end, they count as finished.
- Steps they were already paid for don’t pay again, as long as the step id stays the same.
