Item и ToolMaterial

Версия Minecraft
1.7.10
[font=Georgia,]Привет! Я тут разбираюсь с созданием модов и застрял. Проблема в создании предмета, мне нужно создать его как Item и как ToolMaterial, так как мне нужно что бы его можно было использовать для крафтов например кирки и что бы он выпадал из блока(из руды если точнее). Просто Item не может использоваться для крафтов инструментов, а ToolMaterial не может выпадать из блока.(но это не точно, я же только начал)[/font]
[font=Georgia,]Помогите плез.[/font]
[font=Georgia,]Работаю в Eclipse если что.[/font]
 
7,099
324
1,510
Все рецепты создавать нужно самому: GameRegistry.addRecipe(...)
 
hohserg написал(а):
Все рецепты создавать нужно самому: GameRegistry.addRecipe(...)
Я знаю об этом.
Попробую обьяснить что я хочу еще точнее.
значь я создал предмет, Рубин(ruby, это Item).Однако было написано что бы создать свой материал нужно ввести команду в главном классе
public static final ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
(RUBY это ToolMaterial)
как мне обьединить ruby и RUBY?
 
7,099
324
1,510
В своих инструментах ты в конструкторе вызываешь супер-конструктор и в него передаешь материал. Чтобы чинить на наковальне, у материала есть метод(не помню, посмотрю позже), который устанавливает ItemStack для починки
 
hohserg написал(а):
В своих инструментах ты в конструкторе вызываешь супер-конструктор и в него передаешь материал. Чтобы чинить на наковальне, у материала есть метод(не помню, посмотрю позже), который устанавливает ItemStack для починки

Слушай, ты понимаешь что я хочу создать свой материал и просто не знаю как это сделать??
Я просто не пойму зачем починка на наковальне? Я пробывал команду public static final ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17); и писал в супер конструктор, но маин просто крашился.
 
243
28
202
 yarik_ray, ты указываешь ToolMaterial при регистрации своего инструмента (после id), затем в супер конструкторе инструмента указываешь тот же материал и инструмент будет иметь свойства материала.
 Чтобы инструмент крафтился из твоего предмета, ты должен создать рецепт через addRecipe.
 А чтобы ты мог ремонтировать свой инструмент своим предметом есть getIsRepairable (на 1.6.4, не знаю как на 1.7.10 называется). Добавь его в класс инструмента и укажи там свой предмет.
 
7,099
324
1,510
yarik_ray написал(а):
но маин просто крашился.
Он не просто крашится, а оставляет краш-репорт и(или) запись в логе. Скинь это. Из eclipse\crash-reports последний файл или из eclipse\logs
 

Вложения

  • crash-2017-03-26_13.26.50-client.txt
    8 KB · Просмотры: 1
7,099
324
1,510
java.lang.NullPointerException: Initializing game
at net.minecraft.item.crafting.CraftingManager.addRecipe
При создании рецепта ты передаешь какое-то пустое значение
 
hohserg написал(а):
java.lang.NullPointerException: Initializing game
at net.minecraft.item.crafting.CraftingManager.addRecipe
При создании рецепта ты передаешь какое-то пустое значение

а сейчас изменилось что-то?
 

Вложения

  • crash-2017-03-26_13.50.47-client.txt
    7.9 KB · Просмотры: 2
7,099
324
1,510
java.lang.NullPointerException: Initializing game
at net.minecraft.item.ItemTool.<init>(ItemTool.java:29)
at net.minecraft.item.ItemPickaxe.<init>(SourceFile:17)
at Crystals.PickaxeRuby.<init>(PickaxeRuby.java:9)

В супер-конструктор кирки передаешь null. Наверное, твой материал.


Скинь код где ты создаешь материал и класс кирки
 
hohserg написал(а):
java.lang.NullPointerException: Initializing game
at net.minecraft.item.ItemTool.<init>(ItemTool.java:29)
at net.minecraft.item.ItemPickaxe.<init>(SourceFile:17)
at Crystals.PickaxeRuby.<init>(PickaxeRuby.java:9)

В супер-конструктор кирки передаешь null. Наверное, твой материал.


Скинь код где ты создаешь матариал и класс кирки



public static final ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
↓Кирка
package Crystals;

import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;

public class PickaxeRuby extends ItemPickaxe{

protected PickaxeRuby() {
super(Main.RUBY);


this.setTextureName("cr:pickaxeruby");
this.setCreativeTab(Main.tabCrystals);




}
@Override
public boolean getIsRepairable(ItemStack toRepair, ItemStack repair)

{
if(repair.equals(Main.RUBY) && toRepair.equals(this))
return true;
else
return false;
}}
 
7,099
324
1,510
protected PickaxeRuby() {
Сделай public, хотя forge, наверное, сам делает

public static final ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
Попробуй так:
public static ToolMaterial RUBY = null;

public void init(FMLInit... e){
RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
PickaxeRuby pickaxe=new PickaxeRuby();
 
hohserg написал(а):
protected PickaxeRuby() {
Сделай public, хотя forge, наверное, сам делает

public static final ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
Попробуй так:
public static ToolMaterial RUBY = null;

public void init(FMLInit... e){
  RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
  PickaxeRuby pickaxe=new PickaxeRuby();
та же ошибка


hohserg написал(а):
protected PickaxeRuby() {
Сделай public, хотя forge, наверное, сам делает

public static final ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
Попробуй так:
public static ToolMaterial RUBY = null;

public void init(FMLInit... e){
  RUBY = EnumHelper.addToolMaterial("RUBY", 2, 2047, 10F, 4F, 17);
  PickaxeRuby pickaxe=new PickaxeRuby();

а не может быть связано с EnumHelper'ом? меня заставили сделать класс для него

public class EnumHelper {

public static Item.ToolMaterial addToolMaterial(String string, int i, int j, float f, float g, int k) {

return null;
}
 
7,099
324
1,510
Думай своей головой: у тебя этот метод всегда возвращает null


Удали свой класс EnumHelper
 
7,099
324
1,510
yarik_ray написал(а):
все на что меня хватило. я ХЗ.
Учись программировать без майна пока не начнешь понимать, что ты делаешь
 
Сверху