Una vez tenemos algunos bloques y objetos básicos es el turno de añadirle nombres legibles para los jugadores, recetas, añadir productos de horneado y registrar estos bloques y objetos en el OreDictionary del Forge para establecer equivalencias y compatibilidad entre los materiales de los mods.
Antes de empezar:Habrá que tener los archivos de lenguaje creados tal como indiqué en la introducción de la guía y, por supuesto, tener algún objeto o bloque ya creado.
Añadir nombre legibleComo habréis notado si habéis probado el mod hasta ahora, los nombres de los objetos y bloques será del estilo "ModId_nombre". Para ponerles un nombre normal, abrimos los archivos de idiomas que queramos y añadimos una línea por cada bloque y objeto en cada archivo de lenguaje de la siguiente forma:
Bloquetile.modId_nombre_en_el_código.name=Nombre legible
Por ejemplo:
en_US.lang (inglés)
tile.celtech_knot_bauxite=Bauxite
es_ES.lang (castellano)
tile.celtech_knot_bauxite=Bauxita
Objetositem.modId_nombre_en_el_código.name=Nombre legible
Por ejemplo:
en_US.lang (inglés)
item.celtech_knot_aluminum=Aluminum
es_ES.lang (castellano)
item.celtech_knot_aluminum=Aluminio
Añadir recetasLas recetas o crafteos tienen se añaden mediante una utilidad propia del Forge, pero tienen su pequeño lío.
Lo primero es crear un nuevo método para las recetas, algo tipo
addRecipes() o uno para cada tipo de producto, por ejemplo, para los materiales,
addRecipesMats().
Como véis hay dos tipos, las normales y las shapeless y cada una se crea de una forma distinta, aunque parecida:
Recetas básicasEn estas se define un orden en el que tienen que estar los objetos en la cuadrícula.
Aunque ahí se vea algo enrevesado, la estructura siempre es igual, usamos el método
GameRegistry.addRecipe cuyo primer parámetro es el stack resultado y luego la estructura.
Este stack se representa por la clase ItemStack(objeto/bloque, cantidad), en este caso un bloque de aluminio.
La estructura es un array de objetos de la clase Object[] donde primero van las filas y luego los materiales. Para estipular es mejor empezar pensando los materiales que vamos a poner y asignarle una letra a cada uno para luego poner la estructura. En este caso solo aluminio y le ponemos la letra A (ojo, respetar mayúsculas y minúsculas).
Si ponemos más materiales, cada uno en una línea, primero la letra entre comillas simples, una coma, el material y otra coma (menos en el último material) tal como puede verse en este otro ejemplo más largo:
Una vez tenemos la lista de materiales, estipulamos la estructura o cuadrícula justo encima de la lista, mediante trios de letras, cada una se corresponde con un material de la lista.
En el ejemplo anterior sería, en la primera fila titanio, acu, titanio; en la segunda, grafeno, máquina, grafeno y en la tercera, titanio, cpu, titanio.
No es necesario poner las tres filas, por ejemplo, para hacer un slab solo hace falta poner tres de madera en una misma fila, por lo que solo ponemos un trio.
Recetas shapelessEstas son las que no necesitan colocarse de una forma determinada, por ejemplo los bloques de hierro se deshacen al ponerlos en cualquier parte de la cuadrícula.
La forma de hacerlas es más sencilla, mediante el método
GameRegistry.addShapelessRecipe siendo el primer parámetro el stack resultante, en este caso nueve de aluminio y luego un array de Object que son los objetos, en este caso un bloque de aluminio. Si queremos poner más, basta con separarlos por una coma.
Una vez tenemos el método, lo llamamos desde nuestro método Init de la clase base.Productos de horneadoPara crear productos resultantes de hornear / fundir objetos o bloques creamos un nuevo método como
addSmelts() y lo llamamos desde el método Init de la clase base.
Para crear una tan solo tenemos que llamar al método
GameRegistry.addSmelting el cual tiene tres parámetros:
1.- El objeto o bloque a introducir.
2.- El stack resultante. Aunque en Minecraft vanilla todo se derrite en un stack de una unidad, puede derretirse un objeto en dos de oro, por ejemplo.
3.- La experiencia que da el procesar.
OreDictionaryComo ya comenté, el ore dictionary es para interconectar materiales de mods. Como siempre, cread un método y llamadlo desde el Init de la clase base.
La estructura es simple,
OreDictionary.registerOre, el código y el objeto o bloque.
El código es algo establecido entre creadores de mods, primero va el tipo (ore, ingot, dust, block...) y luego el nombre del elemento en inglés. Por ejemplo, yo he añadido que el ore (mena) del aluminio es el bloque bauxite, que el ingot (lingote) es el objeto aluminum y que el block (bloque de 9 lingotes) es el bloque aluminumBlock.
Linkback: https://minecraftmin.net/index.php?topic=14604.0