JP Plugins
All plugins

JPQuests

Daily, weekly and story quests with a GUI for Paper servers.

Gameplay plugin, version 1.0.0

Downloads open soon.

Features

  • Daily, weekly and story quests in a menu
  • Many objective types, rewards in items, money and commands
  • Quest parties that share progress (/qparty)
  • Quest givers on JPNpcs NPCs
  • Anti-exploit checks

Requirements

  • Paper 26.1 or newer (Java 25)
  • Optional:
    • JPNpcs: works with JPNpcs NPCs
    • Vault: money (any Vault economy)
    • PlaceholderAPI: placeholders in texts, and this plugin's own placeholders

Installation

  1. Put JPQuests-<version>.jar in your server's plugins folder.
  2. Restart the server. plugins/JPQuests/ is created with the config and messages.
  3. Change what you want in the files, then reload or restart.

Type /jp as an operator to see every JP plugin you have installed, its version and which optional plugins it found.

Commands

CommandDescriptionPermission
/quests [list|start|abandon|claim|admin]
Aliases: /quest, /q
Open the quest menu or manage your quests.jpquests.use
/qparty <invite|accept|leave|kick|list>
Aliases: /questparty, /qp
Quest parties - share progress on party quests.jpquests.use

Permissions

PermissionDefaultDescription
jpquests.useeveryoneUse quests.
jpquests.adminoperatorsReload JPQuests and manage player quest data.
jpquests.bypass.limitoperatorsIgnore the active quest limit.

Placeholders

Needs PlaceholderAPI.

PlaceholderShows
%jpquests_active%quests in progress
%jpquests_ready%quests ready to claim
%jpquests_completed%quests completed in total
%jpquests_daily_reset%time until daily quests reset
%jpquests_weekly_reset%time until weekly quests reset
%jpquests_party_size%players in the player's quest party
%jpquests_status_<quest>%status of a quest
%jpquests_progress_<quest>%progress of a quest in percent
%jpquests_active_<quest>%true when the quest is in progress
%jpquests_completed_<quest>%true when the quest was completed

Configuration

All files are in plugins/JPQuests/. Files: config.yml, messages.yml, quests.yml.

When you update the plugin, new options are added to your config.yml by themselves, with their comments. Your own settings stay as they are, and the old file is kept as config.old-v<number>.yml.

Languages: English, Spanish, Portuguese, French and German. Set language: in config.yml (en, es, pt, fr or de).

Default config.yml
# Used to add new options to this file after an update. Don't change it.
config-version: 1

# ==========================================================
#  JPQuests - configuration
# ==========================================================
# Quests themselves live in quests.yml, texts in messages.yml.
# Apply changes with /quests admin reload.
#
# Make and change quests in game: /quests admin editor (jpquests.admin). Changes are
# written to quests.yml right away. Parties: /qparty invite <player>.
#
# Text accepts legacy codes (&a, &#FF8800) and MiniMessage tags.
# Sounds use Bukkit names (UI_TOAST_CHALLENGE_COMPLETE...); '' = no sound.
# Money rewards need Vault and an economy plugin.

# Language of the messages: en (messages.yml), es, pt, fr or de (lang/<code>.yml).
# Your own language: copy a file in the lang folder to lang/<code>.yml, translate it
# and set its code here (for example it for lang/it.yml).
language: en

# Replace messages.yml with the new design when the plugin is updated.
# Your old file is kept as messages.old-vX.yml. false = never touch it.
auto-update-style: true

# How many quests a player can have in progress at once (bypass: jpquests.bypass.limit).
max-active-quests: 5

# Give rewards as soon as a quest is finished instead of making players claim them.
auto-claim: false

# Period resets for DAILY and WEEKLY quests.
reset:
  # Hour of the day (0-23) when daily quests reset.
  daily-hour: 0
  # Day of the week when weekly quests reset (MONDAY ... SUNDAY).
  weekly-day: MONDAY
  # Time zone, e.g. Europe/London or America/New_York. Empty = server time zone.
  timezone: ''

# Rotation: every day a few DAILY quests are picked from all DAILY quests in quests.yml
# (and every week a few WEEKLY ones). Players only see and can start the picked ones,
# so there is something new every day. Add more DAILY/WEEKLY quests for more variety.
# %jpquests_daily_reset% / %jpquests_weekly_reset% = time until new quests.
rotation:
  enabled: true
  # How many DAILY quests are offered each day (0 = all of them).
  daily-quests: 3
  # How many WEEKLY quests are offered each week (0 = all of them).
  weekly-quests: 2
  # false = everyone gets the same quests; true = each player gets their own pick.
  per-player: false
  # Change this number to get a different pick (e.g. after adding quests).
  seed: 7

# Quest parties (/qparty): friends team up and share progress on party quests
# (quests with "party: true" in quests.yml). Starting a party quest starts it for the
# whole party. Parties are kept until everyone leaves or the server restarts.
parties:
  enabled: true
  max-size: 5
  # Only members in the same world as the one who made progress get it too.
  same-world-only: false

