Atributo

De WikiMinecraft
(Redirigido desde «Attribute»)
Saltar a: navegación, buscar

Los atributos son un sistema de potenciadores/despotenciadores (buffs/debuffs) que actuan como propiedades en criaturas y jugadores. Los atributos también tienen modificadores que ajustan la fuerza de su efecto.

Aplicando atributos

Cuando se aplica a un objeto, un modificador ajustará el atributo correspondiente si el objeto es sostenido o está deteriorado[1][2]. Los atributos o modificadores se pueden añadir a los objetos o criaturas, sin el uso de software de edición de NBT de terceros, añadiendo etiquetas de datos (data tags) a los comandos /give (dar) y /summon (invocar).

El siguiente comando le dará al jugador más cercano una espada de diamante que hace 20 (Heart.svg × 10) de daño extra. Si se cambia "Operation" de 0 a 1, en cambio, se multiplicará el daño de ataque.

/give @p diamond_sword 1 0 {AttributeModifiers:[{AttributeName:"generic.attackDamage",Name:"generic.attackDamage",Amount:20,Operation:0,UUIDLeast:894654,UUIDMost:2872}]}

El siguiente comando invocará a un zombie que sigue a los jugadores cuando están 100 bloques o menos de él en lugar de los habituales 40.

/summon Zombie ~ ~ ~ {Attributes:[{Name:"generic.followRange",Base:100.0}]}

En la snapshot 15w35b ahora se puede especificar qué ranura tiene ciertos atributos.

/give @p diamond_axe 1 0 {AttributeModifiers:[{Slot:"mainhand",AttributeName:"generic.attackDamage",Name:"generic.attackDamage",Amount:20,Operation:0,UUIDLeast:1,UUIDMost:1}]}

Las ranuras pueden ser "mainhand" (mano principal), "offhand" (mano secundaria), "head" (cabeza), "torso", "legs" (piernas) o "feet" (pies) (pueden ser más).

Atributos

Un atributo individual controla una propiedad, descrita por su name (nombre). Un atributo siempre tiene un valor base, y puede tener cualquier número de modifiers (modificadores). Los atributos también tienen un valor por defecto (se utiliza cuando se genera una criatura con una base de atributo no definido), y el valor no modificable mínimo y máximo. Los modificadores actúan sobre la base de un atributo, pero el valor calculado siempre tiene un tope por el mínimo y el máximo. El mínimo y el máximo son inclusivos a menos que se especifique lo contrario o que son iguales a 1.7x10308.

Atributos disponibles para toda criatura viviente

Estos atributos se encuentran en todos las criaturas, incluyendo a los jugadores.

Nombre de atributo Descripción Base por defecto Mínimo Máximo
generic.maxHealth La máxima salud de esta criatura (en medios corazones); determina el máximo de salud que pueden ser curadas. 20.0 0.0 1.7x10308
generic.followRange El rango en bloques de distancia en el que una criatura con este atributo tomará como objetivo a los jugadores u otras criaturas para perseguirlos. Salir de este rango hará que la criatura cese de ir tras el jugador o criatura. El valor real utilizado por la mayoría de las criaturas es 16; para zombis es 40. 32.0 0.0 2048.0
generic.knockbackResistance La oportunidad de resistir al derribo (knockback) por los ataques, explosiones, y proyectiles. 1.0 es 100% de posibilidades de resistencia. 0.0 0.0 1.0
generic.movementSpeed La velocidad del movimiento en alguna métrica desconocida. Velocidad máxima de la criatura en bloques por segundo es un poco más de 43 veces este valor, pero puede verse afectado por diversas condiciones. 0.7* 0.0 1.7x10308
generic.attackDamage El daño hecho por los ataques, en medios corazones. 2.0 0.0 1.7x10308
generic.armor (1.9 [próximamente]) Puntos de defensa de armadura. 0.0 0.0 30.0

Atributos para jugadores

Estos atributos se utilizan solamente por jugadores.

Nombre de atributo Descripción Base por defecto Mínimo Máximo
generic.attackSpeed (1.9[próximamente]) Determina la velocidad a la que la fuerza de ataque se recarga. El valor es el número de ataques a fuerza completa por segundo. 4.0 0.0 1024.0
generic.luck (1.9[próximamente]) Afecta a los resultados de las tablas del botín utilizando la etiqueta quality o bonus_rolls (por ejemplo, al abrir cofres o vagonetas con cofre, la pesca, y matando criaturas) 0.0 -1024.0 1024.0

