Introduction
Gemini-AI is not just a chatbot. It is an all-powerful virtual assistant, a 24/7 support staff, and a dynamic quest system, designed to enhance the player experience and reduce your management workload.
🚀 Intelligent & Context-Aware AI Interaction
-
Flexible Communication: Players can chat with the AI via a command (
/bot
) or directly in chat (Hey AI,
). Both are fully customizable inconfig.yml
. - Player Understanding: The AI doesn't give robotic answers! Through PlaceholderAPI integration, it understands the player's context (location, health, money, etc.) to provide the most relevant responses.
- Conversation Memory: The AI has a "memory" of the conversation, allowing for natural, follow-up interactions. The memory size is configurable for each permission group!
⚙️ Deep & Dynamic Quest System
Gemini-AI turns your server into a living world with quests that are automatically triggered by player actions.
-
Dozens of Trigger Types:
- Events: First join, kill a mob, craft an item, reach a certain Y-level...
- Advanced: Trigger via PlaceholderAPI (e.g., when a player reaches level 10).
-
Rich Objectives & Rewards:
- Objectives: From gathering items and taming animals to wearing a full set of armor. Also supports randomized targets (e.g., kill a Zombie or a Skeleton).
- Rewards: It's not just items! You can run commands (give money, ranks) or let the player choose their own reward from a GUI (
CHOICE
).
-
Build Storylines:
- Create long quest chains by linking them with the
next-quest
option. - Require players to have a "special" item from a previous quest to start a new one.
- Create long quest chains by linking them with the
🔧 The Ultimate Admin Toolkit
Helping you manage your server easily and professionally.
-
One-Command Plugin Translator:
- Translate any plugin's entire language file (
.yml
) with the/ai translate
command. - Includes a smart cache to save API costs and increase speed.
- Translate any plugin's entire language file (
-
Web-Based Quest Editor:
- No more manual YML editing! The
/ai editor
command opens an intuitive web interface. - Game-Changer: The "Create with AI ✨" feature allows you to generate a complete quest just from an idea!
- No more manual YML editing! The
-
Permission Profiles & Monetization:
- Create separate AI "profiles" for different groups (Member, VIP, Admin) in
config.yml
. - Fine-tune limits: cooldowns, conversation memory, max active quests. This is a great tool for creating attractive VIP packages.
- Create separate AI "profiles" for different groups (Member, VIP, Admin) in
Commands and Permissions
Player Commands
Command | Description |
---|---|
/<config-command-name> [question] |
Ask the AI a question. The default command name is /bot and can be changed in config.yml . |
[chat-prefix] [question] |
Call the AI directly in chat. The default prefix is Hey AI and can be changed in config.yml . |
/ai questlog |
Opens the quest log, allowing players to view, track, or cancel their active quests. |
Admin Commands
Command | Description | Permission |
---|---|---|
/ai reload |
Reload the entire plugin configuration. | geminiai.admin |
/ai translate <plugin> <file> <lang> |
Translate a .yml file from another plugin. | geminiai.admin |
/ai confirm |
Confirm and overwrite the original file with the translation. | geminiai.admin |
/ai deny |
Save the translation as a new file instead of overwriting. | geminiai.admin |
/ai cancel |
Cancel the ongoing translation process. | geminiai.admin |
/ai editor |
Create a session and URL to access the web-based Quest Editor. | geminiai.admin |
Other Permissions
Permission | Description |
---|---|
geminiai.admin |
Grants access to all Gemini-AI admin commands. |
geminiai.cooldown.bypass |
Allows a player to bypass the cooldown for the AI ask command. |
geminiai.profile.* |
Grants access to a specific AI profile defined in config.yml (e.g., geminiai.profile.vip , geminiai.profile.default ). |
YML Configuration
Below are the original and complete contents of the important configuration files. These files are extensively commented to help you customize them directly with ease.
config.yml
▶ Expand to see the full config.yml
file
# =================================================================
# GEMINI-AI PLUGIN CONFIGURATION
# =================================================================
# Welcome to the Gemini-AI configuration file!
# Here, you can customize everything from commands, AI personality,
# to other advanced settings.
# =================================================================
# Configuration version, DO NOT CHANGE THIS LINE.
config-version: '1.2.0'
# =================================================================
# AI INTERACTION METHODS
# =================================================================
interaction:
command:
# The command name players will use to call the AI.
name: "bot"
chat:
# Any message starting with this string will trigger the AI.
# Leave empty ("") if you want to DISABLE this feature.
prefix: "AI, "
response:
# Default display mode for responses, "private" or "public".
default-mode: "private"
# Special symbol at the end of a question to temporarily reverse the display mode.
public-trigger: "!!"
# =================================================================
# GEMINI CORE SETTINGS
# =================================================================
gemini:
# (IMPORTANT) Define AI profiles based on permissions.
# You can edit or add custom groups, but ensure
# all necessary keys are present according to the template for the plugin to work correctly.
# It's recommended to add multiple API keys from different projects for each
# group to avoid errors when a project's free API quota is exhausted.
ai-profiles:
# Profile for admins: highest permissions, no limits.
admin:
# (Required) The permission a player needs to use this profile.
permission: "geminiai.profile.admin"
# Cooldown time (seconds) between AI queries.
cooldown: 0
# Number of recent question-answer pairs the AI will remember to understand context.
conversation-memory-size: 20
# Maximum number of quests a player can have active at once.
max-active-quests: 10
# Time (hours) a quest exists before automatically expiring.
# Set to 0 for no expiration.
quest-lifetime-hours: 0
# Gemini model to use for this profile. "gemini-2.5-flash" is recommended.
model: "gemini-2.5-flash"
# Maximum number of tokens (words/characters) in each AI response.
max-output-tokens: 1000
# The "personality" of the AI. This is the core instruction the AI always follows.
system-instruction: |
You are an omnipotent server administrator, efficiently assisting with server management.
Always answer accurately and concisely.
# List of API keys. The plugin will automatically rotate them to avoid overload.
chat-api-keys:
- "your_admin_api_key_here"
# Profile for VIP players: higher permissions than regular players.
vip:
permission: "geminiai.profile.vip"
cooldown: 20
conversation-memory-size: 14
max-active-quests: 5
quest-lifetime-hours: 48
model: "gemini-2.5-flash"
max-output-tokens: 800
system-instruction: |
You are a premium AI assistant for VIP players.
Always appear knowledgeable and provide helpful and friendly answers.
chat-api-keys:
- "your_vip_api_key_1"
- "your_vip_api_key_2"
# Default profile for regular players
default:
permission: "geminiai.profile.default"
cooldown: 60
conversation-memory-size: 8
max-active-quests: 3
quest-lifetime-hours: 24
model: "gemini-2.5-flash"
max-output-tokens: 1000
system-instruction: |
You are an intelligent and friendly AI assistant in a Minecraft server.
Always respond in a natural and cheerful manner.
chat-api-keys:
- "your_default_player_api_key"
# --- SETTINGS SPECIFIC TO THE TRANSLATION FEATURE ---
# It's recommended to add as many API keys as possible and avoid duplicates
# with APIs already used for other plugin features.
translation:
model: "gemini-2.5-flash"
api-keys:
- "your_translation_api_key_here"
# (WARNING) THIS IS THE OPTIMAL CONFIGURATION FOR ANY SERVER AND SHOULD NOT BE CHANGED.
# The {placeholders} variable will be replaced with information from placeholders.yml.
context-format: "Use the following context to provide the most accurate answer: {placeholders}"
# --- SETTINGS SPECIFIC TO THE QUEST SYSTEM ---
quest-generation:
prompt-format: |
The objective for a quest in a Minecraft server is: '{objective}'.
Based on this objective, generate an exciting quest name and a short, immersive description (1-2 sentences).
quest-generation-profile:
model: "gemini-2.5-flash"
max-output-tokens: 1000
api-keys:
- "your_quest_api_key_here"
disable-safety-filters: true
# =================================================================
# OTHER GENERAL SETTINGS
# =================================================================
general:
# Select the language for the plugin.
# The file name must match a file in the 'lang' folder (e.g., 'en', 'vi').
# English ('en') is the default language.
language: "en"
# Enable/disable logging of plugin activities to a log file.
enable-logging: true
# Delay (milliseconds) between each bulk translation request to avoid 429 errors.
translation-delay-ms: 1000
# Cooldown time (minutes) after completing a quest before a new one can be received.
quest-completion-cooldown-minutes: 5
# TRACKED QUEST DISPLAY MODE
# You can choose how quest information is displayed to the player.
# Valid modes:
# - 'SIDEBAR': Display on the scoreboard on the right side of the screen.
# - 'BOSS_BAR': Display on the Boss Bar at the top of the screen.
# - 'ACTION_BAR': Display on the action bar (above the hotbar).
# - 'NONE': Display nothing, players will check with /ai questlog.
quest-display:
mode: "SIDEBAR"
quests.yml
▶ Expand to see the full quests.yml
file
# =================================================================================================
#
# COMPREHENSIVE GUIDE TO quests.yml
#
# =================================================================================================
# This file is the heart of the quest system, where you define the "archetypes"
# for each quest. Each archetype includes activation triggers, requirements, objectives
# to complete, and rewards.
#
# OVERALL STRUCTURE:
#
# quest-archetypes:
# # Unique identifier for the quest, written as a single word without spaces.
# quest_name_1:
# trigger-scenarios: [...]
# requirements: {...}
# objectives: [...]
# rewards: [...]
# next-quest: "..."
#
# =================================================================================================
#
# I. TRIGGER (trigger-scenarios)
#
# -------------------------------------------------------------------------------------------------
# This is a list of actions that will trigger the quest assignment. If just one of these
# actions occurs, the quest will be assigned (if the player meets the conditions).
#
# LIST OF AVAILABLE TRIGGERS:
#
# --- Combat & PvP ---
# - KILL_MOB:ZOMBIE (Kill a type of mob)
# - PLAYER_KILL (Defeat another player)
# - TAKE_DAMAGE:FALL (Take damage from a source. E.g., FALL, LAVA, ZOMBIE...)
# - BLOCK_ATTACK (Successfully block an attack with a shield)
#
# --- Exploration & Movement ---
# - JOIN (Join the server)
# - JOIN:FIRST (Join the server for the first time)
# - QUIT (Leave the server)
# - DEATH (Die)
# - RESPAWN (Respawn)
# - BIOME_ENTER:PLAINS (Enter a biome)
# - PORTAL_USE:NETHER_PORTAL (Go through a portal. E.g., NETHER_PORTAL, END_PORTAL)
# - PLAYER_SLEEP (Lie in a bed)
# - REACH_HEIGHT:>=:200 (Reach a Y-level. Operators: >, >=, <, <=, ==, !=)
#
# --- Farming & Interaction ---
# - BLOCK_BREAK:DIAMOND_ORE (Break a type of block)
# - BLOCK_PLACE:CRAFTING_TABLE (Place a type of block)
# - USE:LEVER (Interact (right-click) with a block or item)
# - USE:ENDER_PEARL
# - ITEM_CONSUME:APPLE (Consume (eat/drink) an item)
# - ITEM_CRAFT:DIAMOND_SWORD (Craft an item)
# - FISH:CAUGHT_FISH (State during fishing. E.g., CAUGHT_FISH, FAILED_ATTEMPT)
# - VILLAGER_TRADE (Successfully trade with a villager)
# - PLANT_CROP:WHEAT_SEEDS (Plant a type of crop)
# - HARVEST_CROP:WHEAT (Harvest a fully grown crop)
# - STRIP_LOG:OAK_LOG (Use an axe to strip a log)
# - TILL_SOIL (Use a hoe to till soil)
# - SHEAR_ENTITY:SHEEP (Use shears on an entity)
# - FILL_BUCKET:WATER_BUCKET (Fill a bucket)
# - EMPTY_BUCKET:LAVA_BUCKET (Empty a bucket)
#
# --- Status & Items ---
# - LEVEL_UP:30 (Reach an experience level)
# - ENCHANT:SHARPNESS (Enchant an item with an enchantment of any level)
# - ENCHANT:SHARPNESS:5 (Enchant an item with a level V enchantment)
# - TAME:WOLF (Tame an animal)
# - GAIN_EFFECT:SPEED (Receive a potion effect)
# - GAIN_EFFECT:SPEED:2 (Receive a level II potion effect)
# - ITEM_BREAK:DIAMOND_PICKAXE (Break an item)
# - ITEM_REPAIR (Repair an item at an anvil)
# - ITEM_DROP:DIRT (Drop an item)
# - ITEM_PICKUP:DIAMOND (Pick up an item)
#
# --- System & Other ---
# - COMMAND:spawn (Use a command (without the /))
# - PAPI:player_level>=10 (Trigger based on a placeholder)
#
# =================================================================================================
#
# II. OBJECTIVES (objectives)
#
# -------------------------------------------------------------------------------------------------
# A list of objectives the player needs to complete.
# Each objective has the structure: { type, target, amount }
#
# LIST OF OBJECTIVE TYPES:
#
# | type | target (Target) | amount (Quantity) |
# |-----------------|---------------------------------------------|-------------------------------------------|
# | KILL_MOB | EntityType name (e.g., ZOMBIE) | Number of mobs to kill. |
# | GATHER_ITEM | Item Material name (e.g., DIAMOND) | Number of items to have in inventory. |
# | BREAK_BLOCK | Block Material name (e.g., OAK_LOG) | Number of blocks to break. |
# | PLACE_BLOCK | Block Material name (e.g., TORCH) | Number of blocks to place. |
# | REACH_LEVEL | *Not used* | Experience level to reach. |
# | KILL_PLAYER | Player name, or `ANY` | Number of players to kill. |
# | BREED_ANIMAL | EntityType name (e.g., COW) | Number of times to breed. |
# | TAME_ANIMAL | EntityType name (e.g., WOLF) | Number of animals to tame. |
# | CONSUME_ITEM | Material name (e.g., APPLE) | Number of items to eat/drink. |
# | SMELT_ITEM | Output Material name (e.g., IRON_INGOT) | Number of items to smelt. |
# | ENCHANT_ITEM | Enchantment name (e.g., sharpness) | Minimum enchantment level to achieve. |
# | TRADE_VILLAGER | *Not used* | Number of trades. |
# | FISH_ITEM | Material name of caught item (e.g., SALMON) | Number of items to fish. |
# | WEAR_ARMOR | Armor type name (e.g., DIAMOND, IRON) | Wear a full set (always 1). |
#
# RANDOMIZED OBJECTIVES:
# You can have the AI randomly pick a `target` by providing a list.
#
# objectives:
# - type: 'KILL_MOB'
# target: ['ZOMBIE', 'SKELETON', 'SPIDER']
# amount: 10
#
# =================================================================================================
#
# III. REWARDS (rewards)
#
# -------------------------------------------------------------------------------------------------
# Rewards for completing the quest.
#
# - type: COMMAND
# commands:
# - "eco give %player% 1000"
# - "say %player% has completed the quest!"
#
# - type: ITEM
# items:
# - material: "DIAMOND"
# amount: 10
#
# - type: CHOICE
# title: "Choose your reward"
# items:
# - material: "DIAMOND_SWORD"
# name: "Divine Sword"
# # ... other attributes
# - material: "DIAMOND_AXE"
# name: "Battle Axe"
# # ... other attributes
#
# DETAILED ITEM FORMAT:
# - material: "DIAMOND_SWORD"
# amount: 1
# name: "Divine Sword"
# lore:
# - "A sharp blade."
# enchantments:
# - "sharpness:5"
# - "unbreaking:3"
# # Set to true if you want this item to have a "fingerprint"
# # for use in another quest's requirements.
# quest-item: true
#
# =================================================================================================
#
# IV. REQUIREMENTS (requirements) & V. NEXT QUEST (next-quest)
#
# -------------------------------------------------------------------------------------------------
#
# requirements:
# required-items:
# # Regular item, just needs to be in the inventory
# - material: "NETHER_STAR"
# amount: 1
# # Item requiring a "fingerprint" from the 'the_ocean_trial' quest
# - material: "HEART_OF_THE_SEA"
# amount: 1
# from-quest: "the_ocean_trial"
#
# next-quest: "next_quest_name"
#
# =================================================================================================
# CONFIGURATION VERSION (DO NOT CHANGE)
config-version: '1.2.0'
quest-archetypes:
# =================================================================
# QUEST CHAIN: THE BEGINNING
# =================================================================
newbie_1_wood:
trigger-scenarios:
- 'JOIN:FIRST'
objectives:
- type: 'BREAK_BLOCK'
target:
- 'OAK_LOG'
- 'BIRCH_LOG'
- 'SPRUCE_LOG'
amount: 10
rewards:
- type: "ITEM"
items:
- material: "STONE_AXE"
next-quest: "newbie_2_stoneage"
newbie_2_stoneage:
objectives:
- type: 'GATHER_ITEM'
target: 'COBBLESTONE'
amount: 20
rewards:
- type: "ITEM"
items:
- material: "STONE_PICKAXE"
next-quest: "newbie_3_tools"
newbie_3_tools:
objectives:
- type: 'ITEM_CRAFT'
target: 'STONE_SWORD'
amount: 1
- type: 'ITEM_CRAFT'
target: 'STONE_SHOVEL'
amount: 1
rewards:
- type: "ITEM"
items:
- material: "BREAD"
amount: 5
next-quest: "newbie_4_shelter"
newbie_4_shelter:
objectives:
- type: 'PLACE_BLOCK'
target: 'OAK_PLANKS'
amount: 30
- type: 'ITEM_CRAFT'
target: 'FURNACE'
amount: 1
rewards:
- type: "CHOICE"
title: "Choose your bed"
items:
- material: "WHITE_BED"
- material: "RED_BED"
- material: "BLUE_BED"
# ... (and many more example quests) ...
placeholders.yml
▶ Expand to see the full placeholders.yml
file
# =================================================================
# NEW GUIDE
# =================================================================
# You can group keywords that share a common meaning.
# Each group will have a placeholder string and a list of related keywords.
# If a player's question contains ANY keyword from the list,
# the plugin will use the corresponding placeholder to provide context to the AI.
#
# Format:
# any_group_name:
# placeholder: '%placeholder_api%'
# keywords:
# - 'keyword 1'
# - 'keyword 2'
# - 'keyword 3'
# =================================================================
# Configuration version, DO NOT CHANGE THIS LINE.
# The plugin uses it to automatically update the config file when needed.
config-version: '1.2.0'
# =================================================================
placeholders:
location:
placeholder: '%player_location_world%, %player_location_x%, %player_location_y%, %player_location_z%'
keywords:
- 'location'
- 'coordinates'
- 'where am i'
biome:
placeholder: '%player_biome_name%'
keywords:
- 'biome'
- 'area'
world:
placeholder: '%player_world_name%'
keywords:
- 'world'
health:
placeholder: '%player_health_rounded% / %player_max_health_rounded%'
keywords:
- 'health'
- 'hp'
- 'life'
hunger:
placeholder: '%player_food_level%/20'
keywords:
- 'hunger'
- 'food bar'
- 'food'
level:
placeholder: '%player_level%'
keywords:
- 'level'
- 'exp'
server_time:
placeholder: '%server_time_12%'
keywords:
- 'time'
- 'what time is it'
server_players:
placeholder: '%server_online% / %server_max_players%'
keywords:
- 'players'
- 'online'
- 'how many people'
server_tps:
placeholder: '%server_tps_1%'
keywords:
- 'tps'
- 'performance'
- 'lag'
keywords.yml
▶ Expand to see the full keywords.yml
file
# =================================================================
# CUSTOM UNTRANSLATABLE KEYWORDS LIST
# =================================================================
# Add any word or phrase that you DO NOT want the translator to translate here.
# This is very useful for plugin-specific keywords, player names,
# command names, or special values that need to be preserved.
#
# - The check is case-insensitive.
# - Each keyword should be on its own line, starting with a hyphen (-).
# =================================================================
# Configuration version, DO NOT CHANGE THIS LINE.
# The plugin uses it to automatically update the config file when needed.
config-version: '1.2.0'
# =================================================================
keywords:
# General
- "true"
- "false"
- "null"
- "default"
- "Lowest"
- "Low"
- "Normal"
- "High"
- "Highest"
# Plugin Specific
- "AdminShop"
- "AnotherPluginValue"
# Minecraft Items & Blocks
- "ACACIA_BOAT"
- "APPLE"
- "ARMOR_STAND"
# ... (and many more keywords)
lang/en.yml
(and other language files)
Files in the lang
directory allow you to customize all messages the plugin displays to players. You can change the text to match your server's style or translate it into a new language.
▶ See an example of lang/en.yml
# =================================================================
# PLUGIN NOTIFICATION CUSTOMIZATION
# =================================================================
# Welcome to the language file!
# Here, you can change all the messages that Gemini-AI sends
# to players and administrators.
# =================================================================
# THE PREFIX FOR MESSAGES
message-prefix: "✨ [alilShady]: "
# LIST OF KEYS TO EXCLUDE FROM THE PREFIX
prefix-exemptions:
- 'public-ask-prefix'
- 'translation.confirm-prompt'
- 'translation.overwrite-confirmed'
- 'translation.save-new-denied'
# ... (and many more message keys)
# --- Generic Messages ---
ask-success: " "
console-ask-success: "✨ [alilShady]: "
reload-success: "Configuration reloaded successfully! "
no-permission: "You do not have permission to execute this command! "
# ... (and many more messages)
Quest Configuration
The Gemini-AI quest system is defined in quests.yml
. Below is a detailed guide on its structure and the values you can use.
I. Triggers
Triggers are in-game events that activate quest assignment. If any of the listed triggers occur, the plugin will check other requirements and assign the quest to the player.
Usage | Description |
---|---|
PAPI:<placeholder> <operator> <value> |
Triggers based on a value from PlaceholderAPI. Valid operators are > , >= , < , <= , == , != . |
JOIN |
Triggers when a player joins the server. |
JOIN:FIRST |
Triggers when a player joins the server for the first time. |
QUIT |
Triggers when a player leaves the server. |
DEATH |
Triggers when a player dies. |
RESPAWN |
Triggers when a player respawns. |
WORLD_CHANGE |
Triggers when a player changes worlds. |
KILL_MOB:<ENTITY_TYPE> |
Triggers when a player kills a specific type of mob (e.g., ZOMBIE ). |
PLAYER_KILL |
Triggers when a player kills another player. |
TAKE_DAMAGE:<DAMAGE_TYPE> |
Triggers when a player takes damage from a specific source (e.g., FALL , LAVA ). |
BLOCK_ATTACK |
Triggers when a player successfully blocks an attack with a shield. |
BIOME_ENTER:<BIOME_NAME> |
Triggers when a player enters a specific biome (e.g., PLAINS ). |
PORTAL_USE:<PORTAL_TYPE> |
Triggers when a player uses a portal (e.g., NETHER_PORTAL , END_PORTAL ). |
REACH_HEIGHT:<operator>:<Y_level> |
Triggers when a player reaches a specific Y-level. Valid operators are > , >= , < , <= , == , != . |
BLOCK_BREAK:<MATERIAL_NAME> |
Triggers when a player breaks a specific type of block (e.g., DIAMOND_ORE ). |
BLOCK_PLACE:<MATERIAL_NAME> |
Triggers when a player places a specific type of block. |
USE:<MATERIAL_NAME> |
Triggers when a player interacts (right-clicks) with a specific item or block. |
ITEM_CONSUME:<MATERIAL_NAME> |
Triggers when a player eats or drinks a specific item. |
ITEM_CRAFT:<MATERIAL_NAME> |
Triggers when a player crafts a specific item. |
FISH:<STATE> |
Triggers based on the fishing state (e.g., CAUGHT_FISH , FAILED_ATTEMPT ). |
VILLAGER_TRADE |
Triggers when a player completes a trade with a villager. |
PLANT_CROP:<MATERIAL_NAME> |
Triggers when a player plants a specific crop. |
HARVEST_CROP:<MATERIAL_NAME> |
Triggers when a player harvests a specific crop. |
STRIP_LOG:<LOG_TYPE> |
Triggers when a player strips a specific type of log. |
TILL_SOIL |
Triggers when a player tills soil with a hoe. |
SHEAR_ENTITY:<ENTITY_TYPE> |
Triggers when a player shears an entity. |
FILL_BUCKET:<BUCKET_TYPE> |
Triggers when a player fills a bucket. |
EMPTY_BUCKET:<BUCKET_TYPE> |
Triggers when a player empties a bucket. |
PLAYER_SLEEP |
Triggers when a player sleeps in a bed. |
TIME_IS:<STATE> |
Triggers when the in-game time becomes DAY or NIGHT . |
LEVEL_UP:<level> |
Triggers when a player reaches a specific experience level. |
ENCHANT:<ENCHANTMENT>:<level> |
Triggers when a player enchants an item with a specific enchantment level (e.g., SHARPNESS:5 ). |
TAME:<ENTITY_TYPE> |
Triggers when a player tames an animal. |
GAIN_EFFECT:<POTION_EFFECT>:<level> |
Triggers when a player gains a specific potion effect with a certain level. |
ITEM_BREAK:<MATERIAL_NAME> |
Triggers when a player's item breaks. |
ITEM_REPAIR |
Triggers when a player repairs an item at an anvil. |
ITEM_DROP:<MATERIAL_NAME> |
Triggers when a player drops an item. |
ITEM_PICKUP:<MATERIAL_NAME> |
Triggers when a player picks up an item. |
II. Objectives
Objectives are a list of requirements that a player must complete to finish the quest. You can use a single objective or a list of them.
Type (`type`) | Target (`target`) | Description |
---|---|---|
KILL_MOB |
EntityType name (e.g., ZOMBIE ) |
Kill a specific type of mob with the required amount. |
GATHER_ITEM |
Item Material name (e.g., DIAMOND ) |
Have the required number of items in the inventory. |
BREAK_BLOCK |
Block Material name (e.g., OAK_LOG ) |
Break a specific number of blocks. |
PLACE_BLOCK |
Block Material name (e.g., TORCH ) |
Place a specific number of blocks. |
REACH_LEVEL |
*Not used* | Reach a required experience level. |
KILL_PLAYER |
Player name or ANY |
Kill a specific player or any player. |
BREED_ANIMAL |
EntityType name (e.g., COW ) |
Breed a specific number of animals. |
TAME_ANIMAL |
EntityType name (e.g., WOLF ) |
Tame a specific number of animals. |
CONSUME_ITEM |
Material name (e.g., APPLE ) |
Eat or drink a specific item. |
SMELT_ITEM |
Output Material name (e.g., IRON_INGOT ) |
Smelt a specific number of items. |
ENCHANT_ITEM |
Enchantment name (e.g., sharpness ) |
Enchant an item with a minimum enchantment level. |
TRADE_VILLAGER |
*Not used* | Trade with villagers a specific number of times. |
FISH_ITEM |
Material name of caught item (e.g., SALMON ) |
Fish a specific number of items. |
WEAR_ARMOR |
Armor type name (e.g., DIAMOND , IRON ) |
Wear a full set of armor. |
PLANT_CROP |
Material name of the seed (e.g., WHEAT_SEEDS ) |
Plant a specific number of crops. |
ITEM_CRAFT |
Material name of the item (e.g., STONE_SWORD ) |
Craft a specific number of items. |
HARVEST_CROP |
Material name of the crop (e.g., WHEAT ) |
Harvest a specific number of crops. |
REACH_HEIGHT |
*Not used* | Reach a required Y-level. |
BLOCK_ATTACK |
*Not used* | Block a specific number of attacks with a shield. |
BIOME_ENTER |
Biome name (e.g., DESERT ) |
Enter a required biome. |
USE |
Material name (e.g., LEVER ) |
Interact (right-click) with a specific item or block. |
STRIP_LOG |
Log type (e.g., OAK_LOG ) |
Strip a specific number of logs. |
III. Rewards
Rewards are given to the player upon quest completion. A quest can have multiple types of rewards.
Type (`type`) | Attributes | Description |
---|---|---|
COMMAND |
commands |
A list of commands to be executed from the console. Use %player% for the player's name. |
*none* | Executes one or more commands as a reward. | |
ITEM |
items |
A list of items to give to the player. |
*none* | Gives one or more pre-configured items as a reward. | |
CHOICE |
title |
The title of the reward choice GUI. |
items |
A list of items the player can choose from. | |
*none* | Opens a GUI for the player to select an item reward. |
Each item in the ITEM
or CHOICE
reward can have the following attributes:
Attribute | Type | Description |
---|---|---|
material |
String | The Material name of the item (e.g., DIAMOND_SWORD ). |
amount |
Integer | The number of items. |
name |
String | The display name of the item (supports MiniMessage). |
lore |
List of strings | The item's lore (one line per entry, supports MiniMessage). |
enchantments |
List of strings | A list of enchantments (e.g., sharpness:5 ). |
quest-item |
Boolean | If true , the item has a "fingerprint" and can be used in other quest requirements. |
IV. Requirements
Requirements are conditions that a player must meet BEFORE receiving a quest. Currently, only item requirements are supported.
Attribute | Type | Description |
---|---|---|
material |
String | The Material name of the required item. |
amount |
Integer | The required number of items. |
from-quest |
String | The ID of the quest the item must have originated from (e.g., a `quest-item` from another quest). |
V. Next Quest
You can create a quest chain by specifying the ID of the next quest.
Attribute | Type | Description |
---|---|---|
next-quest |
String | The ID of the next quest to be assigned to the player upon completion of the current one. |