# Anti-exploit options
anti-exploit:
  # Blocks placed by players do not count for BREAK_BLOCK objectives.
  ignore-placed-blocks: true
  # Mobs from spawners do not count for KILL_MOB objectives.
  ignore-spawner-mobs: true
  # Walking distance does not count while flying, gliding or riding.
  walk-require-ground: true

# Switch features on or off
features:
  # Players may abandon running quests (shift-right-click in the menu).
  abandon: true
  # DELIVER_ITEM objectives (hand in items through the menu).
  deliver-items: true
  # Quests with "auto-start: true" start by themselves.
  auto-start: true
  # Count minutes online for PLAYTIME objectives.
  track-playtime: true
  # Count distance for WALK objectives.
  track-walking: true
  # Default for quests without "ordered:" - true = every quest's objectives must be
  # done one after the other.
  ordered-objectives-by-default: false
  # Show the category screen first (off = go straight to the quest list).
  category-menu: true

# Progress feedback
notifications:
  # Progress in the action bar while working on a quest.
  actionbar-enabled: true
  # Big title when a quest is completed.
  titles-enabled: true
  # All quest sounds below.
  sounds-enabled: true
  # Clickable [CLAIM] button in chat when a quest is finished.
  chat-claim-button: true
  # Placeholders: {quest} {objective} {progress} {amount}
  actionbar: '&#EDDE5D{quest} &8» &7{objective} &f{progress}&8/&7{amount}'
  complete-title: '<gradient:#F09819:#EDDE5D><bold>ǫᴜᴇꜱᴛ ᴄᴏᴍᴘʟᴇᴛᴇ</bold></gradient>'
  complete-subtitle: '&f{quest}'
  # Played when a quest is completed / on every bit of progress / when one starts.
  complete-sound: UI_TOAST_CHALLENGE_COMPLETE
  progress-sound: ''
  start-sound: ENTITY_EXPERIENCE_ORB_PICKUP

# Menu look
gui:
  title: '&8ǫᴜᴇꜱᴛꜱ'
  category-title: '&8ǫᴜᴇꜱᴛꜱ &7» {category}'
  # Glass used for the menu frame.
  border: BLACK_STAINED_GLASS_PANE
  # Bar shown in quest lore: complete-color for done parts, incomplete-color for the rest.
  progress-bar:
    # Number of symbols in the bar.
    length: 20
    symbol: '|'
    complete-color: '&#7ED957'
    incomplete-color: '&8'

# Categories shown on the main menu. Quests are grouped with "category" in quests.yml.
# slot = position in the 5-row menu (0 = top-left, left to right, 44 = bottom-right).
categories:
  daily:
    name: '&#FFD000&lDaily Quests'
    icon: CLOCK
    slot: 20
    lore:
      - '&7New quests every day.'
  weekly:
    name: '&#5EA1FF&lWeekly Quests'
    icon: ENDER_EYE
    slot: 22
    lore:
      - '&7Bigger challenges, bigger rewards.'
  story:
    name: '&#FF5F6D&lStory Quests'
    icon: WRITABLE_BOOK
    slot: 24
    lore:
      - '&7One-time adventures.'
  party:
    name: '&#B19CD9&lParty Quests'
    icon: CAKE
    slot: 30
    lore:
      - '&7Team up with /qparty and share progress.'
  challenges:
    name: '&#43C6AC&lChallenges'
    icon: GOLDEN_SWORD
    slot: 32
    lore:
      - '&7Repeat them every few hours.'

# Link with JPNpcs (only used when JPNpcs is installed; both plugins also work alone).
# - Give a quest "npc: <npc id>" in quests.yml and that NPC hands it out: clicking
#   the NPC opens a menu with its quests.
# - Objective type TALK_TO_NPC with targets: [<npc id>] counts clicks on that NPC.
# NPC ids are the ones you used in /npc create <id>.
npcs:
  enabled: true
  # Clicking an NPC that hands out quests opens its quest menu.
  open-menu: true
  # true = quests with an "npc" can only be started at that NPC (not from /quests).
  require-npc-to-start: true
  # Title of the NPC quest menu. {npc} = the NPC's name.
  menu-title: '&8ǫᴜᴇꜱᴛꜱ &7» {npc}'
  # Let an NPC hand out whole categories as well: <npc id>: [category, ...]
  # Example:  quest_board: [daily, weekly]
  categories: {}

# Register %jpquests_...% placeholders and pay money through Vault when installed.
hooks:
  placeholderapi: true
  vault: true

Support

Guides and the docs of every JP plugin are on the JP Plugins website. Questions, bugs or ideas? Join the JP Plugins Discord.

License

JPQuests is free to use on any server, including servers that make money, but it is not open source. Don't reupload, sell or share modified copies of it. The full terms are in LICENSE.txt, which is also inside the jar.