Atributos para caballos

Estos atributos sólo son utilizados por caballos.

Nombre de atributo Descripción Base por defecto Mínimo Máximo
horse.jumpStrength La fuerza de salto del caballo en alguna métrica desconocida. 0.7* 0.0 2

Atributos para zombis

Estos atributos sólo son utilizados por zombis.

Nombre de atributo Descripción Base por defecto Mínimo Máximo
zombie.spawnReinforcements La probabilidad de que un zombi se genere otro zombie cuando es atacado. 0.0 0.0 1.0

Propiedades de los atributos desconocidos

Cuando el juego se encuentra con un atributo con un nombre no reconocido, aplica estas propiedades al mismo. (ADVERTENCIA La línea de código que hace esto hace que se bloquee Minecraft!)

Nombre de atributo Descripción Base por defecto Mínimo Máximo
Cualquier nombre de atributo que no es de Vanilla. Desconocido. 0.0 0 1.7x10308

Modificadores

Los modificadores actúan sobre el valor base de un atributo, aumentando o disminuyendo el mismo. Hay que tener en cuenta que el valor resultante después de la modificación tiene un tope por el mínimo y el máximo del atributo. Al igual que los atributos, los modificadores tienen un name (nombre), sin embargo, este nombre no define el comportamiento del modificador. En cambio, el comportamiento de un modificador está determinado por su operation (operación). Los modificadores también llevan una amount (cantidad) para su modificación, y un UUID (Universally Unique IDentifier).

Operaciones

La operación de un modificador dicta cómo se modifica el valor de base de un atributo. Existen tres operaciones, "+- amount", "+- amount % (aditivo)", y "+- amount % (multiplicativo)" [3]. Para mayor comodidad, estos se conocen como "Operations" (operaciones) de 0, 1, y 2, como lo son en el código y formato de NBT.

El comportamiento matemático es el siguiente: Operation 0: Incrementa X por Amount, Operation 1: Incrementa Y por X * Amount, Operation 2: Y = Y * (1 + Amount) (equivalente a incrementar Y por Y * Amount). El juego primero establece X = Base, a continuación, ejecuta todos los modificadores de operación 0, a continuación, establece Y = X, entonces ejecuta todos los modificadores de operación 1, y finalmente ejecuta todo los modificadores de operación 2.

Modificadores de Vanilla

Como se presentó antes, el nombre de un modificador puede ser cualquier cosa, y esto no afectará a su comportamiento. Lo siguiente sólo son los nombres de modificadores que se conocen y los valores utilizados en Minecraft Vanilla (no agregar modificadores a esta tabla si se encuentran en mapas personalizados, ya que los creadores de mapas pueden crear sus propios modificadores personalizados). Hay que tener en cuenta que algunos UUID se generan sobre la marcha, mientras que otros son representados como cadenas fijas en el código, éstos también se han enumerado. No hay que agregar UUID a esta tabla para los modificadores en los que no se enumeran, si un UUID no aparece, esto significa que es diferente cada vez que se crea el modificador.

