- Версия(и) Minecraft
- 1.12.2
О задумке
Изначально инструмент данного типа задумывался как подобие молота из IC2, но поскольку разработчики данного мода не любят делится кодом с кем попало, то пришлось комбинировать открытые исходники IE, противозаконного декомпилирования IC2 и помощи Timaxa007.Предмет
Сначала стоит отметить, что понадобится внести правки как в код главного класса мода, так и класса предмета. Для начала в главном классе мода нужно вызвать утилиту Random. В теле главного класса мода добавьте в начале:
Java:
public static Random random = new Random(); //вызываем в главном классе, чтобы потом не вызывать по десять раз откуда попало
Java:
public class MyItem extends Item {
public MyItem() {
this.setCreativeTab(CreativeTabs.TOOLS); //Вкладка в креативе
this.setMaxDamage(59); //Запас прочности, не забываем, что есть 0, и при значении 59 мы сможем скрафтить 60 раз а не 59!
this.setMaxStackSize(1); //Размер в стаке
this.setNoRepair(); //Дабы избежать дюпа нужно убрать починку
this.setRegistryName("wood_saw"); //Регистрируемое имя
this.setUnlocalizedName("tool.wood.saw"); //Ключ локализации
}
public boolean hasContainerItem(ItemStack stack) { //Может ли предметь иметь метаданные
return true; //Да, может
}
@Override
public ItemStack getContainerItem(ItemStack stack) { //Получаем контейнер метаданных
ItemStack ret = stack.copy(); //Чтобы при крафте не исчезал копируем, его с прибавкой к мета, что уменьшает прочность
if(ret.attemptDamageItem(1, Galaxy.random, null)) //Если прочность ноль то...
return ItemStack.EMPTY; //предмет исчезнет
else
return ret; //Если прочность не исчерпана то прибавим дальше
}
}
Рецепт
Теперь создадим рецепт. и тут его тоже нужно подредактировать:
JSON:
{
"type": "minecraft:crafting_shaped",
"pattern": [
"A",
"B"
],
"key": {
"A": {
"item": "galaxy:wood_saw",
"data": 32767
"__comment": "Число максимального значения Short используется как любая метадата, то-есть любая прочность.",
},
"B": {
"item": "minecraft:planks",
"data": 32767
"__comment": "Число максимального значения Short используется как любая метадата, то-есть любая прочность.",
}
},
"result": {
"item": "minecraft:stick",
"count": 8
}
}
Java:
GameRegistry.addShapedRecipe(new ResourceLocation("galaxy:wooden_planks"), new ResourceLocation("galaxy:planks"), new ItemStack(Blocks.PLANKS, 8, 1), new Object[]{ //Указываем локация якобы ресурса (можно использовать в получении крафтов в книге знаний)
" A",
" B", //Сам паттерн, ну или сетка крафта
'A', new ItemStack(ItemsInit.WOOD_SAW, 1, 32767), //Указываем предмет, количество и мету(мета как в json варианте, 32767 для любой меты)
'B', new ItemStack(Blocks.LOG, 1, 1)
});