Mebahel's RPG - Villager Quests and Companions

Mebahel's RPG - Villager Quests and Companions

Turn Minecraft villages into living RPG adventures with story-driven villager quests, branching choices, recruitable companions, quest-board contracts, a quest journal, and an in-game quest creator.

14 177 downloads 34 followers

Mebahel's RPG: Villager Quests & Companions

Turn Minecraft villages into living RPG adventures. Discover story-driven villager quests, branching dialogue and meaningful choices, recruitable companions, repeatable bounty contracts, a quest journal, and a full in-game quest creator.

For Minecraft Java Edition 1.20.1 and 1.21.1

Mod loaders: Fabric / Quilt / Forge / NeoForge through Sinytra Connector where supported

Play style: Singleplayer, multiplayer, RPG and adventure modpacks

Content: 89 included quests, repeatable village contracts, 11 quest-book stories, 40 ambient villager dialogue scenes

Join our Discord   Support on Patreon   Support on Ko-fi

Give Minecraft Villagers a Story Worth Following

Villagers shouldn't only be trading stations. Mebahel's RPG: Villager Quests & Companions is a Minecraft villager quest and companion mod that turns ordinary villages into places where characters have problems to solve, rumors to share, and stories that can change according to your decisions.

Meet named NPCs, investigate abandoned locations, protect villages, choose between fighting and showing mercy, and unlock new chapters as your adventure progresses. Some characters can even become permanent companions, with equipment, combat behavior, and orders of their own.

Unlike a quest framework that requires a separate modpack or custom quest files, this mod comes with ready-to-play adventures. Just install it, visit a village, and start exploring. For creators, the built-in Narrative Quest Studio and JSON datapack system make it possible to create entirely new storylines.

At a Glance

Feature What You Get
89 included quests Narrative questlines, investigations, village jobs, hidden adventures, and follow-up stories
Branching dialogue and choices Decisions about trust, combat, or mercy that can affect later quests and dialogue
Recruitable NPC companions Follow, wait, return home, guard, equip gear, and choose combat stances
Repeatable village quest boards Hunts, deliveries, escorts, defense contracts, elite targets, and five difficulty tiers
RPG quest journal and HUD Objectives, rewards, quest history, destination guidance, and an optional quest map
In-game quest creation Build and publish custom quests using the Narrative Quest Studio
Custom datapack support Create new dialogue, questlines, NPC encounters, rumors, and contracts with JSON
Multiplayer and modpacks Individual or shared story progress, server configuration, and optional mod integrations

Gameplay screenshot of Mebahel's RPG: Villager Quests & Companions


Story-Driven Villager Quests with Choices and Consequences

A simple delivery can become an investigation. An enemy can become an ally. A decision you make in one village may change the next story you encounter.

The mod contains 89 included quests, including narrative quest chains, village activities, quest-book mysteries, and stories discovered through rumors or prerequisites. Your adventures can involve:

  • Investigating mines, ruins, and unusual locations.
  • Escorting NPCs and delivering resources to other settlements.
  • Helping villages build, rebuild, and defend important locations.
  • Hunting named enemies and confronting dangerous threats.
  • Choosing to spare or attack certain characters.
  • Discovering clues and entire adventures inside written quest books.
  • Returning later for new dialogue, consequences, or follow-up quests.

Choices matter: selected decisions can alter dialogue, future quests, traits, and the direction of a storyline. Some follow-ups appear only after time has passed, so revisiting familiar characters can reveal more of their stories.

What Kinds of Quests Are Included?

Quest content Examples Main gameplay
Major storylines Ash Court, Armed Dead, False Hero, Blackthorn House, Mad Scientist, Most Important Cow, No Banner, Village Defense, Witch, Last Heat Branching narratives, investigations, combat, and consequences
Village stories Village Arrival, construction, deliveries, animal enclosures, and local threats Building, collecting, protecting, and exploring
Quest-book stories 11 discoverable stories, including delayed continuations Exploration, clues, secrets, and unusual objectives
Village contracts Hunts, deliveries, village protection, incursions, escorts, elite targets Repeatable progression, scaling challenges, and rewards
Hidden discoveries Rumors, prerequisites, and later quest chapters Exploration and gradual storytelling

Recruitable Companions: Turn Characters into Allies

Your choices can change more than a quest ending. Some characters who begin as enemies or important story NPCs can become permanent companions. Current recruitable companions include Rusk and Merrin.

Give your companion practical orders:

  • Follow you on adventures or wait at a location.
  • Return home or guard an assigned area, including while you are offline.
  • Switch between passive, defensive, and aggressive combat behavior.
  • Manage weapons and other equipment in a dedicated companion inventory.
  • Fight hostile mobs and assist when you engage an enemy.

Their recruitment is tied to the stories you experience rather than being a separate, unrelated system.

A recruitable companion from Mebahel's RPG: Villager Quests & Companions

Companion Equipment and Recovery

Give companions weapons and equipment through their dedicated inventory screen. They also gradually recover health after 10 seconds outside combat.

Companion inventory screen used to manage weapons and equipment


Village Quest Boards, Bounties and Repeatable Contracts

When you want an adventure between story chapters, look for a quest board in a village. Boards offer repeatable jobs with objectives, destinations, rewards, and progressively tougher challenges.

Contracts include monster hunts, spawned group hunts, deliveries, village defense, incursions, escorts, and elite targets.

Each board has its own level and reputation. Completing its contracts improves progression, increases the chance of tougher offers, and reduces refresh time.

Difficulty Rating
Common ★
Dangerous ★★
Deadly ★★★
Nightmare ★★★★
Legendary ★★★★★

Harder contracts can scale enemy groups, elite encounters, equipment, effects, and rewards. Accepted contracts appear directly in your quest journal and HUD; no contract item needs to occupy an inventory slot.

By default, board offers are personal to each player, while board reputation and level are shared. Server owners can adjust this behavior.

Minecraft village quest board with repeatable bounty contracts and refresh timer


Create Your Own Minecraft Quests In-Game

Narrative Quest Studio lets server operators build new story quests without writing every JSON file by hand.

Open it with /mebahelquestcreator to create and edit quest identities, opening dialogue, stages, objectives, rewards, and advanced behaviors. The editor supports branching choices, named encounters, equipment, and reward configuration.

You can save a local draft, preview your quest, publish it to the server, or import a complete quest JSON from the clipboard. If you prefer full file-based control, the JSON datapack system remains available; see the complete creator reference near the bottom of this page.

Narrative Quest Studio interface for creating custom Minecraft quests in-game


Quest Journal, HUD Tracker and Branching Quest Map

Your adventures are organized in a dedicated RPG interface instead of being scattered across chat messages.

Quest Journal (J)

