Skip to main content
The main configuration file is config.yml, located in plugins/Skills/. Edit it with a text editor and run /skilladmin reload to apply changes without restarting the server.
Language files live in plugins/Skills/lang/ (e.g., en.yml, ja.yml). They are created automatically on first run and can be edited to customize all player-facing messages.

Full default config.yml

# Skills Plugin Configuration

# Database settings
database:
  type: sqlite  # sqlite or mysql
  # MySQL settings (only used if type is mysql)
  host: localhost
  port: 3306
  name: skills
  user: root
  password: ""

# Skill settings
skills:
  total_cap: 700.0       # Maximum total skill points
  individual_max: 100.0  # Maximum for each skill
  gain_amount: 0.1       # Amount gained per successful gain check

# Combat settings
combat:
  damage_multiplier: 10.0    # Converts vanilla damage to internal
  parry_chance_max: 50.0     # Maximum parry chance (%)
  critical_chance_max: 50.0  # Maximum critical hit chance (%)

# Magic settings
magic:
  casting_time_base: 2000   # Base casting time in milliseconds
  targeting_timeout: 10000  # Targeting mode timeout in milliseconds
  spell_range: 12.0         # Maximum spell range in blocks
  reagent_search:
    search_shulker_boxes: true
    search_bundles: true

# Thief settings
thief:
  hide_movement_breaks: false
  stealth_max_distance: 10.0
  detect_range: 10.0
  stealth_distance_divisor: 5.0
  hide_timeout_base: 30
  hide_timeout_max: 300
  hide_timeout_warning: 10
  equipment_steal_penalty: 20

# Taming settings
taming:
  attempt_cooldown: 5000  # Cooldown between tame attempts in milliseconds

# Language settings
language:
  default: ja
  use_client_locale: true
  allow_player_change: true

# Auto-save settings
auto_save:
  enabled: true
  interval: 300  # Seconds between auto-saves

# Integration with other plugins
integration:
  notoriety: true

# Cooldown settings (in seconds)
cooldowns:
  hide: 10
  detect: 5
  snoop: 5
  steal: 3
  poison: 10
  tame: 5
  animal_lore: 3
  arms_lore: 3
  evaluate: 5
  cast_spell: 2
  meditation: 30

# Debug mode
debug: false

# Economy settings (Vault integration)
economy:
  enabled: true
  chunk_limit:
    enabled: true
    chunk_radius: 5
    time_window_minutes: 60
    world_limits:
      world: 500.0
      world_nether: 800.0
      world_the_end: 1000.0
      default: 500.0
  show_on_scoreboard: true

# Sleep Skip settings
sleep:
  enabled: true

# Bed Rest Recovery settings
bed_rest_recovery:
  enabled: true

# VengefulMobs settings
vengeful_mobs:
  enabled: true
  exclude_tamed: true
  anger_duration: 10000
  give_up_distance: 20.0
  extend_anger_while_chasing: false
  enabled_mobs:
    - SHEEP
    - PIG
    - COW
    - CHICKEN
    - RABBIT
    - HORSE
    - DONKEY
    - MULE
    - LLAMA
    - GOAT
    - MOOSHROOM
  default:
    damage: 2.0
    speed: 1.0
    attack_range: 2.0
    attack_cooldown: 1000
    mode: RETALIATE
  overrides:
    CHICKEN:
      damage: 1.0
      attack_cooldown: 1500
    RABBIT:
      damage: 1.0
      attack_cooldown: 1500
    COW:
      damage: 3.0
      attack_cooldown: 1200
      mode: RETALIATE
    GOAT:
      damage: 4.0
      speed: 1.3
      attack_cooldown: 800
      mode: RETALIATE_WITH_SUPPORT
    LLAMA:
      damage: 2.0
      mode: RETALIATE_ONCE
    HORSE:
      damage: 3.5
      speed: 1.5
      attack_cooldown: 1000
      mode: RETALIATE_ONCE

# Ender Dragon Scaling
ender_dragon_scaling:
  enabled: true
  respawn_interval_hours: 24
  hp_per_kill: 50
  max_hp: 1000
  damage_scale_per_kill: 0.15
  max_damage_scale: 4.0
  xp_scale_per_kill: 0.25
  announce_pre_respawn_minutes: [5, 1]

# Scoreboard settings
scoreboard:
  enabled: true
  update_interval_ticks: 20
  conflict_mode: RESPECT
  show_by_default: true
  allow_player_toggle: true

# Chunk Mob Limit settings
chunk_mob_limit:
  enabled: true
  limits:
    passive: 24
    hostile: 32
    ambient: 8
    water_creature: 8
    water_ambient: 16
  check_interval_ticks: 100
  notify_on_limit: true

Settings reference

