Patrón

<pattern>

Muchos comandos de WorldEdit aceptan un patrón como argumento. Un patrón determina qué bloques se colocan y cómo se distribuyen durante una operación.

Un patrón describe el bloque, mezcla, degradado o distribución generada que WorldEdit coloca durante una operación.

El marcador de patrón aparece como:

Marcador de patrón

<pattern>

El marcador no se escribe literalmente. Reemplázalo con un patrón válido:

Ejemplos de patrones

stone
stone,andesite,gravel
70%stone,20%andesite,10%gravel
$wood.rad
#blob5(stone,dirt)

Patrones de un solo bloque

El patrón más sencillo es un identificador de bloque.

Identificadores de bloques

stone
spruce_planks
glowstone

Los bloques de Minecraft también pueden utilizar el espacio de nombres completo:

Bloque con espacio de nombres

minecraft:stone

Los bloques de otro complemento deben incluir su espacio de nombres:

Espacio de nombres personalizado

my_addon:custom_block

Para inspeccionar el identificador del bloque que estás mirando:

Inspeccionar identificador de bloque

;blockid

Estados de bloques

Los estados de bloques controlan propiedades como la orientación, el eje, el crecimiento, la variante o la colocación superior e inferior.

Utiliza corchetes después del identificador del bloque:

Sintaxis de un solo estado

block[state=value]

Separa varios estados con comas:

Sintaxis de varios estados

block[state1=value,state2=value]

Ejemplo:

Ejemplo de estado de bloque

stone_slab[stone_slab_type=brick,top_slot_bit=true]

Cuando se omite un estado, WorldEdit utiliza el estado predeterminado de ese bloque.

Valores de datos

Algunas variantes antiguas de bloques pueden utilizar un valor de datos numérico:

Sintaxis de valor de datos

block:value

Ejemplo:

Ejemplo de variante antigua

wool:1

Para inspeccionar un identificador de bloque junto con su valor de datos:

Inspeccionar valor de datos

;blockid -d

No combines un valor de datos y estados de bloque en el mismo patrón:

Sintaxis mixta no válida

wool:1[state=value]

Para construcciones nuevas, utiliza preferentemente identificadores de bloques escritos y estados explícitos.

Mezclas aleatorias

Una mezcla aleatoria selecciona uno de varios patrones para cada posición afectada.

Separa las entradas con comas y no añadas espacios:

Mezcla aleatoria uniforme

stone,andesite,gravel

Sin pesos, cada entrada tiene aproximadamente la misma probabilidad:

PatrónProbabilidad aproximada
stone33.33%
andesite33.33%
gravel33.33%

Otro ejemplo:

Mezcla de maderas

spruce_planks,stripped_spruce_wood,mangrove_wood

Mezclas aleatorias ponderadas

Coloca un peso antes de % para controlar la frecuencia con la que se selecciona cada entrada.

Sintaxis de mezcla ponderada

weight%pattern,weight%pattern

Ejemplo:

Mezcla por porcentajes

70%stone,20%andesite,10%gravel

Los pesos también pueden ser relativos y no necesitan sumar 100:

Mezcla con pesos relativos

7%stone,2%andesite,1%gravel

La proporción 7/2/1 equivale a 70/20/10.

Normalizar pesos relativos

Utiliza esta fórmula para convertir pesos relativos en porcentajes:

Fórmula de normalización de pesos

porcentaje = peso individual / suma de todos los pesos × 100

Para los pesos 7, 2 y 1:

Ejemplo de normalización de pesos

peso total = 7 + 2 + 1 = 10
stone        = 7 / 10 × 100 = 70%
andesite     = 2 / 10 × 100 = 20%
gravel       = 1 / 10 × 100 = 10%

Cada entrada ponderada también puede ser otro tipo de patrón:

Patrón complejo ponderado

20%*wool,80%stone