Press J to open the configurable journal and browse active, completed, and failed quests, plus objectives, rewards, progress, and destinations. Your tracked objective also appears on a configurable HUD overlay.

Server owners can disable clickable journal coordinates if they want to preserve exploration and discovery.

Quest journal displaying active objectives, rewards and tracked destination

Quest Map (K)

Press K to see a branching overview of connected stories, including choices, prerequisites, rumors, quest chains, delayed continuations, and chance-based follow-ups.

The map helps you understand how your adventure has developed without showing every possible path upfront. Both shortcuts are configurable, and servers can disable the quest map if preferred.

Branching quest map showing story connections and quest details


Living Villages: Rumors, Conversations and Couriers

Villages are designed to feel more alive even when you are not actively completing a quest. Some conversations point toward new adventures, while others reflect everyday village life or the consequences of your decisions.

Villager Rumors and Hidden Quest Books

Villagers can share rumors that reveal leads and unlock hidden quests. Exploring the world can also uncover eleven quest-book stories, including standalone mysteries and adventures with delayed follow-ups. Not every quest is offered immediately, giving players reasons to revisit familiar places and continue exploring.

Discoverable quest books and hidden stories in Villager Quests & Companions

Ambient Villager Conversations and Reactions

The mod includes 40 ambient dialogue scenes about work, crops, books, iron golems, village gossip, and everyday life. Conversations use text above the speaker, dialogue sounds, and speaking animations. Villagers can also react to major events from your completed stories.

Ambient conversations and supported in-game narrative text use the player's selected available language.

Two Minecraft villagers having an ambient conversation in their village

Courier Deliveries and Delayed Storylines

Some quests continue only after enough in-game time has passed. A courier can find you outdoors in the Overworld during daytime and deliver letters leading to follow-up stories. If several letters are waiting, a single courier can bring them together.

Receiving a delivered quest book does not automatically begin the next quest; you choose when to continue.

Minecraft courier delivering a letter for a follow-up RPG quest


Start Playing: Your First Village Adventure

No external quest pack or custom datapack is required. The included quests work out of the box.

  1. Visit a Minecraft village and talk to villagers. Not every villager is a quest giver; some offer rumors instead.
  2. Find a quest board to browse repeatable contracts and rewards.
  3. Explore the world to discover quest books, clues, and hidden adventures.
  4. Press J to track quests in your journal and on the HUD.
  5. Press K to explore story connections on the quest map.

Minecraft Versions, Mod Loaders and Installation

Requirement Details
Minecraft versions 1.20.1 and 1.21.1
Fabric Fabric version with the matching Fabric API
Quilt Listed as supported; use the appropriate Fabric API-compatible setup
Forge / NeoForge Uses the Fabric build through Sinytra Connector and Forgified Fabric API, only where those components support the selected version and loader
Game modes Singleplayer and multiplayer
Quest content Built in; extra datapacks are optional

Fabric / Quilt: Fabric API is required.

Forge / NeoForge (Connector-based): Sinytra Connector and Forgified Fabric API are required. Check Connector's version-specific compatibility before installing. This is not a claim that native Forge/NeoForge builds exist for every Minecraft version.

Always download the version of Villager Quests & Companions and all dependencies that match your Minecraft version.


Compatibility with Other Minecraft Mods

Mebahel's RPG is designed for adventure, fantasy, village overhaul, and RPG modpacks. It integrates with several village and creature mods to make quest content more varied.

Mod Compatibility or optional integration
MCA Reborn Dedicated interaction handling returns control to MCA after quest interactions.
Ice and Fire CE Optional elite contracts involving fire, ice, and lightning dragons, with difficulty scaling and rewards.
Saint's Dragons Configurable dragon-related village attack contracts, including Varasuchus, Volitans, Nulljaw, Atroxiia, Raevyx, Ignivorus, and Draconian Swarm.
Guard Villagers Dedicated configuration controls which quests guards may offer.
Villagers Reborn Supports the mod's villager models and interaction changes.
Epic Villages Tested with the quest system.
Luki's Grand Capitals Tested with the quest system.

Quest objectives can target vanilla and modded locations. Exact compatibility can vary depending on Minecraft version, loader, and changes made by another mod.

RPG quest and creature integration in a Minecraft world


Multiplayer, Servers and Modpacks

Yes, you can use Villager Quests & Companions in a modpack or multiplayer server. The mod supports individual quest progress by default, or configurable shared progress, outcomes, rewards, and story traits.

Quest boards can offer contracts individually or collectively. Board reputation and progression are shared. Server and pack creators can configure quest generation, board placement, rumors, HUD navigation, contracts, dialogue frequency, and supported integrations.

For custom modpacks, datapacks can add missions involving vanilla or modded mobs, items, structures, dialogue, objectives, and rewards without replacing the included stories.

Configuration

Main configuration file:

config/mebahelrpgrquest/mebahelrpgrquest_config.json

The configuration covers quest and rumor assignment, quest-board generation, quest tracking, shared multiplayer settings, and ambient dialogue. Additional files handle ignored quests, Guard Villagers, and contract generation.

Main configuration defaults

OptionDefault valuePurpose
villagerQuestChance0.15Story quest assignment weight
villagerRumorChance0.15Rumor assignment weight
disableQuestCoordinateClickfalseDisables clickable journal coordinates
disableQuestMapfalseDisables the quest map
shareQuestsBetweenPlayersfalseShares story progress, outcomes, rewards, and traits
inventoryJournalButtonPositionleftInventory journal button position
hideInventoryJournalButtonfalseHides the inventory journal button
questTrackerPositiontop_leftHUD tracker corner
questTrackerScale1.0HUD tracker size
questBoardVillageChance1.0Quest-board generation chance
individualBoardOfferstruePersonal board offers
questBoardStructuresminecraft:village_plains, minecraft:village_desert, minecraft:village_savanna, minecraft:village_snowy, minecraft:village_taigaEligible villages
questBoardPreferMeetingPointtruePlacement near meeting point
questBoardPlacementSearchRadius24Placement search radius
questBoardDropsOnBreaktrueQuest-board item drop behavior
questBoardMinimumPlacementDistance48Minimum distance between boards
ambientDialoguesEnabledtrueAmbient conversations on/off
ambientDialogueCheckIntervalTicks100Dialogue check interval
ambientDialogueChance0.08Dialogue chance per eligible check
ambientDialogueActivityRadius24.0Dialogue activity radius

Languages and Localization

The mod includes localization for English, French, German, Polish, Japanese, Korean, Russian, Simplified Chinese, Brazilian Portuguese, Spanish, and Mexican Spanish.

The game uses your selected language for supported quest text and villager ambient conversations. The available languages are part of the mod; no separate translation mod is required.


Frequently Asked Questions

