Как сделать при крафте ломание предмета в 1.12?

Версия Minecraft
1.12+
Здравствуйте. Я бы хотел узнать, как сделать ломание предмета в майнкрафте 1.12? Я находил пару ответов для 1.7.10, но они для 1.12 не работают(.
 
Опиши точнее что ты хочешь. Молот как в индастриале или что-то другое?
Нет, я просто хочу чтобы когда я ложил предмет в верстак, потом с помощью него крафтил, и у предмета отнималась 1 прочность. Вот пример:
До:
2018-08-05_22.04.58.png
После:
2018-08-05_22.05.04.png
P.S: название мода Sliced mod
 
Не знаю в чём проблема. Вроде вставил верно, ошибок не было...

Java:
package mod.mcreator;

import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.common.util.EnumHelper;

import net.minecraft.world.World;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Item;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.Minecraft;

import java.util.Set;
import java.util.Random;
import java.util.HashMap;

public class mcreator_testsword {

    public mcreator_testsword() {
    }

    public static Item block;
    public static Object instance;

    public void load(FMLInitializationEvent event) {
        if (event.getSide() == Side.CLIENT)
            Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
                    .register(block, 0, new ModelResourceLocation("testenvironmentmod:testsword", "inventory"));
    }

     public boolean hasContainerItem(ItemStack stack) {
         return true;
     }

     public ItemStack getContainerItem(ItemStack itemStack) {
         ItemStack result = itemStack.copy();
         result.setItemDamage(result.getItemDamage() + 1);
         if (result.getItemDamage() >= result.getMaxDamage())
             return ItemStack.EMPTY;
         return result;
     }
    
    public void generateNether(World world, Random random, int chunkX, int chunkZ) {
    }

    public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
    }

    public int addFuel(ItemStack fuel) {
        return 0;
    }

    public void serverLoad(FMLServerStartingEvent event) {
    }

    public void preInit(FMLPreInitializationEvent event) {
    }

    public void registerRenderers() {
    }

    static {
        Item.ToolMaterial enumt = EnumHelper.addToolMaterial("TEST", 0, 50, 0F, 0, 0);
        block = (Item) (new ItemSword(enumt) {

            public Set<String> getToolClasses(ItemStack stack) {
                HashMap<String, Integer> ret = new HashMap<String, Integer>();
                    setNoRepair();
                ret.put("sword", 0);
                return ret.keySet();
            }
        }).setUnlocalizedName("test");
        block.setRegistryName("test");
        ForgeRegistries.ITEMS.register(block);
        block.setCreativeTab(mcreator_Test.tab);
    }
}
 

timaxa007

Модератор
5,831
409
672

timaxa007

Модератор
5,831
409
672
Где у тебя в коде "extends ItemTool {" или "extends Item {"? А так-же где регистрация объекта предмета?
А без этого предмет не будет работать в обще?

P.S: У меня почему-то нет кнопки "ответить" под последним ответом". Не знаю почему :/
P.S.S: Возможно немного я в начале непонятно сказал. В общем, майнкрафт у меня запускается, предмет имеет нормальную текстуру, в крафте заимодействие работает, но предмет при крафте исчезает, как и было до этого.
 
Последнее редактирование:

timaxa007

Модератор
5,831
409
672
А без этого предмет не будет работать в обще?
Без этого и самого предмета нет.
P.S: У меня почему-то нет кнопки "ответить" под последним ответом". Не знаю почему :/
Потому-что так сделано, чтобы вы полностью не цитировали сообщение. Либо указывай ник через @, с кем говоришь или выделяй часть предложения на которое ты отвечаешь.
 

timaxa007

Модератор
5,831
409
672

timaxa007

Модератор
5,831
409
672
1,374
113
241
@timaxa007, там свой загрузчик, видно. P.S. Вот он:
Java:
    public void load(FMLInitializationEvent event) {
        if (event.getSide() == Side.CLIENT)
            Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
                    .register(block, 0, new ModelResourceLocation("testenvironmentmod:testsword", "inventory"));
    }
@Reimzon, просто удали MCreator и делай всё сам, с нуля, проблем не будет.
 
@timaxa007, там свой загрузчик, видно. P.S. Вот он:
Java:
    public void load(FMLInitializationEvent event) {
        if (event.getSide() == Side.CLIENT)
            Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
                    .register(block, 0, new ModelResourceLocation("testenvironmentmod:testsword", "inventory"));
    }
@Reimzon, просто удали MCreator и делай всё сам, с нуля, проблем не будет.
Всмысле удалить MCreator? Я не собираюсь прям уж глобальные модификации делать.
 

timaxa007

Модератор
5,831
409
672
1,031
19
87
Я не собираюсь прям уж глобальные модификации делать.
Да хоть и не глобальные, тут просто что пишешь код и хоть как-то вникаешь, начинаешь со временем понимать как и что работает.
как и было до этого.
А слабо попробовать
Java:
this.setMaxDamage(499);
т.е прям в табе его нет? Им пользоваться нельзя, да?
Если предмета нету в вкладке. но он зарегистрирован в игре, его можно получить через /give @p *идентификатор*
Может это какой-то импорт с Mсreator?
Нет, это просто отсуствует
Java:
this.setCreativeTab(*вкладка*);
Лол, орнул :ROFLMAO:
 
Сверху