"> Foro - [DMForge] II. Bloque genérico (GenericBlock.java) en Desarrollo de Mods - Page 1 of 1
Marzo 29, 2024, 08:07:34 am
Visitante


Autor Tema:  [DMForge] II. Bloque genérico (GenericBlock.java)  (Leído 4595 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Marzo 29, 2017, 07:16:53 pm

Alfomega




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    Ingeniero informático
  • Actividad

  • 0%
  • Logros

Más información

En este segundo capítulo os voy a enseñar a hacer una clase para un bloque genérico, es decir, uno que no haga nada, como un bloque de tierra.
Esta clase es muy importante ya que es la base de prácticamente todas las demás clases de bloques y nos ahorra mucho trabajo.
Antes de empezar:
Habrá que crear un nuevo paquete para agrupar las clases genéricas de bloques, algo como nombreMod.generic.block.

Clase GenericBlock
Dentro de este nuevo paquete creamos la clase GenericBlock que extienda la clase net.minecraft.block.Block.
Una vez creada la clase, añadimos un atributo para guardar el nombre del bloque:
Ya que vamos a heredar la clase en un futuro nos interesa ponerle protected en vez de private.

Constructor
Ahora viene lo importante, el constructor:
  • El atributo mat que se lo pasamos al constructor de Block con super(mat) es el material del bloque. Minecraft tiene unos materiales básicos como madera, metal, cristal, etc. que determinan si el bloque puede arder, por ejemplo.
  • Lo siguiente es el nombre que queramos darle al bloque. Como véis lo establecemos como unlocalizedName, anteponiéndole el id del mod, eso es para que el Minecraft lo pueda identificar de forma que no se confunda con otros mods aunque añadan todos, por ejemplo un bloque de aluminio, ya que en mi caso se llamará celtech_knot_aluminio.
  • hard es la dureza del bloque, determinará lo que tardaremos en romperlo.
  • res es la resistencia a las explosiones.
  • light es el nivel de luz que emite el bloque de 0 a 15, siendo 0 que no emite y 15 como el sol o la glowstone. Minecraft lo quiere de 0 a 1 pero para facilitar las cosas he puesto en el setLightLevel light / 15 de tal forma que nosotros lo ponemos de 0 a 15 y luego se pasa de 0 a 1.
  • sound es el sonido que hace el bloque al pisarlo. El Minecraft tiene una lista de sonidos que se encuentran en la clase Block como el Block.soundTypeStone, Block.soundTypeWood, etc
  • Por último, tab es la pestaña del modo creativo en la que aparecerá el bloque. Todas las del Minecraft se encuentran en la clase CreativeTabs. En una futura parte de la guía os explicaré como crear pestañas propias.
Una vez tenemos el constructor básico podemos crear otros que nos faciliten las cosas, por ejemplo, seguramente la mayoría de los bloques que creemos no emitirán luz, por lo que podemos crear el siguiente constructor que no tiene ese parámetro:
Con el this pasamos los valores al constructor previamente creado para evitarnos tener que reescribir todo.
Al igual que este podemos crear otros múltiples constructores que consideremos oportunos siempre que detectemos que ponemos el mismo valor en un parámetro muchas veces.

Registro
Para que el bloque se añada al Minecraft hay que agregarlo a lo denominado GameRegister y para facilitarnos esta tarea, ya que habría que ponerlo a mano para cada uno, creamos el método register:
Lo que eso hace es registrar el bloque (this) y cuyo nombre es el que tenemos guardado (this.name).
En la próxima parte de la guía veremos, entre otras cosas, la utilidad de esto.

Otros
Una vez tenemos lo demás, añadimos un get para el nombre para poder acceder al él en caso de necesitarlo:

Con esto ya tenemos la clase terminada.

Linkback: https://minecraftmin.net/index.php?topic=14513.0
« Última modificación: Abril 11, 2017, 01:18:56 pm por Alfomega »
https://i.imgur.com/cFX0ssZ.png



Respuesta #1 Marzo 31, 2017, 08:32:10 pm

fetse




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    well that escalated quickly.
  • Actividad

  • 0%
  • Logros

Más información

Van a haber ejemplos? como para entenderlo mejor, sobre como crear tus propios constructores y todo eso, y poner como un objetivo de como hacerlo, como el de hacer un bloque que se mueva o cosas así, y usar todos los conceptos que enseñaste.
Meeps!

  


 Andromeda / Home / Mapa Navidad





Respuesta #2 Abril 02, 2017, 02:58:32 pm

Alfomega




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    Ingeniero informático
  • Actividad

  • 0%
  • Logros

Más información

Van a haber ejemplos? como para entenderlo mejor, sobre como crear tus propios constructores y todo eso, y poner como un objetivo de como hacerlo, como el de hacer un bloque que se mueva o cosas así, y usar todos los conceptos que enseñaste.
En el de la introducción puse algunas futuras partes y la siguiente en concreto es como crear un bloque usando esta clase. Tras cada parte de creación de un genérico haré otra de como se usa con un ejemplo.
Lo de como crear constructores es algo básico de Java, no del Forge y depende de que cosas uses más en tu mod en concreto. Por ejemplo, como dije si no creas casi ningún bloque que emite luz en tu mod, creas el constructor que obvia ese parámetro, si sueles poner tus bloques en la misma pestaña de creativo, creas otro que establezca por defecto esa pestaña y no tengas que ponerla, etc.


Respuesta #3 Abril 11, 2017, 01:19:46 pm

Alfomega




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    Ingeniero informático
  • Actividad

  • 0%
  • Logros

Más información

He corregido un error que había en el código, para establecer el nivel de luz estaba la operación al revés, es light / 15.





Share via delicious Share via digg Share via facebook Share via furl Share via linkedin Share via myspace Share via reddit Share via stumble Share via technorati Share via twitter

xx
[DMForge] IV.- Objeto genérico (GenericItem.java)

Iniciado por Alfomega

2 Respuestas
3432 Vistas
Último mensaje Enero 14, 2018, 06:49:31 pm
por zahkruin
xx
[DMForge] XI.- Bloque translúcido (GenericBlockTranslucent.java)

Iniciado por Alfomega

0 Respuestas
2174 Vistas
Último mensaje Mayo 07, 2017, 06:14:22 pm
por Alfomega
xx
[DMForge] XII.- Bloque que suelta objeto al minarlo (GenericBlockDrop.java)

Iniciado por Alfomega

1 Respuestas
2350 Vistas
Último mensaje Agosto 23, 2017, 03:00:58 pm
por DarkKalik
xx
[DMForge] IX.- Generador de mundo genérico y añadir un mineral al mundo

Iniciado por Alfomega

0 Respuestas
2437 Vistas
Último mensaje Agosto 23, 2017, 04:01:37 pm
por Alfomega