Does this mod add quests to Minecraft villagers automatically?

Yes. It includes ready-to-play quests and villager rumors, so you can discover storylines simply by visiting villages. Quest assignment and rumor chances are configurable.

Is this a quest mod or just a quest framework for modpacks?

Both playable content and creator tools. It includes 89 quests and repeatable contracts while also supporting custom quests through an in-game editor and JSON datapacks.

Can I recruit NPCs as companions in Minecraft?

Yes. Certain quest outcomes allow you to recruit Rusk and Merrin, then give them follow, wait, home, guard, and combat stance commands. They can also equip gear.

Are the quest choices actually consequential?

In selected stories, yes. Your decisions can change follow-up quests, story traits, and dialogue. Not every quest branches, and some continuations appear later.

Does it work in multiplayer or with a Minecraft modpack?

Yes. Quest progression is individual by default, with optional shared story progression. Quest boards, difficulty, world generation, and interface behavior have server configuration options.

Can I create custom quests without editing JSON?

Yes. Server operators can use Narrative Quest Studio (/mebahelquestcreator) for in-game creation and publishing. JSON datapacks are also supported for advanced customization.

Does it work with Ice and Fire, MCA Reborn or other village mods?

It has specific integrations and tested compatibility with the mods shown in the compatibility table above. Availability and behavior may depend on the installed versions.

Does it support Forge and NeoForge?

Through Sinytra Connector where compatible, using the Fabric version plus Forgified Fabric API. Verify that Connector supports your chosen Minecraft version and loader before installation.

Do I need another Mebahel mod to play?

No. Draugr Invasion and Dwarven Automatons are separate, optional projects, not required dependencies of Villager Quests & Companions.


Continue the Adventure: More Mods by Mebahel

If you enjoy RPG adventures, these separate Minecraft mods may also interest you:

Mebahel's Creatures: Draugr Invasion
Explore Nordic ruins, fight intelligent Draugr, solve dungeon challenges, recover the Golden Claw, and challenge the Draugr Overlord.

Mebahel's Creatures: Dwarven Automatons
Explore ancient Dwemer-inspired ruins, battle mechanical constructs, recover Dwarven technology, and summon mechanical allies.

All Mebahel Minecraft mods on CurseForge


Join the Community and Support Development

Join the Mebahel Discord to suggest quest ideas, vote on upcoming features, share screenshots, report bugs, discuss companions and stories, or follow development previews.

For bug reports, include your Minecraft version, loader, mod version, reproduction steps, and a log or screenshot when relevant.

You can support future updates and independent mod development through Patreon or Ko-fi using the banners above, or the direct links below.

Support is completely optional. Following the project, creating datapacks, reporting issues and sharing your adventures also helps. Direct links: Patreon · Ko-fi.

If you want to see future updates, use Follow on CurseForge.


Creator Documentation: JSON Datapack Reference

Build your own stories with JSON datapacks. Add dialogue, branching choices, rumors, objectives, named enemies, rewards, and repeatable contracts. Use vanilla or modded content to tailor adventures to your world or modpack.

The reference sections below include quest and contract examples. Expand the section closest to what you want to create.

Story quests and rumors: setup

Anyone can create new quests for the mod with JSON files in a datapack or mod. You can add dialogue, objectives, rumors, named enemies, rewards, choices, ambushes, raids, deliveries, escorts, and complete branching questlines.

File Locations

Place quest and rumor files in your own namespace:

data/<namespace>/quests/<quest_file>.json
data/<namespace>/rumors/<rumor_file>.json

For example:

data/my_quests/quests/old_well.json

This creates the quest id:

my_quests:old_well

Quest subfolders are allowed, but they do not become part of the quest id. Keep every quest filename unique inside your namespace.

Quick Start

  1. Choose the example below that is closest to the quest you want to make.
  2. Copy its JSON into a new file under data/<namespace>/quests/ or data/<namespace>/rumors/.
  3. Replace the example or modid namespace with your own namespace.
  4. Change the dialogue, entities, structures, objectives, rewards, and linked quest ids.
  5. Reload the datapack and test the quest in a development or backup world.

JSON does not allow comments or trailing commas. Always use full identifiers such as minecraft:zombie, and use full quest ids such as my_quests:old_well when one file references another.

Player-facing text can use a translation object:

{
  "translate": "quest.my_quests.old_well.title",
  "fallback": "The Old Well"
}

The fallback value is displayed when no matching translation is available, so a separate language file is optional.

Named Threat with Attack or Spare Branches

Spawn a named enemy, let the player speak to it, then continue into a different quest depending on whether the target is attacked or spared.

First Quest

{
  "title": "QUEST TITLE",
  "summary": "Villager-facing summary shown before acceptance.",
  "flow": {
    "on_kill": "modid:kill_branch_2",
    "on_spare": "modid:spare_branch_2"
  },
  "goals": [
    {
      "id": "talk_to_threat",
      "talk": "minecraft:zombie",
      "amount": 1,
      "name": "NAMED THREAT"
    },
    {
      "id": "kill_threat",
      "kill": "minecraft:zombie",
      "amount": 1,
      "attack_only": true,
      "from_threats": true
    }
  ],
  "threat": {
    "entity": "minecraft:zombie",
    "name": "NAMED THREAT",
    "structure": "minecraft:ruined_portal",
    "search_radius": 4000,
    "spawn_on_accept": true,
    "spawn_min_radius": 3,
    "spawn_max_radius": 6,
    "spare": true,
    "glow": false,
    "max_health": 150,
    "equipment": {
      "mainhand": "minecraft:diamond_sword",
      "helmet": {
        "item": "minecraft:iron_helmet",
        "enchants": {
          "minecraft:unbreaking": 3
        }
      }
    },
    "line": "Quest giver line that describes the threat.",
    "target": "Initial line spoken by the threat.",
    "talk": [
      [
        "Player question one?",
        "Threat answer one."
      ],
      [
        "Player question two?",
        "Threat answer two."
      ]
    ]
  },
  "choice": {
    "attack": {
      "label": "Attack choice label.",
      "traits": [
        "trait_from_attack"
      ],
      "return": "Quest giver line after the target is killed."
    },
    "spare": {
      "label": "Spare choice label.",
      "line": "Immediate line after sparing the target.",
      "post": "Follow-up line shown after the spare.",
      "villager": "Quest giver line after spare.",
      "traits": [
        "trait_from_spare"
      ],
      "rewards_from_giver": true,
      "rewards": {
        "xp": 160,
        "items": {
          "minecraft:iron_ingot": 4
        }
      },
      "after": {
        "offer_chance": 70,
        "ambush_chance": 30,
        "nothing_chance": 0,
        "ambush": "minecraft:zombie",
        "ambush_name": "Fallback Ambush Name",
        "count": 5,
        "ambush_max_health": 50,
        "ambush_equipment": {
          "helmet": "minecraft:leather_helmet"
        },
        "line": "Line used when the spared target offers the next quest.",
        "ambush_line": "Line used if mercy triggers an ambush.",
        "nothing": "Line used if no follow-up happens."
      }
    }
  },
  "dialogue": {
    "return": "Quest giver line after kill.",
    "reward": "Quest giver reward line.",
    "done": "Quest giver already-completed line."
  },
  "rewards": {
    "xp": 260,
    "items": {
      "minecraft:emerald": 10
    }
  }
}