Nombre del modificador Descripción y valores conocidos Modificadores de atributos conocidos
Random spawn bonus Generado en la creación; un número aleatorio en una distribución de Gauss que van desde 0.0 a 0.05*. Para la resistencia al derribo del Zombi, es otro valor entre 0.0 y 0.05* también se genera. generic.followRange (Operation 1; todas las criaturas), Knockback Resistance (Operation 0; Sólo aldeanos y zombis)
Tool modifier El valor varía basado en la herramienta. generic.attackDamage (Operation 0; all tools; UUID CB3F55D3-645C-4F38-A497-9C13A33DB5CF)
Weapon modifier El valor varía basado en el arma . generic.attackDamage (Operation 0; all tools; UUID CB3F55D3-645C-4F38-A497-9C13A33DB5CF (same UUID as Tool modifier))
Sprinting speed boost Corrige el valor de 0.3* usado por todas las criaturas (incluyendo a los jugadores) cuando corren a toda velocidad. generic.movementSpeed (Operation 2; all living entities; UUID 662A6B8D-DA3E-4C1C-8813-96EA6097278D)
Fleeing speed boost Corrige el valor de 2 usado por todas las criaturas pasivas al huir. generic.movementSpeed (Operation 2; todas las criaturas pasibas; UUID E199AD21-BA8A-4C53-8D13-6182D5C69D3A)
Attacking speed boost Corrige el valor de 6.2* para Endermen y 0.45* para hombre cerdo Zombi; existe solo en el ataque. generic.movementSpeed (Operation 0; Endermen - UUID 020E0DFB-87AE-4653-9556-831010E291A0, Zombie Pigmen - UUID 49455A49-7EC5-45BA-B886-3B90B23A1718)
Baby speed boost Corrige el valor de 0.5; existe solo para zombis bebé y aldeanos zombi bebé. generic.movementSpeed (Operation 1; Baby Zombies; UUID B9766B59-9566-4402-BC1F-2EE2A276D836)
Drinking speed penalty Corrige el valor de -0.25 para brujos cuando beben una poción. generic.movementSpeed (Operation 0; Witches; UUID 5CD17E52-A79A-43D3-A529-90FDE04B181E)
Random zombie-spawn bonus Se da en la generación; un número aleatorio entre 0.0 y 1.5. generic.followRange (Operation 2; Zombies)
Leader zombie bonus Tiene una posibilidad aleatoria (pequeña) de que se de en un zombi cuando este es generado. Para generar la posibilidad de refuerzos, un número aleatorio entre 0,5 y 0,75. Para generic.maxHealth, un número aleatorio entre 1.0 y 4.0. zombie.spawnReinforcements (Operation 0; Zombies), generic.maxHealth (Operation 2; Zombies)
Zombie reinforcement caller charge Corrige el valor de -0.05* creando que cada vez que un zombie se genera, se genere otro zombie como refuerzo. zombie.spawnReinforcements (Operation 0; Zombies)
potion.moveSpeed o potion.moveSpeed # (donde # es el amplificador de la poción) Corrige el valor de 0.2* cuando se está bajo el efecto de velocidad, multiplicado por los efectos del nivel (amplifier + 1). generic.movementSpeed (Operation 2; All living entities; UUID 91AEAA56-376B-4498-935B-2F7F68070635)
potion.moveSlowdown o potion.moveSlowdown # (donde # es el amplificador de la poción) Corrige el valor de -0.15* cuando se está bajo el efecto de lentitud, multiplicado por los efectos del nivel. generic.movementSpeed (Operation 2; All living entities; UUID 7107DE5E-7CE8-4030-940E-514C1F160890)
potion.damageBoost o potion.damageBoost # (donde # es el amplificador de la poción) Corrige el valor de 1.3 cuando se está bajo el efecto de fuerza, multiplicado por los efectos del nivel. generic.attackDamage (Operation 2; All living entities; UUID 648D7064-6A60-4F59-8ABE-C2C23A6DD7A9)
potion.weakness o potion.weakness # (donde # es el amplificador de la poción) Corrige el valor de -0.5 cuando se está bajo el efecto de debilidad, multiplicado por los efectos del nivel. generic.attackDamage (Operation 0; All living entities; UUID 22653B89-116E-49DC-9B6B-9971489B5BE5)
potion.healthBoost # (donde # es el amplificador de la poción. Puede ser 0.) Corrige el valor de 4 cuando se está bajo el efecto de impulso de salud, multiplicado por los efectos del nivel. generic.maxHealth (Operation 0; All living entities; UUID 5D6F0BA2-1186-46AC-B896-C61C5CEE99CC)
Unknown synced attribute modifier (modificador de atributo sincronizado desconocido) Desconocido; creado cuando el cliente lee datos de atributos enviados por el servidor. varia

Historia

Lanzamiento oficial
1.6.113w16aAñadidos los atributos.
1.7.213w36aLos atributos y modificadores se pueden añadir a los objetos o criaturas sin el uso de software de edición de NBT de terceros añadiendo etiquetas de datos con los comandos /give (dar) y /summon (invocar).
1.915w34bAñadido el atributo attack speed (velocidad de ataque).
15w36dAñadido el atributo armor (armadura).
15w44bAñadido el atributo luck (suerte).

Referencias

  1. https://twitter.com/dinnerbone/status/337540303647027201
  2. https://twitter.com/dinnerbone/status/337543314435878913
  3. https://twitter.com/dinnerbone/status/337542071386783744