GroupeZ Docs
Configurations

Rewards

Configure rewards for quest completion in zQuests

zQuests provides a flexible reward system that allows you to reward players when they complete quests. You can use all zMenu actions as rewards, configure global rewards for all quests, and create custom rewards that trigger when specific quest combinations are completed.

Reward Types

Quest-Specific Rewards

Define rewards directly in a quest configuration:

quests:
  - type: BLOCK_BREAK
    name: "stone-breaker"
    display-name: "Stone Breaker"
    goal: 100
    actions:
      - material: STONE
    rewards:
      - type: message
        messages:
          - "&aQuest completed!"
      - type: console_command
        commands:
          - "give %player% diamond 5"
      - type: sound
        sound: ENTITY_PLAYER_LEVELUP

Global Rewards

Rewards that apply to all quest completions. Define these in config.yml:

global-rewards:
  - type: message
    messages:
      - "&aYou completed the &e%name% &aquest!"
      - "&7Goal: &f%goal%"

Available placeholders:

  • %name% - Quest display name
  • %description% - Quest description
  • %goal% - Quest goal amount

Custom Rewards

Special rewards triggered when a player completes a specific combination of quests. Define in config.yml:

custom-rewards:
  - quests:
      - "stone-breaker-1"
      - "stone-breaker-2"
      - "stone-breaker-3"
    actions:
      - type: message
        messages:
          - "&6&lACHIEVEMENT UNLOCKED!"
          - "&eYou completed all Stone Breaker quests!"
      - type: console_command
        commands:
          - "give %player% diamond_pickaxe 1"

Permissible Rewards

Bonus rewards given only if the player meets certain requirements:

quests:
  - type: BLOCK_BREAK
    name: "mining-quest"
    goal: 500
    actions:
      - material: STONE
    rewards:
      - type: console_command
        commands:
          - "give %player% diamond 10"
    permissible-rewards:
      - requirements:
          - type: permission
            permission: rank.vip
        actions:
          - type: message
            messages:
              - "&6VIP BONUS: +10 extra diamonds!"
          - type: console_command
            commands:
              - "give %player% diamond 10"
      - requirements:
          - type: permission
            permission: rank.mvp
        actions:
          - type: message
            messages:
              - "&bMVP BONUS: +25 extra diamonds!"
          - type: console_command
            commands:
              - "give %player% diamond 25"

Available Action Types

zQuests supports all zMenu actions. Here are the most commonly used ones:

Message

Send messages to the player:

- type: message
  messages:
    - "&aFirst line"
    - "&bSecond line"
    - ""
    - "&7Blank line above for spacing"

Console Command

Execute commands from console:

- type: console_command
  commands:
    - "give %player% diamond 10"
    - "eco give %player% 1000"
    - "lp user %player% permission set quest.completed.%name%"

Player Command

Execute commands as the player:

- type: player_command
  commands:
    - "spawn"
    - "home"

Sound

Play sounds:

- type: sound
  sound: ENTITY_PLAYER_LEVELUP
  pitch: 1.0
  volume: 1.0

Title

Display titles:

- type: title
  title: "&6Quest Complete!"
  subtitle: "&eYou earned 10 diamonds"
  fadeIn: 20
  stay: 60
  fadeOut: 20

Action Bar

Display action bar messages:

- type: actionbar
  message: "&aQuest completed! +10 diamonds"

Teleport

Teleport the player:

- type: teleport
  location: "world,100,65,200,0,0"

Give Item

Give items directly:

- type: give_item
  item:
    material: DIAMOND_SWORD
    name: "&6Quest Reward Sword"
    lore:
      - "&7A reward for your hard work"
    enchants:
      - SHARPNESS:5
      - UNBREAKING:3

Close Inventory

Close the player's inventory:

- type: close

Open Inventory

Open a zMenu inventory:

- type: inventory
  inventory: "rewards_menu"
  plugin: "zMenu"

Start Another Quest

Chain quests together:

- type: START_QUEST
  quest: "advanced-mining-quest"

Reward Order

When a quest is completed, rewards are executed in this order:

  1. Quest-specific rewards - Defined in the quest's rewards section
  2. Global rewards - If use-global-rewards: true (default)
  3. Permissible rewards - If requirements are met
  4. Custom rewards - If all required quests are completed

Disable Global Rewards

To prevent global rewards from being given for a specific quest:

quests:
  - type: BLOCK_BREAK
    name: "silent-quest"
    goal: 100
    use-global-rewards: false
    rewards:
      - type: message
        messages:
          - "&aThis quest has custom rewards only!"

Complete Example

Here's a full configuration showing all reward types:

# In config.yml
global-rewards:
  - type: message
    messages:
      - ""
      - "&8&m─────────────────────────"
      - "&a&lQUEST COMPLETED"
      - "&f%name%"
      - "&8&m─────────────────────────"
      - ""
  - type: sound
    sound: ENTITY_PLAYER_LEVELUP

custom-rewards:
  - quests:
      - "tutorial-1"
      - "tutorial-2"
      - "tutorial-3"
    actions:
      - type: title
        title: "&6Tutorial Complete!"
        subtitle: "&eYou're ready for adventure"
      - type: console_command
        commands:
          - "give %player% diamond_sword{display:{Name:'\"&6Starter Sword\"'}} 1"
          - "give %player% cooked_beef 64"

# In quests file
quests:
  - type: BLOCK_BREAK
    name: "tutorial-3"
    display-name: "Final Tutorial Quest"
    goal: 50
    use-global-rewards: true
    actions:
      - material: STONE
    rewards:
      - type: message
        messages:
          - "&eYou broke 50 stone blocks!"
      - type: console_command
        commands:
          - "give %player% iron_pickaxe 1"
    permissible-rewards:
      - requirements:
          - type: permission
            permission: donator
        actions:
          - type: message
            messages:
              - "&6Donator bonus: Extra tools!"
          - type: console_command
            commands:
              - "give %player% diamond_pickaxe 1"

Best Practices

  1. Use global rewards sparingly - Don't spam players with too many messages for every quest
  2. Chain quests - Use START_QUEST action to create quest chains
  3. Balance rewards - Make sure rewards match quest difficulty
  4. Test thoroughly - Test rewards to ensure commands work correctly
  5. Use placeholders - Make messages dynamic with quest placeholders

Next Steps

On this page

GroupeZ MCP

Documentation in your AI

MCP lets your AI search GroupeZ documentation and read current examples to help you configure your plugins.

Read-only · No documentation API key needed

1. Copy the server URL

Transport: HTTP (Streamable HTTP). Authentication: none. Your tool uses its own model and subscription limits.

  1. Open Plugins in ChatGPT on the web, then + → Add custom MCP server.
  2. Name it ‘GroupeZ Documentation’, paste the URL above and choose ‘No authentication’. Create and install the plugin.
  3. In a conversation, type @ and select the plugin before asking. If needed, enable search, get_page and list_pages in its settings.
Official setup guide

3. Ask a question

Use GroupeZ MCP to help me create a zMenu inventory. Search relevant pages, read the examples and cite your sources.
Other clients and troubleshooting

For clients using mcpServers, adapt this example to their format:

{
  "mcpServers": {
    "groupez-docs": {
      "url": ""
    }
  }
}

Available tools are search, get_page and list_pages. Refresh the connector’s tools after updates. If your AI cannot access them, check that the connector is enabled in the conversation and your account allows custom MCP servers. Opening the URL in a browser is not an MCP test.