0

所以我在 Minecraft 中创建了一个 mod。它注册了剑,但没有出现在游戏中。我该怎么做才能让它出现在他的游戏中?提前致谢。

package com.ethan.main;

import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemSword;
import net.minecraftforge.common.util.EnumHelper;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;

@Mod(modid = "elemental_swords", version = "1.0 Alpha", name = "Elemental Swords Mod")
public class ElementalSwords {
    public static final String modid = "elemental_swords";
    public static Item lightningsword;
    public static ToolMaterial Element = EnumHelper.addToolMaterial("Element", 9, 1378, 1000, 10, 5);


    public void preInit(FMLPreInitializationEvent event){
        lightningsword = new LightningSword(Element, "lightningsword");
        GameRegistry.registerItem(lightningsword, "Lightning Sword");
    }

    public void init(FMLInitializationEvent event){

    }
}

这是Item课程:

package com.ethan.main;

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

public class LightningSword extends ItemSword{
    public LightningSword(ToolMaterial material, String name) {
        super(material);

        setUnlocalizedName(ElementalSwords.modid + "_" +name);
        setTextureName(ElementalSwords.modid + ":" + name);

    }



}
4

2 回答 2

1

您的问题是您没有将 @EventHandler 注释放在 preInit 和 init 方法上。您的代码应如下所示:

@EventHandler //Important
public void preInit(FMLPreInitializationEvent event) {
   //Read configs here.
}

@EventHandler
public void init(FMLInitializationEvent event) {
   //Register blocks and items here.
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
   //Have mod integeration here.
}

此外,在注册块和项目时,请避免使用空格。例子:GameRegistry.registerItem(lightningsword, "Lightning Sword");

应该 GameRegistry.registerItem(lightningsword, "lightningSword");

此外,正如@FerretBitStudios 所指出的,您需要设置要显示的创意选项卡。如果不这样做,获取该项目的唯一方法是通过 NEI 或/give命令。

于 2015-04-29T13:35:48.447 回答
0

要让您的项目显示在您的创意库存中,请使用lightningsword.setCreativeTab(CreativeTabs.tabCombat)或其他创意选项卡。另外,我知道你还没有遇到这个障碍,但我假设你正在使用 forge 1.8,在这种情况下 settexturename() 将不起作用。1.8 使用 json 模型系统来渲染项目。这里有一个很棒的教程。希望能帮助到你 :)

于 2015-03-30T02:27:59.213 回答