+0

Bloques avanzados con Fabric en Minecraft



Vamos a aprender a cómo añadirle funcionalidad a nuestros bloques.

¿Cómo añadir funcionalidad?

Hasta ahora hemos añadido un solo bloque el cual utiliza la clase básica que viene con Minecraft de bloque. Obviamente esto nos permite añadirle funcionalidad y si queremos implementar funcionalidad propia necesitaremos crear una clase propia del bloque la cual extienda bloque.

Creando bloque avanzado

Para ello crearé un package dentro del package de blocks llamado custom donde añadiré el uranium block.

package dev.polv.cursofabric.blocks.custom;  
  
import net.minecraft.block.Block;  
  
public class UraniumBlock extends Block {  
  
    public UraniumBlock(Settings settings) {  
        super(settings);  
    }  
      
}

Ahora hemos de cambiar la clase del bloque que estamos registrando por el UraniumBlock.

public static final Pair<Block, Item> URANIUM_BLOCK = registerBlock("uranium_block", new UraniumBlock(AbstractBlock.Settings.copy(Blocks.IRON_BLOCK)));

Ahora sí que sí podemos empezar a añadir funcionalidad, para ello echaremos un vistazo a la clase bloques y ver qué métodos podemos hacer override.

Daño al jugador cuando toca el bloque

Como es un bloque de radioactivo, lo que haremos es hacer que cuando el jugador toque el bloque, se haga daño.

Para ello, hemos de buscar un método el cual nos sirva para hacer esta funcionalidad con un simple override. Si nos fijamos, en la clase encontraremos el método onEntityCollision que correrá cuando una entidad colisione con el bloque, es decir, cuando un jugador toque el bloque.

Aprovecharemos este método para hacer un overwrite y hacer daño a la entidad.

@Override  
protected void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) {  
    entity.damage(world.getDamageSources().generic(), 0.1f);  
}

Y ya estaría, ya tenemos un bloque avanzado con funcionalidad propia. Si ahora entrásemos al juego y tocáramos el bloque, nos haría daño.