The Contract

The Contract introduces a dynamic, server-wide bounty and questing system to Minecraft with physical boards, procedural tasks, and bonus objectives

The Contract

Features

  • Interactive Contract Board: A physical block with a custom GUI to view, accept, deliver, and claim bounties.
  • Procedural Contract Generation: Automatically refreshes contracts at set intervals with customizable task types (Hunting, Crafting, Exploration, Building, Raids, and Distance Travel).
  • Optional Bonus Objectives: Side tasks that grant reward multipliers (e.g., $2\times$ currency bonuses) upon completion.
  • Server-Wide & Dynamic: Global refresh cycles sync contracts across the entire server, preventing individual exploit farming.
  • Extensive Datapack Support: Add static manual contracts or override the generator pools with JSON datapacks.
  • Highly Configurable: Modify rewards, blacklists, task frequencies, currency items, and difficulty scaling in the config file.

Configuration Guide (the_contract-common.toml)

The configuration file is located at .minecraft/config/the_contract-common.toml. Below is a breakdown of all available sections and settings:

1. [generator]

Controls the global contract board timer and refresh capacity.
  • refreshIntervalMinutes (Default: 20): Time in minutes before the contract board clears and regenerates new contracts.
  • contractsPerRefresh (Default: 15): Total number of procedural contracts generated per cycle.
  • notifyOnRefresh (Default: false): Broadcasts a chat message to online players when contracts refresh.

2. [generator_blacklist]

Excludes specific items, mobs, structures, or biomes from procedural generation.
  • Format: Standard Resource Location lists, e.g., ["minecraft:beacon"] or ["minecraft:warden"].

3. [difficultyDistribution]

Sets the probability weights for contract difficulties (Basic, Intermediate, Hard).
  • basic (Default: 50)
  • intermediate (Default: 35)
  • hard (Default: 15)

4. [taskTypeDistribution]

Adjusts how often specific objective types appear in contracts:
  • kill_entity (Default: 25)
  • deliver_item (Default: 20)
  • craft_item (Default: 20)
  • travel_distance (Default: 15)
  • break_block (Default: 12)
  • place_block (Default: 12)
  • find_biome (Default: 8)
  • find_structure (Default: 6)
  • defend_objective (Default: 5)
  • complete_raid (Default: 3)

5. [player]

  • maxActiveContractsPerPlayer (Default: 3): Maximum number of active contracts a player can hold simultaneously.

6. [rewards]

  • currencyItem (Default: "minecraft:emerald"): The default item ID awarded as money/currency.
  • Subcategories (basic_rewards, intermediate_rewards, advanced_rewards) allow configuring min/max currency payouts and extra item lists (e.g., ["minecraft:bread,8", "minecraft:iron_ingot,4"]).

7. [task_pools]

Define target IDs and target ranges for procedural generation.
  • Items / Mobs Syntax: "namespace:id|min-max" (e.g., "minecraft:copper_ingot|16-32" or "minecraft:zombie|5-15").
  • Travel Distance Syntax: "min-max" in block meters (e.g., "250-500").

Datapack Creation Guide

You can create custom, static contracts or override contract pools using Datapacks.
Tip: You can download a ready-to-use Datapack template directly from our Discord server to get started faster!

File Structure & Paths

Inside your datapack, place JSON files in the following folders:
Plaintext
<button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Descargar c&oacute;digo"></button><button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Copiar c&oacute;digo"></button>
your_datapack/
├── pack.mcmeta
└── data/
    └── your_mod_or_pack_namespace/
        ├── contracts/
        │   └── custom_contract.json
        └── generator_pools/
            └── custom_pool.json

