You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft 1.18.2 Forge模组开发报错:找不到合适的Block构造方法

解决Minecraft 1.18.2 Forge模组中Block构造器报错问题

错误根源

你遇到的java: no suitable constructor found for Block(net.minecraft.world.level.block.state.BlockBehaviour.Properties)错误,核心原因有两个:

  1. 导入了错误的Block类:当前代码中导入的是org.openjdk.nashorn.internal.ir.Block(JDK内部Nashorn脚本引擎的类),而非Minecraft官方的方块类net.minecraft.world.level.block.Block,后者才支持接收BlockBehaviour.Properties参数的构造器。
  2. DeferredRegister初始化代码错误:将ForgeRegistries.BLOCKS强转为ResourceLocation是完全错误的,ForgeRegistries.BLOCKS本身就是方块注册表的实例,无需类型转换。

修复步骤

1. 修正导入语句

删除错误的导入:

import org.openjdk.nashorn.internal.ir.Block;

添加正确的Minecraft方块类导入:

import net.minecraft.world.level.block.Block;

2. 修正DeferredRegister初始化

将BLOCKS的初始化代码从:

private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create((ResourceLocation) ForgeRegistries.BLOCKS, "factorytechv0_1");

改为:

private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "factorytechv0_1");

修正后的完整Registration类代码

package com.example.factorytechv0_1.startup;

import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.Material;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

public class Registration {
    private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "factorytechv0_1");
    private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "factorytechv0_1");
    
    public static void init() {
        IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
        BLOCKS.register(bus);
        ITEMS.register(bus);
    }

    public static final BlockBehaviour.Properties ORE_PROPERTIES = BlockBehaviour.Properties.of(Material.STONE).strength(2f);
    public static final Item.Properties ITEM_PROPERTIES = new Item.Properties().tab(ModSetup.ITEM_GROUP);
    
    public static final RegistryObject<Block> CHROME_ORE_OVERWORLD = BLOCKS.register("chrome_ore_overworld", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> CHROME_ORE_OVERWORLD_ITEM = fromBlock(CHROME_ORE_OVERWORLD);
    
    public static final RegistryObject<Block> CHROME_ORE_DEEPSLATE = BLOCKS.register("chrome_ore_deepslate", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> CHROME_ORE_DEEPSLATE_ITEM = fromBlock(CHROME_ORE_DEEPSLATE);
    
    public static final RegistryObject<Block> HAFNIUM_ORE_NETHER = BLOCKS.register("hafnium_ore_nether", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> HAFNIUM_ORE_NETHER_ITEM = fromBlock(HAFNIUM_ORE_NETHER);
    
    public static final RegistryObject<Block> TECHNETIUM_ORE_END = BLOCKS.register("technetium_ore_end", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> TECHNETIUM_ORE_END_ITEM = fromBlock(TECHNETIUM_ORE_END);

    public static <B extends Block> RegistryObject<Item> fromBlock(RegistryObject<B> block) {
        return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), ITEM_PROPERTIES));
    }
}

补充:ModSetup类示例(若未创建)

如果你的ModSetup类还未实现,需要确保ITEM_GROUP正确定义,否则ITEM_PROPERTIES的tab()调用会报错,以下是简单实现:

package com.example.factorytechv0_1.startup;

import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;

public class ModSetup {
    public static final CreativeModeTab ITEM_GROUP = new CreativeModeTab("factorytech_tab") {
        @Override
        public ItemStack makeIcon() {
            // 用模组中的某个物品作为创造标签图标,示例使用铬矿石物品
            return new ItemStack(Registration.CHROME_ORE_OVERWORLD_ITEM.get());
        }
    };
}

内容的提问来源于stack exchange,提问作者x_Kronos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:15:42