0

だから私はマインクラフトで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

問題は、preInit および init メソッドに @EventHandler アノテーションを付けていないことです。コードは次のようになります。

@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)または別のクリエイティブ タブを使用します。また、あなたがまだこの障害にぶつかっていないことは知っていますが、1.8 で forge を使用していると思います。その場合、settexturename() は機能しません。1.8 では、アイテムのレンダリングに json モデル システムを使用します。ここに素晴らしいチュートリアルがあります。それが役に立てば幸い :)

于 2015-03-30T02:27:59.213 に答える