Не работают некоторые инструменты

Версия Minecraft
1.12.2
1,031
19
87
Такая проблема. Я создал по каждому инструменту с нужных материалов. Зачарование, крафт, починка, это всё работает, но кирка и лопата нет. На них пишется что есть скорость атаки и урон,, у них 1 уровень, но что лопата что кирка и топор не работают, как мечь в креативе ничего не разрушают.
Java:
public static ToolMaterial COPPER = EnumHelper.addToolMaterial("industry:copper", 1, 159, 5.0F, 2.0F, 10).setRepairItem(new ItemStack(RegisterItem.COPPER_INGOT));
Вот базовые классы
Java:
public class BaseShovel extends ItemSpade {

public BaseShovel(ToolMaterial MaterialTool, String NameRegistry, String NameLocalized) {
       
        super(MaterialTool);
       
        this.setRegistryName(NameRegistry);
        this.setUnlocalizedName(NameLocalized);
        this.setCreativeTab(Industry.INDUSTRY);
       
    }
   
}
Java:
public class BasePickaxe extends ItemPickaxe {

public BasePickaxe(ToolMaterial MaterialTool, String NameRegistry, String NameLocalized) {
       
        super(MaterialTool);
       
        this.setRegistryName(NameRegistry);
        this.setUnlocalizedName(NameLocalized);
        this.setCreativeTab(Industry.INDUSTRY);
       
    }
   
}
и
Java:
public class BaseAxe extends ItemAxe {

public BaseAxe(ToolMaterial MaterialTool, String NameRegistry, String NameLocalized, float MaxDamage, float MaxSpeed) {
       
        super(MaterialTool, MaxDamage, MaxSpeed);
       
        this.setRegistryName(NameRegistry);
        this.setUnlocalizedName(NameLocalized);
        this.setCreativeTab(Industry.INDUSTRY);
       
    }
   
}
а вот и главное:
Java:
public class RegisterItem {

    public static Item COPPER_INGOT = new ItemCraft("copper_ingot", "ingot.copper", 64);
    public static Item COPPER_NUGGET = new ItemCraft("copper_nugget", "nugget.copper", 64);
    public static Item COPPER_HELMET = new BaseArmor(MaterialArmor.COPPER, EntityEquipmentSlot.HEAD, "copper_helmet", "helmet.copper", 1);
    public static Item COPPER_CHESTPLATE = new BaseArmor(MaterialArmor.COPPER, EntityEquipmentSlot.CHEST, "copper_chestplate", "chestplate.copper", 1);
    public static Item COPPER_LEGGINGS = new BaseArmor(MaterialArmor.COPPER, EntityEquipmentSlot.LEGS, "copper_leggings", "leggings.copper", 2);
    public static Item COPPER_BOOTS = new BaseArmor(MaterialArmor.COPPER, EntityEquipmentSlot.FEET, "copper_boots", "boots.copper", 1);
    public static Item COPPER_HOE = new BaseHoe(MaterialTool.COPPER, "copper_hoe", "hoe.copper");
    public static Item COPPER_SWORD = new BaseSword(MaterialTool.COPPER, "copper_sword", "sword.copper");
    public static Item COPPER_AXE = new BaseAxe(MaterialTool.COPPER, "copper_axe", "axe.copper", 2.0F, 1.0F);
    public static Item COPPER_SHOVEL = new BaseShovel(MaterialTool.COPPER, "copper_shovel", "shovel.copper");
    public static Item COPPER_PICKAXE = new BasePickaxe(MaterialTool.COPPER, "copper_pickaxe", "pickaxe.copper");

    public static void register() {
       
        setRegister(COPPER_INGOT);
        setRegister(COPPER_NUGGET);
        setRegister(COPPER_HELMET);
        setRegister(COPPER_CHESTPLATE);
        setRegister(COPPER_LEGGINGS);
        setRegister(COPPER_BOOTS);
        setRegister(COPPER_HOE);
        setRegister(COPPER_SWORD);
        setRegister(COPPER_AXE);
        setRegister(COPPER_SHOVEL);
        setRegister(COPPER_PICKAXE);
       
    }

    @SideOnly(Side.CLIENT)
    public static void registerRender() {
       
        setRender(COPPER_INGOT);
        setRender(COPPER_NUGGET);
        setRender(COPPER_HELMET);
        setRender(COPPER_CHESTPLATE);
        setRender(COPPER_LEGGINGS);
        setRender(COPPER_BOOTS);
        setRender(COPPER_HOE);
        setRender(COPPER_SWORD);
        setRender(COPPER_AXE);
        setRender(COPPER_SHOVEL);
        setRender(COPPER_PICKAXE);
       
    }

    private static void setRegister(Item item) {
       
        ForgeRegistries.ITEMS.register(item);
       
    }

    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {

        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
       
    }
   
}
 
Последнее редактирование:
917
22
332
У тебя есть
Может, это нужно в нужных местах поменять на BasePickaxe, BasheShovel?
Упс.. Я только заметил, но зачем ты для всех инструментов создаёшь экземпляр BaseHoe? Ват?

public static Item COPPER_HOE = new BaseHoe(MaterialTool.COPPER, "copper_hoe", "hoe.copper"); public static Item COPPER_SWORD = new BaseHoe(MaterialTool.COPPER, "copper_sword", "sword.copper"); public static Item COPPER_AXE = new BaseHoe(MaterialTool.COPPER, "copper_axe", "axe.copper"); public static Item COPPER_SHOVEL = new BaseHoe(MaterialTool.COPPER, "copper_shovel", "shovel.copper"); public static Item COPPER_PICKAXE = new BaseHoe(MaterialTool.COPPER, "copper_pickaxe", "pickaxe.copper");
 