For spare-enabled threat confrontations, prefer the talk plus attack_only kill pattern shown above. The first interaction opens dialogue without completing the stage; the stage completes only after the player explicitly chooses attack or spare.

Kill Branch

{
  "title": "KILL BRANCH TITLE",
  "summary": "Follow-up summary after the player chose attack.",
  "dialogue": {
    "intro": "Intro line.",
    "offer": [
      [
        "Player question?",
        "Quest giver answer."
      ]
    ],
    "return": "Return line.",
    "reward": "Reward line.",
    "done": "Already completed line."
  },
  "goals": [
    "kill 3 minecraft:zombified_piglin"
  ],
  "threats": [
    {
      "entity": "minecraft:zombified_piglin",
      "name": "Branch Threat",
      "structure": "minecraft:ruined_portal",
      "search_radius": 4000,
      "spawn_on_accept": true,
      "spare": false,
      "max_health": 70,
      "equipment": {
        "mainhand": "minecraft:golden_sword"
      }
    }
  ],
  "rewards": {
    "xp": 360,
    "items": {
      "minecraft:emerald": 14
    }
  }
}

Spare Branch

{
  "title": "SPARE BRANCH TITLE",
  "summary": "Follow-up summary after the player chose spare.",
  "flow": {
    "next": "modid:spare_branch_3"
  },
  "dialogue": {
    "intro": "Intro line from the spared target or quest giver.",
    "offer": [
      [
        "Player question?",
        "Answer."
      ]
    ],
    "return": "Return line.",
    "reward": "Reward line.",
    "done": "Already completed line."
  },
  "goals": [
    {
      "collect": "minecraft:iron_ingot",
      "amount": 4
    }
  ],
  "rewards": {
    "xp": 240,
    "items": {
      "minecraft:emerald": 6
    }
  }
}

Staged Building and Defense

Ask the player to build or gather supplies first, then begin a second stage that spawns attackers around the quest giver.

Based on questlines/village_build/village_pig_enclosure.json.

Key points:

  • sequential_objectives: true makes stage 0 finish before stage 1 starts.
  • Build objectives use place, bring, collect, or other normal objective shortcuts.
  • Threats can be assigned to stage: 1 and spawned around the quest giver with spawn_origin: "quest_giver".
  • Use from_threats: true on kill goals when the spawned named/custom threats should count.
  • Add one threats entry per mob to spawn. amount is not read on threat entries.
{
  "title": {
    "translate": "quest.example.first_pen_defense.title",
    "fallback": "A Pen Worth Defending"
  },
  "summary": {
    "translate": "quest.example.first_pen_defense.summary",
    "fallback": "Build a small animal pen, bring livestock inside, then defend it from raiders."
  },
  "sequential_objectives": true,
  "dialogue": {
    "intro": {
      "translate": "quest.example.first_pen_defense.dialogue.intro",
      "fallback": "The villager points to a bare patch of grass near the farm."
    },
    "offer": [
      [
        {
          "translate": "quest.example.first_pen_defense.dialogue.offer.0.0",
          "fallback": "What do you need built?"
        },
        {
          "translate": "quest.example.first_pen_defense.dialogue.offer.0.1",
          "fallback": "A fence, a gate, two torches, and enough room for the first herd."
        }
      ]
    ],
    "return": {
      "translate": "quest.example.first_pen_defense.dialogue.return",
      "fallback": "The pen held. So did you."
    },
    "reward": {
      "translate": "quest.example.first_pen_defense.dialogue.reward",
      "fallback": "Take this. A defended farm feeds more than one house."
    },
    "done": {
      "translate": "quest.example.first_pen_defense.dialogue.done",
      "fallback": "The animals are still inside, and the raiders are gone."
    }
  },
  "goals": [
    {
      "id": "place_fences",
      "place": "minecraft:oak_fence",
      "amount": 12,
      "stage": 0,
      "range": 60
    },
    {
      "id": "place_gate",
      "place": "minecraft:oak_fence_gate",
      "amount": 1,
      "stage": 0,
      "range": 60
    },
    {
      "id": "place_torches",
      "place": "minecraft:torch",
      "amount": 2,
      "stage": 0,
      "range": 60,
      "say": {
        "translate": "quest.example.first_pen_defense.goals.place_torches.say",
        "fallback": "The pen is lit. Stay close."
      }
    },
    {
      "id": "bring_animals",
      "bring": "minecraft:pig",
      "amount": 2,
      "stage": 0,
      "range": 60
    },
    {
      "id": "kill_raiders",
      "kill": "minecraft:pillager",
      "amount": 3,
      "stage": 1,
      "from_threats": true
    },
    {
      "id": "kill_raider_captain",
      "kill": "minecraft:vindicator",
      "amount": 1,
      "stage": 1,
      "from_threats": true
    }
  ],
  "threats": [
    {
      "entity": "minecraft:pillager",
      "name": {
        "translate": "quest.example.first_pen_defense.threats.0.name",
        "fallback": "Hungry Raider"
      },
      "stage": 1,
      "spawn_origin": "quest_giver",
      "spawn_min_radius": 18,
      "spawn_max_radius": 30,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true
    },
    {
      "entity": "minecraft:pillager",
      "name": {
        "translate": "quest.example.first_pen_defense.threats.1.name",
        "fallback": "Fence-Cutting Raider"
      },
      "stage": 1,
      "spawn_origin": "quest_giver",
      "spawn_min_radius": 18,
      "spawn_max_radius": 30,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true
    },
    {
      "entity": "minecraft:pillager",
      "name": {
        "translate": "quest.example.first_pen_defense.threats.2.name",
        "fallback": "Torch-Kicking Raider"
      },
      "stage": 1,
      "spawn_origin": "quest_giver",
      "spawn_min_radius": 18,
      "spawn_max_radius": 30,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true
    },
    {
      "entity": "minecraft:vindicator",
      "name": {
        "translate": "quest.example.first_pen_defense.threats.3.name",
        "fallback": "Fence Breaker"
      },
      "stage": 1,
      "spawn_origin": "quest_giver",
      "spawn_min_radius": 22,
      "spawn_max_radius": 34,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true,
      "max_health": 40.0
    }
  ],
  "rewards": {
    "xp": 180,
    "items": {
      "minecraft:emerald": 6,
      "minecraft:wheat": 12
    }
  },
  "traits": {
    "complete": [
      "farm_defender"
    ]
  }
}

