En este capítulo os enseñaré a crear un bloque translúcido, es decir, que no es entero (por ejemplo un escalón, la antorcha...) o alguna de sus texturas son semitransparentes.
Antes de empezar:Habrá que tener la clase GenericBlock.java del capítulo II de este tutorial creada.
Clase GenericBlockTranslucentDentro del paquete donde tenemos las clases de los bloques genéricos creamos la clase GenericBlockTranslucent que extienda la clase GenericBlock del segundo tutorial.
En mi caso, está en el paquete celtech.generic.block, de ahí esa ruta.
Una vez creada la clase, añadimos un atributo para guardar el tipo de transparencia:
Ya que en un futuro es posible que heredemos esta clase, nos interesa ponerle protected en vez de private.
El tipo puede tomar cuatro valores especificados en el enumerado EnumWorldBlockLayer
El primero, el cual no nos interesa, es el de un bloque normal y corriente, los dos siguientes son para aquellos bloques que no están completos, como un slab y el último para aquellos con transparencias como un bloque de cristal tintado.
En todas las pruebas que he realizado, CUTOUT_MIPPED y CUTOUT han dado el mismo resultado, por lo que supongo que la diferencia será interna, así que siempre uso el CUTOUT_MIPPED.
ConstructorLo importante, el constructor:
Puesto que heredamos de la clase GenericBlock, sus atributos no los usamos aquí, los mandamos a su constructor con el super. Lo único que hacemos aquí es guardar el tipo.
Como siempre, una vez tenemos el constructor básico podemos crear otros obviando atributos.
Modificar renderizadorPara que el bloque se renderice de la forma que queremos, es decir, que se vea transparente o cortado, tenemos que añadir tres métodos bastante simples:
El primero es el que dice de que tipo es, el segundo que el bloque no es opaco y el último que no es un bloque completo.
Si no ponemos alguno de estos, los bloques transparentes se verán opacos y los cortados se renderizarán mal y se verá a través del suelo y las paredes.
Con esto ya tenemos la clase terminada.
Linkback: https://minecraftmin.net/index.php?topic=14693.0