Controls how player skill data is stored. SQLite requires no external setup; MySQL is recommended for networks sharing data across multiple servers.
database.type
string
default:"sqlite"
Storage backend. Set to sqlite or mysql.
SQLite (default — no external server required)
database.host
string
default:"localhost"
Ignored when type is sqlite.
MySQL (used when type: mysql)
database.host
string
default:"localhost"
MySQL server hostname or IP address.
database.port
number
default:"3306"
MySQL server port.
database.name
string
default:"skills"
Name of the MySQL database to use.
database.user
string
default:"root"
MySQL username.
database.password
string
default:""
MySQL password. Leave empty for no password.
SQLite stores data in plugins/Skills/skills.db. It works well for single-server setups. Use MySQL if you run a multi-server network and need shared player data.
skills.total_cap
number
default:"700"
Maximum total skill points a player can accumulate across all 37 skills. At 700 points, the player can max out exactly 7 skills at 100 each. When this cap is reached, gaining a skill automatically reduces the least-recently-used skill.
skills.individual_max
number
default:"100"
Maximum value for any single skill.
skills.gain_amount
number
default:"0.1"
Amount added to a skill on a successful gain check. Decreases use the same amount.
The skill decline system activates when the player’s total skill points reach 600 (not 700). Between 600 and 700 points the least-used skill decreases each time another skill increases. This mirrors the Ultima Online design where the “soft cap” creates meaningful trade-offs before the hard cap is reached.
combat.damage_multiplier
number
default:"10.0"
Multiplier applied when converting vanilla damage to the plugin’s internal HP system. Internal HP is tracked separately from vanilla hearts and is synced back after each hit.
combat.parry_chance_max
number
default:"50.0"
Maximum percentage chance that a parry attempt can succeed (with a shield). Actual chance equals Parrying × 0.5%, capped at this value.
combat.critical_chance_max
number
default:"50.0"
Maximum critical hit chance as a percentage. Actual chance equals Anatomy ÷ 2 %, capped at this value.
magic.casting_time_base
number
default:"2000"
Base casting time in milliseconds before the spell circle multiplier is applied. Formula: (casting_time_base + circle × 500ms) × (1 − Magery reduction).
magic.targeting_timeout
number
default:"10000"
How long (in milliseconds) the targeting phase waits for a click before automatically cancelling. No mana or reagents are consumed on timeout.
magic.spell_range
number
default:"12.0"
Maximum range in blocks for targeted spells. Clicking a target beyond this range produces an out-of-range error and cancels without consuming resources.
magic.reagent_search.search_shulker_boxes
boolean
default:"true"
When true, the plugin looks inside shulker boxes in the player’s inventory for reagents.
magic.reagent_search.search_bundles
boolean
default:"true"
When true, the plugin looks inside bundles in the player’s inventory for reagents.
thief.hide_movement_breaks
boolean
default:"false"
When true, any movement (not just sprinting) breaks the Hiding effect. When false, only sprinting breaks it — walking is allowed if the Stealth skill permits.
thief.stealth_max_distance
number
default:"10.0"
Hard cap on how far a player can walk while hidden, regardless of Stealth skill.
thief.detect_range
number
default:"10.0"
Hard cap on /detect radius in blocks, regardless of Detecting Hidden skill.
thief.stealth_distance_divisor
number
default:"5.0"
Controls how Stealth skill translates to walkable distance. Formula: skill ÷ divisor. With the default of 5.0, Stealth 60 allows 12 blocks of movement.
thief.hide_timeout_base
number
default:"30"
Minimum number of seconds a player can remain hidden (at skill 0).
thief.hide_timeout_max
number
default:"300"
Maximum number of seconds a player can remain hidden (at skill 100).
thief.hide_timeout_warning
number
default:"10"
Seconds before the hide duration expires at which the player receives a warning message.
thief.equipment_steal_penalty
number
default:"20"
Additional difficulty applied when attempting to steal an equipped item (worn armour, held weapon, etc.).
taming.attempt_cooldown
number
default:"5000"
Minimum time in milliseconds between taming attempts, even if the first attempt fails.
language.default
string
default:"ja"
The fallback language used when no per-player setting exists and the client locale cannot be matched. Supported values: en, ja.
language.use_client_locale
boolean
default:"true"
When true, the plugin reads the player’s Minecraft client locale and automatically selects the matching language if supported.
language.allow_player_change
boolean
default:"true"
When true, players can change their own language with /skills language <code>. Set to false to enforce the server default for all players.
Language files are in plugins/Skills/lang/. The plugin ships with en.yml and ja.yml. To add a new language, copy one of these files, rename it to the locale code (e.g., fr.yml), translate the values, and set language.default to the new code.
integration.notoriety
boolean
default:"true"
When true and the notoriety plugin is installed, successful Stealing actions are recorded as crimes via the notoriety API. If the notoriety plugin is absent, this setting is ignored.
The notoriety plugin is a soft dependency — the Skills plugin loads and functions normally without it.
scoreboard.enabled
boolean
default:"true"
Master switch for the sidebar scoreboard. When false, no scoreboard is shown and the /skills sb toggle command is disabled.
scoreboard.update_interval_ticks
number
default:"20"
How often the scoreboard updates, in ticks. 20 ticks = 1 second.
scoreboard.conflict_mode
string
default:"RESPECT"
Behaviour when another plugin is using the sidebar slot.
  • ALWAYS — always show the Skills scoreboard, overwriting the other plugin.
  • RESPECT — do not show if another plugin has claimed the sidebar.