Generated Container, Written Book, and TNT

Place quest items inside a structure container, make the player read a written clue, then complete a demolition objective and spawn enemies.

Based on questlines/sculk/sculk_mineshaft_investigation.json.

Key points:

  • read_book objectives must include item: "minecraft:written_book".
  • quest_book.title, quest_book.author, and quest_book.pages can be translation objects.
  • Use in_chest: true with container to spawn the objective item inside a generated container.
  • Generated chest/container items are placed into random empty slots by the quest item spawner.
  • detonate_tnt should use block for the target block near the explosion, not the TNT block itself.
  • force_place_block: true can prepare the target block when the structure does not reliably contain one.
{
  "title": {
    "translate": "quest.example.mine_demolition.title",
    "fallback": "Notes Under the Mine"
  },
  "summary": {
    "translate": "quest.example.mine_demolition.summary",
    "fallback": "Find a sealed mineshaft, recover the foreman's notes, and destroy the marked spawner."
  },
  "sequential_objectives": true,
  "goals": [
    {
      "id": "reach_old_mine",
      "reach": "minecraft:mineshaft",
      "structure": "minecraft:mineshaft",
      "radius": 3200,
      "range": 80,
      "stage": 0,
      "auto_advance": true
    },
    {
      "id": "read_foreman_notes",
      "type": "read_book",
      "item": "minecraft:written_book",
      "amount": 1,
      "structure": "minecraft:mineshaft",
      "container": "minecraft:barrel",
      "stage": 1,
      "radius": 3200,
      "in_chest": true,
      "auto_advance": true,
      "tag": "example_foreman_notes",
      "quest_book": {
        "title": {
          "translate": "quest.example.mine_demolition.book.title",
          "fallback": "Foreman's Notes"
        },
        "author": {
          "translate": "quest.example.mine_demolition.book.author",
          "fallback": "Mine Foreman"
        },
        "pages": [
          {
            "translate": "quest.example.mine_demolition.book.page.0",
            "fallback": "We sealed the lower drift after the spawner woke again. If anyone returns, place charges near the cage, not in the tunnel mouth."
          }
        ]
      },
      "block_patch": {
        "radius": 4,
        "palette": [
          "minecraft:sculk",
          "minecraft:deepslate"
        ]
      }
    },
    {
      "id": "take_tnt_from_barrel",
      "collect": "minecraft:tnt",
      "amount": 3,
      "mandatory": false,
      "sequential": true,
      "stage": 1,
      "in_chest": true,
      "structure": "minecraft:mineshaft",
      "container": "minecraft:barrel"
    },
    {
      "id": "place_demolition_charges",
      "place": "minecraft:tnt",
      "amount": 3,
      "structure": "minecraft:mineshaft",
      "stage": 2,
      "range": 12
    },
    {
      "id": "detonate_spawner",
      "type": "detonate_tnt",
      "block": "minecraft:spawner",
      "required_mob": "minecraft:skeleton",
      "structure": "minecraft:mineshaft",
      "force_place_block": true,
      "amount": 3,
      "stage": 2,
      "radius": 3200,
      "range": 14,
      "auto_advance": true,
      "block_patch": {
        "radius": 3,
        "palette": [
          "minecraft:sculk",
          "minecraft:deepslate"
        ]
      }
    },
    {
      "id": "kill_what_crawls_out",
      "kill": "minecraft:zombie",
      "amount": 4,
      "stage": 3,
      "from_threats": true
    }
  ],
  "threats": [
    {
      "entity": "minecraft:zombie",
      "name": {
        "translate": "quest.example.mine_demolition.threats.0.name",
        "fallback": "Sculk-Crowned Dead"
      },
      "stage": 3,
      "spawn_origin": "player",
      "spawn_min_radius": 8,
      "spawn_max_radius": 16,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true,
      "equipment": {
        "head": "minecraft:sculk"
      }
    },
    {
      "entity": "minecraft:zombie",
      "name": {
        "translate": "quest.example.mine_demolition.threats.1.name",
        "fallback": "Sculk-Marked Dead"
      },
      "stage": 3,
      "spawn_origin": "player",
      "spawn_min_radius": 8,
      "spawn_max_radius": 16,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true,
      "equipment": {
        "head": "minecraft:sculk"
      }
    },
    {
      "entity": "minecraft:zombie",
      "name": {
        "translate": "quest.example.mine_demolition.threats.2.name",
        "fallback": "Sculk-Marked Dead"
      },
      "stage": 3,
      "spawn_origin": "player",
      "spawn_min_radius": 8,
      "spawn_max_radius": 16,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true,
      "equipment": {
        "head": "minecraft:sculk"
      }
    },
    {
      "entity": "minecraft:zombie",
      "name": {
        "translate": "quest.example.mine_demolition.threats.3.name",
        "fallback": "Sculk-Marked Dead"
      },
      "stage": 3,
      "spawn_origin": "player",
      "spawn_min_radius": 8,
      "spawn_max_radius": 16,
      "spawn_on_accept": true,
      "spare_enabled": false,
      "glow": true,
      "equipment": {
        "head": "minecraft:sculk"
      }
    }
  ],
  "rewards": {
    "xp": 320,
    "items": {
      "minecraft:emerald": 10,
      "minecraft:echo_shard": 1
    }
  }
}

Delivery to Another Structure or Village

Collect supplies, travel to another structure or village, hand the items to a generated target, and return to the original quest giver.

Based on delivery_cobblestone_oak_log_other_village.json.

