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
# 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.6Con 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ón | Hace |
|---|---|
chance | Probabilidad de activación en %, acepta fórmula. Sin ella se usa level-chances, o 100 |
cooldown-ticks | Ticks mínimos entre activaciones del mismo jugador |
permission | Permiso necesario para que funcione |
effects | Lista 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.
| Tipo | Opciones | Hace |
|---|---|---|
currency | currency, amount, store-as | Paga una moneda. Aplica la estadística currency:<id> |
break | shape, radius, length, max-blocks | Rompe bloques con una forma y los paga como minería normal |
extra-drops | material (o self), amount | Agrega bloques extra |
exp-multiplier | multiplier | Multiplica la experiencia del pico de este bloque |
level-exp | track, amount | Da experiencia a un track de levels.yml |
potion | effect, amplifier, duration (ticks) | Aplica un efecto de poción |
particle | particle, count, spread, at (block o player) | Partículas; varios nombres separados por | se prueban en orden |
sound | sound, volume, pitch | Sonido |
actions | actions | Ejecuta acciones |
variable | name, value | Guarda un valor para los efectos siguientes |
Formas de break
| Forma | Rompe |
|---|---|
sphere | Esfera de radius |
cube | Cubo de radius |
disc | Disco horizontal de radius |
layer | La capa entera de la mina a la altura del bloque |
layers | length capas enteras hacia abajo |
column | Hacia abajo length bloques, con ancho radius |
line | length 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
| Variable | Valor |
|---|---|
{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 nombre | Creado con variable o store-as |
En actions, además: {enchant} (nombre), {block} (material) y todas las variables como {nombre}.
Ejemplo con variables
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-chanceso 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.