Creating Custom Static Contracts (data/<namespace>/contracts/*.json)

Place JSON files in data/<namespace>/contracts/. These contracts appear directly on the special/manual board section.

Example: data/mymodpack/contracts/dragon_slayer.json

JSON
<button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Descargar c&oacute;digo"></button><button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Copiar c&oacute;digo"></button>
{
  "title": "contract.mymodpack.dragon_slayer.title",
  "description": "contract.mymodpack.dragon_slayer.desc",
  "difficulty": "HARD",
  "repeatable": false,
  "optional_currency_multiplier": 2.5,
  "objectives": [
    {
      "id": "kill_dragon",
      "optional": false,
      "task": {
        "type": "KILL_ENTITY",
        "target": "minecraft:ender_dragon",
        "amount": 1
      }
    },
    {
      "id": "bonus_travel",
      "optional": true,
      "task": {
        "type": "TRAVEL_DISTANCE",
        "amount": 1000
      }
    }
  ],
  "rewards": [
    {
      "type": "CURRENCY",
      "count": 50
    },
    {
      "type": "ITEM",
      "item_id": "minecraft:netherite_ingot",
      "count": 2
    },
    {
      "type": "COMMAND",
      "command": "xp add @p 1000 levels"
    }
  ]
}

Task Types Reference (type):

  • KILL_ENTITYtarget: Entity ID
  • DELIVER_ITEMtarget: Item ID
  • CRAFT_ITEMtarget: Item ID
  • BREAK_BLOCKtarget: Block ID
  • PLACE_BLOCKtarget: Block ID
  • FIND_STRUCTUREtarget: Structure ID
  • FIND_BIOMEtarget: Biome ID
  • TRAVEL_DISTANCE — No target required, amount: blocks to walk
  • COMPLETE_RAID — No target required, amount: raids to complete

Overriding Generator Pools (data/<namespace>/generator_pools/*.json)

You can define generator pools to customize what items or entities are selected for generated bounties.

Example: data/mymodpack/generator_pools/custom_hunt.json

JSON
<button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Descargar c&oacute;digo"></button><button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Copiar c&oacute;digo"></button>
{
  "difficulty": "BASIC",
  "entries": [
    {
      "target": "minecraft:zombie",
      "min_amount": 5,
      "max_amount": 15,
      "weight": 10
    },
    {
      "target": "minecraft:skeleton",
      "min_amount": 5,
      "max_amount": 15,
      "weight": 10
    }
  ]
}

Community & Support

Need help, want to share your custom contract datapacks, or need to download the Datapack Template? Join our community Discord! 👉 Join our Discord Server


Español

Aquí tienes toda la información y la guía traducida al español para tu página de CurseForge:

The Contract

Summary

The Contract añade un sistema dinámico de contratos y misiones para todo el servidor con tableros físicos, tareas procedimentales y objetivos secundarios. Es completamente configurable mediante archivos TOML y Datapacks, permitiendo a administradores y creadores de modpacks diseñar una progresión personalizada.

Características

  • Tablero de Contratos Interactivo: Un bloque físico con una interfaz personalizada para consultar, aceptar, entregar y reclamar recompensas.
  • Generación Procedimental de Contratos: Los contratos se regeneran automáticamente a intervalos configurables con varios tipos de tareas (Caza, Crafteo, Exploración, Construcción, Raids y Distancia Recorrida).
  • Objetivos Secundarios Opcionales: Tareas adicionales que otorgan multiplicadores de recompensa (por ejemplo, bono de $2\times$ en la moneda) al completarlas.
  • Sistema Global para el Servidor: Los ciclos de refresco sincronizan los contratos para todos los jugadores, evitando que se farmeen de forma individual.
  • Soporte Completo para Datapacks: Añade contratos estáticos manuales o reemplaza las listas de generación procedimental con archivos JSON.
  • Altamente Configurable: Modifica las recompensas, listas negras, frecuencia de tareas, ítem utilizado como moneda y escalado de dificultad desde el archivo de configuración.

Guía de Configuración (the_contract-common.toml)

El archivo de configuración se encuentra en .minecraft/config/the_contract-common.toml. A continuación se detalla cada sección y sus opciones:

1. [generator]

Controla el temporizador global y la capacidad de generación del tablero.
  • refreshIntervalMinutes (Por defecto: 20): Tiempo en minutos para que el tablero limpie y genere nuevos contratos.
  • contractsPerRefresh (Por defecto: 15): Cantidad total de contratos procedimentales generados por ciclo.
  • notifyOnRefresh (Por defecto: false): Envía un mensaje al chat de los jugadores conectados cuando se refrescan los contratos.

2. [generator_blacklist]

Excluye ítems, mobs, estructuras o biomas específicos de la generación procedimental.
  • Formato: Listas de Resource Location estándar, ej. ["minecraft:beacon"] o ["minecraft:warden"].

3. [difficultyDistribution]

Establece los pesos de probabilidad para las dificultades de los contratos (Básico, Intermedio, Avanzado).
  • basic (Por defecto: 50)
  • intermediate (Por defecto: 35)
  • hard (Por defecto: 15)

4. [taskTypeDistribution]

Ajusta la frecuencia con la que aparece cada tipo de objetivo en los contratos:
  • kill_entity (Por defecto: 25)
  • deliver_item (Por defecto: 20)
  • craft_item (Por defecto: 20)
  • travel_distance (Por defecto: 15)
  • break_block (Por defecto: 12)
  • place_block (Por defecto: 12)
  • find_biome (Por defecto: 8)
  • find_structure (Por defecto: 6)
  • defend_objective (Por defecto: 5)
  • complete_raid (Por defecto: 3)

5. [player]

  • maxActiveContractsPerPlayer (Por defecto: 3): Número máximo de contratos activos simultáneos que puede tener un jugador.

6. [rewards]

  • currencyItem (Por defecto: "minecraft:emerald"): ID del ítem utilizado como moneda por defecto.
  • Las subcategorías (basic_rewards, intermediate_rewards, advanced_rewards) permiten definir los mínimos/máximos de moneda entregada y listas de ítems extra (ej. ["minecraft:bread,8", "minecraft:iron_ingot,4"]).

7. [task_pools]

Define los IDs de destino y rangos para la generación procedimental.
  • Sintaxis para Ítems / Mobs: "namespace:id|min-max" (ej. "minecraft:copper_ingot|16-32" o "minecraft:zombie|5-15").
  • Sintaxis para Recorrer Distancia: "min-max" en bloques/metros (ej. "250-500").

Guía para la Creación de Datapacks

Puedes crear contratos estáticos personalizados o modificar los pools de generación utilizando Datapacks.
Consejo: ¡Puedes descargar una plantilla de Datapack lista para usar directamente en nuestro servidor de Discord para empezar más rápido!

Estructura de Archivos y Rutas

Dentro de tu datapack, coloca los archivos JSON en las siguientes carpetas:
Plaintext
<button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Descargar c&oacute;digo"></button><button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Copiar c&oacute;digo"></button>
tu_datapack/
├── pack.mcmeta
└── data/
    └── tu_namespace/
        ├── contracts/
        │   └── contrato_personalizado.json
        └── generator_pools/
            └── pool_personalizado.json

Crear Contratos Estáticos Personalizados (data/<namespace>/contracts/*.json)

Coloca los archivos JSON en data/<namespace>/contracts/. Estos contratos aparecerán directamente en la sección especial/manual del tablero.

Ejemplo: data/mimodpack/contracts/dragon_slayer.json

JSON
<button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Descargar c&oacute;digo"></button><button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Copiar c&oacute;digo"></button>
{
  "title": "contract.mimodpack.dragon_slayer.title",
  "description": "contract.mimodpack.dragon_slayer.desc",
  "difficulty": "HARD",
  "repeatable": false,
  "optional_currency_multiplier": 2.5,
  "objectives": [
    {
      "id": "kill_dragon",
      "optional": false,
      "task": {
        "type": "KILL_ENTITY",
        "target": "minecraft:ender_dragon",
        "amount": 1
      }
    },
    {
      "id": "bonus_travel",
      "optional": true,
      "task": {
        "type": "TRAVEL_DISTANCE",
        "amount": 1000
      }
    }
  ],
  "rewards": [
    {
      "type": "CURRENCY",
      "count": 50
    },
    {
      "type": "ITEM",
      "item_id": "minecraft:netherite_ingot",
      "count": 2
    },
    {
      "type": "COMMAND",
      "command": "xp add @p 1000 levels"
    }
  ]
}

Referencia de Tipos de Tareas (type):

  • KILL_ENTITYtarget: ID de la entidad
  • DELIVER_ITEMtarget: ID del ítem
  • CRAFT_ITEMtarget: ID del ítem
  • BREAK_BLOCKtarget: ID del bloque
  • PLACE_BLOCKtarget: ID del bloque
  • FIND_STRUCTUREtarget: ID de la estructura
  • FIND_BIOMEtarget: ID del bioma
  • TRAVEL_DISTANCE — No requiere target, amount: bloques a recorrer
  • COMPLETE_RAID — No requiere target, amount: raids a completar

Modificar Pools de Generación (data/<namespace>/generator_pools/*.json)

Puedes definir pools de generación para personalizar qué ítems o entidades se seleccionan en las misiones procedimentales.

Ejemplo: data/mimodpack/generator_pools/custom_hunt.json

JSON
<button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Descargar c&oacute;digo"></button><button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" aria-label="Copiar c&oacute;digo"></button>
{
  "difficulty": "BASIC",
  "entries": [
    {
      "target": "minecraft:zombie",
      "min_amount": 5,
      "max_amount": 15,
      "weight": 10
    },
    {
      "target": "minecraft:skeleton",
      "min_amount": 5,
      "max_amount": 15,
      "weight": 10
    }
  ]
}

Comunidad y Soporte

¿Necesitas ayuda, quieres compartir tus datapacks de contratos o descargar la plantilla? ¡Únete a nuestro servidor de Discord! 👉 Únete a nuestro servidor de Discord

The The Contract Team

profile avatar
  • 1
    Followers
  • 16
    Projects
  • 4.3K
    Downloads

More from AkorpuzZView all

  • KOTH: King Of The Hill  project image

    KOTH: King Of The Hill

    Koth allows to create areas and schedule a pvp event, set a reward and create a leaderboard for servers

    • 7
    • September 8, 2026
  • The Board project image

    The Board

    The Board is a mod that allows players to make entries or posts of text and images and displays them in a feed along with the player's name, the day (of the world), and the content.

    • 717
    • August 22, 2026
  • INTERLUDIO project image

    INTERLUDIO

    A temporary staging ground focused on tech automation and horizon-spanning exploration—the perfect sanctuary while the next major update of the core modpack takes shape.

    • 127
    • August 10, 2026
  • Leyendas de Teagarden Pyroven project image

    Leyendas de Teagarden Pyroven

    Fire, steam and steel. Pyrovenies don't ask if it's possible — they build it.

    • 1.0K
    • August 6, 2026
  • KOTH: King Of The Hill  project image

    KOTH: King Of The Hill

    Koth allows to create areas and schedule a pvp event, set a reward and create a leaderboard for servers

    • 7
    • September 8, 2026
  • The Board project image

    The Board

    The Board is a mod that allows players to make entries or posts of text and images and displays them in a feed along with the player's name, the day (of the world), and the content.

    • 717
    • August 22, 2026
  • INTERLUDIO project image

    INTERLUDIO

    A temporary staging ground focused on tech automation and horizon-spanning exploration—the perfect sanctuary while the next major update of the core modpack takes shape.

    • 127
    • August 10, 2026
  • Leyendas de Teagarden Pyroven project image

    Leyendas de Teagarden Pyroven

    Fire, steam and steel. Pyrovenies don't ask if it's possible — they build it.

    • 1.0K
    • August 6, 2026