Key points:

  • The delivery target is configured in threat.
  • delivery_objectives must list the objective ids that should be handed over.
  • The target talk objective should usually use auto_advance: true.
  • Add a final return: true objective in the next stage if the player must report back.
  • min_structure_distance is useful when the target should not spawn in the same village.
{
  "title": {
    "translate": "quest.example.remote_delivery.title",
    "fallback": "Stone for the Next Village"
  },
  "summary": {
    "translate": "quest.example.remote_delivery.summary",
    "fallback": "Carry supplies to a messenger waiting in another village."
  },
  "sequential_objectives": true,
  "goals": [
    {
      "id": "delivery_cobblestone",
      "collect": "minecraft:cobblestone",
      "amount": 32,
      "mandatory": true,
      "stage": 0
    },
    {
      "id": "delivery_oak_logs",
      "collect": "minecraft:oak_log",
      "amount": 16,
      "mandatory": true,
      "stage": 0
    },
    {
      "id": "deliver_to_messenger",
      "talk": "minecraft:villager",
      "amount": 1,
      "mandatory": true,
      "stage": 0,
      "auto_advance": true,
      "name": {
        "translate": "quest.example.remote_delivery.goals.deliver_to_messenger.name",
        "fallback": "Village Messenger"
      },
      "say": {
        "translate": "quest.example.remote_delivery.goals.deliver_to_messenger.say",
        "fallback": "The messenger takes the supplies. Return to the villager who sent you."
      }
    },
    {
      "id": "return_to_sender",
      "return": true,
      "amount": 1,
      "mandatory": true,
      "stage": 1
    }
  ],
  "threat": {
    "entity": "minecraft:villager",
    "name": {
      "translate": "quest.example.remote_delivery.threat.name",
      "fallback": "Village Messenger"
    },
    "structure": "minecraft:villages",
    "search_radius": 4200,
    "spawn_radius": 10,
    "spawn_on_accept": true,
    "spare_enabled": false,
    "glow": false,
    "target_line": {
      "translate": "quest.example.remote_delivery.threat.target_line",
      "fallback": "If you have the stone and oak, hand them over before the wall gives way."
    },
    "delivery_objectives": [
      "delivery_cobblestone",
      "delivery_oak_logs"
    ],
    "delivery_choice_label": {
      "translate": "quest.example.remote_delivery.threat.delivery_choice_label",
      "fallback": "Hand over supplies"
    },
    "delivered_line": {
      "translate": "quest.example.remote_delivery.threat.delivered_line",
      "fallback": "That will hold. Tell them the road between our villages is still worth keeping open."
    },
    "depart_after_delivery": false,
    "min_structure_distance": 700
  },
  "rewards": {
    "xp": 180,
    "items": {
      "minecraft:emerald": 7,
      "minecraft:bread": 6
    }
  }
}

Village Raid Defense

Start a normal Minecraft raid when the quest is accepted and complete the objective when the village survives.

Based on questlines/village_defense/village_defense_chain_3_the_bell_and_the_raid.json.

Key points:

  • Use type: "defend_raid".
  • amount: 1 is the normal value for a single raid defense objective.
  • This objective depends on the normal Minecraft raid flow, so it should be offered from a villager in or near the village being defended.
  • Use rewards with enchanted items when the raid reward should feel unique.
{
  "title": {
    "translate": "quest.example.bell_raid.title",
    "fallback": "The Bell and the Raid"
  },
  "summary": {
    "translate": "quest.example.bell_raid.summary",
    "fallback": "Stand with the village and survive the raid."
  },
  "dialogue": {
    "intro": {
      "translate": "quest.example.bell_raid.dialogue.intro",
      "fallback": "The villager stands beside the bell, one hand on the rope."
    },
    "offer": [
      [
        {
          "translate": "quest.example.bell_raid.dialogue.offer.0.0",
          "fallback": "You think they are coming now?"
        },
        {
          "translate": "quest.example.bell_raid.dialogue.offer.0.1",
          "fallback": "If we ring the bell, they will know we are ready to fight."
        }
      ]
    ],
    "return": {
      "translate": "quest.example.bell_raid.dialogue.return",
      "fallback": "The horn is silent. The village still stands."
    },
    "reward": {
      "translate": "quest.example.bell_raid.dialogue.reward",
      "fallback": "This was taken from the raid leader. By right of battle, it is yours."
    },
    "done": {
      "translate": "quest.example.bell_raid.dialogue.done",
      "fallback": "The bell rings for warning again, not fear."
    }
  },
  "goals": [
    {
      "id": "defend_the_village",
      "type": "defend_raid",
      "amount": 1
    }
  ],
  "rewards": {
    "xp": 650,
    "items": {
      "minecraft:emerald": 20,
      "minecraft:crossbow": {
        "count": 1,
        "enchantments": [
          {
            "id": "minecraft:power",
            "level": 3
          },
          {
            "id": "minecraft:unbreaking",
            "level": 2
          },
          {
            "id": "minecraft:piercing",
            "level": 1
          }
        ]
      }
    }
  },
  "traits": {
    "complete": [
      "village_defender"
    ]
  }
}

Rumor That Unlocks a Hidden Quest

Keep a quest unavailable until the player hears the correct rumor from a villager.

Based on rumors/mine_smoke_below.json and blaze_mineshaft_threat.json.

Key points:

  • The rumor file lives under data/<namespace>/rumors/<rumor_id>.json.
  • unlock_quest should be the full quest id.
  • When the rumor is discovered, the player receives the trait quest_discovered:<full quest id>.
  • The hidden quest should require that trait.
  • Use conditions.not_completed_quests so the rumor stops being useful after the quest is complete.
  • Rumor line and discovered_line are currently plain strings.

Rumor file

{
  "id": "example_smoke_below",
  "weight": 15,
  "line": "Miners swear smoke is rising from shafts sealed for years.",
  "unlock_quest": "example:hidden_mineshaft_fire",
  "conditions": {
    "not_completed_quests": [
      "example:hidden_mineshaft_fire"
    ]
  },
  "discovered_line": "Rumor discovered: something hot and hostile is moving in an old mineshaft."
}

Hidden quest file

{
  "title": {
    "translate": "quest.example.hidden_mineshaft_fire.title",
    "fallback": "Flame in the Mineshaft"
  },
  "summary": {
    "translate": "quest.example.hidden_mineshaft_fire.summary",
    "fallback": "A villager reports a blaze burning through an abandoned mineshaft."
  },
  "requires": {
    "traits": [
      "quest_discovered:example:hidden_mineshaft_fire"
    ]
  },
  "goals": [
    {
      "id": "kill_mine_blaze",
      "kill": "minecraft:blaze",
      "amount": 1
    }
  ],
  "threat": {
    "entity": "minecraft:blaze",
    "name": {
      "translate": "quest.example.hidden_mineshaft_fire.threat.name",
      "fallback": "Ignivar the Mineflame"
    },
    "structure": "minecraft:mineshaft",
    "search_radius": 4000,
    "spawn_on_accept": true,
    "spare_enabled": false,
    "max_health": 150.0,
    "offer_line": {
      "translate": "quest.example.hidden_mineshaft_fire.threat.offer_line",
      "fallback": "Something from the Nether is burning through an old mineshaft."
    },
    "target_line": {
      "translate": "quest.example.hidden_mineshaft_fire.threat.target_line",
      "fallback": "The blaze crackles with hostile heat. There is no sign it understands mercy."
    }
  },
  "rewards": {
    "xp": 260,
    "items": {
      "minecraft:emerald": 12,
      "minecraft:blaze_rod": 2
    }
  }
}

Escort to a Structure

Escort a quest entity to a searched structure, with configurable search distance and completion range.