En este ejemplo:

  • 20%*wool utiliza estados válidos aleatorios para la lana.
  • 80%stone utiliza un patrón fijo de piedra.

Cantidades estimadas de bloques

La selección aleatoria produce totales exactos diferentes en cada ejecución, pero puedes calcular una estimación.

Fórmula de bloques estimados

bloques estimados = posiciones totales × porcentaje / 100

Para 10,000 posiciones y la siguiente mezcla:

Distribución de ejemplo

70%stone,20%andesite,10%gravel

La distribución estimada es:

PatrónCálculoBloques estimados
stone10,000 × 70 / 1007,000
andesite10,000 × 20 / 1002,000
gravel10,000 × 10 / 1001,000

Para 3,456 posiciones:

Ejemplo de estimación decimal

stone       = 3456 × 0.70 = 2419.2
andesite    = 3456 × 0.20 = 691.2
gravel      = 3456 × 0.10 = 345.6

Los bloques no pueden ser fraccionarios, por lo que los resultados reales serán números enteros cercanos y pueden variar porque el patrón es aleatorio.

Calcular un porcentaje a partir de una cantidad deseada

Fórmula de cantidad deseada

porcentaje = bloques deseados / posiciones totales × 100

Para obtener aproximadamente 750 bloques de glowstone en 5,000 posiciones:

Ejemplo de cantidad deseada

750 / 5000 × 100 = 15%

El patrón resultante puede escribirse así:

Mezcla con porcentaje calculado

15%glowstone,85%stone

Estados aleatorios con *

El prefijo * selecciona estados válidos aleatorios para el identificador de bloque indicado.

Sintaxis de estados aleatorios

*block

Ejemplo:

Estados aleatorios de troncos

*log

Otro ejemplo:

Estados aleatorios de escaleras

*oak_stairs

El resultado depende de los estados admitidos por ese identificador de bloque.

*log no garantiza todos los tipos de madera porque varias maderas utilizan identificadores diferentes.

Conservar o cambiar estados con ^

El prefijo ^ cambia un tipo de bloque o estados seleccionados mientras intenta conservar las propiedades restantes.

Cambiar el tipo y conservar los estados

Conservar estados existentes

^acacia_stairs

Esto puede cambiar el material de una escalera mientras intenta conservar su orientación y colocación.

Cambiar únicamente estados específicos

Patrón únicamente de estados

^[growth=7]

Esto conserva el tipo de bloque actual y cambia únicamente el estado especificado.

También se pueden combinar un tipo de bloque y estados:

Patrón de tipo y estado

^block[state=value]

Patrón del portapapeles

#clipboard utiliza el contenido copiado como un patrón repetitivo.

Patrón del portapapeles

#clipboard

Utiliza un desplazamiento para mover el origen del patrón:

Sintaxis de desplazamiento del portapapeles

#clipboard@[x,y,z]

Ejemplo:

Ejemplo de desplazamiento del portapapeles

#clipboard@[0,1,0]

Esto desplaza el origen del patrón repetitivo un bloque hacia arriba.

Patrón de la mano

#hand utiliza el bloque sostenido en la mano principal.

Patrón del bloque sostenido

#hand

El objeto sostenido debe representar un bloque válido.

El patrón void

void no coloca ningún bloque en esa posición.

Patrón void

void

Resulta útil cuando se combina con otros patrones:

Espacios aleatorios

stone,void

Aproximadamente la mitad de las posiciones recibe piedra, mientras que las demás permanecen sin cambios.

Una versión ponderada proporciona mayor control:

Mezcla ponderada con void

25%glowstone,75%void

Comparación entre void y air

Patrón de aire

air

air reemplaza el bloque existente con aire.

Patrón void

void

void omite la posición y conserva el bloque existente.

Degradados

Un degradado crea una transición ordenada entre varios niveles de patrones.

Crear un degradado

Sintaxis para crear un degradado

;gradient create <name> <pattern1> <pattern2> <pattern3>

Ejemplo:

Ejemplo de creación de degradado

;gradient create nature stone dirt grass_block

Los espacios separan los niveles del degradado.

Las comas crean una mezcla aleatoria dentro de un nivel:

Degradado con niveles mixtos

;gradient create terrain stone,andesite dirt,coarse_dirt grass_block,moss_block

Los niveles se interpretan así:

Orden de niveles del degradado

stone,andesite
      ↓
dirt,coarse_dirt
      ↓
grass_block,moss_block

Referenciar un degradado guardado

Un degradado guardado utiliza el prefijo $:

Patrón de degradado guardado

$nature

El prefijo $ es obligatorio.

Direcciones absolutas

Direcciones de degradado

$nature.north
$nature.south
$nature.east
$nature.west
$nature.up
$nature.down

Aquí no se utilizan direcciones relativas como left, right, forward o back.

Degradado radial

Patrón de degradado radial

$nature.rad

Un degradado radial avanza desde el centro de la operación hacia su límite exterior:

Orden del degradado radial

primer patrón = centro
último patrón = límite exterior

Definición de ejemplo:

Crear degradado radial

;gradient create light deepslate_gold_ore spruce_planks glowstone birch_planks

Utilízalo como patrón radial:

Utilizar degradado radial

$light.rad

Degradado desde el jugador

Degradado con origen en el jugador

$nature.lit

Esto utiliza la posición del jugador como referencia del degradado.

Crear un degradado a partir de una selección

Sintaxis de degradado desde selección

;gradient create -s <name>

Ejemplo:

Ejemplo de degradado desde selección

;gradient create -s wall

WorldEdit lee la selección a lo largo de su lado más largo y la utiliza como mapa del degradado.

Controlar la transición

Sintaxis de desvanecimiento del degradado

;gradient create -f <fade> <name> <patterns...>

Ejemplo con una transición brusca:

Ejemplo de transición brusca

;gradient create -f 0 contrast black_concrete white_concrete

Administrar degradados guardados

Administración de degradados

;gradient list
;gradient delete nature

Crear un degradado con un nombre existente reemplaza su definición anterior.

Comprender el orden del degradado

Un degradado es ordenado, no ponderado aleatoriamente.

Orden del degradado lineal

inicio → A → B → C → D → final

Para un degradado radial:

Orden radial

centro → A → B → C → D → límite exterior

Invierte la lista de patrones para invertir la transición:

Orden de degradado invertido

D C B A

La cantidad exacta de bloques asignada a cada etapa depende de la forma, el tamaño y la dirección de la operación.

Patrones blob

Un patrón blob agrupa los materiales en manchas en lugar de seleccionar cada posición de manera independiente.

Sintaxis de patrón blob

#blob<size>(patterns)

Ejemplo básico:

Patrón blob básico

#blob5(stone,dirt)

Un número menor crea grupos más pequeños:

Grupos blob pequeños

#blob2(stone,andesite)

Un número mayor crea grupos más amplios:

Grupos blob grandes

#blob10(stone,andesite)

Los patrones blob pueden contener entradas ponderadas:

Patrón blob ponderado

#blob6(70%stone,30%andesite)

Ejemplo con varios materiales de terreno:

Patrón blob de terreno

#blob8(dirt,coarse_dirt,podzol)

Combinar tipos de patrones

Se pueden anidar o mezclar distintos tipos de patrones.

Material aleatorio con posiciones sin cambios

Material aleatorio y void

20%glowstone,80%void

Estados aleatorios con un bloque fijo

Estados aleatorios y bloque fijo

25%*log,75%stone

Blob con varios materiales

Blob de varios materiales

#blob5(stone,andesite,gravel)

Blob ponderado

Blob ponderado de varios materiales

#blob6(70%stone,20%andesite,10%gravel)

Degradado creado con mezclas aleatorias

Degradado con niveles mixtos

;gradient create terrain stone,andesite dirt,coarse_dirt grass_block,moss_block

