+0

Items avanzados con Fabric en Minecraft



Vamos a ver cómo hacer ítems avanzados los cuales tienen funcionalidad implementada por nosotros.

¿Qué es un item avanzado?

Hasta ahora hemos registrado nuestro ítem como un ítem normal, utilizando la clase que viene por defecto Ítem. Pero y si digo que podemos extender la clase Ítem y añadir configuración propia? Ahora te voy a enseñar como hacer exactamente eso.

Añadiendo funcionalidad a nuestro item

Para crear un ítem avanzado, primero de todo crearemos una clase específica para ese ítem. Yo la crearé dentro del package Items y dentro de un package llamado Custom. Crearé el UraniumItem. Esta clase habrá de extender la clase Item.

package dev.polv.cursofabric.item.custom;  
  
import net.minecraft.item.Item;  
  
public class UraniumItem extends Item {  
      
    public UraniumItem(Settings settings) {  
        super(settings);  
    }  
      
}

Ahora, cuando registramos el ítem, hemos de cambiar la clase del ítem que usamos. Ahora actualmente estamos usando Ítem y lo hemos de cambiar a UraniumItem.

public static final Item URANIUM_ITEM = registerItem("uranium", new UraniumItem(new Item.Settings()));

Muy bien, primer paso hecho. Ahora añadiremos diferente funcionalidad en nuestro ítem para ver cómo funciona.

Añadiendo Tooltip

Primero de todo vamos a probar con añadirle el tooltip, que es básicamente una descripción del ítem.

Si entramos a la clase Item, veremos como tiene muchos métodos los cuales podemos hacer override y modificar su funcionalidad. En este caso, hemos de modificar el método appendTooltip.

@Override  
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {  
      
}

Este es un método del cual nos pasa muchos argumentos y a partir de esos argumentos podemos decidir qué poner de descripción. Normalmente lo que teníamos que hacer es poner una descripción dentro de nuestro archivo de lenguaje y usarla aquí, pero como es un mod de ejemplo vamos a poner directamente aquí el texto.

tooltip.add(Text.literal("Este item es RADIACTIVO").withColor(0xff0000));

Aquí estoy añadiendo una descripción en rojo que dirá que este item es radioactivo.

Interactuación

Ahora, nada más para demostrar cómo funciona, voy a añadir una funcionalidad que hará que cuando se clique un bloque, envíe un mensaje por el chat.

Para ello, si nos fijamos, existe el método useOnBlock de la clase Item en el cual podemos hacer override y añadir funcionalidad propia.

@Override  
public ActionResult useOnBlock(ItemUsageContext context) {  
    context.getPlayer().sendMessage(Text.of("Has clicado un bloque."));  
    return ActionResult.PASS;  
}

Y ya estaría. Si reiniciamos el juego, veremos la descripción y el bloque funcionará con la interacción.

Descripción o Tooltip añadida al item de uraneo

Descripción o Tooltip añadida al item de uraneo