1,031
19
87
1,031
19
87
Я только заметил, но зачем ты для всех инструментов создаёшь экземпляр BaseHoe? Ват?
Я сам протупил, но теперь второй вопрос как для каждого инструмента прописать свой урон и скорость восстановления?
 
2,932
44
598
Ну зашибись, лопата теперь делает тропинки, а топор имеет кастомный урон и скорость, но топор, кирка и лопата теперь не разрушают блоки....
Что ты там написал? Скинь класс экземпляра/инструмента и регистрацию.
 
1,031
19
87
Вот базовый класс одного из инструментов, которые наследуют ванильные классы, остальные отличаются только тем, какой класс наследуют и не имеют кастомных параметров скорости и урона:
Java:
public class BaseAxe extends ItemAxe {

public BaseAxe(ToolMaterial MaterialTool, String NameRegistry, String NameLocalized, float MaxDamage, float MaxSpeed) {
     
        super(MaterialTool, MaxDamage, MaxSpeed);
     
        this.setRegistryName(NameRegistry);
        this.setUnlocalizedName(NameLocalized);
        this.setCreativeTab(Industry.INDUSTRY);
     
    }
 
}
А вот регистрация инструментов:
Java:
public class RegisterItem {

    public static Item COPPER_HOE = new BaseHoe(MaterialTool.COPPER, "copper_hoe", "hoe.copper");
    public static Item COPPER_SWORD = new BaseSword(MaterialTool.COPPER, "copper_sword", "sword.copper");
    public static Item COPPER_AXE = new BaseAxe(MaterialTool.COPPER, "copper_axe", "axe.copper", 2.0F, 1.0F);
    public static Item COPPER_SHOVEL = new BaseShovel(MaterialTool.COPPER, "copper_shovel", "shovel.copper");
    public static Item COPPER_PICKAXE = new BasePickaxe(MaterialTool.COPPER, "copper_pickaxe", "pickaxe.copper");

    public static void register() {
     
        setRegister(COPPER_HOE);
        setRegister(COPPER_SWORD);
        setRegister(COPPER_AXE);
        setRegister(COPPER_SHOVEL);
        setRegister(COPPER_PICKAXE);
     
    }

    @SideOnly(Side.CLIENT)
    public static void registerRender() {
     
        setRender(COPPER_HOE);
        setRender(COPPER_SWORD);
        setRender(COPPER_AXE);
        setRender(COPPER_SHOVEL);
        setRender(COPPER_PICKAXE);
     
    }

    private static void setRegister(Item item) {
     
        ForgeRegistries.ITEMS.register(item);
     
    }

    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {

        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
     
    }
 
}
 
2,932
44
598
Покрякавши сделал кустарным методом что-то эдакое:
Java:
import java.util.Set;
import com.google.common.collect.Sets;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemStack;

public class BaseAxe extends ItemAxe {

        private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.PLANKS, Blocks.BOOKSHELF, Blocks.LOG, Blocks.LOG2, Blocks.CHEST, Blocks.PUMPKIN, Blocks.LIT_PUMPKIN, Blocks.MELON_BLOCK, Blocks.LADDER, Blocks.WOODEN_BUTTON, Blocks.WOODEN_PRESSURE_PLATE);
        private static final float[] ATTACK_DAMAGES = new float[] {6.0F, 8.0F, 8.0F, 8.0F, 6.0F};
        private static final float[] ATTACK_SPEEDS = new float[] { -3.2F, -3.2F, -3.1F, -3.0F, -3.0F};

        public BaseAxe(Item.ToolMaterial material)
        {
            super(material);
            this.attackDamage = ATTACK_DAMAGES[material.ordinal()];
            this.attackSpeed = ATTACK_SPEEDS[material.ordinal()];

            this.setCreativeTab(CreativeTabs.TOOLS);
        }

        public BaseAxe(Item.ToolMaterial material, float damage, float speed)
        {
            super(material);
            this.attackDamage = damage;
            this.attackSpeed = speed;
        }

        public float getDestroySpeed(ItemStack stack, IBlockState state)
        {
            Material material = state.getMaterial();
            return material != Material.WOOD && material != Material.PLANTS && material != Material.VINE ? super.getDestroySpeed(stack, state) : this.efficiency;
        }
    }
Java:
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class ItemsRegister {

    public static Item COPPER_AXE = new BaseAxe(ToolMaterial.DIAMOND, 6.0F, -3.2F);

    public static void register() {
   
        setRegister(COPPER_AXE);
   
    }

    @SideOnly(Side.CLIENT)
    public static void registerRender() {
   
        setRender(COPPER_AXE);
   
    }

    private static void setRegister(Item item) {
   
        ForgeRegistries.ITEMS.register(item);
   
    }

    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {

        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
   
    }

}
(Всё лишнее я думаю ты сам сможешь удалить при помощи метода научного тыка)
 
917
22
332
ведь свойства то берутся с ванильки....
Не все. Не берусь говорить что именно не работает, ибо кода перед глазами нет, но при наследовании, нужно внимательно изучать конструкцию класса родителя.
 
Сверху