Based on questlines/armed_zombie/armed_zombie_chain_spare_2_forgotten_road.json.

Key points:

  • Use the escort shortcut with a structure id. The parser converts it to escort_entity.
  • radius controls how far the structure search can go.
  • range controls how close the escorted entity must be to the target structure.
  • This works well as a follow-up after a spare/recruit branch.
{
  "title": {
    "translate": "quest.example.forgotten_road.title",
    "fallback": "The Forgotten Road"
  },
  "summary": {
    "translate": "quest.example.forgotten_road.summary",
    "fallback": "Escort a spared enemy toward the village road it remembers."
  },
  "flow": {
    "next": "example:remembered_name"
  },
  "dialogue": {
    "intro": {
      "translate": "quest.example.forgotten_road.dialogue.intro",
      "fallback": "The spared creature keeps its weapon low and looks toward the road."
    },
    "offer": [
      [
        {
          "translate": "quest.example.forgotten_road.dialogue.offer.0.0",
          "fallback": "You remember a village?"
        },
        {
          "translate": "quest.example.forgotten_road.dialogue.offer.0.1",
          "fallback": "A bell. Smoke. A well with cracked stone. Take me there."
        }
      ]
    ],
    "return": {
      "translate": "quest.example.forgotten_road.dialogue.return",
      "fallback": "The bell. I know that sound."
    },
    "reward": {
      "translate": "quest.example.forgotten_road.dialogue.reward",
      "fallback": "I found this under the well stones. It was mine once."
    },
    "done": {
      "translate": "quest.example.forgotten_road.dialogue.done",
      "fallback": "The village road remembers me."
    }
  },
  "goals": [
    {
      "id": "escort_to_village",
      "escort": "minecraft:village_plains",
      "radius": 3500,
      "range": 40
    }
  ],
  "rewards": {
    "xp": 220,
    "items": {
      "minecraft:iron_ingot": 6,
      "minecraft:emerald": 4
    }
  },
  "traits": {
    "complete": [
      "escort_memory"
    ]
  }
}

Quest-board contracts: progression and datapack setup

Quest boards can appear in configured village structures and generate repeatable contracts independently from the included story quests. Their offers refresh over time and can include hunts, deliveries, village protection, and elite targets.

Open a board to browse its current contracts, inspect each objective and reward, and accept the one you want. Accepted contracts are added directly to the normal quest journal and HUD: there is no contract item to keep in the inventory. Each board has its own shared reputation and level. Completing contracts for that board makes harder offers more likely and shortens its refresh time. In multiplayer, offers can be configured as individual per player or claimed globally.

Contracts use five difficulty levels:

DifficultyScaling applied
Common (1 star)Group mobs: +0; health per group mob: +0 HP; elite count: x1.00; health per elite: +0 HP.
Dangerous (2 stars)Group mobs: +1; health per group mob: +5 HP; elite count: x1.15; health per elite: +20 HP.
Deadly (3 stars)Group mobs: +2; health per group mob: +10 HP; elite count: x1.35; health per elite: +50 HP.
Nightmare (4 stars)Group mobs: +4; health per group mob: +20 HP; elite count: x1.60; health per elite: +75 HP.
Legendary (5 stars)Group mobs: +6; health per group mob: +40 HP; elite count: x2.00; health per elite: +150 HP.

Elite counts are rounded up after applying the multiplier. A specific elite can opt out of count scaling with "scale_count_with_difficulty": false; health bonuses still apply when it has a configured max_health.

Difficulty also affects equipment, status effects, rewards, and the amount of reputation earned with the board.

Datapack Configuration

Quest-board contracts are fully data-driven. A datapack or mod can add vanilla or modded entities, items, structures, equipment, and rewards without replacing the built-in files.

Use the normal datapack layout:

<datapack>/
  pack.mcmeta
  data/
    <your_namespace>/
      quest_board_contracts/

Do not place custom files inside the mebahelrpgrquest namespace unless you deliberately want to override data with the same resource path. Contract definitions from different namespaces are discovered and merged. References such as example:raider_rewards resolve inside the referenced namespace.

Each contract family has its own definition file and optional tables:

quest_board_contracts/kill/mobs.json
quest_board_contracts/kill/reward_tables/
quest_board_contracts/spawn_groups/groups.json
quest_board_contracts/spawn_groups/equipment_tables/
quest_board_contracts/spawn_groups/reward_tables/
quest_board_contracts/deliveries/deliveries.json
quest_board_contracts/deliveries/reward_tables/
quest_board_contracts/protection/protection.json
quest_board_contracts/protection/reward_tables/
quest_board_contracts/elites/elites.json
quest_board_contracts/elites/equipment_tables/
quest_board_contracts/elites/reward_tables/

Definitions whose required modded entity, item, or structure is unavailable are ignored safely. Invalid entries produce a warning in the log without preventing other valid contracts from loading. Missing custom reward tables fall back to the built-in global table for that contract family; missing equipment tables leave the mob's normal equipment unchanged.

Regular Hunts

kill/mobs.json contains a mobs array. These contracts count ordinary kills of the selected entity:

{
  "mobs": [
    {
      "id": "examplemod:mutant_zombie",
      "min": 2,
      "max": 5,
      "reward_table": "example:mutant_hunt"
    }
  ]
}

The optional reward table above belongs at:

data/example/quest_board_contracts/kill/reward_tables/mutant_hunt.json

Spawned Group Hunts

spawn_groups/groups.json contains a groups array. Every accepted group contract locates one of its configured structures, generates the group there, and tracks only those generated targets.

A minimal group entry follows this format:

{
  "groups": [
    {
      "entities": [
        {
          "id": "minecraft:zombie",
          "weight": 10
        }
      ],
      "min": 1,
      "max": 2,
      "structures": [
        "minecraft:villages"
      ],
      "equipment_table": "example:group_enemies",
      "reward_table": "example:group_rewards",
      "search_radius": 3000,
      "ignore_current_structure": true,
      "min_structure_distance": 128,
      "spawn_min_radius": 8,
      "spawn_max_radius": 32
    }
  ]
}

entities is a weighted pool rolled separately for every group member. structures is also a pool: one destination is selected when the contract is generated. ignore_current_structure searches outside the board's village, while min_structure_distance sets the exclusion distance.

Deliveries

deliveries/deliveries.json contains a deliveries array. When accepted, the contract locates the destination and generates a named recipient. The player must carry the items to that recipient; interacting consumes the required items and completes the contract.

{
  "deliveries": [
    {
      "item": "examplemod:medical_supplies",
      "min": 8,
      "max": 20,
      "structures": [
        "minecraft:villages"
      ],
      "reward_table": "example:medical_delivery",
      "search_radius": 3000,
      "ignore_current_structure": true,
      "min_structure_distance": 128,
      "spawn_min_radius": 0,
      "spawn_max_radius": 24,
      "recipient_name": "Village Quartermaster"
    }
  ]
}

