简短问题:如何解决我的forge mod代码中的两个错误?
长问题/所需信息:
我正在创建一个锻造模型,扩展了钻石可以做什么,但我遇到了一个问题时,使一个“块项目”,这是一个库存块表示。我使用的forge mdk是 forge-1.15.2-31.2.0-mdk
.
在下面代码的第32行,我得到两个错误。
第一个是给 new BlockItemBase()
,错误为 The constructor BlockItemBase(Item) is undefined.
有两个“快速修复”,但当我尝试它们时,它会导致另一个类中的另一个错误。
第二个是给 CONCENTRATED_DIAMOND_BLOCK_ITEM
. 错误是 Cannot reference a field before it is defined.
这里没有任何快速解决方法。
如果有帮助的话,我使用的是EclipseIDE,这两个错误都被归类为“java错误”。我不确定是否有其他新的forge开发人员遇到这个问题,但我找不到任何解决这个问题的方法。最后,如果你需要更多的信息,请告诉我。
代码:
package pw.AbyssStudios.ExtenDiamonds.util;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import pw.AbyssStudios.ExtenDiamonds.ExtenDiamonds;
import pw.AbyssStudios.ExtenDiamonds.blocks.BlockItemBase;
import pw.AbyssStudios.ExtenDiamonds.blocks.ConcentratedDiamondBlock;
import pw.AbyssStudios.ExtenDiamonds.items.ItemBase;
public class RegistryHandler {
public static final DeferredRegister<Item> ITEMS = new DeferredRegister<>(ForgeRegistries.ITEMS, ExtenDiamonds.MOD_ID);
public static final DeferredRegister<Block> BLOCKS = new DeferredRegister<>(ForgeRegistries.BLOCKS, ExtenDiamonds.MOD_ID);
public static void init() {
ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());
BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
//ITEMS
public static final RegistryObject<Item> DIAMOND_APPLE = ITEMS.register("diamond_apple", ItemBase::new);
//BLOCKS
public static final RegistryObject<Block> CONCENTRATED_DIAMOND_BLOCK = BLOCKS.register("concentrated_diamond_block", ConcentratedDiamondBlock::new);
//BLOCKITEMS
public static final RegistryObject<Item> CONCENTRATED_DIAMOND_BLOCK_ITEM = ITEMS.register("concentrated_diamond_block", () -> new BlockItemBase(CONCENTRATED_DIAMOND_BLOCK_ITEM.get())); //THIS IS WHERE THE ERROR IS
}
1条答案
按热度按时间qzlgjiam1#
为了创造
CONCENTRATED_DIAMOND_BLOCK_ITEM
,您需要的示例BlockItemBase
,这需要CONCENTRATED_DIAMOND_BLOCK_ITEM
. 这是一个循环引用。供应商指向一个不存在的参考。因为您在lambda表达式内部使用引用,所以该引用必须是final,所以这里需要找到另一种方法来创建
BlockItemBase
供应商。