Back to mods
Pathbound: World Difficulty project artwork

CurseForge · Minecraft mod

Pathbound: World Difficulty

Pick a world difficulty once on first join: Classic or Trial. Each path grants its own stages, datapacks and commands, all set by config.

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which Pathbound: World Difficulty release should I use?

Updated today
Latest stable file pathbound-neoforge-1.21.1-1.1.1.jar
Game version 1.21.1
Loader NeoForge

Pathbound: World Difficulty pathbound-neoforge-1.21.1-1.1.1.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.

Where it goes

Is Pathbound: World Difficulty required on the client, server, or both?

The project page does not say whether this file belongs on the client, dedicated server, or both.

Client Source doesn’t say
Dedicated server Source doesn’t say
Loader for this release NeoForge
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source does not explicitly classify this release as client-only or server-only.

What else does Pathbound: World Difficulty pathbound-neoforge-1.21.1-1.1.1.jar need?

pathbound-neoforge-1.21.1-1.1.1.jar. Change the file and its required mods may change too.

No extra mods listed for this file

This file does not list any required mods. Do not add a library just because a different file uses it.

2 listed on this file 15 pulled in by those mods
FTB Quests (NeoForge) Optional for Pathbound: World Difficulty pathbound-neoforge-1.21.1-1.1.1.jar
optional
Matching file found Matched file: [NEOFORGE][1.21.1] FTB Quests 2101.1.38
KubeJS Optional for Pathbound: World Difficulty pathbound-neoforge-1.21.1-1.1.1.jar
optional
Matching file found Matched file: KubeJS NeoForge 2101.7.2-build.381
FTB Library (NeoForge) Needed by FTB Quests (NeoForge)
pulled in
Matching file found Matched file: [NEOFORGE][1.21.1] FTB Library 2101.1.39
Architectury API Needed by FTB Quests (NeoForge)
pulled in
Matching file found Matched file: [NeoForge 1.21] v13.0.11
FTB XMod Compat Needed by FTB Quests (NeoForge)
pulled in
Matching file found Matched file: [NEOFORGE][1.21.1] FTB XMod Compat 21.1.14
FTB Teams (NeoForge) Needed by FTB Quests (NeoForge)
pulled in
Matching file found Matched file: [NEOFORGE][1.21.1] FTB Teams 2101.1.12
Better Advanced Tooltips Needed by KubeJS
pulled in
Matching file found Matched file: better-advanced-tooltips-2101.1.0-build.5.jar
Rhino Needed by KubeJS
pulled in
Matching file found Matched file: Rhino 2101.2.7-build.85
Just Enough Items (JEI) Needed by FTB Library (NeoForge)
pulled in
Matching file found Matched file: 19.70.0.469 for NeoForge 1.21.1
Waystones Needed by FTB XMod Compat
pulled in
Matching file found Matched file: waystones-neoforge-1.21.1-21.1.46.jar
FTB Ranks (NeoForge) Needed by FTB XMod Compat
pulled in
Matching file found Matched file: [NEOFORGE][1.21.1] FTB Ranks 2101.1.5
MezzConfigGUI Needed by Just Enough Items (JEI)
pulled in
Matching file found Matched file: MezzConfig GUI mc1.21.1-0.5.5 for NeoForge
MezzConfig Needed by Just Enough Items (JEI)
pulled in
Matching file found Matched file: MezzConfig 0.7.1 for NeoForge 1.21.1
Balm Needed by Waystones
pulled in
Matching file found Matched file: balm-neoforge-1.21.1-21.0.67.jar

15 extra mods were pulled in by other dependencies. Indented rows show who needs each one. We only count dependency files that match this setup. A file for another loader does not fill the gap.

Before you install it

Add Pathbound: World Difficulty without breaking your instance.

Built for Pathbound: World Difficulty pathbound-neoforge-1.21.1-1.1.1.jar. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use pathbound-neoforge-1.21.1-1.1.1.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    This file does not list any required mods. Do not add a library just because a different file uses it.

  3. 03

    Put it on the correct side

    The project page does not say whether this file belongs on the client, dedicated server, or both.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside pathbound-neoforge-1.21.1-1.1.1.jar. It opens that exact file at the source.

About this project

What does Pathbound: World Difficulty add?

When a new world is created, its host picks a difficulty on a dedicated screen: Classic or Trial. The choice is stored in the world and cannot be changed from the game. Pathbound then applies it for everyone: player stages, datapacks, commands. Modpacks decide what each path actually means.

Everything is data. You can rename the difficulties, add your own, give them recipes and quests, and restyle the whole screen without writing a line of Java.

Pathbound out of the box: Classic and Trial.

