Minecraft forge Minecraft模块构建器错误

Minecraft forge Minecraft模块构建器错误,minecraft-forge,Minecraft Forge,我正在做一个mod,我得到了一个错误(没有duh),我试着搜索它,但我想要一个具体的答案,我的问题,因为我不是很擅长这个。我在block类中遇到此错误 默认构造函数的隐式超级构造函数块()未定义。必须定义显式构造函数 我也不知道如何修复它。请帮助它完成一个项目 块类: package GDMCrocknrollkid.fandomcraft; import net.minecraft.block.Block; import net.minecraft.block.material.Materi

我正在做一个mod,我得到了一个错误(没有duh),我试着搜索它,但我想要一个具体的答案,我的问题,因为我不是很擅长这个。我在block类中遇到此错误

默认构造函数的隐式超级构造函数块()未定义。必须定义显式构造函数

我也不知道如何修复它。请帮助它完成一个项目

块类:

package GDMCrocknrollkid.fandomcraft;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;

public class BlockCbBlock extends Block {

protected BlockCbBlock(Material material) {
    super(material);
}

}
mod等级:

    package GDMCrocknrollkid.fandomcraft;

    import net.minecraft.block.Block;
    import net.minecraft.item.Item;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.registry.GameRegistry;

    @Mod(modid = "fc", name = "Fandomcraft", version = "1.0")
    public class fandomcraft {

    public static Item itemCbIngot;
    public static Block blockCbBlock;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event){
        //Item/Block initialization and registering
        //Config Handling
        itemCbIngot = new ItemCbIngot().setUnlocalizedName("ItemCbIngot").setTextureName("fc:itemCbIngot"); //item.itemCbIngot.name
        blockCbBlock = new BlockCbBlock(Material.iron);




        GameRegistry.registerItem(itemCbIngot, itemCbIngot.getUnlocalizedName().substring(5));
    }

    @EventHandler
    public void init(FMLInitializationEvent event){
        //Proxy, TileEntity, entity, GUI and Packet Registering
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {

    }
}

此错误适用于所有java,而不仅仅是minecraft forge。查看更多参考资料。这个错误可能有几个原因。很可能是1,但2和3可能是导致错误的因素

  • BlockCbBlock类声明的构造函数不是默认的、编译器将提供的无参数构造函数(也就是说,如果Block类没有构造函数),并且,如果实际上
    Block
    类正在使用默认构造函数,则不能调用
    super()
    ,因为
    类使用了不带参数的构造函数。因此,如果您想要修改
    构造函数,那么在
    BlockCbBlock
    类本身内部创建自定义构造函数将更安全、更容易

  • 您正试图继承
    的构造函数,但已将其声明为受保护,此时类中的构造函数应为
    公共
    ,以匹配继承的构造函数

  • 如果您使用的是Eclipse,当您的项目设置不正确(系统配置不匹配)时,它可能会出现此错误

  • 可能与这一特定错误没有直接关系,但可能是在不久的将来导致其他错误的原因;您正在使用注释
    @EventHandler
    ,但实际上尚未声明forge事件处理程序

  • 由于某种原因,您实际上没有注册块。即使将块用作配方项,也需要注册它

  • 要修复潜在的问题1、2和4,请尝试以下方法(从以下网站获得):

    这样,您就可以提前声明其
    uncalizedName
    材质
    ,以及
    CreativeTab
    。这种方法可能是不必要的,但它是一种很好的预防措施,有助于防止错误。现在,您所要做的就是这样声明:

    //You need to make your own EventHandler class. Search online for that.
    FCEventHandler handler = new FCEventHandler();
    @EventHandler
    public void preInit(FMLPreInitializationEvent event){
        //Config Handling
        //event handler registry
        FMLCommonHandler.instance().bus().register(handler);
        MinecraftForge.EVENT_BUS.register(handler);
        //the same thing can be similarly done with this if you wish    
        itemCbIngot = new ItemCbIngot().setUnlocalizedName("ItemCbIngot").setTextureName("fc:itemCbIngot"); 
        blockCbBlock = new BlockCbBlock();
        GameRegistry.registerItem(itemCbIngot, itemCbIngot.getUnlocalizedName().substring(5));
    }
    

    此错误适用于所有java,而不仅仅是minecraft forge。查看更多参考资料。这个错误可能有几个原因。很可能是1,但2和3可能是导致错误的因素

  • BlockCbBlock类声明的构造函数不是默认的、编译器将提供的无参数构造函数(也就是说,如果Block类没有构造函数),并且,如果实际上
    Block
    类正在使用默认构造函数,则不能调用
    super()
    ,因为
    类使用了不带参数的构造函数。因此,如果您想要修改
    构造函数,那么在
    BlockCbBlock
    类本身内部创建自定义构造函数将更安全、更容易

  • 您正试图继承
    的构造函数,但已将其声明为受保护,此时类中的构造函数应为
    公共
    ,以匹配继承的构造函数

  • 如果您使用的是Eclipse,当您的项目设置不正确(系统配置不匹配)时,它可能会出现此错误

  • 可能与这一特定错误没有直接关系,但可能是在不久的将来导致其他错误的原因;您正在使用注释
    @EventHandler
    ,但实际上尚未声明forge事件处理程序

  • 由于某种原因,您实际上没有注册块。即使将块用作配方项,也需要注册它

  • 要修复潜在的问题1、2和4,请尝试以下方法(从以下网站获得):

    这样,您就可以提前声明其
    uncalizedName
    材质
    ,以及
    CreativeTab
    。这种方法可能是不必要的,但它是一种很好的预防措施,有助于防止错误。现在,您所要做的就是这样声明:

    //You need to make your own EventHandler class. Search online for that.
    FCEventHandler handler = new FCEventHandler();
    @EventHandler
    public void preInit(FMLPreInitializationEvent event){
        //Config Handling
        //event handler registry
        FMLCommonHandler.instance().bus().register(handler);
        MinecraftForge.EVENT_BUS.register(handler);
        //the same thing can be similarly done with this if you wish    
        itemCbIngot = new ItemCbIngot().setUnlocalizedName("ItemCbIngot").setTextureName("fc:itemCbIngot"); 
        blockCbBlock = new BlockCbBlock();
        GameRegistry.registerItem(itemCbIngot, itemCbIngot.getUnlocalizedName().substring(5));
    }
    

    #4不适用。@EventHandler注释是Forge的一部分<代码>导入cpw.mods.fml.common.Mod.EventHandler并表示Forge Mod Lifecycle事件,这些事件是
    FMLPreInitializationEvent
    fmlinitizationEvent
    FMLPostInitializationEvent
    ,在任何用@Mod#4注释的类上搜索不适用。@EventHandler注释是Forge的一部分
    import cpw.mods.fml.common.Mod.EventHandler
    并表示Forge Mod生命周期事件,这些事件是
    FMLPreInitializationEvent
    fmlinitalizationEvent
    FMLPostInitializationEvent
    ,并在任何用@Mod注释的类上搜索