首页 > 解决方案 > 我将如何在 1.16.5 的 forge 中制作自定义镐?

问题描述

所以我想在 1.16.5 的锻造模式中制作一个自定义镐。

我试过这个:

package io.github.yamiatem.fiery_stuff.core.item;

import io.github.yamiatem.fiery_stuff.FieryStuff;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.PickaxeItem;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;

public class ItemInit {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, FieryStuff.MOD_ID);

    public static final RegistryObject<Item> FIERY_INGOT = ITEMS.register("fiery_ingot", () -> new Item(new Item.Properties().group(ItemGroup.MISC)));
    
    public static final RegistryObject<PickaxeItem> FIERY_PICK = ITEMS.register("fiery_pick", new PickaxeItem(null, 0, 0, null));
}

但是我想从头开始创建一个具有自定义耐用性、效率和等级之类的自定义镐?

标签: javaminecraftminecraft-forge

解决方案


您需要传递一些有效值,而不是将 null 传递给 PickaxeItem 的参数。IItemTier 是确定工具的特性。

public class CustomTier implements IItemTier {
    @Override public int   getMaxUses()             { return 1000;}
    @Override public float getEfficiency()          { return 10; }
    @Override public float getAttackDamage()        { return 10; }
    @Override public int   getHarvestLevel()        { return 3; }
    @Override public int   getEnchantability()      { return 5; }
    @Override public Ingredient getRepairMaterial() { return Ingredient.fromStacks(new ItemStack(FIERY_INGOT.get())); }
}
public static final RegistryObject<PickaxeItem> FIERY_PICK = ITEMS.register("fiery_pick", 
    new PickaxeItem(new CustomTier(), 0, 0, new Properties().maxStackSize(1)));

查看类 ItemTier 以获得香草层。


推荐阅读