"> Foro - [DMForge] XIII.- Herramientas, espadas, interfaz de herramientas y materiales. en Desarrollo de Mods - Page 1 of 1
Junio 16, 2024, 08:49:29 pm
Visitante

Autor Tema:  [DMForge] XIII.- Herramientas, espadas, interfaz de herramientas y materiales.  (Leído 3791 veces)

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

Enero 07, 2018, 05:40:14 pm

Alfomega




  • Desconectado

  • *

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

  • 0%
  • Logros

Más información

En este capítulo os enseñaré a crear herramientas, espadas y una interfaz muy pequeña que os ayudará a añadirlas de forma sencilla.

Antes de empezar:
Creamos un nuevo paquete para las interfaces, en mi caso, celtech.util, y otro para las clases genéricas de las herramientas, en mi caso, celtech.generic.tool.

Interfaz IGenericTool
Esta interfaz es extremadamente simple, simplemente tiene un método, pero nos ayudará mucho, puesto que permitirá añadir de forma dinámica las herramientas usando el método del capítulo VI.
Simplemente creamos la interfaz en el paquete util con esto:

Clases genéricas de las herramientas
Las clases de cada una son prácticamente idénticas, pero dado el código base del Minecraft, hay que crear una por cada tipo.
Hacha
Azada
Pico
Pala
Espada
Todas extienden de su clase del Minecraft e implementa la interfaz que creamos antes.
El código es muy simple, en el constructor guardamos el nombre y lo mostramos en el método getName que implementamos de la interfaz.
Como siempre, en el constructor cambiáis el CeltechEternalKnot.MODID por el vuestro.

Crear un material
El siguiente paso es crear los materiales para nuestras nuevas herramientas. Para ello vamos a nuestra clase base y añadimos una nueva constante que va a ser nuestro material:
Los parámetros, por orden, son:
  • El nombre del material.
  • El nivel de recolección. (0 = madera, 1 = piedra, 2 = hierro, 3 = diamante)
  • Durabilidad = número de usos. Este valor se verá aumentado en 1.
  • Eficiencia = velocidad de recolección.
  • Daño base. Las espadas añaden automáticamente 4 a este valor.
  • Encantabilidad. A mayor nivel, mejores encantamientos tendrá o podrá tener.
Como referencia, os dejo aquí una tabla con los valores de las del Minecraft:
En nuestro ejemplo, el aluminio es como el hierro pero tiene menos durabilidad a cambio de picar tan rápido como el diamante.

Añadir las herramientas
Una vez tenemos esto, ya podemos añadir nuestras propias herramientas como si fuesen un objeto normal, solo que llamando al método correspondiente:

JSON
Al igual que con los objetos normales, hay que crear un JSON tal como especifico en el capítulo V pero con una diferencia, la rotación, translación y escala cambian para que parezca que el personaje las está sujetando correctamente: (Ojo, esto solo es la parte del display, hay que añadir lo que hay antes también)
Código: [Seleccionar]
"display": {
"thirdperson": {
"rotation": [ 0, 90, -35 ],
"translation": [ 0, 1.25, -3.5 ],
"scale": [ 0.85, 0.85, 0.85 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}

Renderizar las herramientas
Como ya os habréis dado cuenta, las herramientas no pertenecen a la clase GenericItem como el resto y por tanto, nuestro método dinámico de renderizado del capítulo IV no solo no las renderizará si no que dará error. Para solucionar esto, tenemos la interfaz IGenericTool.
Lo que tenemos que hacer es ir al método renderItems() de nuestra clase base (donde renderizamos los objetos) y lo modificamos de esta forma:
Lo que he hecho es poner un if en el bucle viendo si el objeto es de la clase IGenericTool (o en este caso implementa la interfaz). Si es de la clase llamo al método getName de la misma y si no, llamamos al de GenericItem como teníamos antes.

Y con esto, ya podríamos crear nuestras propias herramientas y espadas.

Linkback: https://minecraftmin.net/index.php?topic=15492.0
https://i.imgur.com/cFX0ssZ.png





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] VIII.- Pestañas de creativo

Iniciado por Alfomega

0 Respuestas
2892 Vistas
Último mensaje Abril 16, 2017, 08:17:52 pm
por Alfomega
xx
[DMForge] XI.- Bloque translúcido (GenericBlockTranslucent.java)

Iniciado por Alfomega

0 Respuestas
2269 Vistas
Último mensaje Mayo 07, 2017, 06:14:22 pm
por Alfomega
xx
[DMForge] I. Clase base y archivos de inicio

Iniciado por Alfomega

0 Respuestas
5941 Vistas
Último mensaje Marzo 28, 2017, 11:13:01 pm
por Alfomega
xx
[DMForge] VI.- Utilidades I. Registro y renderizado automático

Iniciado por Alfomega

0 Respuestas
2363 Vistas
Último mensaje Abril 16, 2017, 06:52:07 pm
por Alfomega