Repository navigation
Configuration
This page is for server administrators who want to configure Alkatraz.
Located at plugins/Alkatraz/config.yml:
# Update Checker
check_updates: true
# Determines how much info is logged.
# Allowed values: low, normal, high, very high, debug
verbose: normal
# The amount of stat points a player starts with. DEFAULT: 5
default_stat_points: 5
# The amount of stat reset tokens a player starts with. DEFAULT: 1
default_reset_tokens: 1
# How much affinity you gain from investing 1 stat point. DEFAULT: 10
affinity_per_point: 10
# How much resistance you gain from investing 1 stat point. DEFAULT: 10
resistance_per_point: 10
# The delay (ticks) of spawning the magic circle particles. DEFAULT: 10
circle_ticks: 10
# Unused at the moment, but keep false, otherwise some names/titles will appear weird.
resource_pack_override: false
# Whether to show the first-join tutorial to new players
first_join_tutorial: true
# Spellbook circle weights (rarity in random spellbooks)
spellbook:
circle_weights:
circle_1: 10000
circle_2: 5000
circle_3: 2500
circle_4: 1250
circle_5: 750
circle_6: 375
circle_7: 150
circle_8: 75
circle_9: 30
# Magic Stone drops from magic mobs
magic_stone:
base_drop_chance: 0.75
looting_bonus: 0.10
# Villager spellbook trading
villager_trading:
enabled: true
chance_two_trades: 20
chance_one_trade: 40
max_trades_per_villager: 2
trade_max_uses: 3
tiers:
1:
emerald_min: 4
emerald_max: 7
stone_min: 1
stone_max: 1
2:
emerald_min: 8
emerald_max: 13
stone_min: 1
stone_max: 2
3:
emerald_min: 14
emerald_max: 21
stone_min: 2
stone_max: 3
4:
emerald_min: 22
emerald_max: 31
stone_min: 3
stone_max: 5
5:
emerald_min: 32
emerald_max: 47
stone_min: 5
stone_max: 8
# Imbuing system -- converts vanilla tools/weapons/armor into magic items
# using magic stones in a crafting table
imbuing:
# Stone cost per tier (tier determined by material). DEFAULT: 1-5
stone_costs:
1: 1
2: 2
3: 3
4: 4
5: 5
# Recipe unlock notifications
recipes:
unlock_notifications:
chat: true
title: true
actionbar: false
sound: true
particles: true
# PlaceholderAPI integration settings
placeholders:
leaderboard:
enabled: true
refresh_interval_minutes: 5
max_entries: 10Spells are configured in plugins/Alkatraz/spells/<spell_id>.yml. Each file defines:
id: 'fireball'
display_name: '&6Fireball'
description:
- '&7A small ball of fire that can be shot'
- '&7at an enemy.'
enabled: true # Set to false to disable a spell
element: 'FIRE'
code: 'LLLLL' # 5-character cast code (R/L/S)
level: 1
cooldown: 3 # Seconds
cast_time: 0.5 # Seconds
mana_cost: 15
maximum_mastery: 100
power: 2 # Base damage
mastery_bar_color: 'RED'
gui_item: 'FIRE_CHARGE'Type-specific fields (e.g., power, max_hitpoints, base_heal, radius, duration, damage_per_tick, pull_strength) vary by spell.
Spell options are configured in plugins/Alkatraz/spells/<spell_id>_options.yml. Example:
options:
speed:
description: "Adjust fireball velocity"
icon: FEATHER
default_index: 1
values:
slow:
display_name: "Slow"
description: "Slower projectile"
icon: SOUL_SAND
value_type: double
value: 0.3
impacts:
- type: stat_modifier
stat: projectile_speed
value: 0.3
modifier: SETOption values can have:
- requirements -- Conditions to unlock the value (circle level, mastery, permission)
- impacts -- Effects when the value is selected (stat modifiers, mana cost changes, tags)
| Type | Description |
|---|---|
number_stat |
Requires a stat to meet a minimum value (e.g., circleLevel >= 2) |
boolean_stat |
Requires a boolean stat to be true |
permission |
Requires a Bukkit permission node |
option_value |
Requires another option to have a specific value |
composite |
AND/OR combination of requirements |
arcane_knowledge |
Requires minimum arcane knowledge |
research |
Requires completed research |
spell_mastery |
Requires mastery of a specific spell |
spell_discovered |
Requires a specific spell to be discovered |
mastered_spell_count |
Requires N mastered spells of a given circle |
| Type | Description |
|---|---|
stat_modifier |
Modifies a spell stat (ADD/MULTIPLY/SET) |
mana_cost |
Changes mana cost |
tag |
Applies a tag to the spell |
cast_modifier |
Applies attribute/stat/potion effect during cast |
plugins/Alkatraz/progression.yml defines circle requirements and rewards:
arcane_knowledge:
sources:
spell_cast:
enabled: true
amount: 1
circle_amounts: # Bonus per caster circle level
0: 1
1: 2
2: 4
3: 7
4: 14
5: 26
6: 50
7: 94
8: 179
9: 340
research_points:
sources:
mastery_max:
enabled: true
amount: 10
magic_mob_kill:
enabled: true
amount: 3
circle_up_bonus:
enabled: true
amount: 50
circle:
auto_advance: true
levels:
1:
stat_points: 5
max_mana: 200
mana_regeneration: 2
magic_affinity: 2
magic_resistance: 1
requirements:
- type: arcane_knowledge
amount: 300
- type: spell_mastery
spell: magic_missile
mastery: 250
description: "Requires max mastery Magic Missile"Items are defined in YAML files under magic/items/:
id: 'reinforced_wand'
display_name: '&r&9Reinforced Wand'
material: BLAZE_ROD
lore:
- '&7A wand forged in dragonfire.'
components:
- wand
- mana_container
- socket_holder
attributes:
alkatraz:spell_power: 10
alkatraz:max_mana: 50
max_engravings: 2
max_circle: 5
cast_time_multiplier: 0.8
triggers:
- event: on_equip
conditions:
- type: always
effects:
- type: apply_potion
effect: HASTE
duration_ticks: 200
amplifier: 0
recipe:
shape:
- " L "
- "IBI"
- " S "
ingredients:
L: LAPIS_LAZULI
I: IRON_INGOT
B: BLAZE_ROD
S: STICKEngravings are defined in magic/engravings/<engraving_id>.yml:
key: alkatraz:frost_rune
allowed_item_types:
- sword
- axe
- wand
item:
material: ICE
display_name: '&bFrost Rune'
lore:
- '&7&oA shard of eternal ice.'
attributes:
alkatraz:water_affinity: 10
conditions:
- type: spell_element
element: WATER
effects:
- type: potion_effect
effect: SLOWNESS
duration_ticks: 100
amplifier: 1
recipe:
shape:
- " I "
- "SMS"
- " M "
ingredients:
I: ICE
S: SNOWBALL
M: AMETHYST_SHARDRecipes are defined in YAML files under magic/recipes/. Each recipe targets one crafting station (type) and can be gated behind requirements and permissions.
definition: alkatraz:reinforced_wand # Required. Magic item key (alias: id)
type: shaped # shaped | shapeless | furnace | blast_furnace |
# smoker | campfire | brewing | smithing |
# stonecutter | anvil | custom
result:
item: BLAZE_ROD # Material name, or a magic item key
amount: 1
display_name: 'Reinforced Wand' # Optional GUI/notification name
override_vanilla: false # Remove the conflicting Bukkit recipe with this key
hidden_when_locked: false # Reserved GUI hint (not yet rendered)
experience: 0 # Cooking experience default
cooking_time: 0 # Cooking time default (native recipes use 200 if <= 0)
permissions:
- some.permission.node # Optional: gates crafting on a permission
unlock:
message: '&dYou unlocked a powerful wand!' # Optional per-recipe unlock message
requirements:
- type: number_stat
stat: circleLevel
minimum: 5
description: "Requires Circle Level 5"A single-character key in a shaped recipe (or an entry in a shapeless list) resolves to an ingredient:
| Form | Example | Description |
|---|---|---|
| Material name |
M: MAGIC_STONE or - MAGIC_STONE
|
A vanilla material |
| Type |
type:log or "type:log"
|
Every material of an item type |
| Tag |
tag:minecraft:logs or "tag:minecraft:logs"
|
A vanilla material tag |
| Magic item | alkatraz:magic_stone |
An exact magic item (matched by definition key) |
Station recipes use a section named after the type (or top-level input for cooking):
# FURNACE / BLAST_FURNACE / SMOKER / CAMPFIRE
furnace:
input: IRON_ORE
experience: 0.7
cooking_time: 200
# BREWING (potion input + brewing ingredient)
brewing:
input: AWKWARD_POTION
ingredient: MAGMA_CREAM
# SMITHING
smithing:
base: DIAMOND_CHESTPLATE
addition: NETHERITE_INGOT
# ANVIL
anvil:
base: DIAMOND_SWORD
addition: ENCHANTED_BOOK
# STONECUTTER
stonecutter:
input: STONEShaped recipes use a shape list plus an ingredients map of single characters:
type: shaped
shape:
- " L "
- "IBI"
- " S "
ingredients:
L: LAPIS_LAZULI
I: IRON_INGOT
B: BLAZE_ROD
S: STICKShapeless recipes use a plain list:
type: shapeless
ingredients:
- OAK_LOG
- type:log
- MAGIC_STONESee Recipes for the full list of built-in requirement types. Recipes with requirements are locked until the player unlocks them (via the GUI, /recipes unlock, or automatic evaluation). See Crafting Gating for station-specific behavior.
Set bonuses are defined in magic/set_bonuses.yml:
sets:
flameheart:
display_name: '&cFlameheart Set'
required_count: 4
bonus:
- type: stat_modifier
stat: fire_affinity
value: 20
modifier: ADDItem type categories are defined in magic/item_types.yml. These determine which equipment slot an item can occupy.
Loot tables and spellbook drop rates are configured in plugins/Alkatraz/loot.yml:
loot:
loot_multiplier: 1.0 # Global multiplier for all loot weights
chest_loot:
enabled: true
common:
spellbook_weight: 100
spellbook_1_2_weight: 30
filler_weight: 100
max_items: 5
dungeon:
spellbook_1_2_weight: 80
spellbook_1_3_weight: 60
spellbook_2_4_weight: 20
max_items: 1
nether:
fire_element_weight: 100
spellbook_2_4_weight: 50
spellbook_4_6_weight: 20
max_items: 1
end:
spellbook_2_4_weight: 100
spellbook_4_6_weight: 80
spellbook_6_9_weight: 40
air_element_weight: 60
max_items: 2
structure_loot:
enabled: true
desert_pyramid:
fire_element_weight: 100
spellbook_2_4_weight: 40
ocean_ruins:
water_element_weight: 100
spellbook_1_3_weight: 50
stronghold:
spellbook_2_4_weight: 100
spellbook_4_6_weight: 60
dark_element_weight: 40
woodland_mansion:
dark_element_weight: 100
spellbook_2_4_weight: 80
mob_drops:
enabled: true
zombie:
spellbook_weight: 100
filler_weight: 1900
# ... more mobs ...
fishing:
enabled: true
random_spellbook_weight: 40
water_element_weight: 50
air_element_weight: 30
light_element_weight: 20
piglin_bartering:
enabled: true
fire_element_weight: 60
random_spellbook_weight: 40
nothing_weight: 900See Spellbooks & Loot for full details on loot sources and drop chances.
Mob resistances and spell lists are in plugins/Alkatraz/mobs/<mob>.yml:
# Simple mob
fire_resistance: -40.0
water_resistance: 0.0
earth_resistance: 40.0
# ...
spells: []
# Replacement mob (spawns instead of vanilla)
replaces: zombie
spawn_chance: 5 # Percentage
spawn_reasons:
- NATURAL
# ... resistances ...
spells:
- fireballResearch nodes are defined in plugins/Alkatraz/research.yml. Each node has:
-
display_name-- Colored name -
category-- One of: magic, fire, water, earth, air, light, dark -
icon-- Material -
research_points_cost-- Cost to unlock -
position-- Grid position in the research tree -
parents-- Prerequisite nodes -
objectives-- Tasks to complete (event type, amount, optional filters) -
rewards-- Bonuses granted on completion -
visibility--hidden_until_availablecontrols if locked nodes are visible