Docs

Crear encantamientos

Cada archivo .yml dentro de custom-enchants/ es un encantamiento nuevo. Se compra y mejora desde el menú del pico como los incluidos, gana maestría, avisa su activación y respeta la protección de destrucción. No hace falta programar.

custom-enchants/README.yml documenta todas las opciones, y treasure_hunter.yml y shard_storm.yml son ejemplos que funcionan. Los cambios se aplican al reiniciar.


Ejemplo completo

yaml
# custom-enchants/shard_storm.yml
enabled: true
display-name: "&b◆ Shard Storm"
trigger: POST_BREAK
rarity: LEGENDARY
description:
  - "&7Summons a storm that clears a disc"
  - "&7and turns the rubble into shards."
  - ""
  - "&7Radius: &f{value}"
max-level: 100
base-cost: 50
cost-multiplier: 1.06
currency: shards
required-pickaxe-level: 25
gui-slot: 42
gui-item: "PRISMARINE_SHARD"
conflicts-with: []
requires: [treasure_hunter]
level-values:
  1: 2
  100: 7
chance: "0.02 + {level} * 0.01"
cooldown-ticks: 20
effects:
  - type: break
    shape: disc
    radius: "{value}"
    max-blocks: 400
  - type: currency
    currency: shards
    amount: "floor({broken} / 25)"
  - type: level-exp
    track: player
    amount: "{broken} * 0.5"
  - type: particle
    particle: "ELECTRIC_SPARK|FIREWORKS_SPARK"
    count: "min(120, {broken})"
    spread: "{radius} / 2"
  - type: sound
    sound: ENTITY_LIGHTNING_BOLT_THUNDER
    volume: 0.4
    pitch: 1.6

Con una probabilidad de 0.03% en nivel 1 a 1.02% en nivel 100 (la fórmula está en porcentaje), rompe un disco de radio 2 a 7, paga un shard cada 25 bloques rotos y da experiencia del track player.


Opciones

El id es el nombre del archivo, salvo que pongas id:.

Compartidas con enchants.yml: enabled, display-name, trigger, rarity, description, max-level, base-cost, cost-multiplier, currency, required-pickaxe-level, gui-slot, gui-item, conflicts-with, requires, upgradeable, default-enchant, level-values, level-chances. Ver Encantamientos.

Propias:

OpciónHace
chanceProbabilidad de activación en %, acepta fórmula. Sin ella se usa level-chances, o 100
cooldown-ticksTicks mínimos entre activaciones del mismo jugador
permissionPermiso necesario para que funcione
effectsLista de efectos que se ejecutan en orden al activarse

Los triggers: PRE_BREAK antes de pagar el bloque (para romper más), POST_BREAK después (para recompensas) y PASSIVE en cada bloque.


Efectos

Todo efecto acepta chance: para tirar su propia probabilidad, y cada número acepta una fórmula.

TipoOpcionesHace
currencycurrency, amount, store-asPaga una moneda. Aplica la estadística currency:<id>
breakshape, radius, length, max-blocksRompe bloques con una forma y los paga como minería normal
extra-dropsmaterial (o self), amountAgrega bloques extra
exp-multipliermultiplierMultiplica la experiencia del pico de este bloque
level-exptrack, amountDa experiencia a un track de levels.yml
potioneffect, amplifier, duration (ticks)Aplica un efecto de poción
particleparticle, count, spread, at (block o player)Partículas; varios nombres separados por | se prueban en orden
soundsound, volume, pitchSonido
actionsactionsEjecuta acciones
variablename, valueGuarda un valor para los efectos siguientes

Formas de break

FormaRompe
sphereEsfera de radius
cubeCubo de radius
discDisco horizontal de radius
layerLa capa entera de la mina a la altura del bloque
layerslength capas enteras hacia abajo
columnHacia abajo length bloques, con ancho radius
linelength bloques en la dirección horizontal del jugador, con ancho radius

length vale radius si no se indica.

break respeta la protección: solo rompe dentro de minas o regiones permitidas, y nunca más que max-blocks ni que max-blocks-per-activation de enchants.yml.


Variables

VariableValor
{level} · {max_level}Nivel del encantamiento y máximo
{value} · {chance}level-values y level-chances interpolados para el nivel
{pickaxe_level}Nivel del pico
{broken}Bloques rotos hasta ahora por efectos break
{radius}Radio del último break
{reward}Última cantidad pagada por currency (o el nombre de store-as)
Cualquier nombreCreado con variable o store-as

En actions, además: {enchant} (nombre), {block} (material) y todas las variables como {nombre}.

Ejemplo con variables

yaml
effects:
  - type: variable
    name: bonus
    value: "1 + {pickaxe_level} / 100"
  - type: currency
    currency: tokens
    amount: "random(100, 300) * {bonus}"
    store-as: paid
  - type: actions
    chance: 10
    actions:
      - "[actionbar] &e+{paid} tokens &7de {enchant}"

Consejos

  • Empezá con probabilidades bajas y subilas con level-chances o una fórmula con {level}.
  • Para encantamientos de área usá max-blocks: un radio grande en una mina grande rompe muchos bloques.
  • Pagá monedas nuevas (shards) en vez de dinero para no inflar la economía principal.
  • Para lógica que YAML no alcanza, los desarrolladores pueden registrar tipos de efecto nuevos. Ver Extender PulsePrison.
Crear encantamientos | PulsePrison Core Docs