【问题标题】:Minecraft modding block constructer errorMinecraft 修改块构造器错误
【发布时间】:2016-02-22 04:13:45
【问题描述】:

我正在制作一个模组,但我遇到了一个错误(不是废话),我已经尝试搜索它,但我想要一个针对我的问题的答案,因为我不太擅长这个。我的块类中出现此错误。

默认构造函数的隐式超级构造函数 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);
}

}

模组类:

    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) {

    }
}

【问题讨论】:

    标签: minecraft-forge


    【解决方案1】:

    此错误与所有 java 相关,而不仅仅是 minecraft forge。检查this 以获得更多参考。此错误有几个可能的原因。很可能是 1,但 2 和 3 可能是导致错误的一个因素。

      1234563 987654323@ 类使用默认构造函数,那么您不能在争论上调用 super(),因为 Block 类使用没有参数的构造函数。因此,如果您想修改 Block 构造函数,在 BlockCbBlock 类本身内部创建自定义构造函数会更安全、更容易。
    1. 您正在尝试继承Block 的构造函数,但您已将其声明为受保护,此时您的类中的构造函数应为public 以匹配继承的.

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

    3. 可能与此特定错误没有直接关系,但在不久的将来可能会导致其他错误;您正在使用注解 @EventHandler,但您实际上并未声明伪造事件处理程序。

    4. 由于某种原因,您实际上并未注册该块。即使您将块用作配方项目,您仍然需要注册它

    要解决潜在的问题 1、2 和 4,试试这个(从here 获得):

    package GDMCrocknrollkid.fandomcraft;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    
    private final String name = "BlockCbBlock";
    public class BlockCbBlock extends Block {
        public BlockCbBlock() {
            super(Material.iron);
            GameRegistry.registerBlock(this, name);
            setUnlocalizedName(Reference.MODID + "_" + name);
            setCreativeTab(CreativeTabs.tabBlock);
        }
        public String getName() {
            return name;
        }
    }
    

    这样,您将提前声明其UnlocalizedNameMaterialCreativeTab。这种方法可能是不必要的,但它是一个很好的预防措施,可以帮助防止错误。现在,您所要做的就是像这样声明它:

    //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 的一部分。 import cpw.mods.fml.common.Mod.EventHandler 并表示 Forge Mod 生命周期事件,即 FMLPreInitializationEventFMLInitializationEventFMLPostInitializationEvent,并在任何带有 @Mod 注释的类中搜索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多