java IntelliJ无法识别fillStateContainer、getDefaultState()或getPlacementHorizontalFacing()Forge 1.16.5

wwwo4jvm  于 2023-04-04  发布在  Java
关注(0)|答案(3)|浏览(97)

我正在制作一个自定义的两块长模型,名为“littleguys:operating_table”,我看了教程,使它在放置时面向我想要的方向。我在这里制作了一个自定义的OperatingTable类:

package com.soliid.littleguys.blocks;

import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.state.StateContainer;
import net.minecraftforge.common.ToolType;

public class OperatingTable extends HorizontalBlock
{
    public OperatingTable()
    {
        super(AbstractBlock.Properties.of(Material.STONE)
            .harvestLevel(1)
                .harvestTool(ToolType.PICKAXE)
                .sound(SoundType.STONE)
                .requiresCorrectToolForDrops()
                .strength(3.5f, 4.0f)
        );
    }

    @Override
    protected void fillStateContainer (StateContainer.Builder<Block, BlockState> builder)
    {
        builder.add(FACING);
    }

    @Override
    public BlockState getStateForPlacement(BlockItemUseContext context) {
        return this.getDefaultState().with(FACING, context.getPlacementHorizontalFacing().getOpposite());
    }
}

@Override给了我一个读取Method does not override method from its superclass的错误,getDefaultState()给了我Cannot resolve method 'getDefaultState' in 'OperatingTable',getPlacementHorizontalFacing()给了我Cannot resolve method 'getPlacementHorizontalFacing' in 'BlockItemUseContext'
我现在意识到这些方法不在OperatingTables的超类(HorizontalBlock和Block)中,但我想知道现在使用了哪些方法。在RegistryObject<Block> OPERATING_TABLERegistryObject<Item> OPERATING_TABLE_ITEM的注册表中没有错误。
这堂课还没有完成,但我无法继续,直到我解决了错误。

eoigrqb6

eoigrqb61#

有几种可能性,但大多数情况下是缓存问题。请尝试使缓存无效并重新启动IntelliJ。如果问题仍然存在,请手动同步Gradle项目。

mrwjdhj3

mrwjdhj32#

对于1.16.5,您必须使用

@Override
protected void createBlockStateDefinition(StateContainer.Builder<Block, BlockState> builder) {
    builder.add(FACING);
}

@Nullable
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
    return super.getStateForPlacement(context).setValue(FACING, context.getHorizontalDirection().getOpposite());
                                              
}
py49o6xq

py49o6xq3#

在build.gradle中,在第34行,mappings被定义为channel: 'official', version: '1.16.5'。这应该更改为channel: 'snapshot', version: '[snapshot version]'。我使用的版本是'20210309-1.16.5'。然后,在Terminal中使用gradlew genIntellijRuns重建gradle。

相关问题