Добавление урона предмету

Версия Minecraft
1.12.2
API
Forge
Всем привет, создал свой меч, и хотелось бы узнать как добавить ему урон.
Я попробовал написать эту строчку без никаких туториалов, в классе своего предмета, но урона у меча не появилось
setDamage(getDefaultInstance(), 100);
Если что извиняюсь, если туплю, недавно начал только заниматься моддингом
 
7,099
324
1,509
Урон добавляется через атрибут. Посмотри как это сделано в базовом классе меча - ItemSword
 

sk9zist :l

Исправился
981
18
157
и хотелось бы узнать как добавить ему урон.
в класс предмета впиши эту строчку
Java:
super(ItemsReg.НАЗВАНИЕМЕЧА);
В классе ItemsReg (или как он у тебя называеться, где ты предметы и прочее регистрируешь)
пишем эту строчку:
Java:
public static final ToolMaterial НАЗВАНИЕМЕЧА = EnumHelper.addToolMaterial("modid:НАЗВАНИЕМЕЧА", 3, 700, 10.0F, 100, 0);
Урон, это вот это число:
Java:
100
 

sk9zist :l

Исправился
981
18
157
Java:
package com.error.test.init;

import java.util.ArrayList;
import java.util.List;

import com.error.test.items.ItemBoneSword;
import com.error.test.items.ItemCopperIngot;
import com.error.test.items.ItemStartBook;

import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;

public class InitItems
{
    public static final List<Item> ITEMS = new ArrayList<Item>();
    
    //Items
    public static final Item BONE_SWORD = new ItemBoneSword ();{
        
    }
    
    public static final Item START_BOOK = new ItemStartBook ("start_book");{
    }
        
    public static final Item COPPER_INGOT = new ItemCopperIngot ("copper_ingot");{
    final Item.ToolMaterial bone_sword = EnumHelper.addToolMaterial("tm:BONE_SWORD", 3, 700, 10.0F, 100, 0);
        
    }
}
Bone Sword:
package com.error.test.items;

import com.error.test.init.InitItems;
import com.error.test.main.Main;
import com.error.test.utils.interfaces.IHasModel;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

public class ItemBoneSword extends Item implements IHasModel
{

    
    {
        setRegistryName("bone_sword");
        setUnlocalizedName("bone_sword");
        setCreativeTab(Main.BIO_TECH);
        setMaxStackSize(1);
        
        
        InitItems.ITEMS.add(this);
    }

    @Override
    public void registerModels()
        {   
        Main.proxy.registerItemRenderer(this, 0, "inventory");
        
        }
    
        
}
    {super(InitItems.BONE_SWORD);
            
}
 

sk9zist :l

Исправился
981
18
157
классе с предметом ошибку выдаёт либо в строке super(InitItems.BONE_SWORD); либо в }
А ты замени своё:
Java:
final Item.ToolMaterial bone_sword = EnumHelper.addToolMaterial("tm:BONE_SWORD", 3, 700, 10.0F, 100, 0);
На:
Java:
public static final Item.ToolMaterial BONESWORD = EnumHelper.addToolMaterial("tm:BONE_SWORD", 3, 700, 10.0F, 100, 0);
(я же тебе сказал как писать в ответе #3. Как ты будешь доставать материал, если не сделал его public?)

И в классе ItemBoneSword сделай так:

ItemBoneSword.java:
public class ItemBoneSword extends Item implements IHasModel
{

    
    {
        super(InitItems.BONESWORD);
        setRegistryName("bone_sword");
        setUnlocalizedName("bone_sword");
        setCreativeTab(Main.BIO_TECH);
        setMaxStackSize(1);
        
        
        InitItems.ITEMS.add(this);
    }

    @Override
    public void registerModels()
        {   
        Main.proxy.registerItemRenderer(this, 0, "inventory");
        
        }
    
        
}
Ты куда вообще super пытался засунуть..
 

sk9zist :l

Исправился
981
18
157
@Error404 вот, замени свой класс на это:

ItemBoneSword:
public class ItemBoneSword extends ItemSword implements IHasModel
{
    public ItemBoneSword()
    {
        super(InitItems.BONESWORD);
        setRegistryName("bone_sword");
        setUnlocalizedName("bone_sword");
        setCreativeTab(Main.BIO_TECH);
        setMaxStackSize(1);
       
       
        InitItems.ITEMS.add(this);
    }
    @Override
    public void registerModels() {  
        Main.proxy.registerItemRenderer(this, 0, "inventory");
    }
}

И не забудь импортировать ItemSword (не знаю почему ты делал всё это с Item)
 
@Sk9zist спасибо, но у меня ошибки остались в двух строчках:
В классе ItemBoneSword super(InitItems.BONESWORD); мне предложил эклипс создать константу в классе EnumHelper и ошибка пропала. Незнаю так нормально мод будет работать?
И в классе InitItems, (куда я предметы регистрирую) BONESWORD
 

sk9zist :l

Исправился
981
18
157
И в классе InitItems, (куда я предметы регистрирую) BONESWORD
У тебя там должна быть такая строка вот так:
Java:
public static final Item.ToolMaterial BONESWORD = EnumHelper.addToolMaterial("tm:BONE_SWORD", 3, 700, 10.0F, 100, 0);
 
3,005
192
592

sk9zist :l

Исправился
981
18
157
Ты зачем скобки ставишь везде?..
Java:
public class InitItems
{
    public static final List<Item> ITEMS = new ArrayList<Item>();
    public static final Item.ToolMaterial BONESWORD = EnumHelper.addToolMaterial("tm:BONE_SWORD", 3, 700, 10.0F, 100, 0);
    //Items
    public static final Item BONE_SWORD = new ItemBoneSword ();{
        
    }
    
    public static final Item START_BOOK = new ItemStartBook ("start_book");{
    }
        
    public static final Item COPPER_INGOT = new ItemCopperIngot ("copper_ingot");
}
 
33
1
14
Все, что тебе нужно - выучить джаву, и не на уровне теории, а на практике все отработать, создавая к каждому новому полученному знанию новый проект, где ты его отрабатываешь, закрепляешь и тд.

Твоё заявление о том что ты щас смотришь урок по джаве не имеет никакого веса, ведь это может быть и урок по полям. Я бы на твоем месте сначала выучил джаву до уровня при котором можно ориентироваться, а потом уже брался за более-менее серьезный проект(если конечно посредственный мод на майнкрафт(ну, скорее всего ты такой и хочешь создать) можно назвать серьезным проектом)
 
Сверху