Holoo \o/.
Pues, desde hace unos meses que no he posteado algo en este foro así que pensé en hacer un tutorial sobre cómo hacer recetas personalizadas para todas aquellas personas que vienen empezando y/o tienen la curiosidad de saber cómo se hace una receta de un objeto.
Quiero destacar para empezar que
NO se añade el item al juego en sí, en realidad sólo crea otra manera distinta de craftear X objeto, entonces, en caso de que quieras hacer un nuevo item en el juego, te sugiero hacer un resource pack editando algún objeto que nadie use y/o pueda conseguir. Un ejemplo claro es el huevo de dragón, puedes cambiar la textura y ponerlo como un nuevo objeto utilizando tus propias recetas de crafteo.
La mesa de crafteo nos da 9 slots para craftear cualquier tipo de item, esto lo tenemos claro desde un principio ya. Nuestro sistema podría utilizar el crafteo del inventario o la mesa de crafteo dependiendo la cantidad de slots que ocupemos en nuestra receta.
@Override
public void onEnable() {
ItemStack ironChest = new ItemStack(Material.CHEST);
ShapedRecipe recipe = new ShapedRecipe(new ItemStack(ironChest));
Hasta aquí todo comprensible ¿no? Registramos los eventos en el onEnable y creamos una variable ItemStack con el nombre ironChest que será el item que se crafteará con nuestra receta, en este caso yo escogí que se le diera un cofre después de hacer nuestra receta que detallaré después.
ShapedRecipe recipe = new ShapedRecipe(new ItemStack(ironChest));
recipe.shape(new String[] {"PPP", "POP", "PPP"});
recipe.setIngredient('P', Material.IRON_INGOT);
recipe.setIngredient('O', Material.CHEST);
Bukkit.getServer().addRecipe(recipe);
Aquí es donde empieza el rollo. Creamos una nueva receta con el ItemStack que habiamos definido previamente, después viene el lío de la combinación de las recetas. Explicaré a detalle cómo funciona.
[Receta].shape recibe como argumento un Array de 3 Strings, el cual es una lista de las 3 combinaciones de la receta que queramos para el objeto, dentro del String vienen los identificadores, los cuales definimos abajo con el
[Receta].setIngredient, donde colocamos el identificador como primer argumento y el Material como segundo argumento. La forma en la que funcionan las recetas e identificadores es la siguiente:
Vemos que al principio se cumple la condición, que es PPP, también en la segunda que es POP, y la tercera que es PPP y esos son los identificadores. Con esto ya estaría la receta, la cual es el segundo argumento que le dimos al identificador, en nuestro caso debería quedar así:
Y eso básicamente sería todo. Para las personas que son vagas y quieran saber cuál es el código completo... Aquí esta:
package com.eliaseeg.craftingRecipe;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
public class main extends JavaPlugin {
public ItemStack ironChest;
@Override
public void onEnable() {
ItemStack ironChest = new ItemStack(Material.CHEST);
ShapedRecipe recipe = new ShapedRecipe(new ItemStack(ironChest));
recipe.shape(new String[] {"PPP", "POP", "PPP"});
recipe.setIngredient('P', Material.IRON_INGOT);
recipe.setIngredient('O', Material.CHEST);
Bukkit.getServer().addRecipe(recipe);
}
@Override
public void onDisable() {
getServer().clearRecipes();
}
}
Tutorial 100% hecho por mi, espero que se haya entendido perfectamente y que puedan hacer cosas chulas con este sistema de recetas. Un saludo, adiós :].
Linkback: https://minecraftmin.net/index.php?topic=11059.0