Village Protection

protection/protection.json contains a contracts array. Supported built-in protection types are iron_golem and lighting.

{
  "contracts": [
    {
      "type": "lighting",
      "target": "minecraft:torch",
      "min": 6,
      "max": 12,
      "structures": [
        "minecraft:villages"
      ],
      "search_radius": 5000,
      "ignore_current_structure": false,
      "completion_range": 96
    }
  ]
}

Set ignore_current_structure to false to protect the board's village, or to true with min_structure_distance to send the player to another village.

Elite Contracts

elites/elites.json contains a contracts array. Each contract may contain several elite entries, each with its own count, name, health, effects, and equipment table.

{
  "contracts": [
    {
      "structures": [
        "minecraft:pillager_outpost"
      ],
      "reward_table": "example:elite_rewards",
      "search_radius": 3000,
      "spawn_min_radius": 0,
      "spawn_max_radius": 24,
      "elites": [
        {
          "entity": "minecraft:vindicator",
          "min": 1,
          "max": 1,
          "name": "The Iron Captain",
          "max_health": 80,
          "equipment_table": "example:elite_raiders",
          "effects": [
            {
              "id": "minecraft:strength",
              "duration_seconds": 3600,
              "amplifier": 1
            }
          ]
        }
      ]
    }
  ]
}

Reward Tables

Reward tables live in the reward_tables folder of their contract family:

{
  "rolls": {
    "min": 1,
    "max": 2
  },
  "rewards": [
    {
      "type": "item",
      "id": "minecraft:emerald",
      "weight": 4,
      "base_min": 1,
      "base_max": 3,
      "per_kill_min": 0.2,
      "per_kill_max": 0.5
    },
    {
      "type": "xp",
      "weight": 2,
      "base_min": 20,
      "base_max": 40,
      "per_kill_min": 8,
      "per_kill_max": 12
    }
  ]
}

rolls controls how many weighted entries are selected. Delivery tables may use per_item_min and per_item_max as aliases for per_kill_min and per_kill_max.

Equipment Tables

Equipment tables use the same weighted slot format as group hunts. For example:

{
  "slots": {
    "right_hand": [
      {
        "id": "minecraft:iron_hoe",
        "weight": 1,
        "enchantments": [
          {
            "id": "minecraft:knockback",
            "min_level": 3,
            "max_level": 3
          }
        ]
      }
    ],
    "helmet": [
      {
        "id": "minecraft:sculk",
        "weight": 1
      }
    ]
  }
}

Supported slot names are right_hand, left_hand, mainhand, offhand, helmet, chestplate, leggings, and boots. Every configured slot is rolled independently. Use minecraft:air as a weighted entry when a slot should sometimes be explicitly empty.

Contract generation settings

The generated server configuration file is:

config/mebahelrpgrquest/quest_board_contracts.json

Its contractTypeWeightsByBoardLevel section controls how frequently each kind of contract appears at every board level.


Created by Mebahel. Join the community or explore the full mod collection.

Version Minecraft Loader Download

Mebahel's RPG - Villager Quests & Companions 3.6.1-fabric-1.21.1

3.6.1-fabric-1.21.1

1.21, 1.21.1
fabric, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.6.1-fabric-1.20.1

3.6.1-fabric-1.20.1

1.20, 1.20.1
fabric, forge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.6.0-fabric-1.20.1

3.6.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.6.0-fabric-1.21.1

3.6.0-fabric-1.21.1

1.21, 1.21.1
fabric, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.3-fabric-1.20.1

3.5.3-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.2-fabric-1.20.1

3.5.2-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.2-fabric-1.21.1

3.5.2-fabric-1.21.1

1.21, 1.21.1
fabric, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.1-fabric-1.21.1

3.5.1-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.1-fabric-1.20.1

3.5.1-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.0-fabric-1.20.1

3.5.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.5.0-fabric-1.21.1

3.5.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.5-fabric-1.20.1

3.4.5-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.5-fabric-1.21.1

3.4.5-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.4-fabric-1.20.1

3.4.4-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.4-fabric-1.21.1

3.4.4-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.3-fabric-1.21.1

3.4.3-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.3-fabric-1.20.1

3.4.3-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.2-fabric-1.20.1

3.4.2-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.2-fabric-1.21.1

3.4.2-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.1-fabric-1.20.1

3.4.1-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.1-fabric-1.21.1

3.4.1-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.0-fabric-1.20.1

3.4.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.4.0-fabric-1.21.1

3.4.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.3.0-fabric-1.20.1

3.3.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.3.0-fabric-1.21.1

3.3.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.3-fabric-1.20.1

3.2.3-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.3-fabric-1.21.1

3.2.3-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.2-fabric-1.21.1

3.2.2-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.2-fabric-1.20.1

3.2.2-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.1-fabric-1.20.1

3.2.1-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.1-fabric-1.21.1

3.2.1-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.0-fabric-1.20.1

3.2.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.2.0-fabric-1.21.1

3.2.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.1.0-fabric-1.20.1

3.1.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.1.0-fabric-1.21.1

3.1.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.0.1-fabric-1.21.1

3.0.1-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.0.1-fabric-1.20.1

3.0.1-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 3.0.0-fabric-1.20.1

3.0.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.1.0-fabric-1.21.1

2.1.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.1.0-fabric-1.20.1

2.1.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.6-fabric-1.21.1

2.0.6-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.5-fabric-1.20.1

2.0.5-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.5-fabric-1.21.1

2.0.5-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.4-fabric-1.20.1

2.0.4-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.4-fabric-1.21.1

2.0.4-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.2-fabric-1.20.1

2.0.2-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.2-fabric-1.21.1

2.0.2-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.0-fabric-1.20.1

2.0.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 2.0.0-fabric-1.21.1

2.0.0-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.3-fabric-1.20.1

1.1.3-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.3-fabric-1.21.1

1.1.3-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.2-fabric-1.20.1

1.1.2-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.2-fabric-1.21.1

1.1.2-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.1-fabric-1.20.1

1.1.1-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.1-fabric-1.21.1

1.1.1-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.1.0-fabric-1.20.1

1.1.0-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.0.4-fabric-1.20.1

1.0.4-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.0.4-fabric-1.21.1

1.0.4-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.0.3-fabric-1.21.1

1.0.3-fabric-1.21.1

1.21, 1.21.1
fabric, forge, neoforge, quilt
Download

Mebahel's RPG - Villager Quests & Companions 1.0.3-fabric-1.20.1

1.0.3-fabric-1.20.1

1.20, 1.20.1
fabric, forge, neoforge, quilt
Download