我试图按照教程来学习如何在1.15.2中用GUI对一个块进行编程,但当创建onBlockActivated时,它希望我删除@Override注释,但这样做使它无法工作。
public class BasicGenerator extends Block {
public BasicGenerator() {
super(Properties.create(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(2.0f).lightValue(14));
setRegistryName("basicgen");
}
@Override
public boolean hasTileEntity(BlockState state) {
return true;
}
@Nullable
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return new BasicGenTile();
}
@Override
public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, @Nullable LivingEntity entity, ItemStack stack) {
if (entity != null) {
world.setBlockState(pos, state.with(BlockStateProperties.FACING, getFacingFromEntity(pos, entity)), 2);
}
}
@Override
public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult trace) {
if (!world.isRemote) {
TileEntity tileEntity = world.getTileEntity(pos);
if (tileEntity instanceof INamedContainerProvider) {
NetworkHooks.openGui((ServerPlayerEntity) player, (INamedContainerProvider) tileEntity, tileEntity.getPos());
} else {
throw new IllegalStateException("Our named container provider is missing!");
}
return ActionResultType.SUCCESS;
}
return super.onBlockActivated(state, world, pos, player, hand, trace);
}
public static Direction getFacingFromEntity(BlockPos clickedBlock, LivingEntity entity) {
Vec3d vec = entity.getPositionVec();
return Direction.getFacingFromVector((float) (vec.x - clickedBlock.getX()), (float) (vec.y - clickedBlock.getY()), (float) (vec.z - clickedBlock.getZ()));
}
@Override
protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
builder.add(BlockStateProperties.FACING);
}
}
你可能需要更新你的映射(在build.gradle文件中)。http:/export.mcpbot.bspk.rs。 的最新映射,并替换掉build.gradle中的这一行。