scoreboard.show_by_default
boolean
default:"true"
Whether new players see the scoreboard by default on first join.
scoreboard.allow_player_toggle
boolean
default:"true"
Whether players can toggle the scoreboard on and off with /skills sb.
Makes passive mobs retaliate when attacked by a player. Inspired by the VengefulMobs plugin.
vengeful_mobs.enabled
boolean
default:"true"
Enable or disable the entire VengefulMobs feature.
vengeful_mobs.exclude_tamed
boolean
default:"true"
When true, tamed animals owned by the attacking player will not fight back.
vengeful_mobs.anger_duration
number
default:"10000"
How long (in milliseconds) a mob stays in its angry/retaliating state after being hit.
vengeful_mobs.give_up_distance
number
default:"20.0"
Distance in blocks at which an angry mob gives up chasing the player.
vengeful_mobs.extend_anger_while_chasing
boolean
default:"false"
When true, the anger timer resets while the mob is actively chasing, effectively making it chase until the player escapes beyond give_up_distance.
vengeful_mobs.enabled_mobs
string[]
List of mob types that will fight back. See the default config.yml for the full list of supported mob type names.
vengeful_mobs.default.damage
number
default:"2.0"
Damage dealt per attack in half-hearts, applied to all enabled mobs unless overridden.
vengeful_mobs.default.speed
number
default:"1.0"
Movement speed multiplier for angry mobs.
vengeful_mobs.default.attack_range
number
default:"2.0"
Attack range in blocks.
vengeful_mobs.default.attack_cooldown
number
default:"1000"
Milliseconds between attacks (1000 = 1 second).
vengeful_mobs.default.mode
string
default:"RETALIATE"
Aggression mode. Available values:
  • RETALIATE — fight back and keep attacking until anger expires
  • RETALIATE_ONCE — attack once only (suitable for accidental hits)
  • RETALIATE_WITH_SUPPORT — call nearby same-type mobs to join the fight
  • HOSTILE — always attack players on sight
  • MURDER_ALL — attack all entities
  • MURDER_OTHERS — attack all entities except same type
vengeful_mobs.overrides
object
Per-mob overrides for damage, speed, attack_range, attack_cooldown, and mode. The mob type name (e.g., GOAT) is the key. Any field omitted in the override falls back to the default values.
Prevents server lag from large mob farms by capping the number of mobs per chunk category.
chunk_mob_limit.enabled
boolean
default:"true"
Enable or disable the chunk mob limit feature.
chunk_mob_limit.limits.passive
number
default:"24"
Maximum passive mobs (cows, sheep, pigs, etc.) per chunk.
chunk_mob_limit.limits.hostile
number
default:"32"
Maximum hostile mobs (zombies, skeletons, creepers, etc.) per chunk.
chunk_mob_limit.limits.ambient
number
default:"8"
Maximum ambient mobs (bats) per chunk.
chunk_mob_limit.limits.water_creature
number
default:"8"
Maximum water creatures (squid, dolphins, etc.) per chunk.
chunk_mob_limit.limits.water_ambient
number
default:"16"
Maximum water ambient mobs (fish) per chunk.
chunk_mob_limit.check_interval_ticks
number
default:"100"
How often the mob count cache refreshes, in ticks. 100 ticks = 5 seconds.
chunk_mob_limit.notify_on_limit
boolean
default:"true"
When true, players receive a chat message when their breeding attempt is blocked by the chunk limit.
All values are in seconds.
cooldowns.hide
number
default:"10"
Seconds between /hide attempts.
cooldowns.detect
number
default:"5"
Seconds between /detect uses.
cooldowns.snoop
number
default:"5"
Seconds between /snoop attempts.
cooldowns.steal
number
default:"3"
Seconds between stealing attempts.
cooldowns.poison
number
default:"10"
Seconds between /poison uses.
cooldowns.tame
number
default:"5"
Seconds between /tame attempts.
cooldowns.animal_lore
number
default:"3"
Seconds between /lore uses.
cooldowns.arms_lore
number
default:"3"
Seconds between /arms uses.
cooldowns.evaluate
number
default:"5"
Seconds between /evaluate uses.
cooldowns.cast_spell
number
default:"2"
Seconds between spell casts.
cooldowns.meditation
number
default:"30"
Seconds between meditation skill gain checks.
auto_save.enabled
boolean
default:"true"
Enable periodic background saves of all online player data.
auto_save.interval
number
default:"300"
Seconds between auto-saves. Data is also always saved on player disconnect and server shutdown.

Build docs developers (and LLMs) love