En esta definición:

  • Las comas crean una mezcla aleatoria dentro de un nivel.
  • Los espacios separan los niveles ordenados del degradado.

Selector de patrones

El selector de patrones es un objeto incluido en el kit de WorldEdit. Permite seleccionar materiales sin escribir manualmente sus identificadores.

Para obtener el kit:

Obtener el kit de WorldEdit

;kit

Utiliza el selector de patrones sobre un bloque sin agacharte para elegir un patrón.

Agáchate y úsalo sobre bloques adicionales para añadir esos materiales a la mezcla.

La documentación no define un identificador de patrón para comandos como $picker. En los comandos escritos, introduce el patrón explícitamente.

Ejemplo mínimo de uso

Esta página se centra en la sintaxis de los patrones y no en los comandos que los utilizan. El siguiente ejemplo solo muestra dónde aparece el argumento de patrón:

Patrón dentro de un comando

;set 60%stone,25%andesite,15%gravel

La parte correspondiente al patrón es:

Patrón extraído

60%stone,25%andesite,15%gravel

El mismo patrón puede utilizarse en cualquier lugar donde WorldEdit espere un argumento <pattern>.

Errores comunes

Traducir identificadores de bloques

Incorrecto:

Identificador traducido no válido

birch_planks_in_spanish

Correcto:

Identificador de bloque válido

birch_planks

Confundir troncos y bloques de madera

Identificadores de tronco y madera

oak_log
oak_wood
stripped_oak_log
stripped_oak_wood

Inspecciona el identificador exacto del bloque cuando sea necesario:

Inspeccionar identificador de bloque

;blockid

Confundir void con air

Diferencia entre void y air

air  = reemplaza el bloque actual con aire
void = deja la posición actual sin cambios

Olvidar $ en un degradado

Incorrecto:

Referencia de degradado no válida

wood.rad

Correcto:

Referencia de degradado válida

$wood.rad

Añadir espacios dentro de una mezcla aleatoria

Evita:

Mezcla con espacios no válida

stone, andesite, gravel

Utiliza:

Mezcla compacta válida

stone,andesite,gravel

Confundir comas y espacios en los degradados

Ejemplo de separadores de degradado

stone,andesite dirt,coarse_dirt grass_block
  • Las comas mezclan patrones dentro de un nivel.
  • Los espacios separan diferentes niveles del degradado.

Suponer que el selector de patrones tiene un identificador

No existe un identificador de patrón documentado como $picker para utilizarlo en comandos escritos.

Referencia rápida

PatrónPropósito
stoneUn solo bloque
minecraft:stoneBloque con un espacio de nombres explícito
stone_slab[state=value]Bloque con estados
wool:1Variante con valor de datos antiguo
stone,andesite,gravelMezcla aleatoria uniforme
20%stone,80%andesiteMezcla aleatoria ponderada
*logEstados válidos aleatorios
^acacia_stairsCambia el tipo intentando conservar los estados
^[growth=7]Cambia únicamente los estados seleccionados
#clipboardContenido del portapapeles
#clipboard@[0,1,0]Patrón del portapapeles con desplazamiento
#handBloque sostenido en la mano principal
voidDeja la posición sin cambios
$nameDegradado guardado
$name.northDegradado dirigido al norte
$name.upDegradado hacia arriba
$name.radDegradado radial
$name.litDegradado referenciado desde el jugador
#blob5(stone,dirt)Distribución blob agrupada

Plantillas reutilizables

Plantilla de un solo bloque

<block>

Plantilla de mezcla uniforme

<block1>,<block2>,<block3>

Plantilla de mezcla ponderada

<weight>%<block1>,<weight>%<block2>

Plantilla de estado aleatorio

*<block>

Plantilla que conserva estados

^<block>[state=value]

Plantilla de patrón blob

#blob<size>(<pattern1>,<pattern2>)

Plantilla de degradado radial

$<name>.rad