What it does

  • A one-time choice. The world host (or an operator on a server) sees the chooser on first join. Esc does not close it. Other players see a "the host is choosing" notice and can keep playing.
  • Player stages. Every difficulty grants its own stages (player tags, the same stages KubeJS and FTB Quests read) and removes the stages of the others. Quests, recipes and scripts can react to them.
  • Datapacks per difficulty. A difficulty can switch datapacks on: different recipes, loot or worldgen data for Trial worlds only. Packs can ship them in config/pathbound/datapacks/, no extra jar needed.
  • Commands on choice. Run any server commands once when a difficulty is picked (gamerules, /difficulty, scoreboard, functions).
  • Fully restylable screen. Card size and layout, colours, background, frame sprites (nine-slice, animated), item or texture icons, drawn title images per language, sounds and animations, all from a resource pack.
  • KubeJS recipes per difficulty (optional). Write PathboundEvents.recipes('trial', e => ...) instead of ServerEvents.recipes and those recipes exist only in Trial worlds: add, remove or replace anything, per difficulty.
  • KubeJS support (optional). Add or change difficulties from scripts, refuse a choice, react after it, read and set the difficulty.
  • Server friendly. defaultMode in the server config picks a difficulty for new worlds automatically and skips the screen.
  • Any language. Names, descriptions and title images can be set per language (en_us, de_de, pt_br...), and the screen texts come from ordinary lang files, so you can translate everything yourself.

Commands: /pathbound mode, /pathbound mode set <id|none>, /pathbound choose (show the screen again), /pathbound list. Changing the difficulty needs operator rights or the singleplayer world owner (cheats not required).

Example: Thaumaturge Renaissance (custom version)

This is a customised setup from the Thaumaturge Renaissance modpack, not what Pathbound looks like by default. The frames, drawn titles and the rabbit and skull icons belong to the pack and are not included in the mod.


Custom version: animated pixel-art frames, drawn titles, icons and a hover glow from the pack's resources.

What the pack does with Pathbound:

  • renames the two paths to Classic and Expert and writes its own descriptions;

  • gives each one a stage (trq_normal / trq_hard): FTB Quests shows Expert-only quest lines only in Expert worlds;

  • turns on an Expert recipe datapack from config/pathbound/datapacks/trq_hard in Expert worlds only;

  • replaces the plain cards with its own frames, titles and icons through kubejs/assets.

    All of it is config and resources. The pack has no code of its own for this.

Make your own difficulties: a mini guide

1. Open the config. Start a world once, then open config/pathbound/difficulties.json. Each entry is one card:

{
  "id": "trial",
  "name": { "en_us": "Trial", "de_de": "Prüfung" },
  "description": "Tougher recipes and no keepInventory.",
  "color": "#B48CFF",
  "icon": "minecraft:wither_skeleton_skull",
  "order": 1,
  "stages": ["mypack_trial"],
  "datapacks": ["config:trial_recipes"],
  "commands": ["gamerule keepInventory false"]
}

2. Rename or recolour. Change name, description (plain text, or one text per language like {"en_us": "...", "de_de": "..."}) and color. icon takes an item id or a texture.

3. Add or remove a difficulty. Copy an entry and give it a new id (lowercase letters, digits, _). Delete an entry to remove it. order sets the card order. "selectable": false hides a card but keeps the difficulty for commands.

4. Give it recipes or loot. Put a normal datapack (a folder with pack.mcmeta, or a .zip) into config/pathbound/datapacks/ and list it as "config:<name>" in datapacks. Pathbound enables it only in worlds with that difficulty.

5. Or give it recipes with KubeJS. In any file in kubejs/server_scripts/, use PathboundEvents.recipes instead of ServerEvents.recipes. Inside it works exactly the same, but only in worlds with that difficulty:

PathboundEvents.recipes('trial', e => {
  e.remove({ output: 'minecraft:torch' })
  e.shaped('2x minecraft:torch', ['C', 'S'], { C: '#minecraft:coals', S: 'minecraft:stick' })
  e.replaceInput({ output: 'minecraft:anvil' }, 'minecraft:iron_block', 'minecraft:netherite_ingot')
})

PathboundEvents.recipes('classic', e => {
  e.shapeless('minecraft:bundle', ['minecraft:leather', 'minecraft:string'])
})

Pathbound reloads the recipes by itself when a difficulty is chosen and when a world opens. Recipes in plain ServerEvents.recipes keep working for every difficulty.

6. Hook up quests and scripts. Use the difficulty's stage, for example a stage task mypack_trial in FTB Quests (it reads stages through KubeJS and FTB XMod Compat), or player.stages.has('mypack_trial') in KubeJS.

7. Run commands. Add them to commands. They run once, as the server, right after the datapacks and recipes reload.

8. Restyle the screen (optional). In a resource pack (or kubejs/assets/) add:

  • assets/pathbound/chooser/layout.json for card size, padding, colours, background, sounds and animations;
  • frame sprites assets/<yourpack>/textures/gui/sprites/<path>.png (plus _hovered and _selected), then set "frame": "<yourpack>:<path>" on a difficulty;
  • "banner" on a difficulty for a drawn title image, one per language if you like.

9. Apply and test. Restart the world (or the server), then run /pathbound choose to see the screen again. /pathbound list shows what was loaded. For servers, set defaultMode = "trial" in config/pathbound-server.toml to skip the screen.

The full reference (every field, layout keys, animations, KubeJS events) is in the README on GitHub.

Project description from CurseForge.

Pick your setup

Pathbound: World Difficulty by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

1 available setups

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

Pathbound: World Difficulty versions and loaders

3 of 3 releases match

Looking for an older file? The official CurseForge project page is in Resources.